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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32平臺(tái)的μC/GUI移植與圖形界面設(shè)計(jì)

          STM32平臺(tái)的μC/GUI移植與圖形界面設(shè)計(jì)

          作者: 時(shí)間:2013-07-21 來(lái)源:網(wǎng)絡(luò) 收藏

          2.2.2 LCD驅(qū)動(dòng)程序的編寫
          LCD的驅(qū)動(dòng)程序在GUI/LCDDriver目錄下,在本次移植中編寫的ili9320.c驅(qū)動(dòng)文件主要定義了GUI與LCD的硬件接口函數(shù),包括畫點(diǎn)、線、矩形、多邊形、位圖等二維圖形的函數(shù)等等。;C/GUI所有的系統(tǒng)函數(shù)都是通過(guò)調(diào)用這些硬件接口來(lái)實(shí)現(xiàn)其功能的,而這些接口函數(shù)又可以通過(guò)調(diào)用畫點(diǎn)函數(shù)來(lái)實(shí)現(xiàn),可以認(rèn)為幾乎所有的;C/GUI顯示功能都是通過(guò)最終調(diào)用畫點(diǎn)函數(shù)來(lái)實(shí)現(xiàn)的。所以筆者的LCD驅(qū)動(dòng)程序重點(diǎn)在畫點(diǎn)函數(shù)的編寫。代碼如下:

          h.JPG
          3.2 ;C/GUI實(shí)現(xiàn)的兩種解決方法
          μC/GUI帶有多種常用的ASCII字體,也支持UNICODE字符顯示,考慮到嵌入式系統(tǒng)內(nèi)存資源有限,沒(méi)有裝入漢字庫(kù),可以根據(jù)系統(tǒng)的實(shí)際需要建立一個(gè)小型漢字庫(kù),以解決漢字的顯示問(wèn)題。在μC/GUI下筆者提出兩種實(shí)現(xiàn)的解決方法。
          (1)在μC/GUI的字庫(kù)結(jié)構(gòu)體中建立一種新的字體
          μC/GUI的文字顯示是通過(guò)查找字模的方式實(shí)現(xiàn)的。字庫(kù)中的每個(gè)文字都有其對(duì)應(yīng)的字模,所有的字模都是由GUI FONT和GUI FONT PORT這兩個(gè)結(jié)構(gòu)體來(lái)管理的。從漢字庫(kù)中選取必需的漢字組成字庫(kù),并將漢字對(duì)應(yīng)的不連續(xù)漢字機(jī)內(nèi)碼映射到一個(gè)連續(xù)區(qū)域。此時(shí)需要建立一個(gè)GUI_FONT_PROP結(jié)構(gòu)來(lái)管理所有的漢字。例如,要實(shí)現(xiàn)“設(shè)置”這2個(gè)字,具體的偽代碼如下:
          i.JPG
          (2)直接建立漢字庫(kù),通過(guò)LCD驅(qū)動(dòng)直接顯示漢字
          該方法通過(guò)將漢字的機(jī)內(nèi)碼和漢字點(diǎn)陣組合成一個(gè)漢字字模結(jié)構(gòu)體,然后選取所必需的漢字,按照漢字字模結(jié)構(gòu)體的方式存放在漢字庫(kù)數(shù)組中,然后通過(guò)調(diào)用一個(gè)“漢字搜索函數(shù)”來(lái)搜索這個(gè)漢字庫(kù)數(shù)組的機(jī)內(nèi)碼即可確定相應(yīng)的漢字,并把漢字對(duì)應(yīng)的點(diǎn)陣通過(guò)LCD驅(qū)動(dòng)直接
          進(jìn)行顯示。
          j.JPG
          上述的兩種方法都能在嵌入式的中實(shí)現(xiàn)中文顯示,方法二為通過(guò)LCD驅(qū)動(dòng)直接顯示漢字,適合在窗體中顯示漢字,而不能在控件上直接顯示漢字。雖然可以用疊加的方法(即先畫一個(gè)控件,然后再在上面顯示漢字),但是這樣處理很不方便。方法一是在μC/GUI的字庫(kù)中建立了一種新的字體,因此在控件上顯示漢字時(shí)直接調(diào)用μC/GUI函數(shù)即可,不會(huì)出現(xiàn)上述問(wèn)題,因此筆者推薦使用方法一實(shí)現(xiàn)μC/GUI的。
          3.3 采用解決圖形顯示的閃爍問(wèn)題
          采用可以有效地防止顯示屏在對(duì)有對(duì)象重疊的繪圖操作時(shí)的閃爍現(xiàn)象。沒(méi)有使用時(shí),繪圖操作直接寫屏,屏幕在繪圖操作執(zhí)行時(shí)更新,當(dāng)不同的更新在執(zhí)行時(shí)會(huì)產(chǎn)生閃爍。如果這樣的操作使用一個(gè)存儲(chǔ)設(shè)備的話,那么所有的操作在存儲(chǔ)設(shè)備內(nèi)執(zhí)行,具有無(wú)閃爍的優(yōu)點(diǎn)。μC/GUI的存儲(chǔ)設(shè)備是一個(gè)可選的軟件項(xiàng)目,為了優(yōu)化軟件的性能,提高圖形的顯示效果,需要采用存儲(chǔ)設(shè)備技術(shù)。μC/GUI中存儲(chǔ)設(shè)備的使用一般流程為建立存儲(chǔ)設(shè)備、激活、執(zhí)行繪圖操作將結(jié)果拷貝到顯示屏顯示,最后將創(chuàng)建的存儲(chǔ)設(shè)備刪除。

          4 結(jié)論
          為了驗(yàn)證移植丁作成功與否,需要建立一個(gè)多任務(wù)測(cè)試用例,這個(gè)用例由3個(gè)任務(wù)構(gòu)成:Main Task、GUITask、APP_Task。其中:Main_ Task任務(wù)用于設(shè)置背景窗口的回調(diào)函數(shù)和建立另外兩個(gè)任務(wù);APP_Task任務(wù)用于建立一個(gè)窗口并設(shè)置其相關(guān)的屬性;GUI_Task任務(wù)用于視窗管理和多級(jí)圖形畫面的切換。將測(cè)試用例燒寫進(jìn)目標(biāo)板,目標(biāo)板采用神舟III號(hào)STM32開(kāi)發(fā)板,液晶屏為320×240像素的TFT型液晶屏幕。圖2為測(cè)試用例在目標(biāo)板上的運(yùn)行結(jié)果。

          本文引用地址:http://www.ex-cimer.com/article/147999.htm

          k.JPG


          結(jié)果表明,能顯示中文小型字庫(kù),對(duì)有對(duì)象重疊的繪圖操作時(shí)無(wú)閃爍現(xiàn)象,基本達(dá)到預(yù)期的目標(biāo)。

          萬(wàn)能遙控器相關(guān)文章:萬(wàn)能遙控器代碼



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

          評(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); })();