//====================================================================
// File Name : LCD.c
// Function : S3C2440 LCD test code
// Program :
// Date : Apr. 21, 2003
// Version : 0.0
// History
// -2410
// 0.0 : Programming start ???
// -2440
// R0.0 (20030421): Modified for 2440. -> Junon
//====================================================================
#include <string.h>
#include "def.h"
#include "2440addr.h"
#include "2440lib.h"
#include "2440slib.h"
#include "lcdlib.h"
#include "glib.h"
#include "lcd.h"
#include "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_640480(void);
void Select_Tcon(void);
void Test_Lcd_Palette_Ram(void);
void Test_Lcd_Underrun(void);
void Test_Lcd_Tft_16Bit_800600(void);
void Test_Lcd_Tft_16Bit_800600_On(void);
unsigned save_rGPCUP,save_rGPCDAT,save_rGPCCON;
unsigned save_rGPDUP,save_rGPDDAT,save_rGPDCON;
unsigned lcd_count;
void * func_lcd_test[][2]=
{
// "0123456789012345" max 15자 로한정하여 comment하세요.
//LCD
(void *)Test_Lcd_Palette_Ram, "LCD Palette RAM",
(void *)Test_Lcd_Stn_1Bit, "STN 1Bit ",
(void *)Test_Lcd_Stn_2Bit, "STN 2Bit ",
(void *)Test_Lcd_Stn_4Bit, "STN 4Bit ",
(void *)Test_Lcd_Cstn_8Bit, "CSTN 8Bit ",
(void *)Test_Lcd_Cstn_8Bit_On, "CSTN 8Bit On ",
(void *)Test_Lcd_Cstn_12Bit, "CSTN 12Bit ",
(void *)Test_Lcd_Cstn_16Bit, "CSTN 16Bit ",
(void *)Test_Lcd_Tft_8Bit_240320, "TFT240320 8Bit ",
(void *)Test_Lcd_Tft_8Bit_240320_On, "TFT240320 8 On ",
(void *)Test_Lcd_Tft_16Bit_240320, "TFT240320 16Bit",
(void *)Test_Lcd_Tft_8Bit_240320_Bmp, "TFT240320 Bmp ",
(void *)Test_Lcd_Tft_8Bit_240320_IntFr, "TFT240320 FrINT",
(void *)Test_Lcd_Tft_8Bit_240320_IntFi, "TFT240320 FiINT",
(void *)Test_Lcd_Tft_1Bit_640480, "TFT640480 1Bit ",
(void *)Test_Lcd_Tft_8Bit_640480, "TFT640480 8Bit ",
(void *)Test_Lcd_Tft_16Bit_640480, "TFT640480 16Bit",
(void *)Test_Lcd_Tft_8Bit_640480_Bswp, "TFT640480 BSWP ",
(void *)Test_Lcd_Tft_8Bit_640480_Palette, "TFT640480 Palet",
(void *)Test_Lcd_Tft_16Bit_640480_Hwswp,"TFT640480 HWSWP",
(void *)Test_Lcd_Tft_1Bit_800600, "TFT800600 1Bit ",
(void *)Test_Lcd_Tft_8Bit_800600, "TFT800600 8Bit ",
(void *)Test_Lcd_Tft_16Bit_800600, "TFT800600 16Bit",
(void *)Test_Lcd_Underrun, "LCD Underrun ",
0,0
};
void Lcd_Test(void)
{
int i;
while(1)
{
i=0;
Uart_Printf("\n\n");
Uart_Printf("\n====== LCD Test program start ======\n");
Uart_Printf("1 :LCD Palette RAM\n");
Uart_Printf("2 :STN 1Bit \n");
Uart_Printf("3 :STN 2Bit\n");
Uart_Printf("4 :STN 3Bit\n");
Uart_Printf("\n");
Uart_Printf("5 :CSTN 8Bit\n");
Uart_Printf("6 :CSTN 8Bit on\n");
Uart_Printf("7 :CSTN 12Bit\n");
Uart_Printf("8 :CSTN 16Bit\n");
Uart_Printf("\n");
Uart_Printf("9 :TFT240320 8Bit\n");
Uart_Printf("10:TFT240320 8 On\n");
Uart_Printf("11:TFT240320 16Bit\n");
Uart_Printf("12:TFT240320 Bmp\n");
Uart_Printf("13:TFT240320 FrINT\n");
Uart_Printf("14:TFT240320 FiINT\n");
Uart_Printf("\n");
Uart_Printf("15:TFT640480 1Bit\n");
Uart_Printf("16:TFT640480 8Bit\n");
Uart_Printf("17:TFT640480 16Bit\n");
Uart_Printf("\n");
Uart_Printf("18:TFT640480 BSWP\n");
Uart_Printf("19:TFT640480 Palet\n");
Uart_Printf("20:TFT640480 HWSWP\n");
Uart_Printf("\n");
Uart_Printf("21:TFT800600 1Bit\n");
Uart_Printf("22:TFT800600 8Bit\n");
Uart_Printf("23:TFT800600 16Bit\n");
Uart_Printf("\n");
Uart_Printf("24:LCD Underrun\n");
Uart_Printf("\n");
Uart_Printf("\nPress only Enter key to exit : ");
i = Uart_GetIntNum();
if(i==-1) break; // return.
// if(i>=0 && (i<((sizeof(func_lcd_test)-1)/8)) ) // select and execute...
// ( (void (*)(void)) (func_lcd_test[i][0]) )();
switch(i)
{
case 1: Test_Lcd_Palette_Ram();
break;
case 2: Test_Lcd_Stn_1Bit();
break;
case 3: Test_Lcd_Stn_2Bit();
break;
case 4: Test_Lcd_Stn_4Bit();
break;
case 5: Test_Lcd_Cstn_8Bit();
break;
case 6: Test_Lcd_Cstn_8Bit_On();
break;
case 7: Test_Lcd_Cstn_12Bit();
break;
case 8: Test_Lcd_Cstn_16Bit();
break;
case 9: Test_Lcd_Tft_8Bit_240320();
break;
case 10: Test_Lcd_Tft_8Bit_240320_On();
break;
case 11: Test_Lcd_Tft_16Bit_240320();
break;
case 12: Test_Lcd_Tft_8Bit_240320_Bmp();
break;
case 13: Test_Lcd_Tft_8Bit_240320_IntFr();
break;
case 14: Test_Lcd_Tft_8Bit_240320_IntFi();
break;
case 15: Test_Lcd_Tft_1Bit_640480();
break;
case 16: Test_Lcd_Tft_8Bit_640480();
break;
case 17: Test_Lcd_Tft_16Bit_640480();
break;
case 18: Test_Lcd_Tft_8Bit_640480_Bswp();
break;
case 19: Test_Lcd_Tft_8Bit_640480_Palette();
break;
case 20: Test_Lcd_Tft_16Bit_640480_Hwswp();
break;
case 21: Test_Lcd_Tft_1Bit_800600();
break;
case 22: Test_Lcd_Tft_8Bit_800600();
break;
case 23: Test_Lcd_Tft_16Bit_800600();
break;
case 24: Test_Lcd_Underrun();
break;
default:
break;
}
}
Uart_Printf("\n====== LCD Test program end ======\n");
}
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 Lcd_Palette1Bit_Init(void)
{
U32 *palette;
palette=(U32 *)PALETTE;
*palette++=0x0; // Black
*palette=0xffff; // White
}
void Lcd_Palette8Bit_Init(void)
{
int i;
U32 *palette;
palette=(U32 *)PALETTE;
if (rLCDCON5&(1<<11)) // if 5:6:5 format
for(i=0;i<256;i++) *palette++=DEMO256pal[i];
else // if 5:5:5:1 format
for(i=0;i<256;i++) *palette++=(DEMO256pal[i]&0xffc1)|((DEMO256pal[i]&0x1f)<<1);
}
void Lcd_Start(U32 mode)
{
// LCD initialize
Lcd_Port_Init();
Lcd_Init(mode);
Glib_Init(mode);
Select_Tcon();
Lcd_PowerEnable(0, 1);
Lcd_EnvidOnOff(1);
Glib_ClearScr(0, mode);
}
//Just interrupt test..
void __irq Lcd_Int_Frame(void)
{
rLCDINTMSK|=3; // Mask LCD SUB Interrupt
// GPG4 is LCD_PWREN
rGPGDAT&=(~(1<<4)); // GPG4=Low
Delay(50); // 5ms
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);
}
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(voi
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论









收起资源包目录





































































































共 1700 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17
资源评论

- yanjiaqiang111112014-11-29东西横不错,非常好。
- hetihit2014-02-11还可以,基本下到的都是这个程序

qinhuan7
- 粉丝: 1
- 资源: 12
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


会员权益专享
安全验证
文档复制为VIP权益,开通VIP直接复制
