- 相關(guān)推薦
圖形LCD模塊的菜單方式人機(jī)交互界面
摘要:在以單片機(jī)為核心的嵌入式應(yīng)用中,友好的人機(jī)互界面起著十分重要的作用。筆者在設(shè)計(jì)中使用WGM-12864B圖形LCD模塊實(shí)現(xiàn)一種中文窗口菜單界面,設(shè)計(jì)中使用的方法具有普遍性意義。隨著液晶顯示技術(shù)的進(jìn)步,高質(zhì)量的液晶顯示模塊會(huì)被日趨廣泛地應(yīng)用于各種嵌入式系統(tǒng)中。在系統(tǒng)整體設(shè)計(jì)中,人機(jī)交互界面的設(shè)計(jì)往往占據(jù)著很大一部分工作,現(xiàn)以某嵌入式系統(tǒng)的人機(jī)交互部分為例,介紹一種使用WGA-12864B圖形LCD模塊實(shí)現(xiàn)中文窗口菜單界面的方法。
1 圖形LCD模塊WGM-12864簡介
WGM-12864B模塊是單色圖形點(diǎn)陣液晶顯示模塊,點(diǎn)陣數(shù)為64×128,其點(diǎn)陣存儲(chǔ)區(qū)如圖1所示。
模塊點(diǎn)陣分為左右兩邊,左右兩邊的結(jié)構(gòu)是完全一樣的。對(duì)模塊的點(diǎn)陣存儲(chǔ)區(qū)進(jìn)行讀寫操作時(shí),由CS1、CS2進(jìn)行片選,高電平有效。模塊中每8行為1頁,頁地址由X確定;Y確定點(diǎn)陣的列號(hào),點(diǎn)陣數(shù)據(jù)的每一個(gè)字節(jié)所在的位置由(CSi,X,Y)唯一確定。字節(jié)中的每一位對(duì)應(yīng)著相應(yīng)的像素,為1顯示該像素;為0則不顯示。液晶顯示模塊工作時(shí),逐行掃描點(diǎn)陣存儲(chǔ)區(qū)。首先被掃描的行顯示在LCD屏幕的第1行上,其余行則依次順序顯示!皰呙杵鹗夹小笨梢酝ㄟ^Z地址寄存器來設(shè)置。Z可以是0~63的任意一行,如Z=56時(shí),則顯示在LCD屏幕上的次序從上到下分別為:
56,57,…,62,63,0,1,2,…,54,55
該模塊的這一功能為窗口的滾屏提供了便利。
2 人機(jī)界面的硬件接口設(shè)計(jì)
系統(tǒng)擴(kuò)展了1片8255A作為人機(jī)界面的接口,硬件接口電路如圖2所示。8255A的A口連接圖形LCD的8位數(shù)據(jù)線,B口低6位連接相應(yīng)的控制線,D/I表示數(shù)據(jù)總線上的信號(hào)是點(diǎn)陣數(shù)據(jù)還是控制命令字,R/W表示當(dāng)前操作是讀或?qū)懖僮,E是使能控制端,RST是復(fù)位端,CS1、CS2是左右點(diǎn)陣區(qū)選端。以行掃描方式擴(kuò)展鍵盤接口,C口高半字節(jié)接行線,低半字節(jié)接列線。8255A初始化時(shí),定義A、B口為方式0輸出;C口高半字節(jié)為方式0輸出,低半字節(jié)為方式0輸入。請(qǐng)注意,大多數(shù)類型的8255芯片在對(duì)其方式控制寄存器進(jìn)行初始化時(shí),會(huì)引起A、B、C口清零,故不要在程序中動(dòng)態(tài)改變8255端口的輸入輸出方式,以免影響LCD和鍵盤。
3 用戶界面的軟件設(shè)計(jì)
人機(jī)交互界面設(shè)計(jì)的目標(biāo)是實(shí)現(xiàn)中文窗口界面,用戶可以在菜單方式下進(jìn)行交互。窗口分為兩類:對(duì)話框和菜單,也包括對(duì)話框和菜單的混合。對(duì)話框用于參數(shù)的輸入輸出顯示;菜單用于響應(yīng)用戶的選擇,根據(jù)用戶的選擇運(yùn)行程序。
首先,應(yīng)當(dāng)確定系統(tǒng)需要多少個(gè)窗口,每個(gè)窗口有多少個(gè)菜單,畫出窗口之間的變遷圖,可以知道所有的窗口應(yīng)當(dāng)組成一個(gè)樹形結(jié)構(gòu)。菜單中的漢字大小為16×16的點(diǎn)陣,數(shù)字和符號(hào)的大小為16×8的點(diǎn)陣。這些點(diǎn)陣數(shù)據(jù)可以由點(diǎn)陣提取程序獲得。點(diǎn)陣數(shù)為64×128的LCD模塊只能同時(shí)顯示4個(gè)菜單項(xiàng),每個(gè)菜單項(xiàng)點(diǎn)據(jù)256個(gè)字節(jié)的點(diǎn)陣存儲(chǔ)空間。窗口多于4個(gè)菜單項(xiàng)時(shí),應(yīng)當(dāng)使用滾屏功能。為方便數(shù)據(jù)的安排,系統(tǒng)規(guī)定了參數(shù)、菜單、窗口及LCD緩沖區(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ù)。正負(fù)標(biāo)志,為1表示負(fù)數(shù),為0表示正數(shù),負(fù)數(shù)在輸入都要在數(shù)據(jù)前面加上負(fù)號(hào)“-”。數(shù)據(jù)區(qū)的每一字節(jié)對(duì)應(yīng)于參數(shù)的每一位數(shù)。數(shù)字用分離BCD碼表示,小數(shù)點(diǎn)用ASCII碼表示。“數(shù)據(jù)長度”域占1個(gè)字節(jié)時(shí),此數(shù)據(jù)結(jié)構(gòu)可以表示最多255位的數(shù)據(jù)。
菜單點(diǎn)陣的數(shù)據(jù)結(jié)構(gòu)如圖4所示。菜單序號(hào)表示該菜單在該窗口所有菜單中的次序;菜單長度表示該菜單項(xiàng)中漢字的個(gè)數(shù),菜單點(diǎn)陣數(shù)據(jù)區(qū)存放的是菜單中漢字的點(diǎn)陣,每一個(gè)漢字都是16×16的點(diǎn)陣;參數(shù)標(biāo)志為0表示沒有參數(shù),為1表示此菜單項(xiàng)是對(duì)話框,后面跟著參數(shù)。參數(shù)存放在參數(shù)指針域指向的內(nèi)存中,若是系統(tǒng)參數(shù),則要預(yù)先從E2PROM讀到內(nèi)存中。由于系統(tǒng)是16位尋址的存儲(chǔ)空間,所以用2個(gè)字節(jié)存放指針。參數(shù)存放格式如圖3所示。
【圖形LCD模塊的菜單方式人機(jī)交互界面】相關(guān)文章:
STN-LCD彩屏模塊03-21
Linux下的GTK圖形界面編程12-04
淺談圖形用戶界面的文化傳播影響03-01
DOS界面下通用圖形編輯軟件的設(shè)計(jì)03-06
變壓器智能保護(hù)系統(tǒng)人機(jī)交互模塊的軟硬件設(shè)計(jì)11-25
Windows 95的引導(dǎo)圖形界面及抖動(dòng)變色圖像的形成03-03
在Linux下驅(qū)動(dòng)STN彩色LCD03-18
中餐菜單的英譯翻譯策略03-01