📄 display.c
字号:
}
void Basic_Display_CPUIF(void)
{
LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
LcdEnvidOnOff(LCD_OFF);
Test_DisplayFramebufferCpuIf_QVGA1();
printf("\nPress enter Half word swap test. \n");
Uart_getc();
Basic_Display_Setting_CPUIF(0,0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
rWINCON0 |= (1<<16);
Glib_Rectangle(0,0,239,319,255);
Glib_Line(0,0,239,319,255);
Glib_Line(0,319,239,0,255);
Display_Start_CPUIF(0);
Display_End(LCD_WIN_ALL);
}
void Test_ColorKey_CPUIF(void)
{
LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
LcdEnvidOnOff(LCD_OFF);
// Setting Window 0
Basic_Display_Setting_CPUIF(LCD_WIN_0,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
LCD_FilledRectangle(0, 0, screen_width-1, screen_height/4*1-1, 0xf800);
LCD_FilledRectangle(0, screen_height/4*1, screen_width-1, screen_height/4*2-1, 0x07e0);
LCD_FilledRectangle(0, screen_height/4*2, screen_width-1, screen_height/4*3-1, 0x001f);
LCD_FilledRectangle(0, screen_height/4*3, screen_width-1, screen_height-1, 0xffff);
lprintf(50,20,0xffff,"Window 0");
// Setting Window 1
Basic_Display_Setting_CPUIF(LCD_WIN_1,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
LCD_FilledRectangle(0, 0, screen_width/4*1-1, screen_height-1, 0xf800);
LCD_FilledRectangle(screen_width/4*1, 0, screen_width/4*2-1, screen_height-1, 0x07e0);
LCD_FilledRectangle(screen_width/4*2, 0, screen_width/4*3-1, screen_height-1, 0x001f);
LCD_FilledRectangle(screen_width/4*3, 0, screen_width-1, screen_height-1, 0xffff);
lprintf(50,100,0xffff,"Window 1");
*WxKEYCON0_Reg_Addr[1] = (0<<26)|(1<<25)|(0<<24)|(0x7<<16)|(0x3<<8)|(0x7);
*WxKEYCON1_Reg_Addr[1] = 0x0;
LcdWindowOnOff(LCD_WIN_ALL,LCD_ON);
LcdEnvidOnOff(LCD_ON);
rCPUTRIGCON2 = 1;
printf("Press any key to start\n");
getchar();
*WxKEYCON1_Reg_Addr[1] = 0xf80000;
rCPUTRIGCON2 = 1;
delayLoop(30000000);
*WxKEYCON1_Reg_Addr[1] = 0x00fc00;
rCPUTRIGCON2 = 1;
delayLoop(30000000);
*WxKEYCON1_Reg_Addr[1] = 0x0000f8;
rCPUTRIGCON2 = 1;
delayLoop(30000000);
*WxKEYCON1_Reg_Addr[1] = 0xf8fcf8;
rCPUTRIGCON2 = 1;
delayLoop(30000000);
*WxKEYCON1_Reg_Addr[1] = 0xf80000;
rCPUTRIGCON2 = 1;
delayLoop(30000000);
/* Ending Test */
Display_End(LCD_WIN_ALL);
}
void Test_Blending_Win01_CPUIF(void)
{
int blending;
printf("\nSelect the blending mode which you want to test\n");
printf("(If you want to stop this test, press enter key)\n");
printf(" 0: Per Plane Blending 1: Per Pixel Blending\n");
blending = GetIntNum();
if (blending==0)
PlaneBlendingTest_CPUIF();
else if (blending==1)
PixelBlendingTest_CPUIF();
}
void PlaneBlendingTest_CPUIF(void)
{
uint32 i;
int32 alpha_sel;
printf("\nSelect the alpha type which you want to test\n");
printf(" 0: alpha 0 1: alpha 1\n");
alpha_sel = GetIntNum();
if ((alpha_sel<0)||(alpha_sel>1))
alpha_sel=0;
LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
LcdEnvidOnOff(LCD_OFF);
// Setting Window 0
Basic_Display_Setting_CPUIF(LCD_WIN_0,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
LCD_FilledRectangle(0, 0, screen_width-1, screen_height/4*1-1, 0xf800);
LCD_FilledRectangle(0, screen_height/4*1, screen_width-1, screen_height/4*2-1, 0x7e0);
LCD_FilledRectangle(0, screen_height/4*2, screen_width-1, screen_height/4*3-1, 0x1f);
LCD_FilledRectangle(0, screen_height/4*3, screen_width-1, screen_height-1, 0xffff);
lprintf(50,20,0xffff,"Window 0");
// Setting Window 1
Basic_Display_Setting_CPUIF(LCD_WIN_1,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
LCD_FilledRectangle(0, 0, screen_width/4*1-1, screen_height-1, 0xf800);
LCD_FilledRectangle(screen_width/4*1, 0, screen_width/4*2-1, screen_height-1, 0x7e0);
LCD_FilledRectangle(screen_width/4*2, 0, screen_width/4*3-1, screen_height-1, 0x1f);
LCD_FilledRectangle(screen_width/4*3, 0, screen_width-1, screen_height-1, 0xffff);
lprintf(50,100,0xffff,"Window 1");
*WINCONx_Reg_Addr[1] &= ~((1<<6)|(1<<1));
*WINCONx_Reg_Addr[1] |= (alpha_sel<<1);
*VIDOSDxC_Reg_Addr[1] = (0<<20)|(0<<16)|(0<<12)|(0xf<<8)|(0xf<<4)|(0xf<<0);
LcdWindowOnOff(LCD_WIN_ALL,LCD_ON);
LcdEnvidOnOff(LCD_ON);
rCPUTRIGCON2 = 1;
printf("Press any key to start\n");
getchar();
for(i=0;i<8;i++)
{
//*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12)|((i^0xf)<<8)|((i^0xf)<<4)|((i^0xf)<<0);
*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12);
Delay(10);
rCPUTRIGCON2 = 1;
delayLoop(10000000);
}
/* Ending Test */
Display_End(LCD_WIN_ALL);
}
void PixelBlendingTest_CPUIF( void)
{
uint32 i;
LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
LcdEnvidOnOff(LCD_OFF);
// Setting Window 0
Basic_Display_Setting_CPUIF(LCD_WIN_0,LCD_BUF_0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
LCD_FilledRectangle(0, 0, screen_width-1, screen_height/4*1-1, 0xf800);
LCD_FilledRectangle(0, screen_height/4*1, screen_width-1, screen_height/4*2-1, 0x7e0);
LCD_FilledRectangle(0, screen_height/4*2, screen_width-1, screen_height/4*3-1, 0x1f);
LCD_FilledRectangle(0, screen_height/4*3, screen_width-1, screen_height-1, 0xffff);
lprintf(50,20,0xffff,"Window 0");
// Setting Window 1
Basic_Display_Setting_CPUIF(LCD_WIN_1,LCD_BUF_0,WINCONx_16BPP_A555,lcd_horizon_value,lcd_line_value);
LCD_FilledRectangle(0, 0, screen_width/8*1-1, screen_height-1, 0x7c00);
LCD_FilledRectangle(screen_width/8*1, 0, screen_width/8*2-1, screen_height-1, 0x3e0);
LCD_FilledRectangle(screen_width/8*2, 0, screen_width/8*3-1, screen_height-1, 0x1f);
LCD_FilledRectangle(screen_width/8*3, 0, screen_width/8*4-1, screen_height-1, 0x7fff);
LCD_FilledRectangle(screen_width/8*4, 0, screen_width/8*5-1, screen_height-1, 0xfc00);
LCD_FilledRectangle(screen_width/8*5, 0, screen_width/8*6-1, screen_height-1, 0x83e0);
LCD_FilledRectangle(screen_width/8*6, 0, screen_width/8*7-1, screen_height-1, 0x801f);
LCD_FilledRectangle(screen_width/8*7, 0, screen_width-1, screen_height-1, 0xffff);
lprintf(0,100,0x7fff,"Window 1");
lprintf(0,120,0x7fff,"non blending area");
lprintf(screen_width/2,100,0xffff,"Window 1");
lprintf(screen_width/2,120,0xffff,"blending area");
*WINCONx_Reg_Addr[1] &= ~((1<<6)|(1<<1));
*WINCONx_Reg_Addr[1] |= (1<<6);
*VIDOSDxC_Reg_Addr[1] = (0x0<<20)|(0x0<<16)|(0x0<<12)|(0xf<<8)|(0xf<<4)|(0xf<<0);
LcdWindowOnOff(LCD_WIN_ALL,LCD_ON);
LcdEnvidOnOff(LCD_ON);
Delay(1);
rCPUTRIGCON2 = 1;
printf("Press any key to start\n");
getchar();
for(i=0;i<16;i++)
{
*VIDOSDxC_Reg_Addr[1] = (i<<20)|(i<<16)|(i<<12)|((i^0xf)<<8)|((i^0xf)<<4)|((i^0xf)<<0);
//Delay(1);
rCPUTRIGCON2 = 1;
delayLoop(10000000);
}
/* Ending Test */
Display_End(LCD_WIN_ALL);
}
void Test_ColorMap_CPUIF(void)
{
int8 window=-1;
uint8 i=0;
uint32 color_map=0;
uint32 j,k=0;
LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
LcdEnvidOnOff(LCD_OFF);
Basic_Display_Setting_CPUIF(0,0,WINCONx_16BPP_565,lcd_horizon_value,lcd_line_value);
for(j=0;j<screen_height;j++)
for(i=0;i<screen_width;i++)
PutPixel(i,j,prayer16bpp[k++]);
Display_Start_CPUIF(0);
while(1)
{
printf("\nSelect the window # which you want to test\n");
printf("(If you want to stop this test, press enter key)\n");
printf(" 0: Window 0 1: Window 1 \n");
window = GetIntNum();
if( window==(-1) ) return;
else
{
switch(window)
{
case 0:
color_map = 0xff0000;
break;
case 1:
color_map = 0x0000ff;
break;
default:
color_map = 0;
break;
}
*WINxMAP_Reg_Addr[window] = (1<<24)|(color_map); //color map enable
LcdWindowOnOff(window,LCD_OFF);
LcdEnvidOnOff(LCD_OFF);
Display_Start_CPUIF(window);
Display_End(window);
}
}
}
void Test_EachWindow_EachBPP_CPUIF(void)
{
int32 window,bpp;
uint32 i=0;
while(1)
{
printf("\nSelect the window # which you want to test\n");
printf("(If you want to stop this test, press enter key)\n");
printf(" 0: Window 0 (Buffer0) 1: Window 1\n");
window = GetIntNum();
if ((window<0)||(window>1)) break;
while(1)
{
printf("\nSelect the bpp type which you want to test\n");
printf("(If you want to exit, press enter key)\n");
for(i=0;i<14;i++)
{
printf(" %2d:%s\n",i,lcd_bpp_mode[i]);
}
bpp = GetIntNum();
if( (bpp<0)||(bpp>14) ) break;
LcdWindowOnOff(LCD_WIN_ALL,LCD_OFF);
LcdEnvidOnOff(LCD_OFF);
Basic_Display_Setting_CPUIF(window,LCD_BUF_0,bpp,lcd_horizon_value,lcd_line_value);
LCD_ClearScr(0);
Prepare_Image(window,bpp);
Display_Start_CPUIF(window);
Display_End(window);
}
}
}
void Test_Lcd_Stn_1Bit(void)
{
int i,j;
//Lcd_Port_Init();
Lcd_Init(MODE_STN_1BIT);
Glib_Init(MODE_STN_1BIT);
Lcd_EnvidOnOff(1); // Enable ENVID Bit
printf("[STN Mono(1bit/1pixel) LCD Test]\n");
Glib_ClearScr(0, MODE_STN_1BIT);
for(j=0;j<LCD_YSIZE_STN;j+=16)
for(i=0;i<LCD_XSIZE_STN;i+=16)
Glib_FilledRectangle(i,j,i+15,j+15,((j+i)/16)%2);
printf("STN Mono test 1. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_1BIT);
Glib_FilledRectangle(160,0,319,239,1); //Half Screen
printf("STN Mono test 2. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_1BIT);
Glib_Rectangle(0,0,319,239,1); // #0
Glib_Line(0,0,319,239,1); // 00
Glib_Line(0,239,319,0,1);
Glib_Rectangle(0+320,0,319+320,239,1); // 0#
Glib_Line(0+320,0,319+320,239,1); // 00
Glib_Line(0+320,239,319+320,0,1);
Glib_FilledRectangle(50+320,50,269+320,189,1);
Glib_Rectangle(0,0+240,319,239+240,1); // 00
Glib_Line(0,0+240,319,239+240,1); // #0
Glib_Line(0,239+240,319,0+240,1);
Glib_FilledRectangle(50,50+240,269,189+240,1);
Glib_Rectangle(0+320,0+240,319+320,239+240,1); // 00
Glib_Line(0+320,0+240,319+320,239+240,1); // 0#
Glib_Line(0+320,239+240,319+320,0+240,1);
Glib_Rectangle(50+320,50+240,269+320,189+240,1);
printf("Virtual Screen Test(STN Mono). Press any key[ijkm\\r]!\n");
MoveViewPort(MODE_STN_1BIT);
Lcd_MoveViewPort(0,0,MODE_STN_1BIT);
Lcd_EnvidOnOff(0); // Disable ENVID Bit
}
void Test_Lcd_Stn_2Bit(void)
{
int i,j,k;
Lcd_Init(MODE_STN_2BIT);
Glib_Init(MODE_STN_2BIT);
Lcd_EnvidOnOff(1); // Enable ENVID Bit
printf("[STN 4 gray(2bit/1pixel) LCD Test]\n");
Glib_ClearScr(0, MODE_STN_2BIT);
j=0;
for(i=0;i<320;i+=80)
Glib_FilledRectangle(0+i,0,79+i,239,j++);
printf("4 gray mode test 1. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_2BIT);
j=0;
for(i=0;i<320;i+=80)
{
Glib_FilledRectangle(0+i,0,79+i,119,j);
Glib_FilledRectangle(0+i,120,79+i,239,3-j);
j++;
}
printf("4 gray mode test 2. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_2BIT);
j=0;
for(i=0;i<240;i+=60)
{
Glib_FilledRectangle(i,i,i+59,i+59,j);
j++;
}
printf("4 gray mode test 3. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_2BIT);
k=0;
for(i=160;i<480;i+=80)
{
for(j=120;j<360;j+=60)
{
Glib_FilledRectangle(i,j,i+79,j+59,k%4);
k++;
}
k+=2;;
}
// #0
// 00
Glib_Rectangle(0,0,319,239,3);
Glib_Line(0,0,319,239,3);
Glib_Line(0,239,319,0,3);
// 0#
// 00
Glib_Rectangle(0+320,0,319+320,239,3);
Glib_Line(0+320,0,319+320,239,3);
Glib_Line(0+320,239,319+320,0,3);
// 00
// #0
Glib_Rectangle(0,0+240,319,239+240,3);
Glib_Line(0,0+240,319,239+240,3);
Glib_Line(0,239+240,319,0+240,3);
// 00
// 0#
Glib_Line(0+320,0+240,319+320,239+240,3);
Glib_Line(0+320,239+240,319+320,0+240,3);
Glib_Rectangle(50+320,50+240,269+320,189+240,3);
printf("Virtual Screen Test(STN 4 gray). Press any key[ijkm\\r]!\n");
MoveViewPort(MODE_STN_2BIT);
Lcd_MoveViewPort(0,0,MODE_STN_2BIT);
Lcd_EnvidOnOff(0); // Disable ENVID Bit
}
void Test_Lcd_Stn_4Bit(void)
{
int i,j,k;
Lcd_Init(MODE_STN_4BIT);
Glib_Init(MODE_STN_4BIT);
Lcd_EnvidOnOff(1);
printf("[STN 16 gray(4bit/1pixel) LCD Test]\n");
Glib_ClearScr(0, MODE_STN_4BIT);
j=0;
for(i=0;i<320;i+=20)
Glib_FilledRectangle(0+i,0,19+i,239,j++);
printf("16 gray mode test 1. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_4BIT);
j=0;
for(i=0;i<320;i+=20)
{
Glib_FilledRectangle(0+i,0,19+i,119,j);
Glib_FilledRectangle(0+i,120,19+i,239,15-j);
j++;
}
printf("16 gray mode test 2. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_4BIT);
j=0;
for(i=0;i<240;i+=30)
{
Glib_FilledRectangle(i,i,i+29,i+29,j);
Glib_FilledRectangle(i+110,i,i+29+110,i+29,j+8);
j++;
}
printf("4 gray mode test 3. Press any key!\n");
Uart_getc();
Glib_ClearScr(0, MODE_STN_4BIT);
k=0;
for(i=160;i<480;i+=40)
for(j=120;j<360;j+=30)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -