⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 l2_lcdtv.new

📁 dz3000_51.0.0.4.rar
💻 NEW
📖 第 1 页 / 共 3 页
字号:
		XBYTE[0x2D0F] = 0x00;		// vldy1
		XBYTE[0x2D1B] = 0x00;		// imgvofst
		XBYTE[0x2D1C] = 0x00;		// imgvofst
		XBYTE[0x2D1D] = 0x00;		// imghofst
		XBYTE[0x2D1E] = 0x00;		// imghofst
		XBYTE[0x2D20] = 0x20;		// imgsubsamp
		XBYTE[0x2D21] = 0x20;		// osdsubsamp
		XBYTE[0x2D26] = 0x08;		// osdsubsamp
		XBYTE[0x2D33] = 0x00;		// osdvofst
		XBYTE[0x2D34] = 0x3A;		// osdhofst
		XBYTE[0x2DE2] = 0x00;		// frame mode
                status = 0;
	}
	#endif

	#ifdef EPSON
	if(index==9)// EPSON output
	{
		XBYTE[0x201C] = 0x02;		// using 24MHz for EPSON TFT-LCD
		XBYTE[0x2D00] = 0x0a;		// tvdspmode
		XBYTE[0x2D02] = 0x05;		// vline
		XBYTE[0x2D03] = 0x01;		// vline
		XBYTE[0x2D04] = 0x8D;		// hpixel
		XBYTE[0x2D05] = 0x03;		// hpixel
		XBYTE[0x2D06] = 0x16;		// vsyncw
		XBYTE[0x2D07] = 0x20;		// hsyncw
		XBYTE[0x2D08] = 0x54;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x02;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0xC4;		// vldx1
		XBYTE[0x2D0D] = 0x02;		// vldx1
		XBYTE[0x2D0E] = 0xE7;		// vldy1
		XBYTE[0x2D0F] = 0x00;		// vldy1
		XBYTE[0x2D1B] = 0x00;		// imgvofst
		XBYTE[0x2D1C] = 0x00;		// imgvofst
		XBYTE[0x2D1D] = 0x00;		// imghofst
		XBYTE[0x2D1E] = 0x00;		// imghofst
		XBYTE[0x2D20] = 0x20;		// imgsubsamp
		XBYTE[0x2D21] = 0x20;		// osdsubsamp
		XBYTE[0x2D25] = 0x0a;		// em1812en,xsclstate
		XBYTE[0x2D26] = 0x0b;		// evenrgb,oddrgb
		XBYTE[0x2D33] = 0x08;		// osdvofst
		XBYTE[0x2D34] = 0x30;		// osdhofst
		XBYTE[0x2DE2] = 0x00;		// frame mode
                status = 0;
	}
	#endif

	#ifdef CASIO
	if(index==10)// CASIO output
	{
		XBYTE[0x201C] = 0x00;		// using 27MHz for CASIO
		XBYTE[0x2D00] = 0x0B;		// tvdspmode
		XBYTE[0x2D02] = 0x06;		// vline
		XBYTE[0x2D03] = 0x01;		// vline
		XBYTE[0x2D04] = 0x5A;		// hpixel
		XBYTE[0x2D05] = 0x03;		// hpixel
		XBYTE[0x2D06] = 0x04;		// vsyncw
		XBYTE[0x2D07] = 0x04;		// hsyncw
		XBYTE[0x2D08] = 0x14;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x13;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0xDC;		// vldx1
		XBYTE[0x2D0D] = 0x02;		// vldx1
		XBYTE[0x2D0E] = 0x05;		// vldy1
		XBYTE[0x2D0F] = 0x01;		// vldy1
		XBYTE[0x2D1B] = 0x00;		// imgvofst
		XBYTE[0x2D1C] = 0x00;		// imgvofst
		XBYTE[0x2D1D] = 0x00;		// imghofst
		XBYTE[0x2D1E] = 0x00;		// imghofst
		XBYTE[0x2D20] = 0x20;		// imgsubsamp
		XBYTE[0x2D21] = 0x20;		// osdsubsamp
                XBYTE[0x2D25] = 0x20;           // GRES control
		XBYTE[0x2D26] = 0x06;		// evenrgb, oddrgb
		XBYTE[0x2D33] = 0x00;		// osdvofst
		XBYTE[0x2D34] = 0x10;		// osdhofst
		XBYTE[0x2DE2] = 0x00;		// frame mode
                status = 0;
	}
	#endif

	#ifdef STNLCD
	if(index==11)// GiantPlus output
	{
                XBYTE[0x2D2B] = 0x01;           //enable gamma  //cytsai@0328
                XBYTE[0x21AE] = 0x30;           //saturation    //cytsai@0328
                XBYTE[0x21AE] = 0x01;           //enable saturation and hue adjustment //cytsai@0328
		XBYTE[0x201C] = 0x00;		// using 27MHz for STN-LCD
		XBYTE[0x2D00] = 0x0C;		// tvdspmode
		XBYTE[0x2D02] = 0xA5;		// vline
		XBYTE[0x2D03] = 0x00;		// vline
		XBYTE[0x2D04] = 0x1F;		// hpixel
		XBYTE[0x2D05] = 0x01;		// hpixel
//		XBYTE[0x2D02] = 0xC7;		// vline
//		XBYTE[0x2D03] = 0x00;		// vline
//		XBYTE[0x2D04] = 0x67;		// hpixel
//		XBYTE[0x2D05] = 0x01;		// hpixel
		XBYTE[0x2D06] = 0x02;		// vsyncw
		XBYTE[0x2D07] = 0x08;		// hsyncw
		XBYTE[0x2D08] = 0x28;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x04;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0x17;		// vldx1
		XBYTE[0x2D0D] = 0x01;		// vldx1
		XBYTE[0x2D0E] = 0xA3;		// vldy1
		XBYTE[0x2D0F] = 0x00;		// vldy1
		XBYTE[0x2D1B] = 0x00;		// imgvofst
		XBYTE[0x2D1C] = 0x00;		// imgvofst
		XBYTE[0x2D1D] = 0x00;		// imghofst
		XBYTE[0x2D1E] = 0x00;		// imghofst
		XBYTE[0x2D26] = 0x02;		// odd , even line
		XBYTE[0x2D21] = 0x40;		// osdsubsamp
		XBYTE[0x2D33] = 0x00;		// osdvofst
		XBYTE[0x2D34] = 0x20;		// osdhofst
		XBYTE[0x2DE2] = 0x00;		// frame mode
		return 0;
	}
	#endif

	#ifdef STNLCD160
        if(index==14)// GiantPlus output
	{
		XBYTE[0x201C] = 0x02;		// using 24MHz for STN-LCD
		XBYTE[0x2D00] = 0x0C;		// tvdspmode
		XBYTE[0x2D02] = 0x7d;		// vline
		XBYTE[0x2D03] = 0x00;		// vline
		XBYTE[0x2D04] = 0xCF;		// hpixel
		XBYTE[0x2D05] = 0x00;		// hpixel
		XBYTE[0x2D06] = 0x02;		// vsyncw
		XBYTE[0x2D07] = 0x08;		// hsyncw
		XBYTE[0x2D08] = 0x28;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x04;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0xC7;		// vldx1
		XBYTE[0x2D0D] = 0x00;		// vldx1
		XBYTE[0x2D0E] = 0x7b;		// vldy1
		XBYTE[0x2D0F] = 0x00;		// vldy1
		XBYTE[0x2D1B] = 0x00;		// imgvofst
		XBYTE[0x2D1C] = 0x00;		// imgvofst
		XBYTE[0x2D1D] = 0x00;		// imghofst
		XBYTE[0x2D1E] = 0x00;		// imghofst
		XBYTE[0x2D26] = 0x02;		// odd , even line
		XBYTE[0x2D21] = 0x40;		// osdsubsamp
		XBYTE[0x2D33] = 0x00;		// osdvofst
		XBYTE[0x2D34] = 0x20;		// osdhofst
		XBYTE[0x2DE2] = 0x00;		// frame mode
                status = 0;
	}
	#endif

	#ifdef VGATFT
	if(index==12)// PrimeView VGATFT output
	{
		XBYTE[0x201C] = 0x01;		// tvenc1xck use 27MHz
		XBYTE[0x2D00] = 0x0E;		// tvdspmode
		XBYTE[0x2D02] = 0x0C;		// vline
		XBYTE[0x2D03] = 0x02;		// vline
		XBYTE[0x2D04] = 0x1F;		// hpixel
		XBYTE[0x2D05] = 0x03;		// hpixel
		XBYTE[0x2D06] = 0x02;		// vsyncw
		XBYTE[0x2D07] = 0x60;		// hsyncw
		XBYTE[0x2D08] = 0x90;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x10;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0x0F;		// vldx1
		XBYTE[0x2D0D] = 0x03;		// vldx1
		XBYTE[0x2D0E] = 0xEF;		// vldy1
		XBYTE[0x2D0F] = 0x01;		// vldy1
		XBYTE[0x2D1B] = 0x00;		// imgvofst
		XBYTE[0x2D1C] = 0x00;		// imgvofst
		XBYTE[0x2D1D] = 0x00;		// imghofst
		XBYTE[0x2D1E] = 0x00;		// imghofst
		XBYTE[0x2D33] = 0x20;		// osdvofst
		XBYTE[0x2D34] = 0x20;		// osdhofst
		XBYTE[0x2D21] = 0x40;		// osdsubsamp
		XBYTE[0x2D33] = 0x00;		// osdvofst
		XBYTE[0x2D34] = 0x20;		// osdhofst
		XBYTE[0x2DE2] = 0x00;		// frame mode
                status = 0;
	}
	#endif

	#ifdef SVGAOUT
	if(index==15)// 800X600 SVGA output
	{
		XBYTE[0x201C] = 0x00;		// using 27MHz for TV
		XBYTE[0x2D00] = 0x0F;		// tvdspmode 
		XBYTE[0x2D02] = 0x70;		// vldx0
		XBYTE[0x2D03] = 0x02;		// vldx0
		XBYTE[0x2D04] = 0x59;		// vldx0
		XBYTE[0x2D05] = 0x03;		// vldx0
		XBYTE[0x2D06] = 0x06;		// vldx0
		XBYTE[0x2D07] = 0x20;		// vldx0
		XBYTE[0x2D08] = 0x2F;		// vldx0
		XBYTE[0x2D09] = 0x00;		// vldx0
		XBYTE[0x2D0A] = 0x03;		// vldy0
		XBYTE[0x2D0B] = 0x00;		// vldy0
		XBYTE[0x2D0C] = 0x4E;		// vldx1
		XBYTE[0x2D0D] = 0x03;		// vldx1
		XBYTE[0x2D0E] = 0x5A;		// vldy1
		XBYTE[0x2D0F] = 0x02;		// vldy1
		XBYTE[0x2D19] = 0x20;		// imgvofst
		XBYTE[0x2D20] = 0x40;		// imgvofst
		XBYTE[0x2D2A] = 0x02;		// ccirtype
                status = 0;
	}
	#endif

        MemStretch = tmp;
        return(status);
}

//-----------------------------------------------------------------------------
//L2_SetDisplaySrcImgSize
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetDisplaySrcImgSize(USHORT hsize, USHORT vsize, UCHAR type)
{
	UCHAR imghzfac, imgvzfac;
	USHORT imggrp, dsphsize, dspvsize;
	UCHAR LCD_status = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

        if(hsize%16==0)     imggrp = (hsize >> 4);
        else imggrp = (hsize >> 4) + 1;

	if(type==0||type==2||type==4||type==6)	// NTSC display size
		{dsphsize = 720;dspvsize = 240;}				
          //{dsphsize = 800;dspvsize = 600;}				
	else if(type==1||type==3||type==5||type==7) // PAL display size
		{dsphsize = 720;dspvsize = 288;}				
	else if(type==8)	// UPS051
		{dsphsize = 288;dspvsize = 220;}
	else if(type==9)	// EPSON LCD panel
		{dsphsize = 312;dspvsize = 230;}
	else if(type==10)	// CASIO LCD panel
		{dsphsize = 356;dspvsize = 240;}
	else if(type==11)	// GiantPlus STN LCD panel
		{dsphsize = 240;dspvsize = 160;}
	else if(type==12)	// PrimeView TFT LCD panel
		{dsphsize = 640;dspvsize = 480;}
	else if(type==13)	// AU015AN02
		{dsphsize = 312;dspvsize = 220;}
        else if(type==14)       // STNLCD160
                {dsphsize = 160;dspvsize = 120;}
	else if(type==15)	// PrimeView TFT LCD panel
		{dsphsize = 800;dspvsize = 600;}
	else LCD_status = 1;

	imgvzfac = ((ULONG)vsize*32)/dspvsize;
	imghzfac = ((ULONG)hsize*128)/dsphsize;
//	//printf("hsizec=%d, vsize=%d\n",hsize,vsize);    
//	//printf("dsphsize=%d, dspvsize=%d\n",dsphsize,dspvsize);    
//	//printf("imghzfac=%bd, imgvzfac=%bd\n",imghzfac,imgvzfac);    
	XBYTE[0x2D19] = imgvzfac;
	XBYTE[0x2D1A] = imghzfac;
	XBYTE[0x2D1F] = imggrp;

        MemStretch = tmp;
	return(LCD_status);
}

//-----------------------------------------------------------------------------
//L2_TurnOnOffDisplay
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_TurnOnOffDisplay (UCHAR mode)
{
	UCHAR type;	
	UCHAR LCD_state = 0;	
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	type = XBYTE[0x2D00];	
	if(mode>2){
		LCD_state = 1;		// parameter error
	}
	else if(mode==0){	// turn off display
		XBYTE[0x2001] = 0x04;
		XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
        }
	else if(mode==1){	// turn on display
		if(type==0||type==1){
			XBYTE[0x2001] = 0x01;
			XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
			}
		else{
			XBYTE[0x2001] = 0x05;
			XBYTE[0x2D01] = XBYTE[0x2D01] | 0x10;
			}
        }
        else if(mode==2){   // no image input
		XBYTE[0x2D01] = XBYTE[0x2D01] & 0x0F;
        }

        MemStretch = tmp;
	return LCD_state;
		
}

//-----------------------------------------------------------------------------
//L2_SetColorPalette
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetColorPalette(UCHAR index, UCHAR r, UCHAR g, UCHAR b)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	if(index>8) LCD_state = 1;
	else if(index==0){
		XBYTE[0x2D37] = r/8;	// set R
		XBYTE[0x2D38] = g/8;	// set G
		XBYTE[0x2D39] = b/8;	// set B
        }
	else if(index==1){
		XBYTE[0x2D3A] = r/8;	// set R
		XBYTE[0x2D3B] = g/8;	// set G
		XBYTE[0x2D3C] = b/8;	// set B
        }
	else if(index==2){
		XBYTE[0x2D3D] = r/8;	// set R
		XBYTE[0x2D3E] = g/8;	// set G
		XBYTE[0x2D3F] = b/8;	// set B
        }
	else if(index==3){
		XBYTE[0x2D40] = r/8;	// set R
		XBYTE[0x2D41] = g/8;	// set G
		XBYTE[0x2D42] = b/8;	// set B
        }
	else if(index==4){
		XBYTE[0x2D43] = r/8;	// set R
		XBYTE[0x2D44] = g/8;	// set G
		XBYTE[0x2D45] = b/8;	// set B
        }
	else if(index==5){
		XBYTE[0x2D46] = r/8;	// set R
		XBYTE[0x2D47] = g/8;	// set G
		XBYTE[0x2D48] = b/8;	// set B
        }
	else if(index==6){
		XBYTE[0x2D49] = r/8;	// set R
		XBYTE[0x2D4A] = g/8;	// set G
		XBYTE[0x2D4B] = b/8;	// set B
        }
	else if(index==7){
		XBYTE[0x2D4C] = r/8;	// set R
		XBYTE[0x2D4D] = g/8;	// set G
		XBYTE[0x2D4E] = b/8;	// set B
        }
	else{
		XBYTE[0x2D4F] = r/8;	// set R
		XBYTE[0x2D50] = g/8;	// set G
		XBYTE[0x2D51] = b/8;	// set B
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_SetFOSDIndex
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDIndex(UCHAR y, UCHAR x, USHORT value)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;
	if(x>24 || y>9 || value >511)
		LCD_state = 1;
        else{ 
                if(value>255){
                        XBYTE[0x2D2C] = 0x03;   // turn on buffer enable
		}
                else{
                        XBYTE[0x2D2C] = 0x02;   // turn on buffer enable
                }
		XBYTE[0x2D2D] = (25*y) + x;	// set buffer address
		XBYTE[0x2D2E] = value;	// set the index
        }

        MemStretch = tmp;
	return LCD_state;
}

//-----------------------------------------------------------------------------
//L2_SetFOSDAttr
//-----------------------------------------------------------------------------
// return value
//		0: no error
//		1: parameter error
UCHAR L2_SetFOSDAttr(UCHAR y, UCHAR x, UCHAR attr)
{
	UCHAR LCD_state = 0;
        UCHAR tmp;

        tmp = MemStretch;
        MemStretch = 0x01;

	if(x>24 || y>9 || attr>63)
		LCD_state = 1;
	else{
                XBYTE[0x2D2C] = 4;              // turn on buffer enable
		XBYTE[0x2D2D] = (25*y) + x;	// set buffer address
		XBYTE[0x2D2E] = attr;		// set the attribute
	}

        MemStretch = tmp;
        return 0;
}

//-----------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -