📄 lcd_test.c
字号:
//LCD_Trigger();
Disp("\nIf you want to end this test, press any key\n");
UART_Getc();
}
static void VirtualScreen(void)
{
u32 uBgWinNum, uFgWinNum;
u32 uFgAddr;
u32 uBgHSz, uBgVSz, uFgHSz, uFgVSz, uLcdHSz, uLcdVSz;
u32 uViewPort_X, uViewPort_Y;
u32 uOsd_X, uOsd_Y;
int i;
bIsRev = false;
bIsAllWin = false;
uBgWinNum =
(eBgWin == WIN0) ? 0 :
(eBgWin == WIN1) ? 1 :
(eBgWin == WIN2) ? 2 :
(eBgWin == WIN3) ? 3 : 4;
uFgWinNum =
(eFgWin == WIN0) ? 0 :
(eFgWin == WIN1) ? 1 :
(eFgWin == WIN2) ? 2 :
(eFgWin == WIN3) ? 3 : 4;
// The index number of foreground window must be more than that of background window
if (uBgWinNum >= uFgWinNum)
{
Disp("Error! Invalid Background Window Number or Foreground Window Number\n");
return;
}
// Set Background Parameter
#if (LCD_MODULE_TYPE== LTV350QV_RGB)
uBgHSz = 320*2;
uBgVSz = 240*2;
#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
uBgHSz = 240*2;
uBgVSz = 320*2;
#elif (LCD_MODULE_TYPE== LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
uBgHSz = 800*2;
uBgVSz = 480*2;
#elif (LCD_MODULE_TYPE== LTV300GV_RGB)
uBgHSz = 640*2;
uBgVSz = 480*2;
#else
Assert(0);
#endif
Disp("Enter Any Key To Test Virtual Screen\n");
UART_Getc();
Disp("\n");
LCD_InitBase();
LCD_InitWin(eBgBpp, uBgHSz, uBgVSz, 0, 0, uBgHSz/2, uBgVSz/2, 0, 0, uLcdFbAddr, eBgWin, false);
LCD_SetWinOnOff(1, eBgWin);
LCD_Start();
// Draw Background
GLIB_Init(uLcdFbAddr, uBgHSz, uBgVSz, eBgBpp);
GLIB_DrawPattern(uBgHSz, uBgVSz);
GLIB_SetFontColor(C_BLACK, C_WHITE, true);
GLIB_Printf(100, 160, "BG's WIN %d", (int)eBgWin);
GLIB_SetFontColor(C_RED, C_WHITE, true);
GLIB_Printf(340, 160, "BG's WIN %d", (int)eBgWin);
GLIB_SetFontColor(C_BLACK, C_WHITE, true);
GLIB_Printf(340, 480, "BG's WIN %d", (int)eBgWin);
GLIB_Printf(100, 480, "BG's WIN %d", (int)eBgWin);
LCD_Trigger();
// Set Foreground Parameter
#if (LCD_MODULE_TYPE== LTV350QV_RGB)
uFgHSz = 320/2;
uFgVSz = 240/2;
#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
uFgHSz = 240/2;
uFgVSz = 320/2;
#elif (LCD_MODULE_TYPE== LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
uFgHSz = 800/2;
uFgVSz = 480/2;
#elif (LCD_MODULE_TYPE== LTV300GV_RGB)
uFgHSz = 640/2;
uFgVSz = 480/2;
#else
Assert(0);
#endif
uOsd_X = 0;
uOsd_Y = 0;
LCD_GetFbEndAddr(&uFgAddr, eBgWin);
LCD_InitWin(eBgBpp, uFgHSz, uFgVSz, 0, 0, uFgHSz, uFgVSz, uOsd_X, uOsd_Y, uFgAddr, eFgWin, false);
LCD_SetWinOnOff(1, eFgWin); // Turn on foreground
// Draw foreground
GLIB_Init(uFgAddr, uFgHSz, uFgVSz, eBgBpp);
GLIB_DrawPattern2(uFgHSz, uFgVSz);
GLIB_SetFontColor(C_BLACK, C_WHITE, true);
GLIB_Printf(20, 60, "FG's WIN %d", (int)eFgWin);
LCD_Trigger();
uViewPort_X = 0;
uViewPort_Y = 0;
#if (LCD_MODULE_TYPE== LTV350QV_RGB)
uLcdHSz = 320;
uLcdVSz = 240;
#elif (LCD_MODULE_TYPE == LTS222QV_CPU)
uLcdHSz = 240;
uLcdVSz = 320;
#elif (LCD_MODULE_TYPE== LTP700WV_RGB ||LCD_MODULE_TYPE ==LTE480WV_RGB)
uLcdHSz = 800;
uLcdVSz = 480;
#elif (LCD_MODULE_TYPE== LTV300GV_RGB)
uLcdHSz = 640;
uLcdVSz = 480;
#else
Assert(0);
#endif
Disp("ViewPort Moving Test\n");
Disp("Enter A \'Enter Key\' To Exit Moving Right\n");
Disp("\n");
//////////////////////////////////////////////////////////////////////
for (i=0; i<uBgHSz-uLcdHSz; i++)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Background RIGHT\n");
if (UART_Getc() == '\r')
{
i = uBgHSz-uLcdHSz-1;
break;
}
LCD_SetViewPosOnFrame(i, uViewPort_Y, eBgWin);
LCD_Trigger();
Disp("ViewPort's Left Top Coordinate (X, Y) : (%d, %d)\n", i, uViewPort_Y);
Disp("\n");
}
uViewPort_X = i;
//////////////////////////////////////////////////////////////////////
Disp("\n");
Disp("Enter A \'Enter Key\' To Exit Moving Down\n");
for (i=0; i<uBgVSz - uLcdVSz; i++)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Background DOWN\n");
if (UART_Getc() == '\r')
{
i = uBgVSz - uLcdVSz - 1;
break;
}
LCD_SetViewPosOnFrame(uViewPort_X, i, eBgWin);
LCD_Trigger();
Disp("ViewPort's Left Top Coordinate (X, Y) : (%d, %d)\n", uViewPort_X, i);
Disp("\n");
}
uViewPort_Y = i;
Disp("\n");
Disp("Enter A \'Enter Key\' To Exit Moving Left\n");
for (i=uViewPort_X; i>0; i--)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Background LEFT\n");
if (UART_Getc() == '\r')
break;
LCD_SetViewPosOnFrame(uViewPort_X--, uViewPort_Y, eBgWin);
LCD_Trigger();
Disp("ViewPort's Left Top Coordinate (X, Y) : (%d, %d)\n", uViewPort_X, uViewPort_Y);
Disp("\n");
}
Disp("\n");
Disp("Enter A \'Enter Key\' To Exit Moving Up\n");
for (i=uViewPort_Y; i>0; i--)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Background UP\n");
if (UART_Getc() == '\r')
break;
LCD_SetViewPosOnFrame(0, uViewPort_Y--, eBgWin);
LCD_Trigger();
Disp("ViewPort's Left Top Coordinate (X, Y) : (0, %d)\n", uViewPort_Y);
Disp("\n");
}
Disp("\n");
Disp("Foreground Moving Test\n");
Disp("Enter A \'Enter Key\' To Exit Moving Right\n");
for(i=0; i<uLcdHSz - uFgHSz; i++)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Foreground RIGHT\n");
if (UART_Getc() == '\r')
{
i = uLcdHSz - uFgHSz;
break;
}
LCD_SetViewPosOnLcd(i, uOsd_Y, eFgWin);
LCD_Trigger();
Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", i, uOsd_Y);
Disp("\n");
}
uOsd_X = i;
Disp("\n");
Disp("Enter A \'Enter Key\' To Exit Moving Down\n");
for(i=0; i<uLcdVSz - uFgVSz; i++)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Foreground DOWN\n");
if (UART_Getc() == '\r')
{
i = uLcdVSz - uFgVSz - 1;
break;
}
LCD_SetViewPosOnLcd(uOsd_X, i, eFgWin);
LCD_Trigger();
Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", uOsd_X, i);
Disp("\n");
}
uOsd_Y = i;
Disp("\n");
Disp("Enter A \'Enter Key\' To Exit Moving Left\n");
for(i=uOsd_X; i>0; i--)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Foreground LEFT\n");
if (UART_Getc() == '\r')
break;
LCD_SetViewPosOnLcd(uOsd_X--, uOsd_Y, eFgWin);
LCD_Trigger();
Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", uOsd_X, uOsd_Y);
Disp("\n");
}
Disp("\n");
Disp("Enter A \'Enter Key\' To Exit Moving Up\n");
for(i=uOsd_Y; i>0; i--)
{
Disp("Enter Any Key Except \'Enter Key\' To Move Foreground UP\n");
if (UART_Getc() == '\r')
break;
LCD_SetViewPosOnLcd(0, uOsd_Y--, eFgWin);
LCD_Trigger();
Disp("Foreground's Left Top Coordinate (X, Y) : (%d, %d)\n", 0, uOsd_Y);
Disp("\n");
}
}
static void ColorMap(void)
{
u32 uHSz, uVSz;
const char* pcColorStr;
u32 uColorMapVal;
bIsRev = false;
bIsAllWin = false;
Disp("Enter Any Key To Test Color Map\n");
UART_Getc();
LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
LCD_SetWinOnOff(1, eBgWin);
LCD_Start();
LCD_GetFrmSz(&uHSz, &uVSz, WIN0);
GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);
GLIB_DrawPattern(uHSz, uVSz);
GLIB_SetFontColor(C_BLACK, C_WHITE, true);
GLIB_Printf(40, 80, "WINDOW %d", (int)eBgWin);
LCD_Trigger();
Disp("Enter Any Key To Test Window %d's Color-Map\n", (int)eBgWin);
UART_Getc();
uColorMapVal =
((int)eBgWin == 0) ? 0x000000ff : // BLUE
((int)eBgWin == 1) ? 0x00ff0000 : // RED
((int)eBgWin == 2) ? 0x0000ff00 : // GREEN
((int)eBgWin == 3) ? 0x00ffff00 : // YELLOW
0x00ff00ff; // MAGENTA
pcColorStr =
(uColorMapVal == 0x000000ff) ? "BLUE" :
(uColorMapVal == 0x00ff0000) ? "RED" :
(uColorMapVal == 0x0000ff00) ? "GREEN" :
(uColorMapVal == 0x00ffff00) ? "YELLOW" :
(uColorMapVal == 0x00ff00ff) ? "MAGENTA" : "NOT DEFINED";
LCD_SetColorMapOnOff(1, eBgWin);
LCD_SetColorMapValue(uColorMapVal, eBgWin);
LCD_Trigger();
Disp("The Color Of Color-Map's Color : %s\n", pcColorStr);
Disp("Enter Any Key To Exit This Test\n");
UART_Getc();
}
static void ColorKey(void)
{
u32 uFgAddr;
u32 uHSz, uVSz;
u32 uKeyAreaColor, uNonKeyAreaColor;
u32 uColorKey, uMaskKey;
int k;
bIsRev = false;
bIsAllWin = false;
if ((int)eBgWin >= (int)eFgWin)
{
Disp("Invalid Window Number Correspond to Foreground/ Background!\n");
return;
}
Disp("Enter Any Key To Test Color Key\n");
UART_Getc();
LCD_InitDISPC(eBgBpp, uLcdFbAddr, eBgWin, false);
LCD_SetWinOnOff(1, eBgWin);
LCD_Start();
LCD_GetFrmSz(&uHSz, &uVSz, eBgWin);
// Draw Pattern by using Glib for Back-ground window
GLIB_Init(uLcdFbAddr, uHSz, uVSz, eBgBpp);
Disp("Window %d (Background) is Displayed\n", (int)eBgWin);
GLIB_DrawPattern(uHSz, uVSz);
LCD_Trigger();
if (eFgBpp == RGB24)
{
uColorKey =
((int)eFgWin == 1) ? 0x0000ff :
((int)eFgWin == 2) ? 0x00ff00 :
((int)eFgWin == 3) ? 0xff0000 : 0xff00ff;
uMaskKey =
((int)eFgWin == 1) ? 0x00000c :
((int)eFgWin == 2) ? 0x000c00 :
((int)eFgWin == 3) ? 0x0c0000 : 0x00000c;
uKeyAreaColor =
((int)eFgWin == 1) ? 0x0000fb : // valid color: 0xf3, 0xf7, 0xfb, 0xff
((int)eFgWin == 2) ? 0x00f300 : // valid color: 0x00f300, 0x00f700, 0x00fb00, 0x00ff00
((int)eFgWin == 3) ? 0xf70000 : // valid color: 0xf30000, 0xf70000, 0xfb0000, 0xff0000
0xff00f3; // valid color: 0xff00f3, 0xff00f7, 0xff00fb, 0xff00ff
uNonKeyAreaColor =
((int)eFgWin == 1) ? 0x00ff0000 : // RED
((int)eFgWin == 2) ? 0x000000ff : // BLUE
((int)eFgWin == 3) ? 0x0000ff00 : // GREEN
0x0000ffff; // CYAN
}
else if (eFgBpp == RGB16)
{
// In RGB16(565) Bpp,
// The Valid bit position of color key value
// RED : COLVAL[23:19]
// GREEN : COLVAL[15:10]
// BLUE : COLVAL[7:3]
uColorKey =
((int)eFgWin == 1) ? 0x0000f8 : // BLUE
((int)eFgWin == 2) ? 0x00fc00 : // GREEN
((int)eFgWin == 3) ? 0xf80000 : // RED
0xf800f8; // MAGENTA
// In RGB16(565) Bpp,
// Mask Key[18:16] must be 0x7
// Mask Key[9:8] must be 0x3
// Mask Key[2:0] must be 0x7 and
// The valid bit postion of mask key(compare key) value
// RED : COLVAL[23:19]
// GREEN : COLVAL[15:10]
// BLUE : COLVAL[7:3]
uMaskKey =
((int)eFgWin == 1) ? 0x070337 :
((int)eFgWin == 2) ? 0x071b07 :
((int)eFgWin == 3) ? 0xc70307 : 0x070337;
uKeyAreaColor =
((int)eFgWin == 1) ? 0x0019 : // valid color: 0x19, 0x1b, 0x1d, 0x1f
((int)eFgWin == 2) ? 0x07e0 : // valid color: 0x720, 0x760, 0x790, 0x7e0
((int)eFgWin == 3) ? 0x7800 : // valid color: 0x3800, 0x7800, 0xc800, 0xf800
0xf81b; // valid color: 0xf819, 0xf81b, 0xf81d, 0xf81f
uNonKeyAreaColor =
((int)eFgWin == 1) ? 0xf800 : // RED
((int)eFgWin == 2) ? 0x001f : // BLUE
((int)eFgWin == 3) ? 0x07d0 : // GREEN
0x07ff; // CYAN
}
Disp("Enter Any Key To Display Window %d (Foreground)\n", (int)eFgWin);
UART_Getc();
LCD_GetFbEndAddr(&uFgAddr, eBgWin);
LCD_InitWin(eFgBpp, uHSz, uVSz, 0, 0, uHSz, uVSz, 0, 0, uFgAddr, eFgWin, false);
LCD_SetWinOnOff(1, eFgWin);
LCD_GetFrmSz(&uHSz, &uVSz, eFgWin);
GLIB_Init(uFgAddr, uHSz, uVSz, eFgBpp);
GLIB_ClearFrame2(uKeyAreaColor); // Color key area
LCD_Trigger();
GLIB_FillRectangle2(10, 80, 210, 120, uNonKeyAreaColor); // Non-color key area
LCD_Trigger();
LCD_SetColorKeyOnOff(1, eFgWin);
Disp("Enter Any Key To Test Color Key (FOREGROUND MATCH)\n");
UART_Getc();
Disp("\n");
LCD_SetColorKey(uMaskKey, uColorKey, MATCH_FG_IMAGE, false, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Test Color Key (BACKGROUDN MATCH)\n");
UART_Getc();
Disp("\n");
LCD_SetColorKey(uMaskKey, uColorKey, MATCH_BG_IMAGE, false, eFgWin);
LCD_Trigger();
///////////////////////////////////////////////////////////////////
Disp("Enter Any Key To Test Color Key (FOREGROUND MATCH) + BLENDING\n");
UART_Getc();
Disp("\n");
LCD_SetColorKey(uMaskKey, uColorKey, MATCH_FG_IMAGE, false, eFgWin);
for(k=0; k<0x10; k++)
{
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0+k, 0x0+k, 0x0+k, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
UART_Getc();
}
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
for(k=0; k<0x10; k++)
{
LCD_SetAlpha(0x0+k, 0x0+k, 0x0+k, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
UART_Getc();
}
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
for(k=0; k<0x10; k++)
{
LCD_SetAlpha(0x0+k, 0x0+k, 0x0+k, 0x0+k, 0x0+k, 0x0+k, eFgWin);
LCD_Trigger();
Disp("Enter Any Key To Process A Color Key Test: %d\n", k);
UART_Getc();
}
LCD_SetAlpha(0x0, 0x0, 0x0, 0x0, 0x0, 0x0, eFgWin);
LCD_Trigger();
/////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////
Disp("\n");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -