#include <string.h>
#include "2410addr.h"
#include "2410lib.h"
#include "def.h"
#include "lcdlib.h"
#include "glib.h"
#include "lcd.h"
#include ".\bmp\DEMO256.h"
void Lcd_Port_Init(void);
void Lcd_Port_Return(void);
void Lcd_Palette1Bit_Init(void);
void Lcd_Palette8Bit_Init(void);
void __irq Lcd_Int_Frame(void);
void __irq Lcd_Int_Fifo(void);
void __irq Lcd_Int_Fifo_320240(void);
unsigned save_rGPCUP,save_rGPCDAT,save_rGPCCON;
unsigned save_rGPDUP,save_rGPDDAT,save_rGPDCON;
unsigned lcd_count;
void Lcd_Port_Init(void)
{
save_rGPCCON=rGPCCON;
save_rGPCDAT=rGPCDAT;
save_rGPCUP=rGPCUP;
save_rGPDCON=rGPDCON;
save_rGPDDAT=rGPDDAT;
save_rGPDUP=rGPDUP;
rGPCUP=0xffffffff; // Disable Pull-up register
rGPCCON=0xaa9aa9aa; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND
rGPDUP=0xffffffff; // Disable Pull-up register
rGPDCON=0xaa9aaaaa; //Initialize VD[23:8]
Uart_Printf("Initializing GPIO ports..........\n");
}
void Lcd_Port_Return(void)
{
rGPCCON=save_rGPCCON;
rGPCDAT=save_rGPCDAT;
rGPCUP=save_rGPCUP;
rGPDCON=save_rGPDCON;
rGPDDAT=save_rGPDDAT;
rGPDUP=save_rGPDUP;
}
void Lcd_Palette1Bit_Init(void)
{
U32 *palette;
palette=(U32 *)PALETTE;
*palette++=0x0; // Black
*palette=0xffff; // White
}
void Lcd_Palette8Bit_Init(void)
{
int i;
U32 *palette;
rLCDCON5|=(1<<11); // 5:6:5 Palette Setting
palette=(U32 *)PALETTE;
for(i=0;i<256;i++)
*palette++=DEMO256pal[i];
}
void __irq Lcd_Int_Frame(void)
{
rLCDINTMSK|=3; // Mask LCD SUB Interrupt
// GPG4 is ....
rGPGDAT&=(~(1<<4)); // GPG4=Low
Delay(50); // GPG4=Low
rGPGDAT|=(1<<4); //GPG4=High
rLCDSRCPND=2; // Clear LCD SUB Interrupt source pending
rLCDINTPND=2; // Clear LCD SUB Interrupt pending
rLCDINTMSK&=(~(2)); // Unmask LCD FRAME Interrupt
ClearPending(BIT_LCD);
}
//240320
void __irq Lcd_Int_Fifo(void)
{
rLCDINTMSK|=3; // Mask LCD SUB Interrupt
if((lcd_count%20)==0) Uart_Printf("\n");
Uart_Printf(".");
lcd_count++;
rLCDSRCPND=1; // Clear LCD SUB Interrupt source pending
rLCDINTPND=1; // Clear LCD SUB Interrupt pending
rLCDINTMSK&=(~(1)); // Unmask LCD FRAME Interrupt
ClearPending(BIT_LCD);
}
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
Uart_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);
Uart_Printf("STN Mono test 1. Press any key!\n");
Uart_Getch();
Glib_ClearScr(0, MODE_STN_1BIT);
Glib_FilledRectangle(160,0,319,239,1); //Half Screen
Uart_Printf("STN Mono test 2. Press any key!\n");
Uart_Getch();
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);
Uart_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
Lcd_Port_Return();
}
void Test_Lcd_Stn_2Bit(void)
{
int i,j,k;
Lcd_Port_Init();
Lcd_Init(MODE_STN_2BIT);
Glib_Init(MODE_STN_2BIT);
Lcd_EnvidOnOff(1); // Enable ENVID Bit
Uart_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++);
Uart_Printf("4 gray mode test 1. Press any key!\n");
Uart_Getch();
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++;
}
Uart_Printf("4 gray mode test 2. Press any key!\n");
Uart_Getch();
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++;
}
Uart_Printf("4 gray mode test 3. Press any key!\n");
Uart_Getch();
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);
Uart_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
Lcd_Port_Return();
}
void Test_Lcd_Stn_4Bit(void)
{
int i,j,k;
Lcd_Port_Init();
Lcd_Init(MODE_STN_4BIT);
Glib_Init(MODE_STN_4BIT);
Lcd_EnvidOnOff(1);
Uart_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++);
Uart_Printf("16 gray mode test 1. Press any key!\n");
Uart_Getch();
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++;
}
Uart_Printf("16 gray mode test 2. Press any key!\n");
Uart_Getch();
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++;
}
Uart_Printf("4 gray mode test 3. Press any key!\n");
Uart_Getch();
Glib_ClearScr(0, MODE_STN_4BIT);
k=0;
for(i=160;i<480;i+=40)
for(j=120;j<360;j+=30)
{
Glib_FilledRectangle(i,j,i+39,j+29,k%16);
k++;
}
// #0
// 00
Glib_Rectangle(0,0,319,239,15);
Glib_Line(0,0,319,239,15);
Glib_Line(0,239,319,0,15);
// 0#
// 00
Glib_Rectangle(0+320,0,319+320,239,15);
Glib_Line(0+320,0,319+320,239,15);
Glib_Line(0+320,239,319+320,0,15);
// 00
// #0
Glib_Rectangle(0,0+240,319,239+240,15);
Glib_Line(0,0+240,319,239+240,15);
Glib_Line(0,239+240,319,0+240,15);
// 00
// 0#
Glib_Rectangle(0+320,0+240,319+320,239+240,15);
Glib_Line(0+320,0+240,319+320,239+240,15);
Glib_Line(0+320,239+240,319+320,0+240,15);
Glib_Rectangle(50+320,50+240,269+320,189+240,15);
Uart_Printf("Virtual Screen Test(STN 16 gra