1. 程式人生 > >ARM LCD屏調試3--屏的應用編程

ARM LCD屏調試3--屏的應用編程

iar dde gate 底層 pri oid 參數 部分 sel

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--屏的應用編程