www.pudn.com > ARM9_PROGRAM.rar > lcd.c
#include#include "addr.h" #include "lib.h" #include "def.h" #include "lcdlib.h" #include "glib.h" #include "lcd.h" #include "DEMO256.h" void Lcd_Port_Init(void); void Lcd_Port_Return(void); void __irq Lcd_Int_Frame(void); void __irq Lcd_Int_Fifo(void); void __irq Lcd_Int_Fifo_640480(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=0xaaaaaaaa; //Initialize VD[7:0],LCDVF[2:0],VM,VFRAME,VLINE,VCLK,LEND rGPDUP=0xffffffff; // Disable Pull-up register rGPDCON=0xaaaaaaaa; //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 __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); } //640480 void __irq Lcd_Int_Fifo_640480(void) { int i; rLCDINTMSK|=3; // Mask LCD SUB Interrupt // GPG4 is .... rGPGDAT&=(~(1<<4)); // GPG4=Low for(i=0;i<1;i++); // GPG4=Low rGPGDAT|=(1<<4); //GPG4=High 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_Tft_16Bit_800480(void) { int i,j,k; U32 *palette; //unsigned char palette; // Lcd_Port_Init(); // Lcd_Init(MODE_TFT_16BIT_800480); // Glib_Init(MODE_TFT_16BIT_800480); // Lcd_PowerEnable(0, 1); // Lcd_EnvidOnOff(1); rLCDCON5|=(1<<11); // 5:6:5 Palette Setting palette=(U32 *)PALETTE; for(i=0;i<256;i++) *palette++=DEMO256pal[i]; } void Test_Lcd_Tft_8Bit_800600(void) { }