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

3.2 μC/GUI實(shí)現中文小型字庫的兩種解決方法
μC/GUI帶有多種常用的ASCII字體,也支持UNICODE字符顯示,考慮到嵌入式系統內存資源有限,沒(méi)有裝入漢字庫,可以根據系統的實(shí)際需要建立一個(gè)小型漢字庫,以解決漢字的顯示問(wèn)題。在μC/GUI下筆者提出兩種實(shí)現中文小型字庫的解決方法。
(1)在μC/GUI的字庫結構體中建立一種新的字體
μC/GUI的文字顯示是通過(guò)查找字模的方式實(shí)現的。字庫中的每個(gè)文字都有其對應的字模,所有的字模都是由GUI FONT和GUI FONT PORT這兩個(gè)結構體來(lái)管理的。從漢字庫中選取必需的漢字組成字庫,并將漢字對應的不連續漢字機內碼映射到一個(gè)連續區域。此時(shí)需要建立一個(gè)GUI_FONT_PROP結構來(lái)管理所有的漢字。例如,要實(shí)現“設置”這2個(gè)字,具體的偽代碼如下:

(2)直接建立漢字庫,通過(guò)LCD驅動(dòng)直接顯示漢字
該方法通過(guò)將漢字的機內碼和漢字點(diǎn)陣組合成一個(gè)漢字字模結構體,然后選取所必需的漢字,按照漢字字模結構體的方式存放在漢字庫數組中,然后通過(guò)調用一個(gè)“漢字搜索函數”來(lái)搜索這個(gè)漢字庫數組的機內碼即可確定相應的漢字,并把漢字對應的點(diǎn)陣通過(guò)LCD驅動(dòng)直接
進(jìn)行顯示。

上述的兩種方法都能在嵌入式的圖形界面中實(shí)現中文顯示,方法二為通過(guò)LCD驅動(dòng)直接顯示漢字,適合在窗體中顯示漢字,而不能在控件上直接顯示漢字。雖然可以用疊加的方法(即先畫(huà)一個(gè)控件,然后再在上面顯示漢字),但是這樣處理很不方便。方法一是在μC/GUI的字庫中建立了一種新的字體,因此在控件上顯示漢字時(shí)直接調用μC/GUI函數即可,不會(huì )出現上述問(wèn)題,因此筆者推薦使用方法一實(shí)現μC/GUI的中文小型字庫。
3.3 采用存儲設備解決圖形顯示的閃爍問(wèn)題
采用存儲設備可以有效地防止顯示屏在對有對象重疊的繪圖操作時(shí)的閃爍現象。沒(méi)有使用存儲設備時(shí),繪圖操作直接寫(xiě)屏,屏幕在繪圖操作執行時(shí)更新,當不同的更新在執行時(shí)會(huì )產(chǎn)生閃爍。如果這樣的操作使用一個(gè)存儲設備的話(huà),那么所有的操作在存儲設備內執行,具有無(wú)閃爍的優(yōu)點(diǎn)。μC/GUI的存儲設備是一個(gè)可選的軟件項目,為了優(yōu)化軟件的性能,提高圖形的顯示效果,需要采用存儲設備技術(shù)。μC/GUI中存儲設備的使用一般流程為建立存儲設備、激活、執行繪圖操作將結果拷貝到顯示屏顯示,最后將創(chuàng )建的存儲設備刪除。
4 結論
為了驗證移植丁作成功與否,需要建立一個(gè)多任務(wù)測試用例,這個(gè)用例由3個(gè)任務(wù)構成:Main Task、GUITask、APP_Task。其中:Main_ Task任務(wù)用于設置背景窗口的回調函數和建立另外兩個(gè)任務(wù);APP_Task任務(wù)用于建立一個(gè)窗口并設置其相關(guān)的屬性;GUI_Task任務(wù)用于視窗管理和多級圖形畫(huà)面的切換。將測試用例燒寫(xiě)進(jìn)目標板,目標板采用神舟III號STM32開(kāi)發(fā)板,液晶屏為320×240像素的TFT型液晶屏幕。圖2為測試用例在目標板上的運行結果。本文引用地址:http://dyxdggzs.com/article/147999.htm
結果表明,能顯示中文小型字庫,對有對象重疊的繪圖操作時(shí)無(wú)閃爍現象,基本達到預期的目標。
萬(wàn)能遙控器相關(guān)文章:萬(wàn)能遙控器代碼
評論