ARM LCD屏調試3--屏的應用編程
2011-06-25 19:20:47
驅動自己寫完了,應用函數自己就不寫了,找了一點代碼參考,移植並修改了一下,配合之前的定義的接口文檔,我貼出部分代碼。目錄:
一,開發環境... 1
二,底層函數... 1
三,應用接口函數... 3
四,部分代碼參考... 5
一,開發環境
硬件:開發板TQ2440,LCM為2.4寸QVGA TFT屏,IC=ili9325。
軟件:IAR ARM 5.5。
二,底層函數
1,LCD_Init(LCD初始化)
函數原型:
Void LCD_Init(void);
函數功能:初始化LCD寄存器。
函數參數:無
2,LCD_Display(LCD視頻輸出開關)
函數原型:
Void LCD_Display (U8 state);
函數功能:打開或關閉視頻輸出。
函數參數:state是代表視頻打開關閉狀態,1為打開,0為關閉。
3,LCD_Write(向LCD發出指令並寫數據)
函數原型:
LCD_Write(U16 index,U16 data);
函數功能:向LCD寄存器寫數據
函數參數:index是代表LCD寄存器值
Data 是代表寫入的數據值
4,LCD_Read(向LCD發出指令並讀數據)
函數原型:
U16 LCD_ Read (U16 index,U16 data);
函數功能:向LCD寄存器讀數據值.返回讀出的數值。
函數參數:index是代表LCD寄存器值
Data 是代表讀出的數據值
5,LCD_Write_COM (向LCD發出指令)
函數原型:
void LCD_Write_COM( U16 index)
函數功能:向LCD寄存器寫命令
函數參數:index是代表LCD寄存器值
6,LCD_Write_DATA(向LCD寫數據)
函數原型:
void LCD_Write_DATA(U16 data)
函數功能:向LCD寄存器寫數據
函數參數:data是代表LCD數據值
三,應用接口函數
1,LCD_BrushScreen(LCD刷屏)
函數原型:
Void LCD_BrushScreen (U16 color);
函數功能:整屏顯示1種顏色
函數參數:color代表需要顯示的顏色
2,LCD_DrawPixel (LCD顯示點)
函數原型:
Void LCD_DrawPixel (U8 x,U16 y,U16 color);
函數功能:LCD顯示一個帶顏色的像素點。
函數參數:x 代表顯示的橫坐標值。範圍(0-239)
y 代表顯示的縱坐標值。範圍(0-319)
color代表需要顯示的顏色
3,LCD_DrawRectangle (LCD畫矩形)
函數原型:
Void LCD_DrawRectangle (U8 x1,U16 y1, U8 x2, U16 y2, U16 color);
函數功能:LCD顯示一個矩形,填充色彩。
函數參數:x1 代表顯示的起始的橫坐標值。範圍(0-239)
y1 代表顯示的起始的縱坐標值。範圍(0-319)
x2 代表顯示的結束的橫坐標值。範圍(0-239)
y2 代表顯示的結束的縱坐標值。範圍(0-319)
color代表需要顯示的顏色
4,LCD_DrawString (LCD顯示文字)
函數原型:
Void LCD_DrawString (U8 x,U16 y, char *pString, U16 color);
函數功能:LCD顯示文字信息。
函數參數:x 代表顯示的起始的橫坐標值。範圍(0-239)
y 代表顯示的起始的縱坐標值。範圍(0-319)
pString 代表要顯示的文字地址指針
color代表需要顯示的文字顏色
5,LCD_DrawChar (LCD顯示一個字符)
函數原型:
Void LCD_DrawChar (U8 x,U16 y, U8 c, U16 color);
函數功能:LCD顯示文字信息。
函數參數:x 代表顯示的起始的橫坐標值。範圍(0-239)
y 代表顯示的起始的縱坐標值。範圍(0-319)
c 代表要顯示的文字地址指針
color代表需要顯示的文字顏色
6,LCD_DrawPicture (LCD顯示圖片)
函數原型:
Void LCD_DrawPicture (U8 x1,U16 y1, U8 x2, U16 y2, const U8 *pImage);
函數功能:LCD顯示一幅圖片。
函數參數:x1 代表顯示的起始的橫坐標值。範圍(0-239)
y1 代表顯示的起始的縱坐標值。範圍(0-319)
x2 代表顯示的結束的橫坐標值。範圍(0-239)
y2 代表顯示的結束的縱坐標值。範圍(0-319)
pImage 代表圖片的地址指針
四,部分代碼參考
void test_LCDDemo(void)
{
//配置引腳初始化
PIO_Configure(pinsLcdctrl, PIO_LISTSIZE(pinsLcdctrl));
rGPDCON=0x55555555;
rGPCUP=1;
//LCD復位
RST_H();
Delayms(5);
RST_L();
Delayms(5);
RST_H();
Delayms(5);
//LCD識別
while(LCD_Read(0)!=0x9325)
{
printf("Read id error!");
}
//LCD初始化驅動
LCD_Init();
//應用
//填充屏
LCD_BrushScreen(COLOR_WHITE);
//畫點
LCD_DrawPixel(30,30,COLOR_RED);
//畫矩形
LCD_DrawRectangle(30,50,20,10,COLOR_GREEN);
//顯示文字
LCD_DrawString(30,70,"Hello world!",COLOR_BLUE);
//顯示圖像
LCD_DrawPicture(30,100,191,199,gImage_apple);
while(1);
}
/***********Driver Output Control (R01h)******************/
#define R01h_SS 0x1<<8 //Select the shift direction of outputs from the source driver
#define R01h_SS_0 0x0<<8 //from S1 to S720
#define R01h_SS_1 0x1<<8 //from S720 to S1
#define R01h_SM 0x1<<10 //Sets the gate driver pin arrangement with GS bit
#define R01h_SM_0 0x0<<10 //
#define R01h_SM_1 0x1<<10 //
/***********LCD Driving Wave Control (R02h)******************/
#define R02h_EOR 0x1<<8 //EOR = 1 and B/C=1 to set the line inversion
#define R02h_EOR_0 0x0<<8 //
#define R02h_EOR_1 0x1<<8 //EOR = 1 and B/C=1 to set the line inversion
#define R02h_B_C 0x1<<9 //Frame/Line inversion
#define R02h_B_C_0 0x0<<9 //Frame/Field inversion
#define R02h_B_C_1 0x1<<9 //Line inversion
。。。。。。
/*硬件引腳連接
2440接口Pin 2440 socketLCDPin LCD
1=======VCC-3.3V=======1=======VCC-3.3V
29=======GND=======2=======GND
31=======GPE15=======3=======CS
32=======GPE14=======4=======RS
33=======GPC4=======5=======WR
34=======GPC3=======6=======RD
35=======GPC2=======暫時不連=======RST
19=======GPD7=======8=======DB15
18=======GPD6=======9=======DB14
17=======GPD5=======10=======DB13
16=======GPD4=======11=======DB12
15=======GPD3=======12=======DB11
14=======GPD2=======13=======DB10
13=======GPD1=======14=======DB9
12=======GPD0=======15=======DB8
*/
ARM LCD屏調試3--屏的應用編程