📄 lcd.c.bak
字号:
/*****************************************
NAME: lcd.c
DESC: lcd test codes
HISTORY: 2002.03.13:draft ver 0.0
*****************************************/
#include <string.h>
#include "24a0addr.h"
#include "24a0lib.h"
#include "lcdlib.h"
#include "glib.h"
#include "lcd.h"
#include "imagetest.h"
#include "..\bmp\DEMO256.h"
#include "..\bmp\sghx600qvga16.h"
#include "..\bmp\sghx600iqvga16.h"
//#include "..\bmp\sghx600iqvga18.h"
#include "..\bmp\sghx600qvga18.h"
#include "..\bmp\sghx600iqqvga16.h"
#include "..\bmp\sghx600iqqvga18.h"
//#include "..\bmp\yujin.h"
//#include "..\bmp\olymphic16b.h"
//#include "..\bmp\sghx60024b.h"
//#include "..\bmp\pqvga16bsm5.h"
#define BGRTEST (FALSE)
void __irq Lcd_Int(void);
void Test_Lcd_8Bit_240320_On(void);
void Test_Lcd_16Bit_240320_On(void);
void Test_Lcd_PAR_8Bit_240320(void);
void Test_Lcd_PAR_8BitNoPalette_240320(void);
void Test_Lcd_PAR_16Bit565_240320(void);
void Test_Lcd_PAR_16Bit5551_240320(void);
void Test_Lcd_PAR_18Bit_240320(void);
void Test_Lcd_BGColorMap_240320(void);
void Test_Lcd_FGColorMap_240320(void);
void Test_Osd_240320_Blending(void);
void Test_Osd_16Bit565_240320_Colorkey(void);
void Test_Osd_16Bit565_240320_Compkey(void);
void Test_Osd_16Bit565_240320_Compkey_Direction(void);
volatile U32 framecnt;
volatile U32 fifocnt;
void * lcd_function[][2]=
{
(void *)Test_Lcd_8Bit_240320_On, "[240x320] Parallel 8bpp Free Run ",
(void *)Test_Lcd_16Bit_240320_On, "[240x320] Parallel 16bpp Free Run ",
(void *)Test_Lcd_PAR_8Bit_240320, "[240x320] Parallel 8bpp ",
(void *)Test_Lcd_PAR_8BitNoPalette_240320, "[240x320] Parallel Non-palettiezed 8bpp ",
(void *)Test_Lcd_PAR_16Bit565_240320, "[240x320] Parallel 16bpp 565 ",
(void *)Test_Lcd_PAR_16Bit5551_240320, "[240x320] Parallel 16bpp 5551 ",
(void *)Test_Lcd_PAR_18Bit_240320, "[240x320] Parallel 18bpp ",
(void *)Test_Lcd_BGColorMap_240320, "BG Color Map 240x320 ",
(void *)Test_Lcd_FGColorMap_240320, "FG Color Map 240x320 ",
(void *)Test_Osd_240320_Blending, "Osd Blending 240x320 all ",
(void *)Test_Osd_16Bit565_240320_Colorkey, "Color Key test 240x320 ",
(void *)Test_Osd_16Bit565_240320_Compkey, "Compare Key Test 240x320 ",
(void *)Test_Osd_16Bit565_240320_Compkey_Direction, "Compare Key Test with direction 240x320 ",
0,0
};
void LcdDisplayFunction(void)
{
int i;
i=0;
Uart_Printf("\n\n");
while(1) { //display menu
Uart_Printf("%2d:%s",i,lcd_function[i][1]);
i++;
if((int)(lcd_function[i][0])==0) {
Uart_Printf("\n");
break;
}
if((i%2)==0) Uart_Printf("\n");
}
}
void Ch28_LCD(void)
{
int i;
Uart_Printf("\n----Test of LCD Controller----\n");
//LCD Initializtion
rPRIORITY1=0x2;
Uart_Printf("If you want to test Post Processor, then you must download image to memory before testing\n");
while(1) {
LcdDisplayFunction();
Uart_Printf("\nSelect(-1 to exit): ");
i = Uart_GetIntNum();
//Uart_Printf("IN:%d.\n\n", i);
if(i==-1) break;
if(i>=0 && (i<(sizeof(lcd_function)/8)) )
( (void (*)(void)) (lcd_function[i][0]) )(); // execute selected function.
}
}
void __irq Lcd_Int(void)
{
rINTSUBMSK=rINTSUBMSK|BIT_SUB_DISP_FRAME|BIT_SUB_DISP_FIFO;
if(rSUBSRCPND&(1<<20))
Uart_Printf("Frame Sync. Interrupte is occured!\n");
else if(rSUBSRCPND&(1<<16))
Uart_Printf("FIFO Interrupt is occured!\n");
rSUBSRCPND=rSUBSRCPND|BIT_SUB_DISP_FRAME|BIT_SUB_DISP_FIFO; //Clear SUB Interrupt Source Pending.
ClearPending(BIT_LCD_POST);//Clear Source Pending, Interrupt Pending
}
void __irq Lcd_Int_DualBuffer(void)
{
rINTSUBMSK|=BIT_SUB_DISP_FRAME|BIT_SUB_DISP_FIFO|BIT_SUB_POST;
framecnt++;
rSUBSRCPND|=BIT_SUB_DISP_FRAME; //Clear SUB Interrupt Source Pending.
ClearPending(BIT_LCD_POST);//Clear Source Pending, Interrupt Pending
rINTSUBMSK&=~(BIT_SUB_DISP_FRAME);
}
void __irq Lcd_Int_FGDualBuffer(void)
{
rINTSUBMSK|=BIT_SUB_DISP_FRAME;
if((rLCDCON1>>20)&1)
rLCDCON1&=(~(1<<20));
else
rLCDCON1=(rLCDCON1&~(1<<20))|(1<<20);
/*
if((rLCDCON1>>20)&1)
LcdSelectBuffer(FGBUFFER1);
else
LcdSelectBuffer(FGBUFFER2);
*/
rSUBSRCPND|=BIT_SUB_DISP_FRAME; //Clear SUB Interrupt Source Pending.
ClearPending(BIT_LCD_POST);//Clear Source Pending, Interrupt Pending
}
void Test_Lcd_8Bit_240320_On(void)
{
// DisplayType=MODE_PAR_8BIT_240320;
// WhichFrameBuffer=BGBUFFER1;
int i,j,k;
PaletteInit(PAL_565_8BPPBG); // Initialize 256 palette
LcdBGInit(MODE_PAR_8BIT_240320);
GlibInit(MODE_PAR_8BIT_240320, BGBUFFER1);
GlibClearScr(0);
k=0;
for(j=0; j<BG_YSIZE_240320; j++)
for(i=0; i<BG_XSIZE_240320; i++)
PutPixel(i,j,DEMO256[k++]);
LcdEnvidOnOff(1); // Enable ENVID Bit
}
void Test_Lcd_16Bit_240320_On(void)
{
// DisplayType=MODE_PAR_8BIT_240320;
// WhichFrameBuffer=BGBUFFER1;
int i,j,k;
LcdBGInit(MODE_PAR_16BIT565_240320);
GlibInit(MODE_PAR_16BIT565_240320, 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++]);
LcdEnvidOnOff(1); // Enable ENVID Bit
}
void Test_Lcd_PAR_8Bit_240320(void)
{
int i,j,k;
PaletteInit(PAL_565_8BPPBG); // Initialize 256 palette
LcdBGInit(MODE_PAR_8BIT_240320);
GlibInit(MODE_PAR_8BIT_240320, BGBUFFER1);
Uart_Printf("[256 COLOR(8bit/1pixel) Parallel Mode LCD TEST]\n");
GlibClearScr(0); // Fill the LCD panel with Black Color
LcdEnvidOnOff(1); // Enable ENVID Bit
Uart_Getch();
GlibFilledRectangle(0, 0, BG_XSIZE_240320/2-1, BG_YSIZE_240320-1,51);
GlibFilledRectangle(BG_XSIZE_240320/2 , 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1,52);
Uart_Printf("256 Color Parallel mode test 1. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
k=0;
for(j=0; j<BG_YSIZE_240320; j+=16)
for(i=0; i<BG_XSIZE_240320; i+=16)
GlibFilledRectangle(i,j,i+15,j+15,(k++)%255);
Uart_Printf("256 Color Parallel mode test 2. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
k=0;
for(j=0; j<BG_YSIZE_240320; j+=10)
for(i=0; i<BG_XSIZE_240320; i+=8)
GlibFilledRectangle(i, j, i+7, j+9, (k++)%255);
Uart_Printf("256 Color Parallel mode test 3. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
//First Quarter
GlibRectangle(0, 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1, 255); //red
GlibLine(0, 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1, 3);//red
GlibLine(0, BG_YSIZE_240320-1, BG_XSIZE_240320-1, 0, 3);//red
//Second Quarter
GlibFilledRectangle(BG_XSIZE_240320, 0, BG_XSIZE_240320+29, 29, 8);
GlibFilledRectangle(BG_VXSIZE_240320-30, 0, BG_VXSIZE_240320-1, 29, 18);
GlibFilledRectangle(BG_XSIZE_240320, BG_YSIZE_240320-30, BG_XSIZE_240320+29, BG_YSIZE_240320-1, 150);
GlibFilledRectangle(BG_VXSIZE_240320-30, BG_YSIZE_240320-30, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 200);
GlibRectangle(BG_XSIZE_240320, 0, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 255);
GlibLine(BG_XSIZE_240320, 0, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 3);
GlibLine(BG_XSIZE_240320, BG_YSIZE_240320-1, BG_VXSIZE_240320-1, 0, 3);
//Third Quarter
GlibRectangle(0, BG_YSIZE_240320, BG_XSIZE_240320-1, BG_VYSIZE_240320-1, 18);
GlibLine(0, BG_YSIZE_240320, BG_XSIZE_240320-1, BG_YSIZE_240320+BG_YSIZE_240320/2, 255);
GlibLine(0, BG_VYSIZE_240320-1, BG_XSIZE_240320-1, BG_YSIZE_240320+BG_YSIZE_240320/2, 255);
GlibLine(0, BG_YSIZE_240320+BG_YSIZE_240320/2, BG_XSIZE_240320-1, BG_YSIZE_240320, 255);
GlibLine(0, BG_YSIZE_240320+BG_YSIZE_240320/2, BG_XSIZE_240320-1, BG_VYSIZE_240320-1, 255);
//Fourth Quarter
GlibRectangle(BG_XSIZE_240320, BG_YSIZE_240320, BG_VXSIZE_240320-1, BG_VYSIZE_240320-1, 255);
GlibLine(BG_XSIZE_240320, BG_YSIZE_240320, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_VYSIZE_240320-1, 3);
GlibLine(BG_VXSIZE_240320-1, BG_YSIZE_240320, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_VYSIZE_240320-1, 3);
GlibLine(BG_XSIZE_240320, BG_VYSIZE_240320-1, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_YSIZE_240320, 3);
GlibLine(BG_VXSIZE_240320-1, BG_VYSIZE_240320-1, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_YSIZE_240320, 3);
Uart_Printf("256 Color Parallel mode test for Virtual Screen. Press any key[ijkm\\r]!\n");
MoveViewPort(MODE_PAR_8BIT_240320, BGBUFFER1);
LcdMoveViewPort(0, 0, MODE_PAR_8BIT_240320, BGBUFFER1);
LcdEnvidOnOff(0);
}
void Test_Lcd_PAR_8BitNoPalette_240320(void)
{
int i,j,k;
LcdBGInit(MODE_PAR_8BITNP_240320);
GlibInit(MODE_PAR_8BITNP_240320, BGBUFFER1);
Uart_Printf("[256 COLOR(8bit/1pixel) Parallel Mode LCD TEST]\n");
GlibClearScr(0); // Fill the LCD panel with Black Color
LcdEnvidOnOff(1); // Enable ENVID Bit
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
GlibFilledRectangle(0, 0, BG_XSIZE_240320/2-1, BG_YSIZE_240320-1,51);
GlibFilledRectangle(BG_XSIZE_240320/2 , 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1,52);
Uart_Printf("256 Color Parallel mode test 1. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
k=0;
for(j=0; j<BG_YSIZE_240320; j+=16)
for(i=0; i<BG_XSIZE_240320; i+=16)
GlibFilledRectangle(i,j,i+15,j+15,(k++)%255);
Uart_Printf("256 Color Parallel mode test 2. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
k=0;
for(j=0; j<BG_YSIZE_240320; j+=10)
for(i=0; i<BG_XSIZE_240320; i+=8)
GlibFilledRectangle(i, j, i+7, j+9, (k++)%255);
Uart_Printf("256 Color Parallel mode test 3. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
//First Quarter
GlibRectangle(0, 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1, 255); //red
GlibLine(0, 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1, 3);//red
GlibLine(0, BG_YSIZE_240320-1, BG_XSIZE_240320-1, 0, 3);//red
//Second Quarter
GlibFilledRectangle(BG_XSIZE_240320, 0, BG_XSIZE_240320+29, 29, 8);
GlibFilledRectangle(BG_VXSIZE_240320-30, 0, BG_VXSIZE_240320-1, 29, 18);
GlibFilledRectangle(BG_XSIZE_240320, BG_YSIZE_240320-30, BG_XSIZE_240320+29, BG_YSIZE_240320-1, 150);
GlibFilledRectangle(BG_VXSIZE_240320-30, BG_YSIZE_240320-30, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 200);
GlibRectangle(BG_XSIZE_240320, 0, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 255);
GlibLine(BG_XSIZE_240320, 0, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 3);
GlibLine(BG_XSIZE_240320, BG_YSIZE_240320-1, BG_VXSIZE_240320-1, 0, 3);
//Third Quarter
GlibRectangle(0, BG_YSIZE_240320, BG_XSIZE_240320-1, BG_VYSIZE_240320-1, 18);
GlibLine(0, BG_YSIZE_240320, BG_XSIZE_240320-1, BG_YSIZE_240320+BG_YSIZE_240320/2, 255);
GlibLine(0, BG_VYSIZE_240320-1, BG_XSIZE_240320-1, BG_YSIZE_240320+BG_YSIZE_240320/2, 255);
GlibLine(0, BG_YSIZE_240320+BG_YSIZE_240320/2, BG_XSIZE_240320-1, BG_YSIZE_240320, 255);
GlibLine(0, BG_YSIZE_240320+BG_YSIZE_240320/2, BG_XSIZE_240320-1, BG_VYSIZE_240320-1, 255);
//Fourth Quarter
GlibRectangle(BG_XSIZE_240320, BG_YSIZE_240320, BG_VXSIZE_240320-1, BG_VYSIZE_240320-1, 255);
GlibLine(BG_XSIZE_240320, BG_YSIZE_240320, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_VYSIZE_240320-1, 3);
GlibLine(BG_VXSIZE_240320-1, BG_YSIZE_240320, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_VYSIZE_240320-1, 3);
GlibLine(BG_XSIZE_240320, BG_VYSIZE_240320-1, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_YSIZE_240320, 3);
GlibLine(BG_VXSIZE_240320-1, BG_VYSIZE_240320-1, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_YSIZE_240320, 3);
Uart_Printf("256 Color Parallel mode test for Virtual Screen. Press any key[ijkm\\r]!\n");
MoveViewPort(MODE_PAR_8BITNP_240320, BGBUFFER1);
LcdMoveViewPort(0, 0, MODE_PAR_8BITNP_240320, BGBUFFER1);
LcdEnvidOnOff(0);
}
void Test_Lcd_PAR_16Bit565_240320(void)
{
int i,j,k;
U32 tempval;
LcdBGInit(MODE_PAR_16BIT565_240320);
GlibInit(MODE_PAR_16BIT565_240320, BGBUFFER1);
#if BGRTEST
rLCDCON1=(rLCDCON1&~(3<<9))|(1<<9);
#endif
Uart_Printf("[64K COLOR(16bit/1pixel) Parallel Mode LCD TEST]\n");
GlibClearScr(0); // Fill the LCD panel with Black Color
LcdEnvidOnOff(1); // Enable ENVID Bit
Uart_Getch();
GlibFilledRectangle(0, 0, BG_XSIZE_240320/2-1, BG_YSIZE_240320-1,0);
GlibFilledRectangle(BG_XSIZE_240320/2 , 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1,0xffff);
Uart_Printf("64K Color Parallel mode test 1. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
GlibFilledRectangle(0, 0, BG_XSIZE_240320/2-1, BG_YSIZE_240320/2-1, 0xf800); //red
GlibFilledRectangle(BG_XSIZE_240320/2, 0, BG_XSIZE_240320-1, BG_YSIZE_240320/2-1, 0x7e0);//green
GlibFilledRectangle(0, BG_YSIZE_240320/2, BG_XSIZE_240320/2-1, BG_YSIZE_240320-1,0x1f);//blue
GlibFilledRectangle(BG_XSIZE_240320/2, BG_YSIZE_240320/2, BG_XSIZE_240320-1, BG_YSIZE_240320-1,0xffff);//white
Uart_Printf("64K Color Parallel mode test 2. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with White Color
k=0;
for(j=0; j<BG_YSIZE_240320; j+=16)
for(i=0; i<BG_XSIZE_240320; i+=16) {
tempval = ((10*((k>>4)%4)+1)<<11) +((21*((k>>2)%4))<<6)+((10*(k%4))+1);
k++;
GlibFilledRectangle(i, j, i+15, j+15, tempval);
}
Uart_Printf("64K Color Parallel mode test 3. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with White Color
k=0;
for(j=0; j<BG_YSIZE_240320; j+=10)
for(i=0; i<BG_XSIZE_240320; i+=10) {
tempval = ((10*((k>>4)%4)+1)<<11) +((21*((k>>2)%4))<<6)+((10*(k%4))+1);
k++;
GlibFilledRectangle(i, j, i+9, j+9, tempval);
}
Uart_Printf("64K Color Parallel mode test 4. Press any key to continue!\n");
Uart_Getch();
GlibClearScr(0); // Fill the LCD panel with Black Color
//First Quarter
GlibRectangle(0, 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1, 0xf801); //red
GlibLine(0, 0, BG_XSIZE_240320-1, BG_YSIZE_240320-1, 0xff);//red
GlibLine(0, BG_YSIZE_240320-1, BG_XSIZE_240320-1, 0, 0xff);//red
//Second Quarter
GlibFilledRectangle(BG_XSIZE_240320, 0, BG_XSIZE_240320+29, 29, 0xf800);
GlibFilledRectangle(BG_VXSIZE_240320-30, 0, BG_VXSIZE_240320-1, 29, 0x7e0);
GlibFilledRectangle(BG_XSIZE_240320, BG_YSIZE_240320-30, BG_XSIZE_240320+29, BG_YSIZE_240320-1, 0x1f);
GlibFilledRectangle(BG_VXSIZE_240320-30, BG_YSIZE_240320-30, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 0xffff);
GlibRectangle(BG_XSIZE_240320, 0, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 0xf800);
GlibLine(BG_XSIZE_240320, 0, BG_VXSIZE_240320-1, BG_YSIZE_240320-1, 0xff);
GlibLine(BG_XSIZE_240320, BG_YSIZE_240320-1, BG_VXSIZE_240320-1, 0, 0xff);
//Third Quarter
GlibRectangle(0, BG_YSIZE_240320, BG_XSIZE_240320-1, BG_VYSIZE_240320-1, 0xf800);
GlibLine(0, BG_YSIZE_240320, BG_XSIZE_240320-1, BG_YSIZE_240320+BG_YSIZE_240320/2, 0xff00);
GlibLine(0, BG_VYSIZE_240320-1, BG_XSIZE_240320-1, BG_YSIZE_240320+BG_YSIZE_240320/2, 0xff00);
GlibLine(0, BG_YSIZE_240320+BG_YSIZE_240320/2, BG_XSIZE_240320-1, BG_YSIZE_240320, 0xff00);
GlibLine(0, BG_YSIZE_240320+BG_YSIZE_240320/2, BG_XSIZE_240320-1, BG_VYSIZE_240320-1, 0xff00);
//Fourth Quarter
GlibRectangle(BG_XSIZE_240320, BG_YSIZE_240320, BG_VXSIZE_240320-1, BG_VYSIZE_240320-1, 0xf800);
GlibLine(BG_XSIZE_240320, BG_YSIZE_240320, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_VYSIZE_240320-1, 0xff0);
GlibLine(BG_VXSIZE_240320-1, BG_YSIZE_240320, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_VYSIZE_240320-1, 0xff0);
GlibLine(BG_XSIZE_240320, BG_VYSIZE_240320-1, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_YSIZE_240320, 0xff0);
GlibLine(BG_VXSIZE_240320-1, BG_VYSIZE_240320-1, BG_XSIZE_240320+BG_XSIZE_240320/2, BG_YSIZE_240320, 0xff0);
Uart_Printf("64K Color Parallel mode test for Virtual Screen. Press any key[ijkm\\r]!\n");
MoveViewPort(MODE_PAR_16BIT565_240320, BGBUFFER1);
LcdMoveViewPort(0, 0, MODE_PAR_16BIT565_240320, BGBUFFER1);
LcdEnvidOnOff(0);
}
void Test_Lcd_PAR_16Bit5551_240320(void)
{
int i,j,k;
U32 tempval;
LcdBGInit(MODE_PAR_16BIT5551_240320);
GlibInit(MODE_PAR_16BIT5551_240320, BGBUFFER1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -