📄 lcd.c
字号:
void Test_Osd_16Bit565_240320_Colorkey(void)
{
S32 alpha;
U32 i,j,k;
S32 topx, topy, botx, boty;
LcdBGInit(MODE_PAR_16BIT565_240320);
GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
k=0;
for(j=0; j<BG_YSIZE_240320; j++)
for(i=0; i<BG_XSIZE_240320; i++)
PutPixel(i,j,sghx600iqvga16[k++]);
LcdFGInit(MODE_OSD_16BIT565_240320);
GlibInit(MODE_OSD_16BIT565_240320, FGBUFFER1);
GlibFilledRectangle(0,0, FG_XSIZE_240320/2-1, FG_YSIZE_240320/2-1, 0xf800);
GlibFilledRectangle(FG_XSIZE_240320/2,0, FG_XSIZE_240320-1, FG_YSIZE_240320/2-1, 0x7e0);
GlibFilledRectangle(0,FG_YSIZE_240320/2, FG_XSIZE_240320/2-1, FG_YSIZE_240320-1, 0x1f);
GlibFilledRectangle(FG_XSIZE_240320/2, FG_YSIZE_240320/2, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0xffff);
GlibRectangle(0, 0, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0x0);
rLCDCON1=(rLCDCON1&~(0x3<<28))|(0x2<<28);
topx=60;
topy=80;
botx=60+FG_XSIZE_240320-1;
boty=80+FG_YSIZE_240320-1;
LcdOsdChangeCoordination(topx,topy,botx, boty);
rLCDVSCRF1=(((FG_VXSIZE_240320-(botx-topx+1))*2)<<13)|((botx-topx+1)*2);
rLCDEADDRF1=LCDBASEL(LCDFRAMEBUFFERFG1+(FG_VXSIZE_240320*2)*(boty-topy+1));
LcdOsdSelectFunction(OSD_COLORKEY);
LcdOsdSetAlpha(0xff);
LcdColorKeyInit(MODE_OSD_16BIT565_240320);
LcdOsdEnDiable(1);
LcdEnvidOnOff(1);;
Uart_Printf("i:upper, j:left, k:right,m:lower\n");
Uart_Printf("a:decrement, s:increment\n");
while(1) {
switch(Uart_Getch()) {
case 'i':
topy-=4;
boty-=4;
break;
case 'j':
topx-=4;
botx-=4;
break;
case 'k':
topx+=4;
botx+=4;
break;
case 'm':
topy+=4;
boty+=4;
break;
case 'a':
alpha-=5;
break;
case 's':
alpha+=5;
break;
case '\r':
return;
default:
break;
}
if(topy<0) {
topy=0;
boty=FG_YSIZE_240320-1;
}
if(topx<0) {
topx=0;
botx=FG_XSIZE_240320-1;
}
if(botx>BG_XSIZE_240320-1) {
botx=BG_XSIZE_240320-1;
topx=BG_XSIZE_240320-FG_XSIZE_240320;
}
if(boty>BG_YSIZE_240320-1) {
boty=BG_YSIZE_240320-1;
topy=BG_YSIZE_240320-FG_YSIZE_240320;
}
Uart_Printf("%d, %d, %d, %d\n", topx, topy, botx, boty);
LcdOsdChangeCoordination(topx,topy,botx, boty);
}
Uart_Printf("Press any key to continue\n");
Uart_Getch();
LcdEnvidOnOff(0);
LcdOsdEnDiable(0);
}
void Test_Osd_16Bit565_240320_Compkey(void)
{
U32 toggle;
S32 alpha;
U32 i,j,k;
U32 flag;
S32 topx, topy, botx, boty;
U32 whichfunction;
LcdBGInit(MODE_PAR_16BIT565_240320);
GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
k=0;
for(j=0; j<BG_YSIZE_240320; j++)
for(i=0; i<BG_XSIZE_240320; i++)
PutPixel(i,j,sghx600iqvga16[k++]);
LcdFGInit(MODE_OSD_16BIT565_240320);
GlibInit(MODE_OSD_16BIT565_240320, FGBUFFER1);
k=0;
for(j=0; j<FG_YSIZE_240320; j+=20) {
for(i=0; i<FG_XSIZE_240320; i+=20) {
if(k%2)
GlibFilledRectangle(i, j, i+19, j+19, 0x0);
else
GlibFilledRectangle(i, j, i+19, j+19, 0xf800+k*4);
k++;
}
k++;
}
GlibRectangle(0, 0, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0x1f);
rLCDCON1=(rLCDCON1&~(0x3<<28))|(0x2<<28);
topx=60;
topy=80;
botx=60+FG_XSIZE_240320-1;
boty=80+FG_YSIZE_240320-1;
LcdOsdChangeCoordination(topx,topy,botx, boty);
rLCDVSCRF1=(((FG_VXSIZE_240320-(botx-topx+1))*2)<<13)|((botx-topx+1)*2);
rLCDEADDRF1=LCDBASEL(LCDFRAMEBUFFERFG1+(FG_VXSIZE_240320*2)*(boty-topy+1));
LcdOsdSelectFunction(OSD_COLORKEY);
LcdOsdSetAlpha(0xff);
LcdColorKeyInit(MODE_OSD_16BIT565_240320);
LcdSetColorKey(0, 0x3fffff, 0xffffff);
LcdOsdEnDiable(1);
LcdEnvidOnOff(1);;
Uart_Printf("i:upper, j:left, k:right,m:lower\n");
Uart_Printf("a:decrement, s:increment\n");
Uart_Printf("d:osd blending, f:osd colorkey\n");
flag=0;
toggle=0;
whichfunction=OSD_COLORKEY;
alpha=0xff;
while(1) {
switch(Uart_Getch()) {
case 'i':
topy-=4;
boty-=4;
break;
case 'j':
topx-=4;
botx-=4;
break;
case 'k':
topx+=4;
botx+=4;
break;
case 'm':
topy+=4;
boty+=4;
break;
case 'a':
alpha-=5;
break;
case 's':
alpha+=5;
break;
case 'd':
whichfunction=OSD_BLENDING;
break;
case 'f':
whichfunction=OSD_COLORKEY;
break;
case '\r':
return;
default:
break;
}
if(topy<0) {
topy=0;
boty=FG_YSIZE_240320-1;
}
if(topx<0) {
topx=0;
botx=FG_XSIZE_240320-1;
}
if(botx>BG_XSIZE_240320-1) {
botx=BG_XSIZE_240320-1;
topx=BG_XSIZE_240320-FG_XSIZE_240320;
}
if(boty>BG_YSIZE_240320-1) {
boty=BG_YSIZE_240320-1;
topy=BG_YSIZE_240320-FG_YSIZE_240320;
}
if(alpha>255) alpha=255;
if(alpha<0) alpha=0;
Uart_Printf("%d, %d, %d, %d, @%d\n", topx, topy, botx, boty, alpha);
LcdOsdChangeCoordination(topx,topy,botx, boty);
LcdOsdSetAlpha(alpha);
LcdOsdSelectFunction(whichfunction);
}
Uart_Printf("Press any key to continue\n");
Uart_Getch();
LcdEnvidOnOff(0);
LcdOsdEnDiable(0);
}
void Test_Osd_16Bit565_240320_Compkey_Direction(void)
{
U32 toggle;
S32 alpha;
U32 i,j,k;
U32 flag;
S32 topx, topy, botx, boty;
U32 whichfunction;
LcdBGInit(MODE_PAR_16BIT565_240320);
GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
k=0;
k=0;
for(j=0; j<BG_YSIZE_240320; j+=40) {
for(i=0; i<BG_XSIZE_240320; i+=40) {
if(k%2)
GlibFilledRectangle(i, j, i+39, j+39, 0x0);
else
GlibFilledRectangle(i, j, i+39, j+39, 0xf800+k*4);
k++;
}
k++;
}
LcdFGInit(MODE_OSD_16BIT565_240320);
GlibInit(MODE_OSD_16BIT565_240320, FGBUFFER1);
k=0;
for(j=0; j<FG_YSIZE_240320; j+=20) {
for(i=0; i<FG_XSIZE_240320; i+=20) {
if(k%2)
GlibFilledRectangle(i, j, i+19, j+19, 0x0);
else
//GlibFilledRectangle(i, j, i+19, j+19, 0xf800+k*4);
GlibFilledRectangle(i, j, i+19, j+19, 0x1f);
k++;
}
k++;
}
GlibRectangle(0, 0, FG_XSIZE_240320-1, FG_YSIZE_240320-1, 0x1f);
rLCDCON1=(rLCDCON1&~(0x3<<28))|(0x2<<28);
topx=60;
topy=80;
botx=60+FG_XSIZE_240320-1;
boty=80+FG_YSIZE_240320-1;
LcdOsdChangeCoordination(topx,topy,botx, boty);
rLCDVSCRF1=(((FG_VXSIZE_240320-(botx-topx+1))*2)<<13)|((botx-topx+1)*2);
rLCDEADDRF1=LCDBASEL(LCDFRAMEBUFFERFG1+(FG_VXSIZE_240320*2)*(boty-topy+1));
LcdOsdSelectFunction(OSD_COLORKEY);
LcdOsdSetAlpha(0xff);
LcdColorKeyInit(MODE_OSD_16BIT565_240320);
LcdSetColorKey(0, 0x3fffff, 0xffffff);
LcdOsdEnDiable(1);
LcdEnvidOnOff(1);;
Uart_Printf("i:upper, j:left, k:right,m:lower\n");
Uart_Printf("a:decrement, s:increment\n");
Uart_Printf("d:osd blending, f:osd colorkey\n");
Uart_Printf("g:foreground matching, h:background matching\n");
flag=0;
toggle=0;
whichfunction=OSD_COLORKEY;
alpha=0xff;
while(1) {
switch(Uart_Getch()) {
case 'i':
topy-=4;
boty-=4;
break;
case 'j':
topx-=4;
botx-=4;
break;
case 'k':
topx+=4;
botx+=4;
break;
case 'm':
topy+=4;
boty+=4;
break;
case 'a':
alpha-=5;
break;
case 's':
alpha+=5;
break;
case 'd':
whichfunction=OSD_BLENDING;
break;
case 'f':
whichfunction=OSD_COLORKEY;
break;
case 'g':
toggle=0;
break;
case 'h':
toggle=1;
break;
case '\r':
return;
default:
break;
}
if(topy<0) {
topy=0;
boty=FG_YSIZE_240320-1;
}
if(topx<0) {
topx=0;
botx=FG_XSIZE_240320-1;
}
if(botx>BG_XSIZE_240320-1) {
botx=BG_XSIZE_240320-1;
topx=BG_XSIZE_240320-FG_XSIZE_240320;
}
if(boty>BG_YSIZE_240320-1) {
boty=BG_YSIZE_240320-1;
topy=BG_YSIZE_240320-FG_YSIZE_240320;
}
if(alpha>255) alpha=255;
if(alpha<0) alpha=0;
Uart_Printf("%d, %d, %d, %d, @%d\n", topx, topy, botx, boty, alpha);
LcdOsdChangeCoordination(topx,topy,botx, boty);
LcdOsdSetAlpha(alpha);
LcdOsdSelectFunction(whichfunction);
LcdSetColorKey(toggle, 0x3fffff, 0xffffff);
}
Uart_Printf("Press any key to continue\n");
Uart_Getch();
LcdEnvidOnOff(0);
LcdOsdEnDiable(0);
}
void Test_Lcd_16Bit_240320_Int(void)
{
// DisplayType=MODE_PAR_8BIT_240320;
// WhichFrameBuffer=BGBUFFER1;
int i,j,k;
framedone=0;
rSUBSRCPND=BIT_SUB_DISP_FRAME;
rSRCPND=BIT_LCD_POST;
rINTPND=rINTPND;
pISR_LCD_POST=(unsigned)Lcd_Int_Fr;
rINTMSK &= ~(BIT_LCD_POST);
rINTSUBMSK &= ~(BIT_SUB_DISP_FRAME);
rGPCON_L = (rGPCON_L & ~(0x3<<16))|(1<<16);
rGPDAT &= ~(1<<8);
#ifdef LTS222
InitLDI();
#endif
// LcdBGInit(MODE_PAR_16BIT565_240320);
// GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
LcdBGInit(MODE_SER_16BIT565_176220);
GlibInit(MODE_SER_16BIT565_176220, BGBUFFER1);
GlibClearScr(0);
k=0;
for(j=0; j<BG_YSIZE_240320; j++)
for(i=0; i<BG_XSIZE_240320; i++)
PutPixel(i,j,sghx600iqvga16[k++]);
//PutPixel(i,j,pqvga16bsm5[k++]);
// rLCDCON1 &= ~(1<<19);
Uart_Printf("rLCDCON1=0x%x\n", rLCDCON1);
// LcdEnvidOnOff(1);
LcdEnvidOnOffDirect(1); // Enable ENVID Bit
#if 1 //VSYNC
rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&1)<<10)|((0x3&0)<<8)|(1<<7)|(1);
#elif 0 //front porch
rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&3)<<10)|((0x3&0)<<8)|(1<<7)|(1);
#else //back porch
rLCDINTCON=(rLCDINTCON&~(0xf<<8))|((0x3&0)<<10)|((0x3&0)<<8)|(1<<7)|(1);
#endif
while(1) {
framedone=0;
while(framedone==0);
LcdEnvidOnOffDirect(0);
rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x4<<13);
rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(1<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,External clk,Divider=0
rCLKDIVN = (1<<1)|(1);
rMPLLCON = (60<<12)|(2<<4)|(1);
rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(0<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,MPLL_clk,Divider=0
// rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x4<<13);
LcdEnvidOnOffDirect(1);
rGPDAT |= (1<<8);
Uart_Getch();
framedone=0;
while(framedone==0);
LcdEnvidOnOffDirect(0);
rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x8<<13);
rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(1<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,External clk,Divider=0
rCLKDIVN = (1<<1)|(1);
rMPLLCON = (60<<12)|(2<<4)|(0);
rCLKSRC=(0<<8)|(0<<7)|(0<<5)|(0<<4)|(0); // OnOSC_EN disable,U_PLL on,M_PLL on,MPLL_clk,Divider=0
// rLCDCON1=(rLCDCON1 & ~(0x3f<<13))|(0x8<<13);
LcdEnvidOnOffDirect(1);
rGPDAT &= ~(1<<8);
Uart_Getch();
}
Uart_Printf("If you want to turn off LCD, press any key\n");
Uart_Getch();
rGPDAT |= (1<<8);
// LcdEnvidOnOff(0);
LcdEnvidOnOffDirect(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -