《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > μC/GUI T6963C LCD控制器驅動移植及矢量漢字顯示
μC/GUI T6963C LCD控制器驅動移植及矢量漢字顯示
嚴龍軍1,熊文卓2
摘要: 介紹了Micrium公司開發的一個為嵌入式應用軟件設計的通用圖形軟件庫μC/GUI,提出了在μC/GUI中T6963C LCD控制器驅動移植及矢量漢字顯示的實現方法。該方法為μC/GUI的其他LCD控制器驅動移植及字庫實現提供了參考,同時為利用μC/GUI實現更為復雜的圖形用戶界面打下了基礎。
Abstract:
Key words :

  摘 要:介紹了Micrium公司開發的一個為嵌入式應用軟件設計的通用圖形軟件庫μC/GUI,提出了在μC/GUI中T6963C LCD控制器驅動移植及矢量漢字顯示的實現方法。該方法為μC/GUI的其他LCD控制器驅動移植及字庫實現提供了參考,同時為利用μC/GUI實現更為復雜的圖形用戶界面打下了基礎。
  關鍵詞:圖形用戶界面;矢量漢字;液晶控制器

   在眾多嵌入式系統中,如手機、PDA和數字機頂盒(STB)等,系統使用者往往要求具有菜單、窗口和按鈕等圖形元素的人機交互界面UI(User Interface),而系統設計和實現者又迫切需要系統UI模塊開發的支撐平臺。該支撐平臺以應用開發組件(Application Development Component)的方式來有效提高嵌入式應用的開發效率,這種組件被稱為嵌入式圖形用戶界面(GUI)。
  當前比較流行的GUI主要有MicroWindows、MiniGUI、QT/Embedded、OpenGUI等,普遍采用客戶/服務器結構、多線程概念,主要用于嵌入式Linux系統中。本文介紹的μC/GUI是Micrium公司開發的一個為嵌入式應用軟件設計的通用圖形軟件庫。它為任何一個使用圖形LCD的應用提供一個有效的不依賴于處理器和LCD控制器的圖形用戶接口。它能工作于單任務或多任務的系統環境下。μC/GUI適用于使用任何LCD控制器和CPU的任何尺寸的物理和虛擬顯示。同時,μC/GUI適用于所有的CPU,因為它是由100%的ANSI的C語言編寫的。而且,μC/GUI適合于大多數使用黑白/彩色LCD的應用程序。它有一個很好的顏色管理器,允許它處理灰階。μC/GUI還提供一個可擴展的2D圖形庫和一個視窗管理器,用很少的RAM就能支持顯示窗口。更重要的是μC/GUI開放源代碼,以便了解更多GUI實現的具體細節。
1 μC/GUI的主要特點
  (1)一般特點:適合于任何8/16/32/64位CPU,只需要有一個ANSIC兼容的編譯器;適合于任何控制器支持(如果有合適的驅動程序)的任何單色/灰度級/彩色LCD;顯示屏大小可配置;使用配置宏定義各種接口;大小和速度都優化過的函數;清晰的結構;支持虛擬顯示,虛擬顯示能夠比實際顯示表現更大尺寸的內容。
  (2)在圖形庫方面:支持不同色深的位圖;有效的位圖轉換器;絕對沒有浮點運算;快速線/點繪制(不使用浮點指令);快速的圓和多邊形繪制。
  (3)在字體方面:支持多種不同的字體如4×6、6×8、6×9、8×8、8×9、8×16、24×32等,支持像素高為8、10、13、16等比例字體;可以定義新字體,而且很容易被程序使用;只有實際被應用程序用到的字體才會真正被鏈接到目標文件,這樣可以節省ROM的使用;字體在橫向(X軸)和縱向(Y軸)都可以自由伸縮。
  (4)在字符串/值輸出函數方面:具有能夠顯示二進制、十進制、十六進制和任何字體的值的函數。
  (5)在窗口管理器WM方面:包括可裁減的完全的窗口支持,改寫超出一個窗口的區域是不可行的;支持回調函數;WM使用極少的內存,例如每個窗口大約20 B。
2 T6963C LCD控制器驅動移植
  作為一個通用的圖形函數軟件庫,μC/GUI能夠適用于各種LCD控制器和LCD,但是,針對具體的目標系統,由于LCD及其控制器的訪問方式不同,以及顯示緩存的訪問方式不同,還是要做具體的移植工作。對于內存映射的LCD控制器,只需要在LCDConf.h文件中設置LCD的訪問函數;對于端口/緩存模式的LCD控制器,必須在LCD_X.C文件中定義訪問LCD的接口函數。μC/GUI的移植主要是設置子文件夾config中的頭文件,其中包括LCD宏(定義LCD顯示屏的屬性)和LCD控制器宏的設置(定義如何訪問LCD控制器)。
  LCD控制器有兩種基本類型的總線接口:完全和簡單的總線接口。大多數小一些的顯示屏(通常最大為240×128或320×240)的LCD控制器使用簡單總線接口與CPU連接。對于簡單總線,只有一個地址位(通常是A0)連接到LCD控制器。這樣的控制器比較慢,硬件設計者可以將其連接到I/O腳而不是地址總線。圖1為帶有簡單總線的LCD控制器的方框圖。

  用于簡單總線接口控制器的宏:
  (1)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;
  (4)LCD_WRITE_A1 在A0(C/D)引腳為高電平時,向LCD控制器寫1B。
  液晶顯示驅動控制器T6963C,是日本東芝公司的產品,目前被廣泛應用于內置控制器型液晶顯示模塊。T6963C的最大特點是具有獨特的硬件初始值設置功能,顯示驅動所需的參數如占空比系數、驅動傳輸的字節數/行及字符的字體選擇等均有引腳電平設置,這樣T6963C的初始化在上電時就已經基本設置完成,軟件操作的主要精力就可全部用于顯示畫面的設計。
  T6963C屬于具有簡單總線接口的LCD驅動控制器。以Philips公司的LPC2104 ARM芯片為CPU控制T6963C為例來說明具體的移植過程。LPC2104的P0.0~P0.7與T6963C的D0~D7相連,P0.8與WR相連,P0.9與RD相連,P0.10與C/D相連。根據T6963C的時序圖(如圖2所示),可以很方便地修改LCD底層驅動函數。

 

  #define wr 1<<8
  #define rd 1<<9
  #define cd 1<<10
  /*讀取T6963狀態字*/
  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;          //讀數據總線上的數
  IOSET=rd;               //把RD引腳置位
  return(temp);
  }
  /*向T6963C寫一個字節(控制指令)*/
  void LCD_WRITE_A1(int Byte)
  {
  IODIR=0x000007ff;             //設置P0.0~P0.10為輸出
  IOSET=cd;               //把C/D引腳置位
  IOCLR=0xff;                            //清除數據總線上數據
  IOCLR=wr;                               //把WR引腳置低電平
  IOSET=Byte;   //把要發送的控制指令放數據總線上
  IOSET=wr;            //把WR引腳置位
  }
  /*向T6963C寫一個字節(數據)*/
  void LCD_WRITE_A0(int Byte)
  {
  IODIR=0x000007ff;                //設置P0.0~P0.10為輸出
  IOCLR=cd;        把C/D引腳置低電平
  IOCLR=0xff;     //清除數據總線上數據
  IOCLR=wr;     //把WR引腳置低電平
  IOSET=Byte;           //把要發送的數據放數據總線上
  IOSET=wr;              //把WR引腳置位
  }
  圖3為T6963C指令寫入的流程圖,對該流程圖的理解是通過CPU向T6963C發送指令的關鍵。當計算機寫指令或一次讀/寫數據時,S0和S1要同時有效,即“準備好”狀態。對T6963C的軟件操作每一次之前都要進行判“忙”,只有在不“忙”的狀態下CPU對T6963C的操作才有效。

 

  /*判定S0和S1的狀態,“忙”即等待*/
  #define LCD_WAIT() while ((LCD_READ_A1()&3)!=3)
  /*寫命令宏*/
  #define LCD_WRITECMD(cmd)     
  { LCD_WAIT(); LCD_WRITECMD0(cmd); }
  /*寫數據宏*/
  #define LCD_WRITEDATA(Data)   
  { LCD_WAIT(); LCD_WRITEDATA0(Data);}
  /*T6963C初始化*/
  void  LCD_T6963_Init(void)
  {
  /*設置文本顯示區首地址*/
  LCD_WRITEDATA(0x00) ;                    //參數1
  LCD_WRITEDATA(0x00) ;         //參數2
  LCD_WRITECMD(0x40) ;              //指令代碼
  /*設置文本顯示區寬度*/
  LCD_WRITEDATA(0x14) ;      //一行顯示所占的字節數
  LCD_WRITEDATA(0x00) ;
  LCD_WRITECMD(0x41) ;
  /*設置圖形顯示區首地址*/
  LCD_WRITEDATA(0x40) ;       //低字節
  LCD_WRITEDATA(0x01) ;                  //高字節
  LCD_WRITECMD(0x42) ;
  /*設置圖形顯示區寬度*/
  LCD_WRITEDATA(0x14) ; //一行顯示所占的字節數
  LCD_WRITEDATA(0x00) ;
  LCD_WRITECMD(0x43) ;
  /*顯示開關設置開文本和圖形顯示*/
  LCD_WRITECMD(0x9c) ;
  /*顯示方式設置邏輯或合成*/
  LCD_WRITECMD(0x80) ;
  /*設置光標顯示形狀*/
  LCD_WRITECMD(0xa1) ;
  }
  在LCDConf.h中,可以根據實際情況更改設置,如:
  #define LCD_XSIZE  (160)
                   // LCD x坐標方向的分辨率
  #define LCD_YSIZE (128)
                   // LCD y坐標方向的分辨率
  #define LCD_CONTROLLER (6963)
                      //LCD控制器型號
  #define LCD_BITSPERPIXEL (1)
                     //LCD每像素的位數
3  在μC/GUI中矢量漢字的顯示
  μC/GUI中字體的顯示是通過查找字模的方式實現的。字體庫中的每一個字母都有其對應的字模。所有的字母的字模由GUI_FONT和GUI_FONT_PROP這2個結構體來進行統一管理。GUI_FONT結構體中定義了該字母的點陣大小(比如16×16或者8×8)和GUI_FONT_PROP結構體的入口地址。GUI_FONT_PROP這個結構體建立了字庫中字母編碼(比如字母A在ASCII中的字母編碼為33)和字模數據存放地址的映像。GUI_FONT_PROP中pNext指針指向下一個GUI_FONT_PROP數據的入口地址,這為解決在字母編碼不連續的情況下,保證字模數據在程序段的存儲連續這一問題提供了一個良好的解決方案。設計人員可以定義多個GUI_FONT_PROP結構,只要使上一個結構體的pNext指針指向下一個GUI_FONT_PROP結構體,并且保證該指針最終指向零地址空間即可。掌握這一原理后,可以方便地制作自己的漢字字庫。
  利用μC/GUI漢字庫生成器可以生成指定字體矢量漢字的字模文件。該文件與μC/GUI字庫文件格式相同,但是該文件包含所有GB2312中的漢字,字號越大文件會變得很大,只需找出自己需要的漢字字模,并按μC/GUI中字體文件的格式得到自己的字體文件,這個過程可以編程實現。圖4是用Proteus仿真的結果。
本文通過對μC/GUI T6963C LCD控制器驅動移植及μC/GUI中實現矢量漢字的介紹,為μC/GUI其他LCD控制器驅動的移植提供了參考,同時也為利用μC/GUI實現更為復雜的圖形用戶界面打下了基礎。

 

 

參考文獻
[1] 王孝平.嵌入式GUI性能評測[D].四川:電子科技大學,2007.
[2] 陳欽梧,張泉,周林峰.μC/GUI在博創ARM300-S上的移植[J].計算機工程與設計,2006,27(19):3697-3700.
[3] 張磊,江海河,儲焰南.基于μC/OS-II的嵌入式GUI研究與應用[J].嵌入式操作系統應用,2008,24(6-2):50-52.
[4] T6963C數據手冊.日本東芝公司.
[5] μC/GUI user manual.Micrium Technologies Corporation.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲网站在线播放| 欧美久久久久| 欧美日韩系列| 国产亚洲a∨片在线观看| 国产麻豆精品视频| aaa亚洲精品一二三区| 亚洲精品中文字幕有码专区| 男人插女人欧美| 国产精品九九久久久久久久| 永久域名在线精品| 欧美日本一道本在线视频| 欧美本精品男人aⅴ天堂| 欧美黄色免费网站| 亚洲一区二区三区乱码aⅴ蜜桃女| 香港久久久电影| 久久人人97超碰精品888| 国产精品久久久亚洲一区| 久久免费视频观看| 欧美成人性生活| 久久精品视频免费观看| 揄拍成人国产精品视频| 亚洲高清在线视频| 国产一区二区精品久久| 欧美日韩大片| 国产精品久久久久久久久久久久久久| 午夜激情综合网| 国产日韩欧美麻豆| 亚洲精品欧美日韩专区| 国产精品久久久久久av下载红粉| 国内揄拍国内精品少妇国语| 欧美激情一二区| 亚洲综合色自拍一区| 欧美日韩八区| 99精品热6080yy久久| 亚洲一级片在线观看| 亚洲国产精品日韩| 亚洲伦理中文字幕| 嫩草影视亚洲| 狂野欧美性猛交xxxx巴西| 欧美日韩国产麻豆| 麻豆精品一区二区综合av| 欧美女同在线视频| 亚洲欧美日本日韩| 国产一区二区三区视频在线观看| 国产精品久久久久久av下载红粉| 国产亚洲在线观看| 欧美日韩mp4| 一本大道久久a久久精二百| 久久国产精品电影| 欧美日韩精品二区| 亚洲黄页一区| 亚洲国产成人在线播放| 亚洲精品网址在线观看| 国产精品一区二区三区成人| 一区二区激情视频| 欧美性大战xxxxx久久久| 亚洲黄一区二区三区| 亚洲另类自拍| 久久色在线播放| 欧美成人精品| 亚洲国产成人porn| 韩国av一区二区三区在线观看| 免费欧美电影| 亚洲精品偷拍| 亚洲动漫精品| 亚洲精品之草原avav久久| 亚洲一区二区三区在线播放| 在线免费观看日韩欧美| 欧美日韩三级视频| 香蕉久久a毛片| 欧美午夜电影在线| 国内精品久久久久久| 伊人成人开心激情综合网| 国产欧美精品在线| 久久久999精品免费| 午夜精品亚洲一区二区三区嫩草| 欧美激情第一页xxx| 欧美黄色精品| 欧美va天堂在线| 国产精品超碰97尤物18| 亚洲精品一区二区三区在线观看| 在线欧美小视频| 在线视频欧美日韩精品| 亚洲精品一区二区三区福利| 久久在线观看视频| 一本色道久久综合亚洲二区三区| 国产亚洲美州欧州综合国| 国产精品欧美日韩一区| 欧美日韩综合视频| 好吊日精品视频| 国产精品福利在线| 亚洲国产aⅴ天堂久久| 激情久久中文字幕| 亚洲激情电影在线| 亚洲免费中文字幕| 亚洲性感美女99在线| 亚洲一区二区三区成人在线视频精品| 亚洲午夜在线观看视频在线| 国产一区二区三区日韩欧美| 国产精品视频yy9099| 亚洲理论电影网| 国产精品免费久久久久久| 欧美日韩一区成人| 国产在线视频欧美| 欧美精品999| 宅男精品视频| 亚洲一级二级| 国产欧美一区二区三区在线看蜜臀| 亚洲成色www久久网站| 亚洲一区二区三区在线观看视频| 欧美私人网站| 麻豆成人在线播放| 欧美日韩成人在线观看| 亚洲一区二区三区免费在线观看| 午夜精品国产精品大乳美女| 欧美日韩不卡在线| 欧美午夜激情小视频| 国产一区二区三区网站| 亚洲精品国精品久久99热| 欧美高清在线| 欧美日韩在线观看一区二区三区| 欧美日韩一区二区三区在线视频| 1024亚洲| 国产精品白丝黑袜喷水久久久| 在线一区免费观看| 亚洲欧美另类在线观看| 欧美一区二区三区久久精品茉莉花| 国产精品亚洲综合一区在线观看| 在线日本欧美| 在线观看视频亚洲| 国产精品久久9| 国产精品久久久久久亚洲毛片| 亚洲欧洲一区二区三区在线观看| 欧美日韩国产片| 一区二区三区视频在线| 国产一区二区精品久久91| 欧美日韩国产成人高清视频| 欧美精品国产| 国产在线高清精品| 国产午夜精品视频免费不卡69堂| 欧美激情成人在线| 日韩视频不卡| 久久综合九色综合网站| 美女精品视频一区| 欧美有码在线视频| 欧美三级乱人伦电影| 国产精品久久久久久一区二区三区| 欧美一区二区三区在线| 亚洲国产美女久久久久| 国产精品久久亚洲7777| 欧美视频在线观看 亚洲欧| 久久国产夜色精品鲁鲁99| 欧美在线日韩在线| 国内久久精品| 国产日本欧美一区二区三区| 精品不卡在线| 亚洲欧美日韩国产综合在线| 国产精品99免视看9| 狼狼综合久久久久综合网| 国产日韩欧美夫妻视频在线观看| 国产一区二区三区久久悠悠色av| 国产精品久久综合| 国产精品一区二区三区久久久| 亚洲第一精品影视| 精品不卡视频| 性做久久久久久免费观看欧美| 欧美日韩视频不卡| 一本一本大道香蕉久在线精品| 久久精品观看| 欧美不卡高清| 久久在线视频在线| 欧美久久久久免费| 国产欧美日韩在线| 欧美一区三区三区高中清蜜桃| 久久久美女艺术照精彩视频福利播放| 国产女同一区二区| 在线精品视频一区二区| 亚洲免费视频在线观看| 久久国产欧美日韩精品| 国产女精品视频网站免费| 久久综合九色综合网站| 久久综合九色综合欧美狠狠| 亚洲开发第一视频在线播放| 合欧美一区二区三区| 亚洲欧洲精品一区| 久久精品视频在线观看| 欧美1级日本1级| 欧美日韩mv| 亚洲精美视频| 香蕉久久夜色| 一区二区三区日韩| 在线观看一区视频| 亚洲精品在线一区二区| 亚洲综合99| 国产精品qvod| 欧美国产亚洲精品久久久8v| 欧美一级久久久| 欧美成人精品在线观看| 国产精品久久久久久久久久久久久久| 久久精品91| 免播放器亚洲一区| 欧美韩日亚洲| 国产精品永久入口久久久| 久久国产精品99国产| 国产美女扒开尿口久久久| 欧美日韩高清免费| 欧美激情第1页| 欧美午夜电影完整版| 国产精品激情偷乱一区二区∴| 毛片av中文字幕一区二区| 欧美亚洲在线观看| 亚洲韩日在线| 国产精品免费一区二区三区在线观看| 亚洲一区二区免费| 亚洲欧美日韩专区| 国产美女精品一区二区三区| 国产精品久久久久久久久| 久久亚洲不卡| 在线观看欧美视频| 亚洲精品小视频在线观看| 欧美精品日日鲁夜夜添| 久久久精品国产免费观看同学| 99精品视频免费在线观看| 欧美日韩国产小视频| 国产精品观看| 免费在线日韩av| 亚洲国产精品悠悠久久琪琪| 好吊妞**欧美| 好看不卡的中文字幕| 欧美三级视频在线观看| 亚洲亚洲精品三区日韩精品在线视频| 亚洲无限乱码一二三四麻| 亚洲欧美国产高清va在线播| 一本色道久久精品| 在线观看国产精品淫| 99视频热这里只有精品免费| 亚洲精品影院| 国产亚洲精品久久久| 免费久久久一本精品久久区| 在线日韩一区二区| 亚洲精品一区二区三区99| 久久青草欧美一区二区三区| 欧美人妖另类| 亚洲国产一区二区三区a毛片| 欧美精品日韩一本| 久久久久五月天| 欧美精品久久久久久久| 欧美国产精品劲爆| 久久婷婷国产综合尤物精品| 一区二区日韩精品| 99热在这里有精品免费| 免费成人av在线| 欧美日韩色婷婷| 国模精品一区二区三区色天香| 久久久久久久激情视频| 国内伊人久久久久久网站视频| 欧美激情在线| 久久婷婷麻豆| 久久国产精品一区二区| 亚洲欧美国产精品专区久久| 欧美三级日本三级少妇99| 国产精品麻豆欧美日韩ww| 欧美精品福利在线| 久久精品噜噜噜成人av农村| 亚洲男人的天堂在线| 欧美日韩国产成人在线| 亚洲视频在线观看免费| 国产精品系列在线| 亚洲女同性videos| 午夜日本精品| 亚洲性视频网址| 亚洲第一网站免费视频| 日韩视频一区二区| 欧美精品一区二区久久婷婷| 日韩香蕉视频| 欧美中文在线免费| 欧美成人资源网| 精品动漫3d一区二区三区| 在线 亚洲欧美在线综合一区| 国产区欧美区日韩区| 欧美高清视频在线播放| 欧美日韩精品三区| 国产精品综合色区在线观看| 久久看片网站| 欧美精品高清视频| 亚洲欧美日本伦理| 宅男噜噜噜66一区二区| 国产亚洲a∨片在线观看| 欧美日韩在线影院| 日韩一区二区精品葵司在线| 在线亚洲精品| 欧美精品一区二区高清在线观看| 久久久久久伊人| 欧美日韩黄视频| 久久伊人精品天天| 欧美日韩精品一区| 免费在线欧美视频| 亚洲大胆人体在线| 国产欧美亚洲一区| 欧美a级理论片| 久久久一本精品99久久精品66| 亚洲色在线视频| 中文国产成人精品| 亚洲高清在线视频| 免费亚洲婷婷| 欧美日韩精品在线观看| 国产女主播一区二区三区| 久久夜色精品| 欧美性感一类影片在线播放| 国产精品黄页免费高清在线观看| 亚洲欧美日韩综合一区| 一本色道久久88综合日韩精品| 欧美国产精品日韩| 欧美久久婷婷综合色| 日韩一区二区高清| 欧美大片网址| 久久久久国产精品麻豆ai换脸| 欧美电影免费观看高清| 久久九九国产精品怡红院| 亚洲国产精品久久人人爱蜜臀| 国产精品久久一级| 欧美日韩国产在线一区| 美女福利精品视频| 国产一区二区精品丝袜| 亚洲在线视频免费观看| 欧美一级大片在线观看| 国产一区二区三区久久久久久久久| 另类天堂视频在线观看|