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

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀]基于uC/GUI的數據顯示系統(tǒng)的設計

uC/GUI是Micrigm 公司推出的用于嵌入式系統(tǒng)的圖形用戶接口(graphics user interface,GUI)軟件包,由于uC/GUI完全以ANSI-C編寫,因此它與處理器無關,可以很方便地移植到不同的操作系統(tǒng)和嵌入式微處理器上,并可支持不同尺寸的圖形液晶顯示器。它采用層次化的設計,功能強大,移植方便,被廣泛地應用于嵌入式領域,如PDA、機頂盒以及DVD NCD播放機等。本文詳細介紹了uC/GUI在ARM 內核S3C44B0X的移植。實踐證明uC/GUI具有良好的實時性和穩(wěn)定性以及廣泛的應用前景。

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

本設計使用的硬件采用ARM7開發(fā)板,液晶模塊為L78C64,它是7.8in 256色STN型LCD顯示屏,分辨率為640×480。

LCD控制器外部接口信號的定義及其與LCD模塊各信號之間的對應關系如下:

(1)VFRAME:LCD控制器與LCD驅動器之間的幀同步信號。該信號負責指出LCD屏新的一幀開始的時間。LCD控制器在一個完整幀顯示完成后立即插入一個VFRAME信號,并開始新一幀的顯示。該信號與LCD模塊的YD信號相對應;

(2)VLINE:LCD控制器和LCD驅動器之間的線同步脈沖信號。該信號用于將LCD驅動器水平線(行)移位寄存器的內容傳送給LCD屏顯示。LCD控制器在整個水平線(整行)數據移入LCD控制器后,插入一個VLINE信號。該信號與LCD模塊的LP信號相對應;

(3)VCLK:LCD控制器和LCD驅動器之間的像素時鐘信號。由LCD控制器送出的數據在VCLK的上升沿處送出,在VCLK的下降沿被LCD驅動器采樣。該信號與LCD模塊的XCK信號相對應;

(4)VM:LCD驅動器的AC信號。VM信號被LCD驅動器用于改變行和列的電壓極性,從而控制像素點的顯示和熄滅。VM信號可以與每個幀同步,也可以與可變數量的VLINE信號同步;

(5)VD3~0 LCD:像素點的數據輸入端口。與LCD模塊的D3~0相對應:

(6)VD7~4 LCD:像素點的數據輸入端口。與LCD模塊的D7~4相對應。

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

2、驅動程序設計

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

(1)I/O口的初始化

由于采用S3C44B0X的PC接口和PD接口作為LCD驅動接口,因此,需要設置PC接口工作在第3功能狀態(tài)和PD接口工作在第2功能狀態(tài)。

(2)相應控制寄存器的設置方法

S3C44B0X包括一個LCD控制器時序發(fā)生器TIMEGEN, 由它來產生VFRAM,VLINE,VCLK和VM 控制時序。這些控制信號由寄存器LCOCON1和LCDCON2進行配置。通過對寄存器種配置項目的設置,TIMEGEN就可以產生適應于各種LCD屏的控制信號了。

VFRAM和VLINE脈沖的產生是通過對LCDCON2寄存器的HOZVAL和LINEVAL進行配置來完成的。每個域都與LCD的尺寸和顯示模式有關。

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

在彩色模式下,顯示寬度=3×每行的像素點數。

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

對所選的液晶模塊,LlNEVAL=480-1。

VCLK信號的頻率可以通過LCDCON1寄存器的CLKVAL域來確定,即

VCLK=MCLK/(CLKVAL×2)

LCD控制器的最大VCLK頻率為16.5MHz,幾乎支持所有已有的LCD驅動器。由于上述關系,CLKVAL的值決定了VCLK的頻率。為了確定CLKVAL的值,應該計算一下LCD控制器向VD端口傳輸數據的速率,以便使VCLK的值大于數據傳輸的速率。

數據傳輸速率的公式為:

數據傳輸速率=HS×VS×FR×MV

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

對于所選用的液晶模塊:HS=640;VS=480;FR=70Hz:MV=3/8。因此,數據傳輸速率=640×480×70×3/8=8,064,000Hz。

VCLK值應該大于8MHz而小于16MHz,因此,CLKVAL可以取9~15。

(3)完整的液晶初始化程序

C程序

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);

}

經過以上幾步,就完成了液晶的硬件驅動,下面就是移植軟件包,調用底層驅動,完成復雜的顯示任務。

3、uC/GUI軟件包的移植

3.1 uC/GUI特點

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

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

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

(4)所有程序在長度和速度方面都進行了優(yōu)化,結構清晰;

(5)對于慢速的LCD控制器,可以使用緩沖存儲器減少訪問時間,提高顯示速度。[!--empirenews.page--]

3.2 uC/GUl移植步驟

在使用uC/GUI時,可以按照以下幾個步驟來進行:

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

(2)指定硬件設備的地址,編寫接口驅動代碼;

(3)編譯、鏈接、調試例子程序;

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

(5)編寫自己的應用程序。

3.3 具體實現(xiàn)

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

uC/GUI主要目錄如下:

GUI/ConvertMono 使用黑白顯示設備時,所要使用的灰度轉換函數

GUI/ConvertColor 使用彩色顯示設備時,使用的色彩轉換函數

GUI/Config 包含了對uC/GUI進行配置的一些文件

GUI/Core uC/GUI核心代碼

GUI/Font uC/GUI與字體相關的代碼文件

GUI/LCDDriver LCD驅動代碼文件

GUI/MemDev 內存設備支持文件代碼

GUI/Touch 輸入設備支持的文件代碼

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

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

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

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

將Config文件夾下的3個文件GUIConf.h、

GUITouchConf.h和LCDConf.h加入新工程,如下修改LCDConf.h的內容:

C程序

/*LCDConf.h*/

#ifndef LCDCONF_H

#define LCDCONF_H

#define LCDG4 //lcd顏色數,必須定義,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驅動。

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

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

① 定義顯示緩沖區(qū)時使用的char數據類型,它是8bit的:

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

② 定義讀寫緩沖區(qū)時使用的數據類型,也是8bit的U8:

#define LCD_READ_MEM (Off)*((U8*)(frameBuffer256+(((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的移植基本上已經完成了。當然這里只提供了移植的關鍵部分,更多更完整的移植還需要做不少的工作,如觸控屏的移植、鍵盤鼠標的移植以及中文字體的移植等。詳情請參閱uC/GUI手冊中Getting Started一章。

4、數據顯示程序設計

數據顯示程序主要是基于uC/GUI平臺的GUI函數庫,完成字符、曲線的繪制。與畫線相關的GUI函數有:

GUI DrawHLine()

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

其中,x0、y0、x1、y1分別為UGI坐標系下的起點和終點的橫坐標和縱坐標。

GUI DispDec()

原型:void GUI_DispDec(I32 v,U8 Len);

其中,v為要顯示的十進制變量值,Len為要顯示的數據的位數。

5、總結

本文主要介紹了基于ARM7內核S3C44B0X和L78C64液晶模塊硬件平臺的uC/GUI的移植,以及在工程上的應用,經過實際應用發(fā)現(xiàn),uC/GUI功能強大,響應迅速,穩(wěn)定性高,具有廣泛的應用前景。

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

一星期中最糟糕的一天,這居然也成功拿下了吉尼斯記錄。10月17日,吉尼斯世界紀錄官微發(fā)文稱,正式認證星期一為一個周里最糟糕的一天,周五是最偉大的一天??雌饋碛悬c官微小編搞怪的意思,畢竟尚未見到正式的證書。當然,一些打工人...

關鍵字: MIDDOT MDASH GUI WORLD

亙喜生物科技集團宣布正在中國開展的、旨在全面評估GC007g治療復發(fā)/難治性急性B淋巴細胞白血病效果的1/2期注冊性臨床試驗順利進入2期研究階段,首例入組患者已給藥。GC007g是亙喜生物旗下的一款靶向CD19的供者來源...

關鍵字: 移植 CD

北京2022年9月9日 /美通社/ -- 諾誠健華(香港聯(lián)交所代碼:09969)今天宣布,tafasitamab (Minjuvi®)聯(lián)合來那度胺治療不適合自體干細胞移植 (ASCT) 條件的復發(fā)/難治彌漫性大B...

關鍵字: VI NJU BSP 移植

蘇州2022年8月19日 /美通社/ -- 近日,華中科技大學同濟醫(yī)學院附屬協(xié)和醫(yī)院心外科董念國教授團隊運用與心擎醫(yī)療聯(lián)合研發(fā)的短中期體外全磁懸浮心室輔助裝置MoyoAssist®,成功救治三例危重的終...

關鍵字: 磁懸浮 移植 IC 靜脈

上海2022年8月17日 /美通社/ -- 2022年8月16日,聚焦于基因和細胞治療的上海邦耀生物科技有限公司(以下簡稱"邦耀生物")宣布,其...

關鍵字: CD 移植 BSP ISP

蘇州2022年6月28日 /美通社/ -- 2022年6月23日,首都醫(yī)科大學附屬北京安貞醫(yī)院(以下簡稱安貞醫(yī)院)與蘇州心擎醫(yī)療技術有限公司(以下簡稱心擎)在北京、蘇州兩地線上連線,隆重召開體外心室輔助系統(tǒng)臨床...

關鍵字: BSP 磁懸浮 創(chuàng)始人 移植

(全球TMT2022年5月26日訊)disguise  -- 視覺敘事平臺和擴展現(xiàn)實(xR)解決方案市場領導者 -- 宣布推出元宇宙解決方案部門,幫助元宇宙實現(xiàn)下一代非凡的現(xiàn)場、虛擬制作和基于位置的視聽體驗。...

關鍵字: GUI SE AN BSP

倫敦2022年5月26日  /美通社/ -- disguise  -- 視覺敘事平臺和擴展現(xiàn)實(xR)解決方案市場領導者 -- 宣布推出元宇宙解決方案部門,幫助元宇宙實現(xiàn)下一代非凡的現(xiàn)場、虛擬制作和基...

關鍵字: GUI SE RS NI

西班牙巴塞羅那2022年3月1日 /美通社/ -- 在MWC22 巴塞羅那期間,華為運營商BG Marketing與解決方案銷售部總裁彭松發(fā)表了題為“擁抱數字世界,GUIDE引領未來”的主題演講,分享了對于未來...

關鍵字: GUI IDE 華為

3個SystemVerilog新特性!01`begin_keyword`end_keyword硬件描述語言中有很多特殊的編譯或者綜合等工具的預執(zhí)行指令,在某些場景下我們可以利用一下HDL之外的語法去指導工具,而不是信馬由...

關鍵字: SYSTEMVERILOG DEFINE PACKAGE 編譯

嵌入式教程

6897 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉