圖形LCD模塊的菜單方式人機交互界面

發(fā)布時間:2024-07-18
隨著液晶顯示技術(shù)的進步,高質(zhì)量的液晶顯示模塊會被日趨廣泛地應(yīng)用于各種嵌入式系統(tǒng)中。在系統(tǒng)整體設(shè)計中,人機交互界面的設(shè)計往往占據(jù)著很大一部分工作,現(xiàn)以某嵌入式系統(tǒng)的人機交互部分為例,介紹一種使用wga-12864b圖形lcd模塊實現(xiàn)中文窗口菜單界面的方法。
1、圖形lcd模塊wgm-12864簡介
wgm-12864b模塊是單色圖形點陣液晶顯示模塊,點陣數(shù)為64×128,其點陣存儲區(qū)如圖1所示。
模塊點陣分為左右兩邊,左右兩邊的結(jié)構(gòu)是完全一樣的。對模塊的點陣存儲區(qū)進行讀寫操作時,由cs1、cs2進行片選,高電平有效。模塊中每8行為1頁,頁地址由x確定;y確定點陣的列號,點陣數(shù)據(jù)的每一個字節(jié)所在的位置由(csi,x,y)唯一確定。字節(jié)中的每一位對應(yīng)著相應(yīng)的像素,為1顯示該像素;為0則不顯示。液晶顯示模塊工作時,逐行掃描點陣存儲區(qū)。首先被掃描的行顯示在lcd屏幕的第1行上,其余行則依次順序顯示。“掃描起始行”可以通過z地址寄存器來設(shè)置。z可以是0~63的任意一行,如z=56時,則顯示在lcd屏幕上的次序從上到下分別為:56,57,…,62,63,0,1,2,…,54,55
該模塊的這一功能為窗口的滾屏提供了便利。
2、人機界面的硬件接口設(shè)計
系統(tǒng)擴展了1片8255a作為人機界面的接口,硬件接口電路如圖2所示。8255a的a口連接圖形lcd的8位數(shù)據(jù)線,b口低6位連接相應(yīng)的控制線,d/i表示數(shù)據(jù)總線上的信號是點陣數(shù)據(jù)還是控制命令字,r/w表示當(dāng)前操作是讀或?qū)懖僮?,e是使能控制端,rst是復(fù)位端,cs1、cs2是左右點陣區(qū)選端。以行掃描方式擴展鍵盤接口,c口高半字節(jié)接行線,低半字節(jié)接列線。8255a初始化時,定義a、b口為方式0輸出;c口高半字節(jié)為方式0輸出,低半字節(jié)為方式0輸入。請注意,大多數(shù)類型的8255芯片在對其方式控制寄存器進行初始化時,會引起a、b、c口清零,故不要在程序中動態(tài)改變8255端口的輸入輸出方式,以免影響lcd和鍵盤。
3、用戶界面的軟件設(shè)計
人機交互界面設(shè)計的目標(biāo)是實現(xiàn)中文窗口界面,用戶可以在菜單方式下進行交互。窗口分為兩類:對話框和菜單,也包括對話框和菜單的混合。對話框用于參數(shù)的輸入輸出顯示;菜單用于響應(yīng)用戶的選擇,根據(jù)用戶的選擇運行程序。
首先,應(yīng)當(dāng)確定系統(tǒng)需要多少個窗口,每個窗口有多少個菜單,畫出窗口之間的變遷圖,可以知道所有的窗口應(yīng)當(dāng)組成一個樹形結(jié)構(gòu)。菜單中的漢字大小為16×16的點陣,數(shù)字和符號的大小為16×8的點陣。這些點陣數(shù)據(jù)可以由點陣提取程序獲得。點陣數(shù)為64×128的lcd模塊只能同時顯示4個菜單項,每個菜單項點據(jù)256個字節(jié)的點陣存儲空間。窗口多于4個菜單項時,應(yīng)當(dāng)使用滾屏功能。為方便數(shù)據(jù)的安排,系統(tǒng)規(guī)定了參數(shù)、菜單、窗口及l(fā)cd緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)。
(1)數(shù)據(jù)結(jié)構(gòu)
為方便參數(shù)的顯示和處理,參數(shù)的輸入輸出格式用類似于分離bcd碼來表示,數(shù)據(jù)結(jié)構(gòu)如圖3所示。數(shù)據(jù)長度表示數(shù)據(jù)區(qū)的字節(jié)數(shù)。正負標(biāo)志,為1表示負數(shù),為0表示正數(shù),負數(shù)在輸入都要在數(shù)據(jù)前面加上負號“-”。數(shù)據(jù)區(qū)的每一字節(jié)對應(yīng)于參數(shù)的每一位數(shù)。數(shù)字用分離bcd碼表示,小數(shù)點用ascii碼表示。“數(shù)據(jù)長度”域占1個字節(jié)時,此數(shù)據(jù)結(jié)構(gòu)可以表示最多255位的數(shù)據(jù)。
菜單點陣的數(shù)據(jù)結(jié)構(gòu)如圖4所示。菜單序號表示該菜單在該窗口所有菜單中的次序;菜單長度表示該菜單項中漢字的個數(shù),菜單點陣數(shù)據(jù)區(qū)存放的是菜單中漢字的點陣,每一個漢字都是16×16的點陣;參數(shù)標(biāo)志為0表示沒有參數(shù),為1表示此菜單項是對話框,后面跟著參數(shù)。參數(shù)存放在參數(shù)指針域指向的內(nèi)存中,若是系統(tǒng)參數(shù),則要預(yù)先從e2prom讀到內(nèi)存中。由于系統(tǒng)是16位尋址的存儲空間,所以用2個字節(jié)存放指針。參數(shù)存放格式如圖3所示。
窗口點陣的數(shù)據(jù)結(jié)構(gòu)如圖5所示,其中用到了菜單數(shù)據(jù)結(jié)構(gòu),窗口中使用到的菜單項依著菜單序號順次存放,各域的含義是顯而易見的。注意,窗口的點陣數(shù)據(jù)是事先按照此格式建立的,系統(tǒng)中所有窗口以此格式存放非易失存儲介質(zhì)中,如rom。以此格式,系統(tǒng)可以有255個窗口,每一個窗口可以多達255個菜單項。
系統(tǒng)在內(nèi)存中特定區(qū)域開壁了1個lcd顯示緩沖區(qū),將要顯示的整個窗口的點陣數(shù)據(jù)按下列格式拼裝好以后存放在此區(qū)間。lcd的顯示程序從此區(qū)間中讀取數(shù)據(jù)到lcd點陣數(shù)據(jù)存儲區(qū),lcd顯示程序正是憑借此數(shù)據(jù)結(jié)構(gòu)管理用戶交互界面。每個菜單項除了漢字和參數(shù)的點陣外,其余的空間用00h補齊為256字節(jié)。對話框中顯示的參數(shù),可以依據(jù)菜單數(shù)據(jù)結(jié)構(gòu)中的參數(shù)指針域檢索到數(shù)據(jù),然后把它譯碼成為可以顯示的16×8的點陣數(shù)據(jù)。lcd緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)如圖6所示。當(dāng)前菜單域指的是當(dāng)有獲得焦點的菜單序號,需要反顯,主要用于光標(biāo)管理。顯示中的菜單項序號分別對應(yīng)著當(dāng)前l(fā)cd點陣存儲區(qū)中的4個菜單項,這些數(shù)據(jù)主要用于滾屏操作。其余各域和上述類似。
(2)人機交互設(shè)計
人機交互設(shè)計的重點在于窗口界面的顯示、滾屏、光標(biāo)的管理及參數(shù)的顯示、修改和保存。現(xiàn)在只介紹窗口的滾虐和參數(shù)的輸入輸出顯示。僅當(dāng)窗口的菜單數(shù)大于4的時候,才用到滾屏操作。為提高系統(tǒng)響應(yīng)的速度,窗口在滾屏?xí)r只將新的菜單點陣數(shù)據(jù)讀入lcd點陣存儲,其余3個菜單的點陣數(shù)據(jù)保持不變。圖7所示的窗口滾屏過程中l(wèi)cd點陣存儲區(qū)的快照以及l(fā)cd屏上顯示的菜單次序,從a到e的滾屏每一步都是可逆的。
可以發(fā)現(xiàn),每一步相鄰的操作,只要將1個即將顯示的菜單項點陣數(shù)據(jù)寫入lcd點陣存儲區(qū),圖中加黑框的菜單項就是新寫入的。當(dāng)向下滾屏?xí)r,從lcd顯示緩沖區(qū)中“顯示中的菜單項”域檢索出菜單序號最小的項,把新的菜單序號插入此位置,從顯示緩沖區(qū)的“菜單點陣數(shù)據(jù)”域把菜單的點陣數(shù)據(jù)讀到lcd點陣存儲區(qū)中相應(yīng)位置。然后再檢索更新后的“顯示中的菜單項”域,找出最小菜單項所在的行號,設(shè)置掃描起始行z為此行號,圖中箭頭指向的位置即為掃描起始行。最后要更新的域是“當(dāng)前菜單項”,用于光標(biāo)顯示管理。當(dāng)向上滾屏?xí)r,操作是類似的,不同的是要替換出“顯示中的菜單項”域中序號最大的菜單項。
參數(shù)的輸入輸出顯示是人機交互界面中的重要環(huán)節(jié)。顯示的參數(shù)來自鍵盤輸入或系統(tǒng)內(nèi)部,數(shù)據(jù)的流向如圖8所示。參數(shù)依據(jù)圖3對應(yīng)的數(shù)據(jù)格式存放到參數(shù)指地所指的內(nèi)存中,然后啟動窗口更新即可。若該參數(shù)需要保存,則存入對應(yīng)的e2prom地址中。本系統(tǒng)使用x5045作為e2prom,同時兼作看門狗。
4、結(jié)論
本文主要從數(shù)據(jù)結(jié)構(gòu)的角度出發(fā),結(jié)合器件的特片,提出了圖形lcd在嵌入式應(yīng)用中解決人機交互問題的一般方法,實現(xiàn)了中文窗口菜單,解決了參數(shù)的輸入、顯示、修改和保存。文中的方法具有非常好的靈活性和良好的可維護性,程序員可以在需要的時候方便地修改原有窗口或者加入新的窗口,而不至于影響系統(tǒng)軟件原有的結(jié)構(gòu)。這些便利都得益于系統(tǒng)定義了合理的數(shù)據(jù)結(jié)構(gòu)。
上一個:板藍根
下一個:醫(yī)療污水處理設(shè)備運行時注意的事項

德國力士樂REXROTH柱塞泵的結(jié)構(gòu)形式
制造業(yè)進駐大市場
食品倉庫如何防潮
荷蘭hanwel刀閘閥
實驗室超純水機的主要用途分析
兩家投標(biāo)人代表是同村人,屬于串標(biāo)嗎?
win10電腦一直自動重啟的解決方法介紹圖(win10電腦一直自動重啟是什么原因,怎么解決)
淺析高低溫交變濕熱試驗機出現(xiàn)故障的解決方法
恒溫恒濕箱的送風(fēng)系統(tǒng)
土壤重金屬檢測箱-保障農(nóng)產(chǎn)品安全可持續(xù)發(fā)展
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos