• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > STM32平臺的μC/GUI移植與圖形界面設計

    STM32平臺的μC/GUI移植與圖形界面設計

    作者: 時間:2013-07-21 來源:網絡 收藏

    2.2.2 LCD驅動程序的編寫
    LCD的驅動程序在GUI/LCDDriver目錄下,在本次移植中編寫的ili9320.c驅動文件主要定義了GUI與LCD的硬件接口函數,包括畫點、線、矩形、多邊形、位圖等二維圖形的函數等等。;C/GUI所有的系統函數都是通過調用這些硬件接口來實現其功能的,而這些接口函數又可以通過調用畫點函數來實現,可以認為幾乎所有的;C/GUI顯示功能都是通過最終調用畫點函數來實現的。所以筆者的LCD驅動程序重點在畫點函數的編寫。代碼如下:

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

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

    本文引用地址:http://www.czjhyjcfj.com/article/147999.htm

    k.JPG


    結果表明,能顯示中文小型字庫,對有對象重疊的繪圖操作時無閃爍現象,基本達到預期的目標。

    萬能遙控器相關文章:萬能遙控器代碼



    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 岱山县| 敦化市| 连南| 贵阳市| 荥阳市| 横峰县| 奇台县| 临漳县| 张家口市| 赣榆县| 安吉县| 磐安县| 隆回县| 龙江县| 六盘水市| 英德市| 南陵县| 越西县| 神农架林区| 马尔康县| 盐城市| 东乡县| 仪征市| 高唐县| 灌南县| 随州市| 通化县| 洪洞县| 山阴县| 东至县| 牡丹江市| 阿克| 沐川县| 宿州市| 榆林市| 伊川县| 房山区| 睢宁县| 佛山市| 双桥区| 佛山市|