<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 光電顯示 > 設計應用 > 一種用于嵌入式系統的液晶顯示單元設計

一種用于嵌入式系統的液晶顯示單元設計

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

狀態(tài)0: 準備接收一幀數據
狀態(tài)1: 正在接收一幀數據,且上一次接收到的字節不是轉義字符
狀態(tài)2: 正在接收一幀數據,且上一次接收到的字節是轉義字符
接收一個(gè)字節后,根據當前狀態(tài)和接收到的字符a,進(jìn)行狀態(tài)轉換,并舍棄轉義字符等多余字節,將有效數據放入接收緩沖數組。當接收到有效的結束符END后,單片機將置緩沖滿(mǎn)標志。單片機讀到該標志,即可分析緩沖區中的數據,執行相應顯示操作,并在操作后,清除緩沖滿(mǎn)標志并向的主CPU發(fā)出可以接收數據的應答字符(0x55)。

本文引用地址:http://dyxdggzs.com/article/169529.htm

3.圖形用戶(hù)界面()程序
前述已能滿(mǎn)足簡(jiǎn)單的顯示要求。在此基礎上本文使用C語(yǔ)言編寫(xiě)了通用的程序,出類(lèi)VB的包含窗體和簡(jiǎn)單控件的界面,實(shí)現簡(jiǎn)單的可視化的操作:如按鈕按壓、文本輸入、標簽顯示、選擇框選擇、軟件菜單、窗體加載、位圖顯示、控件的Tab聚焦等。程序采用分層和模塊化的思想,其分層結構如圖3所示。這樣,可以減少程序間的耦合,便于程序的完善和升級。

3.1 邏輯設備層基本繪圖函數(LD.C)
最底層的硬件設備層的繪圖函數(HD.C)是顯示命令幀的發(fā)送,采用液晶屏的絕對坐標(屏左上角為坐標零點(diǎn))繪圖,邏輯設備層的函數則是基于用戶(hù)定義的當前“窗口”相對坐標(窗口左上角為坐標零點(diǎn))繪圖,窗口的位置任意。這里說(shuō)的“窗口”就是當前顯示的可操作范圍,也稱(chēng)為“窗口上下文”。
繪圖工具函數是一些內聯(lián)函數和宏定義,創(chuàng )建當前的窗口上下文,完成絕對坐標與相對坐標相互轉換,進(jìn)行繪圖元素的移動(dòng)、復制,設置字間距、行間距等?;诖翱诓脺p的繪圖函數調用各種繪圖工具函數和硬件設備層的繪圖函數,實(shí)現了點(diǎn)、線(xiàn)、漢字、字符、平面和3D矩形框的繪制,位圖加載等,并將超出窗口范圍的部分裁減掉(忽略不畫(huà))。
3.2 窗體/控件的設計
窗體(Form)和控件全部由結構體來(lái)定義。簡(jiǎn)單控件的共性是均為矩形框(平面的或3D的),所以都可以由公共結構體Gwidget加上各自的個(gè)性化屬性和行為方式派生得到??丶傩裕ɑ驙顟B(tài))包括:按下/彈起(對Button控件)、聚焦/失去焦點(diǎn)、允許/禁止接受用戶(hù)輸入(區分Label和Text)等?;贕Widget可以派生Button、Label、Text、SelBox、menu等控件。Gwidget結構體成員包括“窗口”信息、控件ID(唯一標識一個(gè)控件)、控件屬性/狀態(tài)、控件邊界寬度(實(shí)現3D顯示)、默認的控件消息響應函數指針(如ButtonOnMsg)。
窗體(Form)既是一個(gè)獨立的實(shí)體,又是控件的容器,管理屬于它的所有控件并傳遞和響應消息。其結構體成員主要有:窗口上下文、消息響應函數指針、標題字符串指針、所含的控件數組指針、所含控件數、當前聚焦的控件ID等。
3.3 消息響應機制
針對具體的應用要求,可以設計出各種各樣的窗體(界面),每一個(gè)窗體包含多個(gè)控件。有的控件可以接受用戶(hù)字符串和數字輸入(Text控件)。這些窗體通過(guò)軟件菜單組織起來(lái)。菜單為多叉樹(shù)結構,最下一級菜單指向一個(gè)窗體或執行某個(gè)功能。同一級菜單包含并管理一個(gè)或多個(gè)菜單項。菜單結構體成員主要有:包含各菜單項的數組指針、菜單項個(gè)數、指向上級菜單的指針(可以為空)等,而菜單項結構體則包含指向下一級菜單的指針(可以為空)、指向一個(gè)窗體的指針(可以為空)、消息響應函數指針等。主程序和GUI之間的消息傳遞(或函數調用)機制如圖4所示,虛線(xiàn)空心箭頭指示消息的傳遞方向。

4.結束語(yǔ)
本文設計的具有接口,不僅在接入方面提供了方便,也為在設計時(shí),使用PC機并行地進(jìn)行顯示軟件設計提供了途徑。用C語(yǔ)言編寫(xiě)的GUI程序可以方便地移植到各種基于操作系統的應用中,占用空間小,使用簡(jiǎn)單,通用性好,能滿(mǎn)足一些較復雜界面顯示的要求,其已經(jīng)在筆者開(kāi)發(fā)的多個(gè)嵌入式系統中得到應用。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

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

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>