<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > uC/GUI在ARM內(nèi)核S3C44B0X的移植實(shí)例

          uC/GUI在ARM內(nèi)核S3C44B0X的移植實(shí)例

          作者: 時(shí)間:2011-12-06 來(lái)源:網(wǎng)絡(luò) 收藏
          3.2 uC/GUl移植步驟

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

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

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

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

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

          (5)編寫自己的應(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)容:

          C程序

          /*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*/

          /*以下是 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ū)動(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ù)組

          ② 定義讀寫緩沖區(qū)時(shí)使用的數(shù)據(jù)類型,也是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的移植基本上已經(jīng)完成了。當(dāng)然這里只提供了移植的關(guān)鍵部分,更多更完整的移植還需要做不少的工作,如觸控屏的移植、鍵盤鼠標(biāo)的移植以及中文字體的移植等。詳情請(qǐng)參閱uC/GUI手冊(cè)中Getting Started一章。

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

          數(shù)據(jù)顯示程序主要是基于uC/GUI平臺(tái)的GUI函數(shù)庫(kù),完成字符、曲線的繪制。與畫線相關(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)核和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)用前景。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: ARM內(nèi)核 S3C44B0X

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();