📄 l2_lcdtv.new
字号:
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 + -