資料介紹
C/GUI是Micrigm 公司推出的用于嵌入式系統(tǒng)的圖形用戶接口(graphics user interface,GUI)軟件包,由于uC/GUI完全以ANSI-C編寫,因此它與處理器無關(guān),可以很方便地移植到不同的操作系統(tǒng)和嵌入式微處理器上,并可支持不同尺寸的圖形液晶顯示器。它采用層次化的設(shè)計,功能強大,移植方便,被廣泛地應(yīng)用于嵌入式領(lǐng)域,如PDA、機頂盒以及DVD NCD播放機等。本文詳細(xì)介紹了uC/GUI在ARM 內(nèi)核S3C44B0X的移植。實踐證明uC/GUI具有良好的實時性和穩(wěn)定性以及廣泛的應(yīng)用前景。
1 硬件連接與液晶顯示原理
本設(shè)計使用的硬件采用ARM7開發(fā)板,液晶模塊為L78C64,它是7.8in 256色STN型LCD顯示屏,分辨率為640×480。
LCD控制器外部接口信號的定義及其與LCD模塊各信號之間的對應(yīng)關(guān)系如下:
(1)VFRAME:LCD控制器與LCD驅(qū)動器之間的幀同步信號。該信號負(fù)責(zé)指出LCD屏新的一幀開始的時間。LCD控制器在一個完整幀顯示完成后立即插入一個VFRAME信號,并開始新一幀的顯示。該信號與LCD模塊的YD信號相對應(yīng);
?。?)VLINE:LCD控制器和LCD驅(qū)動器之間的線同步脈沖信號。該信號用于將LCD驅(qū)動器水平線(行)移位寄存器的內(nèi)容傳送給LCD屏顯示。LCD控制器在整個水平線(整行)數(shù)據(jù)移入LCD控制器后,插入一個VLINE信號。該信號與LCD模塊的LP信號相對應(yīng);
?。?)VCLK:LCD控制器和LCD驅(qū)動器之間的像素時鐘信號。由LCD控制器送出的數(shù)據(jù)在VCLK的上升沿處送出,在VCLK的下降沿被LCD驅(qū)動器采樣。該信號與LCD模塊的XCK信號相對應(yīng);
(4)VM:LCD驅(qū)動器的AC信號。VM信號被LCD驅(qū)動器用于改變行和列的電壓極性,從而控制像素點的顯示和熄滅。VM信號可以與每個幀同步,也可以與可變數(shù)量的VLINE信號同步;
(5)VD3~0 LCD:像素點的數(shù)據(jù)輸入端口。與LCD模塊的D3~0相對應(yīng):
?。?)VD7~4 LCD:像素點的數(shù)據(jù)輸入端口。與LCD模塊的D7~4相對應(yīng)。
液晶顯示原理:寫滿整個屏的數(shù)據(jù)稱為1個“幀”數(shù)據(jù),YD是幀同步信號,該信號啟動LCD屏的新一幀數(shù)據(jù)。兩個YD脈沖之間的時間長度稱為幀周期。根據(jù)LCD模塊的特性,刷新時間為12~14ms,頻率為70~80Hz。每一幀包括480個LP脈沖。LP為行(共480行)數(shù)據(jù)輸入鎖存信號,也就是行同步脈沖信號。該信號啟動LCD屏的新一行數(shù)據(jù)。XCK為行數(shù)據(jù)輸入信號,也就是每1行中像素點數(shù)據(jù)傳輸?shù)臅r鐘信號。每組8位的數(shù)據(jù)在XCK的下降沿被輸入鎖存,因此,每1行包括640×3/8個XCK脈沖信號。D0~D7是8位的顯示數(shù)據(jù)輸入信號。
2 驅(qū)動程序設(shè)計
下面分三步完成液晶的初始化。
?。?)I/O口的初始化
由于采用S3C44B0X的PC接口和PD接口作為LCD驅(qū)動接口,因此,需要設(shè)置PC接口工作在第3功能狀態(tài)和PD接口工作在第2功能狀態(tài)。
?。?)相應(yīng)控制寄存器的設(shè)置方法
S3C44B0X包括一個LCD控制器時序發(fā)生器TIMEGEN, 由它來產(chǎn)生VFRAM,VLINE,VCLK和VM 控制時序。這些控制信號由寄存器LCOCON1和LCDCON2進(jìn)行配置。通過對寄存器種配置項目的設(shè)置,TIMEGEN就可以產(chǎn)生適應(yīng)于各種LCD屏的控制信號了。
VFRAM 和VLINE脈沖的產(chǎn)生是通過對LCDCON2寄存器的HOZVAL和LINEVAL進(jìn)行配置來完成的。每個域都與LCD的尺寸和顯示模式有關(guān)。
其中,HOZVAL=(顯示寬度/VD數(shù)據(jù)線位數(shù))-1。
在彩色模式下,顯示寬度=3×每行的像素點數(shù)。
對所選的液晶模塊,HOZVAL=(640×3/8)-1;LINEVAL=(顯示寬度)-1。
對所選的液晶模塊,LlNEVAL=480-1。
VCLK信號的頻率可以通過LCDCON1寄存器的CLKVAL域來確定,即
VCLK=MCLK/(CLKVAL×2)
LCD控制器的最大VCLK頻率為16.5MHz,幾乎支持所有已有的LCD驅(qū)動器。由于上述關(guān)系,CLKVAL的值決定了VCLK的頻率。為了確定CLKVAL的值,應(yīng)該計算一下LCD控制器向VD端口傳輸數(shù)據(jù)的速率,以便使VCLK的值大于數(shù)據(jù)傳輸?shù)乃俾省?br /> 數(shù)據(jù)傳輸速率的公式為:
數(shù)據(jù)傳輸速率=HS×VS×FR×MV
其中,HS—LCD的行像素值;VS—LCD的列像素值:FR—幀速率;MV—模式值,這里取8位單掃描,彩色。
對于所選用的液晶模塊:HS=640;VS=480;FR=70Hz:MV=3/8。因此,數(shù)據(jù)傳輸速率=640×480×70×3/8=8,064,000Hz。
VCLK值應(yīng)該大于8MHz而小于16MHz,因此,CLKVAL可以取9~15。
?。?)完整的液晶初始化程序
void LCD_Init_Controler()
{rLCDCON1=(0)|(2《《5)|(MVAL_USED《《7)|(0x3《《8)|(0x3《《10)|(CLKVAL_COLOR《《12);
//disable,8B_SNGL_SCAN,WDLY=8clk,WLH=8clk,rLCDCON2=
?。↙INEVAL)|(HOZVAL_COLOR《《10)|(10《《21);
//LINEBLANK=10(without any calculation)
rLCDSADDR1= (0x3《《27) | (((U32)
frameBuffer256》》22)《《21)|
M5D((U32)frameBuffer256》》1);
//256-color,LCDBANK,LCDBASEU
rLCDSADDR2=M5D((((U32)frameBuffer256+(SCR_XSIZE*LCD_YSIZE))》》1))|(MVAL《《21);
rLCDSADDR3= (LCD_XSIZE/2) | (((SCR_XSIZE-LCD_XSIZE)/2)《《9);
//The following value has to be changed forbetter display.
rREDLUT =0xfdb96420;
rGREENLUT=0xfdb96420;
rBLUELUT=0xfb40;
rDITHMODE=0x0;
rDP1_2=0xa5a5;
rDP4_7=0xba5da65;
rDP3_5=0xa5a5f;
rDP2_3=0xd6b;
rDP5_7=0xeb7b5ed:
rDP3_4=0x7dbe;
rDP4_5=0x7ebdf;
rDP6_7=0x7fdfbfe;
rLCDCON1= (1)|(2《《5)|(0《《7)|(0x3《《8)|(0x3《《10)|(4《《12);
經(jīng)過以上幾步,就完成了液晶的硬件驅(qū)動,下面就是移植軟件包,調(diào)用底層驅(qū)動,完成復(fù)雜的顯示任務(wù)。
3 uC/GUI軟件包的移植
3.1 uC/GUI特點
?。?)支持任何8位、16位和32位的CPU,只要求CPU具有相應(yīng)的ANSI-C編譯器即可;
(2)所有硬件接口定義都使用可配置的宏;
?。?)字符、位圖可顯示與LCD的任意點,并不限制與字節(jié)長度的整數(shù)倍數(shù)地址;
(4)所有程序在長度和速度方面都進(jìn)行了優(yōu)化,結(jié)構(gòu)清晰;
?。?)對于慢速的LCD控制器,可以使用緩沖存儲器減少訪問時間,提高顯示速度。
3.2 uC/GUl移植步驟
在使用uC/GUI時,可以按照以下幾個步驟來進(jìn)行:
?。?)按照需要,定制uC/GUI;
(2)指定硬件設(shè)備的地址,編寫接口驅(qū)動代碼;
(3)編譯、鏈接、調(diào)試?yán)映绦?
?。?)修改例子程序,并測試增加需要的功能;
?。?)編寫自己的應(yīng)用程序。
3.3 具體實現(xiàn)
(1)首先介紹uC/GUI的目錄結(jié)構(gòu)和基本配置。
uC/GUI主要目錄如下:
GUI/ConvertMono 使用黑白顯示設(shè)備時,所要使用的灰度轉(zhuǎn)換函數(shù)
GUI/ConvertColor 使用彩色顯示設(shè)備時,使用的色彩轉(zhuǎn)換函數(shù)
GUI/Config 包含了對uC/GUI進(jìn)行配置的一些文件
GUI/Core uC/GUI核心代碼
GUI/Font uC/GUI與字體相關(guān)的代碼文件
GUI/LCDDriver LCD驅(qū)動代碼文件
GUI/MemDev 內(nèi)存設(shè)備支持文件代碼
GUI/Touch 輸入設(shè)備支持的文件代碼
GUI/Widget uC/GU1支持的控件代碼,包括編輯框、列表框、按鈕和選擇框等
GUI/WM uC/GUI窗口管理部分代碼
?。?)修改uC/GUI,使之適于移植。
在ADS環(huán)境中新建一個工程,將上述gui文件夾下的所有文件加入工程。
將Config文件夾下的3個文件GUIConf.h、
GUITouchConf.h和LCDConf.h加入新工程,如下修改LCDConf.h的內(nèi)容:
/*LCDConf.h*/
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCDG4 //lcd顏色數(shù),必須定義,LCDMONO(單色),LCDG4(四級灰度),LCDG16(16級灰度)
#define LCD_XSIZE(640)/* LCD水平分辨率 */
#define LCD_YSIZE(480)/* LCD垂直分辨率 */
#define LCD BITSPERPIXEL(8)
#endif /*LCDC0NF_H*/
/*以下是S3C44B0X LCD控制器的配置*/
#include “。.incoption.h”
#define SCR_XSIZE (640)//視窗屏幕大小
#define SCR_YSIZE (480)
#define LCD_XSIZE (640)//液晶屏幕大小
#define LCD_YSIZE (480)
#define M5D(n)((n)&0x1fffff)
#define ARRAY_SIZE_G4(SCR_XSIZE/4*SCR_YSIZE)
#define HOZVAL (LCD_XSIZE/4-1)
#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)
#define LINEVAL (LCD_YSIZE-1)
#define MVAL (13)
#define CLKVAL_G4 (10)
#define MVAL_USED 0
#endif /*LCDCONF_H */
(3)加載LCD驅(qū)動。
LCD驅(qū)動程序如前面所述,保存在lcd44b0.c中。出了底層的初始化函數(shù)LCD_Init_Controler()以外,還需要做以下修改,這里只提關(guān)鍵部分。
主要進(jìn)行相關(guān)的寄存器配置,以及和GUI的接口程序。這里只提及關(guān)鍵部分。
① 定義顯示緩沖區(qū)時使用的char數(shù)據(jù)類型,它是8bit的:
unsigned char Bmp[ARRAY_SIZE_G16];//液晶顯示緩沖數(shù)組
② 定義讀寫緩沖區(qū)時使用的數(shù)據(jù)類型,也是8bit的U8:
#define LCD_READ_MEM (Off)*((U8*)(frame
Buffer256+(((U32)(Off)))))
#define LCD_WRRITE_MEM(Off,data)*((U8*)frameBuffer256+(((U32)(Off)))))=data
#define LCD_WRITE_REG(Off,data)
⑧ 定義液晶總線寬度定義位8bit:
#ifndef LCD_BUSWIDTH
#define LCD_BUSWIDTH(8)
#endif
?、?定義字節(jié)順序:
#define LCD_SWAP_BYTE_ORDER(0)
至此uC/GUI的移植基本上已經(jīng)完成了。當(dāng)然這里只提供了移植的關(guān)鍵部分,更多更完整的移植還需要做不少的工作,如觸控屏的移植、鍵盤鼠標(biāo)的移植以及中文字體的移植等。詳情請參閱uC/GUI手冊中Getting Started一章。
4 數(shù)據(jù)顯示程序設(shè)計
數(shù)據(jù)顯示程序主要是基于uC/GUI平臺的GUI函數(shù)庫,完成字符、曲線的繪制。與畫線相關(guān)的GUI函數(shù)有:
GUI DrawHLine()
原型:void GUI_DrawLine(int x0,int y0,int x1,int y1);
其中,x0、y0、x1、y1分別為UGI坐標(biāo)系下的起點和終點的橫坐標(biāo)和縱坐標(biāo)。
GUI DispDec()
原型:void GUI_DispDec(I32 v,U8 Len);
其中,v為要顯示的十進(jìn)制變量值,Len為要顯示的數(shù)據(jù)的位數(shù)。
5 總結(jié)
本文主要介紹了基于ARM7內(nèi)核S3C44B0X和L78C64液晶模塊硬件平臺的uC/GUI的移植,以及在工程上的應(yīng)用,經(jīng)過實際應(yīng)用發(fā)現(xiàn),uC/GUI功能強大,響應(yīng)迅速,穩(wěn)定性高,具有廣泛的應(yīng)用前景。
1 硬件連接與液晶顯示原理
本設(shè)計使用的硬件采用ARM7開發(fā)板,液晶模塊為L78C64,它是7.8in 256色STN型LCD顯示屏,分辨率為640×480。
LCD控制器外部接口信號的定義及其與LCD模塊各信號之間的對應(yīng)關(guān)系如下:
(1)VFRAME:LCD控制器與LCD驅(qū)動器之間的幀同步信號。該信號負(fù)責(zé)指出LCD屏新的一幀開始的時間。LCD控制器在一個完整幀顯示完成后立即插入一個VFRAME信號,并開始新一幀的顯示。該信號與LCD模塊的YD信號相對應(yīng);
?。?)VLINE:LCD控制器和LCD驅(qū)動器之間的線同步脈沖信號。該信號用于將LCD驅(qū)動器水平線(行)移位寄存器的內(nèi)容傳送給LCD屏顯示。LCD控制器在整個水平線(整行)數(shù)據(jù)移入LCD控制器后,插入一個VLINE信號。該信號與LCD模塊的LP信號相對應(yīng);
?。?)VCLK:LCD控制器和LCD驅(qū)動器之間的像素時鐘信號。由LCD控制器送出的數(shù)據(jù)在VCLK的上升沿處送出,在VCLK的下降沿被LCD驅(qū)動器采樣。該信號與LCD模塊的XCK信號相對應(yīng);
(4)VM:LCD驅(qū)動器的AC信號。VM信號被LCD驅(qū)動器用于改變行和列的電壓極性,從而控制像素點的顯示和熄滅。VM信號可以與每個幀同步,也可以與可變數(shù)量的VLINE信號同步;
(5)VD3~0 LCD:像素點的數(shù)據(jù)輸入端口。與LCD模塊的D3~0相對應(yīng):
?。?)VD7~4 LCD:像素點的數(shù)據(jù)輸入端口。與LCD模塊的D7~4相對應(yīng)。
液晶顯示原理:寫滿整個屏的數(shù)據(jù)稱為1個“幀”數(shù)據(jù),YD是幀同步信號,該信號啟動LCD屏的新一幀數(shù)據(jù)。兩個YD脈沖之間的時間長度稱為幀周期。根據(jù)LCD模塊的特性,刷新時間為12~14ms,頻率為70~80Hz。每一幀包括480個LP脈沖。LP為行(共480行)數(shù)據(jù)輸入鎖存信號,也就是行同步脈沖信號。該信號啟動LCD屏的新一行數(shù)據(jù)。XCK為行數(shù)據(jù)輸入信號,也就是每1行中像素點數(shù)據(jù)傳輸?shù)臅r鐘信號。每組8位的數(shù)據(jù)在XCK的下降沿被輸入鎖存,因此,每1行包括640×3/8個XCK脈沖信號。D0~D7是8位的顯示數(shù)據(jù)輸入信號。
2 驅(qū)動程序設(shè)計
下面分三步完成液晶的初始化。
?。?)I/O口的初始化
由于采用S3C44B0X的PC接口和PD接口作為LCD驅(qū)動接口,因此,需要設(shè)置PC接口工作在第3功能狀態(tài)和PD接口工作在第2功能狀態(tài)。
?。?)相應(yīng)控制寄存器的設(shè)置方法
S3C44B0X包括一個LCD控制器時序發(fā)生器TIMEGEN, 由它來產(chǎn)生VFRAM,VLINE,VCLK和VM 控制時序。這些控制信號由寄存器LCOCON1和LCDCON2進(jìn)行配置。通過對寄存器種配置項目的設(shè)置,TIMEGEN就可以產(chǎn)生適應(yīng)于各種LCD屏的控制信號了。
VFRAM 和VLINE脈沖的產(chǎn)生是通過對LCDCON2寄存器的HOZVAL和LINEVAL進(jìn)行配置來完成的。每個域都與LCD的尺寸和顯示模式有關(guān)。
其中,HOZVAL=(顯示寬度/VD數(shù)據(jù)線位數(shù))-1。
在彩色模式下,顯示寬度=3×每行的像素點數(shù)。
對所選的液晶模塊,HOZVAL=(640×3/8)-1;LINEVAL=(顯示寬度)-1。
對所選的液晶模塊,LlNEVAL=480-1。
VCLK信號的頻率可以通過LCDCON1寄存器的CLKVAL域來確定,即
VCLK=MCLK/(CLKVAL×2)
LCD控制器的最大VCLK頻率為16.5MHz,幾乎支持所有已有的LCD驅(qū)動器。由于上述關(guān)系,CLKVAL的值決定了VCLK的頻率。為了確定CLKVAL的值,應(yīng)該計算一下LCD控制器向VD端口傳輸數(shù)據(jù)的速率,以便使VCLK的值大于數(shù)據(jù)傳輸?shù)乃俾省?br /> 數(shù)據(jù)傳輸速率的公式為:
數(shù)據(jù)傳輸速率=HS×VS×FR×MV
其中,HS—LCD的行像素值;VS—LCD的列像素值:FR—幀速率;MV—模式值,這里取8位單掃描,彩色。
對于所選用的液晶模塊:HS=640;VS=480;FR=70Hz:MV=3/8。因此,數(shù)據(jù)傳輸速率=640×480×70×3/8=8,064,000Hz。
VCLK值應(yīng)該大于8MHz而小于16MHz,因此,CLKVAL可以取9~15。
?。?)完整的液晶初始化程序
void LCD_Init_Controler()
{rLCDCON1=(0)|(2《《5)|(MVAL_USED《《7)|(0x3《《8)|(0x3《《10)|(CLKVAL_COLOR《《12);
//disable,8B_SNGL_SCAN,WDLY=8clk,WLH=8clk,rLCDCON2=
?。↙INEVAL)|(HOZVAL_COLOR《《10)|(10《《21);
//LINEBLANK=10(without any calculation)
rLCDSADDR1= (0x3《《27) | (((U32)
frameBuffer256》》22)《《21)|
M5D((U32)frameBuffer256》》1);
//256-color,LCDBANK,LCDBASEU
rLCDSADDR2=M5D((((U32)frameBuffer256+(SCR_XSIZE*LCD_YSIZE))》》1))|(MVAL《《21);
rLCDSADDR3= (LCD_XSIZE/2) | (((SCR_XSIZE-LCD_XSIZE)/2)《《9);
//The following value has to be changed forbetter display.
rREDLUT =0xfdb96420;
rGREENLUT=0xfdb96420;
rBLUELUT=0xfb40;
rDITHMODE=0x0;
rDP1_2=0xa5a5;
rDP4_7=0xba5da65;
rDP3_5=0xa5a5f;
rDP2_3=0xd6b;
rDP5_7=0xeb7b5ed:
rDP3_4=0x7dbe;
rDP4_5=0x7ebdf;
rDP6_7=0x7fdfbfe;
rLCDCON1= (1)|(2《《5)|(0《《7)|(0x3《《8)|(0x3《《10)|(4《《12);
經(jīng)過以上幾步,就完成了液晶的硬件驅(qū)動,下面就是移植軟件包,調(diào)用底層驅(qū)動,完成復(fù)雜的顯示任務(wù)。
3 uC/GUI軟件包的移植
3.1 uC/GUI特點
?。?)支持任何8位、16位和32位的CPU,只要求CPU具有相應(yīng)的ANSI-C編譯器即可;
(2)所有硬件接口定義都使用可配置的宏;
?。?)字符、位圖可顯示與LCD的任意點,并不限制與字節(jié)長度的整數(shù)倍數(shù)地址;
(4)所有程序在長度和速度方面都進(jìn)行了優(yōu)化,結(jié)構(gòu)清晰;
?。?)對于慢速的LCD控制器,可以使用緩沖存儲器減少訪問時間,提高顯示速度。
3.2 uC/GUl移植步驟
在使用uC/GUI時,可以按照以下幾個步驟來進(jìn)行:
?。?)按照需要,定制uC/GUI;
(2)指定硬件設(shè)備的地址,編寫接口驅(qū)動代碼;
(3)編譯、鏈接、調(diào)試?yán)映绦?
?。?)修改例子程序,并測試增加需要的功能;
?。?)編寫自己的應(yīng)用程序。
3.3 具體實現(xiàn)
(1)首先介紹uC/GUI的目錄結(jié)構(gòu)和基本配置。
uC/GUI主要目錄如下:
GUI/ConvertMono 使用黑白顯示設(shè)備時,所要使用的灰度轉(zhuǎn)換函數(shù)
GUI/ConvertColor 使用彩色顯示設(shè)備時,使用的色彩轉(zhuǎn)換函數(shù)
GUI/Config 包含了對uC/GUI進(jìn)行配置的一些文件
GUI/Core uC/GUI核心代碼
GUI/Font uC/GUI與字體相關(guān)的代碼文件
GUI/LCDDriver LCD驅(qū)動代碼文件
GUI/MemDev 內(nèi)存設(shè)備支持文件代碼
GUI/Touch 輸入設(shè)備支持的文件代碼
GUI/Widget uC/GU1支持的控件代碼,包括編輯框、列表框、按鈕和選擇框等
GUI/WM uC/GUI窗口管理部分代碼
?。?)修改uC/GUI,使之適于移植。
在ADS環(huán)境中新建一個工程,將上述gui文件夾下的所有文件加入工程。
將Config文件夾下的3個文件GUIConf.h、
GUITouchConf.h和LCDConf.h加入新工程,如下修改LCDConf.h的內(nèi)容:
/*LCDConf.h*/
#ifndef LCDCONF_H
#define LCDCONF_H
#define LCDG4 //lcd顏色數(shù),必須定義,LCDMONO(單色),LCDG4(四級灰度),LCDG16(16級灰度)
#define LCD_XSIZE(640)/* LCD水平分辨率 */
#define LCD_YSIZE(480)/* LCD垂直分辨率 */
#define LCD BITSPERPIXEL(8)
#endif /*LCDC0NF_H*/
/*以下是S3C44B0X LCD控制器的配置*/
#include “。.incoption.h”
#define SCR_XSIZE (640)//視窗屏幕大小
#define SCR_YSIZE (480)
#define LCD_XSIZE (640)//液晶屏幕大小
#define LCD_YSIZE (480)
#define M5D(n)((n)&0x1fffff)
#define ARRAY_SIZE_G4(SCR_XSIZE/4*SCR_YSIZE)
#define HOZVAL (LCD_XSIZE/4-1)
#define HOZVAL_COLOR (LCD_XSIZE*3/8-1)
#define LINEVAL (LCD_YSIZE-1)
#define MVAL (13)
#define CLKVAL_G4 (10)
#define MVAL_USED 0
#endif /*LCDCONF_H */
(3)加載LCD驅(qū)動。
LCD驅(qū)動程序如前面所述,保存在lcd44b0.c中。出了底層的初始化函數(shù)LCD_Init_Controler()以外,還需要做以下修改,這里只提關(guān)鍵部分。
主要進(jìn)行相關(guān)的寄存器配置,以及和GUI的接口程序。這里只提及關(guān)鍵部分。
① 定義顯示緩沖區(qū)時使用的char數(shù)據(jù)類型,它是8bit的:
unsigned char Bmp[ARRAY_SIZE_G16];//液晶顯示緩沖數(shù)組
② 定義讀寫緩沖區(qū)時使用的數(shù)據(jù)類型,也是8bit的U8:
#define LCD_READ_MEM (Off)*((U8*)(frame
Buffer256+(((U32)(Off)))))
#define LCD_WRRITE_MEM(Off,data)*((U8*)frameBuffer256+(((U32)(Off)))))=data
#define LCD_WRITE_REG(Off,data)
⑧ 定義液晶總線寬度定義位8bit:
#ifndef LCD_BUSWIDTH
#define LCD_BUSWIDTH(8)
#endif
?、?定義字節(jié)順序:
#define LCD_SWAP_BYTE_ORDER(0)
至此uC/GUI的移植基本上已經(jīng)完成了。當(dāng)然這里只提供了移植的關(guān)鍵部分,更多更完整的移植還需要做不少的工作,如觸控屏的移植、鍵盤鼠標(biāo)的移植以及中文字體的移植等。詳情請參閱uC/GUI手冊中Getting Started一章。
4 數(shù)據(jù)顯示程序設(shè)計
數(shù)據(jù)顯示程序主要是基于uC/GUI平臺的GUI函數(shù)庫,完成字符、曲線的繪制。與畫線相關(guān)的GUI函數(shù)有:
GUI DrawHLine()
原型:void GUI_DrawLine(int x0,int y0,int x1,int y1);
其中,x0、y0、x1、y1分別為UGI坐標(biāo)系下的起點和終點的橫坐標(biāo)和縱坐標(biāo)。
GUI DispDec()
原型:void GUI_DispDec(I32 v,U8 Len);
其中,v為要顯示的十進(jìn)制變量值,Len為要顯示的數(shù)據(jù)的位數(shù)。
5 總結(jié)
本文主要介紹了基于ARM7內(nèi)核S3C44B0X和L78C64液晶模塊硬件平臺的uC/GUI的移植,以及在工程上的應(yīng)用,經(jīng)過實際應(yīng)用發(fā)現(xiàn),uC/GUI功能強大,響應(yīng)迅速,穩(wěn)定性高,具有廣泛的應(yīng)用前景。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- S3C44B0X原理圖 167次下載
- S3C44B0X datasheet, RISC MICRO
- S3C44B0X中文手冊 pdf
- ARM CPU S3C44B0X與C54X DSP的接口設(shè)計
- 基于S3C44B0X處理器的VxWorks中斷設(shè)計
- 基于S3C44B0X的UC/GUI的移植研究
- μC/OS-Ⅱ在S3C44B0X上的移植
- S3C44B0X與LM2028的接口及其編程
- 基于S3C44B0X 的uClinux的移植
- μC OS-II 在S3C44B0X 處理器上的移植
- 三星S3C44B0X目標(biāo)板的μClinux Bootload
- 基于S3C44B0X微處理器的JFFS2件系統(tǒng)的實現(xiàn)
- S3C44B0X的培訓(xùn)資料及源代碼程序
- s3c44b0x中文資料,s3c44b0x中文數(shù)據(jù)手冊
- S3C44B0X pdf
- 【GD32 MCU 移植教程】6、從GD32F1x0和GD32F3x0移植到GD32E230 109次閱讀
- 基于LPC2214和S3C44B0X實現(xiàn)PCB鉆床控制器的設(shè)計 4687次閱讀
- 基于S3C44B0x處理器和傳感器實現(xiàn)煤機控制系統(tǒng)的設(shè)計 569次閱讀
- 基于三星S3C44B0芯片實現(xiàn)VxWorks網(wǎng)絡(luò)接口的軟硬件設(shè)計 1503次閱讀
- 基于S3C2410處理器對Windows CE 5.0操作系統(tǒng)實現(xiàn)BSP移植 977次閱讀
- 嵌入式處理器中cache數(shù)據(jù)不一致性的解決方法 3327次閱讀
- 基于NiosⅡ處理器的嵌入式平臺上實現(xiàn)μC/GUI的移植設(shè)計 778次閱讀
- 關(guān)于ARM7 S3C4510B上μClinux移植問題 2330次閱讀
- 關(guān)于Blob的介紹及其在S3C44B0上的移植 4395次閱讀
- 基于微處理器S3C44B0X的監(jiān)測儀USB接口控制設(shè)計 5189次閱讀
- 基于UClinux2.4.x+S3C4510B開發(fā)平臺的USB-HOST驅(qū)動設(shè)計 5111次閱讀
- bootloader對uClinux的S3C44B0移植 1737次閱讀
- uC/GUI在ARM內(nèi)核S3C44B0X的移植實例 961次閱讀
- 基于ARM-UClinux的無線家庭網(wǎng)關(guān)設(shè)計 2454次閱讀
- 基于S3C44B0開發(fā)板的圖像采集方法研究 1997次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1489次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 91次下載 | 1 積分
- 3S7-200PLC編程實例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 9次下載 | 免費
- 6基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 7基于單片機和 SG3525的程控開關(guān)電源設(shè)計
- 0.23 MB | 3次下載 | 免費
- 8基于單片機的紅外風(fēng)扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30319次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關(guān)電源設(shè)計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233045次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多