最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

μC/GUI T6963C LCD控制器驅(qū)動移植及矢量漢字顯示的實現(xiàn)

出處:嚴龍軍1,熊文卓2 發(fā)布于:2011-08-23 17:59:17

 

  圖形用戶界面或圖形用戶接口(Graphical User Interface,GUI)是指采用圖形方式顯示的計算機操作環(huán)境用戶接口。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說更為簡便易用。GUI的廣泛應用是當今計算機發(fā)展的重大成就之一,它極大地方便了非用戶的使用人們從此不再需要死記硬背大量的命令,取而代之的是可用用通過窗口、菜單、按鍵等方式來方便地進行操作。而嵌入式GUI具有下面幾個方面的基本要求:輕型、占用資源少、高性能、高可靠性、便于移植、可配置等特點。圖形用戶界面的應用范圍很廣泛,如自動取款機ATM,汽車導航、媒體播放器、游戲機等等,一般操作簡捷,直觀。蘋果公司的iPhone手機還有裝有多手指操作系統(tǒng)。

  當前比較流行的GUI主要有MicroWindows、MiniGUI、QT/Embedded、OpenGUI等,普遍采用客戶/服務器結構、多線程概念,主要用于嵌入式Linux系統(tǒng)中。本文介紹的μC/GUI是Micrium公司開發(fā)的一個為嵌入式應用軟件設計的通用圖形軟件庫。它為任何一個使用圖形LCD的應用提供一個有效的不依賴于處理器和LCD控制器的圖形用戶接口。它能工作于單任務或多任務的系統(tǒng)環(huán)境下。μC/GUI是嵌入式應用中通用的圖形軟件,是為帶LCD的圖形應用系統(tǒng)提供高效的圖形用戶接口而設計的,它不依賴于處理器和LCD控制器。μC/GUI在多任務環(huán)境下工作與在單任務環(huán)境下工作性能同樣卓越,任何尺寸大小的顯示設備,不管是物理的或是虛擬的,只要具備LCD控制器和處理器,都可以運用μC/GUI.μC/GUI產(chǎn)品包中包含有所有的源代碼。實際上,在所有的嵌入式圖形用戶接口中,μC/GUI提供的源代碼是整潔統(tǒng)一的。μC/GUI提供的所有服務都以該模塊相關的前綴開始(如:GUI,WM),這將易于理解應用程序中與μC/GUI相關的函數(shù)。μC/GUI適用于所有處理器,與那些需要C++編譯器的GUI不同的是,μC/GUI完全用標準C編寫。

  1 μC/GUI的主要特點

  (1)一般特點:適合于任何8/16/32/64位CPU,只需要有一個ANSIC兼容的編譯器;適合于任何控制器支持(如果有合適的驅(qū)動程序)的任何單色/灰度級/彩色LCD;顯示屏大小可配置;使用配置宏定義各種接口;大小和速度都優(yōu)化過的函數(shù);清晰的結構;支持虛擬顯示,虛擬顯示能夠比實際顯示表現(xiàn)更大尺寸的內(nèi)容。

 ?。?)在圖形庫方面:支持不同色深的位圖;有效的位圖轉換器;沒有浮點運算;快速線/點繪制(不使用浮點指令);快速的圓和多邊形繪制。

  (3)在字體方面:支持多種不同的字體如4×6、6×8、6×9、8×8、8×9、8×16、24×32等,支持像素高為8、10、13、16等比例字體;可以定義新字體,而且很容易被程序使用;只有實際被應用程序用到的字體才會真正被鏈接到目標文件,這樣可以節(jié)省ROM的使用;字體在橫向(X軸)和縱向(Y軸)都可以自由伸縮。

 ?。?)在字符串/值輸出函數(shù)方面:具有能夠顯示二進制、十進制、十六進制和任何字體的值的函數(shù)。

 ?。?)在窗口管理器WM方面:包括可裁減的完全的窗口支持,改寫超出一個窗口的區(qū)域是不可行的;支持回調(diào)函數(shù);WM使用極少的內(nèi)存,例如每個窗口大約20 B.

  2 T6963C LCD控制器驅(qū)動移植

  作為一個通用的圖形函數(shù)軟件庫,μC/GUI能夠適用于各種LCD控制器和LCD,但是,針對具體的目標系統(tǒng),由于LCD及其控制器的訪問方式不同,以及顯示緩存的訪問方式不同,還是要做具體的移植工作。對于內(nèi)存映射的LCD控制器,只需要在LCDConf.h文件中設置LCD的訪問函數(shù);對于端口/緩存模式的LCD控制器,必須在LCD_X.C文件中定義訪問LCD的接口函數(shù)。μC/GUI的移植主要是設置子文件夾config中的頭文件,其中包括LCD宏(定義LCD顯示屏的屬性)和LCD控制器宏的設置(定義如何訪問LCD控制器)。

  LCD控制器有兩種基本類型的總線接口:完全和簡單的總線接口。大多數(shù)小一些的顯示屏(通常為240×128或320×240)的LCD控制器使用簡單總線接口與CPU連接。對于簡單總線,只有一個地址位(通常是A0)連接到LCD控制器。這樣的控制器比較慢,硬件設計者可以將其連接到I/O腳而不是地址總線。圖1為帶有簡單總線的LCD控制器的方框圖。

  用于簡單總線接口控制器的宏:

 ?。?)LCD_READ_A0在A0(C/D)引腳為低電平時,從LCD控制器讀取1B;

  (2)LCD_READ_A1在A0(C/D)引腳為高電平時,從LCD控制器讀取1B;

  (3)LCD_WRITE_A0在A0(C/D)引腳為低電平時,向LCD控制器寫1B;

 ?。?)LCD_WRITE_A1 在A0(C/D)引腳為高電平時,向LCD控制器寫1B.

  在液晶顯示模塊中配備有顯示存儲器(RAM),T6963C可控制64K.該存儲器經(jīng)設置指令設置(區(qū)域、方式)后,存儲器中被設置的空間內(nèi)的每一個"位"都與液晶屏上的一個像素(點)相對應,而"位"的二值性就表示液晶屏上像素是否"顯現(xiàn)".T6963C則將存儲器中設置區(qū)域的內(nèi)容不斷地、掃描式地送向液晶屏,用戶則通過顯示模塊對外的接口將需顯示的"數(shù)據(jù)" 送入存儲器中的設置區(qū)域即可。

  T6963C屬于具有簡單總線接口的LCD驅(qū)動控制器。以Philips公司的LPC2104 ARM芯片為CPU控制T6963C為例來說明具體的移植過程。LPC2104的P0.0~P0.7與T6963C的D0~D7相連,P0.8與WR相連,P0.9與RD相連,P0.10與C/D相連。根據(jù)T6963C的時序圖(如圖2所示),可以很方便地修改LCD底層驅(qū)動函數(shù)。

  #define wr 1《8

  #define rd 1《9

  #define cd 1《10

  /*讀取T6963狀態(tài)字*/

  uint8 LCD_READ_A1(void)

  {

  uint8 temp;

  IODIR=0x000000700;

  //設置P0.8~P0.10為輸出,P0.0~P0.7為輸入

  IOSET=cd;               //把C/D引腳置位

  IOCLR=rd;        //把RD引腳置低電平

  temp=IOPIN;          //讀數(shù)據(jù)總線上的數(shù)

  IOSET=rd;               //把RD引腳置位

  return(temp);

  }

  /*向T6963C寫一個字節(jié)(控制指令)*/

  void LCD_WRITE_A1(int Byte)

  {

  IODIR=0x000007ff;             //設置P0.0~P0.10為輸出

  IOSET=cd;               //把C/D引腳置位

  IOCLR=0xff;                            //清除數(shù)據(jù)總線上數(shù)據(jù)

  IOCLR=wr;                               //把WR引腳置低電平

  IOSET=Byte;   //把要發(fā)送的控制指令放數(shù)據(jù)總線上

  IOSET=wr;            //把WR引腳置位

  }

  /*向T6963C寫一個字節(jié)(數(shù)據(jù))*/

  void LCD_WRITE_A0(int Byte)

  {

  IODIR=0x000007ff;                //設置P0.0~P0.10為輸出

  IOCLR=cd;        把C/D引腳置低電平

  IOCLR=0xff;     //清除數(shù)據(jù)總線上數(shù)據(jù)

  IOCLR=wr;     //把WR引腳置低電平

  IOSET=Byte;           //把要發(fā)送的數(shù)據(jù)放數(shù)據(jù)總線上

  IOSET=wr;              //把WR引腳置位

  }

  圖3為T6963C指令寫入的流程圖,對該流程圖的理解是通過CPU向T6963C發(fā)送指令的關鍵。當計算機寫指令或讀/寫數(shù)據(jù)時,S0和S1要同時有效,即"準備好"狀態(tài)。對T6963C的軟件操作每之前都要進行判"忙",只有在不"忙"的狀態(tài)下CPU對T6963C的操作才有效。

  /*判定S0和S1的狀態(tài),"忙"即等待*/

  #define LCD_WAIT() while ((LCD_READ_A1()&3)!=3)

  /*寫命令宏*/

  #define LCD_WRITECMD(cmd)

  { LCD_WAIT(); LCD_WRITECMD0(cmd); }

  /*寫數(shù)據(jù)宏*/

  #define LCD_WRITEDATA(Data)

  { LCD_WAIT(); LCD_WRITEDATA0(Data);}

  /*T6963C初始化*/

  void  LCD_T6963_Init(void)

  {

  /*設置文本顯示區(qū)首地址*/

  LCD_WRITEDATA(0x00) ;                    //參數(shù)1

  LCD_WRITEDATA(0x00) ;         //參數(shù)2

  LCD_WRITECMD(0x40) ;              //指令代碼

  /*設置文本顯示區(qū)寬度*/

  LCD_WRITEDATA(0x14) ;      //一行顯示所占的字節(jié)數(shù)

  LCD_WRITEDATA(0x00) ;

  LCD_WRITECMD(0x41) ;

  /*設置圖形顯示區(qū)首地址*/

  LCD_WRITEDATA(0x40) ;       //低字節(jié)

  LCD_WRITEDATA(0x01) ;                  //高字節(jié)

  LCD_WRITECMD(0x42) ;

  /*設置圖形顯示區(qū)寬度*/

  LCD_WRITEDATA(0x14) ; //一行顯示所占的字節(jié)數(shù)

  LCD_WRITEDATA(0x00) ;

  LCD_WRITECMD(0x43) ;

  /*顯示開關設置開文本和圖形顯示*/

  LCD_WRITECMD(0x9c) ;

  /*顯示方式設置邏輯或合成*/

  LCD_WRITECMD(0x80) ;

  /*設置光標顯示形狀*/

  LCD_WRITECMD(0xa1) ;

  }

  在LCDConf.h中,可以根據(jù)實際情況更改設置,如:

  #define LCD_XSIZE  (160)

  // LCD x坐標方向的分辨率

  #define LCD_YSIZE (128)

  // LCD y坐標方向的分辨率

  #define LCD_CONTROLLER (6963)

  //LCD控制器型號

  #define LCD_BITSPERPIXEL (1)

  //LCD每像素的位數(shù)

  3  在μC/GUI中矢量漢字的顯示

  μC/GUI中字體的顯示是通過查找字模的方式實現(xiàn)的。字體庫中的每一個字母都有其對應的字模。所有的字母的字模由GUI_FONT和GUI_FONT_PROP這2個結構體來進行統(tǒng)一管理。GUI_FONT結構體中定義了該字母的點陣大?。ū热?6×16或者8×8)和GUI_FONT_PROP結構體的入口地址。GUI_FONT_PROP這個結構體建立了字庫中字母編碼(比如字母A在ASCII中的字母編碼為33)和字模數(shù)據(jù)存放地址的映像。GUI_FONT_PROP中pNext指針指向下一個GUI_FONT_PROP數(shù)據(jù)的入口地址,這為解決在字母編碼不連續(xù)的情況下,保證字模數(shù)據(jù)在程序段的存儲連續(xù)這一問題提供了一個良好的解決方案。設計人員可以定義多個GUI_FONT_PROP結構,只要使上一個結構體的pNext指針指向下一個GUI_FONT_PROP結構體,并且保證該指針終指向零地址空間即可。掌握這一原理后,可以方便地制作自己的漢字字庫。

  利用μC/GUI漢字庫生成器可以生成指定字體矢量漢字的字模文件。該文件與μC/GUI字庫文件格式相同,但是該文件包含所有GB2312中的漢字,字號越大文件會變得很大,只需找出自己需要的漢字字模,并按μC/GUI中字體文件的格式得到自己的字體文件,這個過程可以編程實現(xiàn)。圖4是用Proteus仿真的結果。

 



  
關鍵詞:控制器驅(qū)動

版權與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉載請必須注明維庫電子市場網(wǎng),http://udpf.com.cn,違反者本網(wǎng)將追究相關法律責任。

本網(wǎng)轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。

如涉及作品內(nèi)容、版權等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關權利。

OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務:
賣家服務:
技術客服:

0571-85317607

網(wǎng)站技術支持

13606545031

客服在線時間周一至周五
9:00-17:30

關注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!