www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于uCGUI的數(shù)據(jù)顯示系統(tǒng)

本文詳細(xì)介紹了uC/GUI在ARM 內(nèi)核S3C44B0X的移植。實(shí)踐證明uC/GUI具有良好的實(shí)時(shí)性和穩(wěn)定性以及廣泛的應(yīng)用前景。

  1 硬件連接與液晶顯示原理

  本設(shè)計(jì)使用的硬件采用ARM7開(kāi)發(fā)板,液晶模塊為L(zhǎng)78C64,它是7.8in 256色STN型LCD顯示屏,分辨率為640×480。

  LCD控制器外部接口信號(hào)的定義及其與LCD模塊各信號(hào)之間的對(duì)應(yīng)關(guān)系如下:

  (1)VFRAME:LCD控制器與LCD驅(qū)動(dòng)器之間的幀同步信號(hào)。該信號(hào)負(fù)責(zé)指出LCD屏新的一幀開(kāi)始的時(shí)間。LCD控制器在一個(gè)完整幀顯示完成后立即插入一個(gè)VFRAME信號(hào),并開(kāi)始新一幀的顯示。該信號(hào)與LCD模塊的YD信號(hào)相對(duì)應(yīng);

  (2)VLINE:LCD控制器和LCD驅(qū)動(dòng)器之間的線同步脈沖信號(hào)。該信號(hào)用于將LCD驅(qū)動(dòng)器水平線(行)移位寄存器的內(nèi)容傳送給LCD屏顯示。LCD控制器在整個(gè)水平線(整行)數(shù)據(jù)移入LCD控制器后,插入一個(gè)VLINE信號(hào)。該信號(hào)與LCD模塊的LP信號(hào)相對(duì)應(yīng);

  (3)VCLK:LCD控制器和LCD驅(qū)動(dòng)器之間的像素時(shí)鐘信號(hào)。由LCD控制器送出的數(shù)據(jù)在VCLK的上升沿處送出,在VCLK的下降沿被LCD驅(qū)動(dòng)器采樣。該信號(hào)與LCD模塊的XCK信號(hào)相對(duì)應(yīng);

  (4)VM:LCD驅(qū)動(dòng)器的AC信號(hào)。VM信號(hào)被LCD驅(qū)動(dòng)器用于改變行和列的電壓極性,從而控制像素點(diǎn)的顯示和熄滅。VM信號(hào)可以與每個(gè)幀同步,也可以與可變數(shù)量的VLINE信號(hào)同步;

  (5)VD3~0 LCD:像素點(diǎn)的數(shù)據(jù)輸入端口。與LCD模塊的D3~0相對(duì)應(yīng):

  (6)VD7~4 LCD:像素點(diǎn)的數(shù)據(jù)輸入端口。與LCD模塊的D7~4相對(duì)應(yīng)。

  液晶顯示原理:寫(xiě)滿整個(gè)屏的數(shù)據(jù)稱為1個(gè)“幀”數(shù)據(jù),YD是幀同步信號(hào),該信號(hào)啟動(dòng)LCD屏的新一幀數(shù)據(jù)。兩個(gè)YD脈沖之間的時(shí)間長(zhǎng)度稱為幀周期。根據(jù)LCD模塊的特性,刷新時(shí)間為12~14ms,頻率為70~80Hz。每一幀包括480個(gè)LP脈沖。LP為行(共480行)數(shù)據(jù)輸入鎖存信號(hào),也就是行同步脈沖信號(hào)。該信號(hào)啟動(dòng)LCD屏的新一行數(shù)據(jù)。XCK為行數(shù)據(jù)輸入信號(hào),也就是每1行中像素點(diǎn)數(shù)據(jù)傳輸?shù)臅r(shí)鐘信號(hào)。每組8位的數(shù)據(jù)在XCK的下降沿被輸入鎖存,因此,每1行包括640×3/8個(gè)XCK脈沖信號(hào)。D0~D7是8位的顯示數(shù)據(jù)輸入信號(hào)。

  2 驅(qū)動(dòng)程序設(shè)計(jì)

  下面分三步完成液晶的初始化。

  (1)I/O口的初始化

  由于采用S3C44B0X的PC接口和PD接口作為L(zhǎng)CD驅(qū)動(dòng)接口,因此,需要設(shè)置PC接口工作在第3功能狀態(tài)和PD接口工作在第2功能狀態(tài)。

  (2)相應(yīng)控制寄存器的設(shè)置方法

  S3C44B0X包括一個(gè)LCD控制器時(shí)序發(fā)生器TIMEGEN, 由它來(lái)產(chǎn)生VFRAM,VLINE,VCLK和VM 控制時(shí)序。這些控制信號(hào)由寄存器LCOCON1和LCDCON2進(jìn)行配置。通過(guò)對(duì)寄存器種配置項(xiàng)目的設(shè)置,TIMEGEN就可以產(chǎn)生適應(yīng)于各種LCD屏的控制信號(hào)了。

  VFRAM 和VLINE脈沖的產(chǎn)生是通過(guò)對(duì)LCDCON2寄存器的HOZVAL和LINEVAL進(jìn)行配置來(lái)完成的。每個(gè)域都與LCD的尺寸和顯示模式有關(guān)。

  其中,HOZVAL=(顯示寬度/VD數(shù)據(jù)線位數(shù))-1。

  在彩色模式下,顯示寬度=3×每行的像素點(diǎn)數(shù)。

  對(duì)所選的液晶模塊,HOZVAL=(640×3/8)-1;LINEVAL=(顯示寬度)-1。

  對(duì)所選的液晶模塊,LlNEVAL=480-1。

  VCLK信號(hào)的頻率可以通過(guò)LCDCON1寄存器的CLKVAL域來(lái)確定,即

  VCLK=MCLK/(CLKVAL×2)

  LCD控制器的最大VCLK頻率為16.5MHz,幾乎支持所有已有的LCD驅(qū)動(dòng)器。由于上述關(guān)系,CLKVAL的值決定了VCLK的頻率。為了確定CLKVAL的值,應(yīng)該計(jì)算一下LCD控制器向VD端口傳輸數(shù)據(jù)的速率,以便使VCLK的值大于數(shù)據(jù)傳輸?shù)乃俾省?/p>

  數(shù)據(jù)傳輸速率的公式為:

  數(shù)據(jù)傳輸速率=HS×VS×FR×MV

  其中,HS—LCD的行像素值;VS—LCD的列像素值:FR—幀速率;MV—模式值,這里取8位單掃描,彩色。

  對(duì)于所選用的液晶模塊: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。[!--empirenews.page--](3)完整的液晶初始化程序

 

  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=

  (LINEVAL)|(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)過(guò)以上幾步,就完成了液晶的硬件驅(qū)動(dòng),下面就是移植軟件包,調(diào)用底層驅(qū)動(dòng),完成復(fù)雜的顯示任務(wù)。

  3 uC/GUI軟件包的移植

  3.1 uC/GUI特點(diǎn)

  (1)支持任何8位、16位和32位的CPU,只要求CPU具有相應(yīng)的ANSI-C編譯器即可;

  (2)所有硬件接口定義都使用可配置的宏;

  (3)字符、位圖可顯示與LCD的任意點(diǎn),并不限制與字節(jié)長(zhǎng)度的整數(shù)倍數(shù)地址;

  (4)所有程序在長(zhǎng)度和速度方面都進(jìn)行了優(yōu)化,結(jié)構(gòu)清晰;

  (5)對(duì)于慢速的LCD控制器,可以使用緩沖存儲(chǔ)器減少訪問(wèn)時(shí)間,提高顯示速度。

  3.2 uC/GUl移植步驟

  在使用uC/GUI時(shí),可以按照以下幾個(gè)步驟來(lái)進(jìn)行:

  (1)按照需要,定制uC/GUI;

  (2)指定硬件設(shè)備的地址,編寫(xiě)接口驅(qū)動(dòng)代碼;

  (3)編譯、鏈接、調(diào)試?yán)映绦?

  (4)修改例子程序,并測(cè)試增加需要的功能;

  (5)編寫(xiě)自己的應(yīng)用程序。

  3.3 具體實(shí)現(xiàn)

  (1)首先介紹uC/GUI的目錄結(jié)構(gòu)和基本配置。

  uC/GUI主要目錄如下:

  GUI/ConvertMono 使用黑白顯示設(shè)備時(shí),所要使用的灰度轉(zhuǎn)換函數(shù)

  GUI/ConvertColor 使用彩色顯示設(shè)備時(shí),使用的色彩轉(zhuǎn)換函數(shù)

  GUI/Config 包含了對(duì)uC/GUI進(jìn)行配置的一些文件

  GUI/Core uC/GUI核心代碼

  GUI/Font uC/GUI與字體相關(guān)的代碼文件

  GUI/LCDDriver LCD驅(qū)動(dòng)代碼文件

  GUI/MemDev 內(nèi)存設(shè)備支持文件代碼

  GUI/Touch 輸入設(shè)備支持的文件代碼

  GUI/Widget uC/GU1支持的控件代碼,包括編輯框、列表框、按鈕和選擇框等

  GUI/WM uC/GUI窗口管理部分代碼

  (2)修改uC/GUI,使之適于移植。

  在ADS環(huán)境中新建一個(gè)工程,將上述gui文件夾下的所有文件加入工程。

  將Config文件夾下的3個(gè)文件GUIConf.h、

  GUITouchConf.h和LCDConf.h加入新工程,如下修改LCDConf.h的內(nèi)容:

  /*LCDConf.h*/

  #ifndef LCDCONF_H

  #define LCDCONF_H

  #define LCDG4 //lcd顏色數(shù),必須定義,LCDMONO(單色),LCDG4(四級(jí)灰度),LCDG16(16級(jí)灰度)

  #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 */[!--empirenews.page--](3)加載LCD驅(qū)動(dòng)。

 

  LCD驅(qū)動(dòng)程序如前面所述,保存在lcd44b0.c中。出了底層的初始化函數(shù)LCD_Init_Controler()以外,還需要做以下修改,這里只提關(guān)鍵部分。

  主要進(jìn)行相關(guān)的寄存器配置,以及和GUI的接口程序。這里只提及關(guān)鍵部分。

 ?、?定義顯示緩沖區(qū)時(shí)使用的char數(shù)據(jù)類型,它是8bit的:

  unsigned char Bmp[ARRAY_SIZE_G16];//液晶顯示緩沖數(shù)組

 ?、?定義讀寫(xiě)緩沖區(qū)時(shí)使用的數(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)鍵部分,更多更完整的移植還需要做不少的工作,如觸控屏的移植、鍵盤(pán)鼠標(biāo)的移植以及中文字體的移植等。詳情請(qǐng)參閱uC/GUI手冊(cè)中Getting Started一章。

  4 數(shù)據(jù)顯示程序設(shè)計(jì)

  數(shù)據(jù)顯示程序主要是基于uC/GUI平臺(tái)的GUI函數(shù)庫(kù),完成字符、曲線的繪制。與畫(huà)線相關(guān)的GUI函數(shù)有:

  GUI DrawHLine()

  原型:void GUI_DrawLine(int x0,int y0,int x1,int y1);

  其中,x0、y0、x1、y1分別為UGI坐標(biāo)系下的起點(diǎn)和終點(diǎn)的橫坐標(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液晶模塊硬件平臺(tái)的uC/GUI的移植,以及在工程上的應(yīng)用,經(jīng)過(guò)實(shí)際應(yīng)用發(fā)現(xiàn),uC/GUI功能強(qiáng)大,響應(yīng)迅速,穩(wěn)定性高,具有廣泛的應(yīng)用前景.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉