智能儀器中一種菜單式人機界面的軟硬件設(shè)計
摘 要: 由點陣式液晶顯示器和旋轉(zhuǎn)式光電編碼開關(guān)構(gòu)成的智能儀器的人機交互界面,使儀器的操作向菜單式、傻瓜型邁進。在闡述光電編碼開關(guān)基本原理和使用方法的基礎(chǔ)上,介紹了I2C 接口芯片電路形成的硬件輸入結(jié)構(gòu),該結(jié)構(gòu)體現(xiàn)了簡潔的風格。在軟件方面,則以當前的液晶屏顯示窗口作為界面狀態(tài),以狀態(tài)跟蹤為主線形成基于界面狀態(tài)的模塊式程序結(jié)構(gòu),這種程序結(jié)構(gòu)的作業(yè)鏈清晰,便于調(diào)試,而且適合于儀器改進和升級時功能軟件的增加或變換。在由上位機與之組成自動測試系統(tǒng)時,操作命令下傳后的任務執(zhí)行程序也是及其簡單的。
帶有微處理器的儀器的操作曾經(jīng)是通過儀器面板上眾多的功能鍵和數(shù)字鍵來實現(xiàn)人機交互的,程序用查詢的方法掃描鍵盤或響應鍵盤中斷的方法讀回鍵值,然后散轉(zhuǎn)各分支程序去執(zhí)行相應的功能子程序,完成相應的作業(yè)。使用者往往不得不借助厚厚的使用說明書來熟悉、來指南儀器面板上各種按鍵的定義和操作的方法。隨著微電子技術(shù)的發(fā)展及大屏幕點陣式液晶顯示器的出現(xiàn),使得智能化儀器的操作也向菜單式、傻瓜型邁進。通過液晶屏上的菜單選項,用面板上三四個按鍵或旋轉(zhuǎn)式光電編碼開關(guān),就能完成儀器操作所必需的參數(shù)設(shè)置、命令執(zhí)行等必要的人機交互。該類儀器的程序結(jié)構(gòu)也適應了其菜單式"傻瓜"界面的特點,用后臺大量的編程工作換取了前臺儀器操作的極其簡單和方便。本文從軟硬件設(shè)計的角度,討論智能儀器中菜單式交互界面形成的原理和實現(xiàn)的方法。
1 交互界面的輸入結(jié)構(gòu)
在菜單式界面的智能儀器中,人機交互的指令輸入部件可用按鍵或旋轉(zhuǎn)式光電編碼開關(guān)。按鍵由增鍵、減鍵和確認鍵構(gòu)成(圖1) .使用這3 種操作可以用來在液晶顯示屏上移動光標、數(shù)據(jù)輸入和操作選定等。增鍵和減鍵用于選擇菜單中選項時的光標移動,以及在設(shè)定數(shù)值時對數(shù)值大小的增減;確認鍵用于對選中的選項和設(shè)定的數(shù)值大小的確定。
圖1 按鍵示意圖
按鍵的功能可以用旋轉(zhuǎn)式光電編碼開關(guān)來替代。旋轉(zhuǎn)式光電編碼開關(guān)的功能類似計算機上使用的鼠標,它有3 種操作:"左旋""右旋"和"按下選定", 可對應著按鍵輸入時的增鍵、減鍵和確認鍵。
圖2 是光電編碼開關(guān)的外形圖、電原理圖、輸出信號真值表和波形圖。該開關(guān)壓下時②和③短路輸出,旋轉(zhuǎn)時,由把柄帶動穿孔圓盤一起轉(zhuǎn)動。開關(guān)內(nèi)有2 個發(fā)光二極管、2 個光敏三極管和1 個穿孔圓盤,圓盤上的穿孔按特定規(guī)律分布。光敏二極管接收發(fā)光二極管發(fā)出的光,形成二路旋轉(zhuǎn)輸出信號"輸出A"和"輸出B".旋轉(zhuǎn)時,當穿孔圓盤上的某個圓孔正對著發(fā)光二極管時,發(fā)光二極管發(fā)出的光通過該圓孔照射到光敏三極管上,三極管導通,輸出低電平信號;當圓盤上的所有圓孔都錯開發(fā)光二極管時,光敏三極管因收不到光信號而截止,輸出高電平信號。
圖2 光電編碼開關(guān)
由圖2 (c) 真值表可見,其實"輸出B"和"輸出A"的編碼對應著2 位循環(huán)碼(格雷碼) ,循環(huán)碼的特點是由一個計數(shù)狀態(tài)變到下一個計數(shù)狀態(tài)的過程中,只有一位數(shù)碼變化,因此在循環(huán)碼的譯碼器中,不會產(chǎn)生競爭冒險現(xiàn)象。在智能儀器中微處理器引腳狀態(tài)變化的中斷輸入中也不會產(chǎn)生中斷事件的競爭。但循環(huán)碼不能用二進制計算來判別大小和順序,所以要判別光電編碼開關(guān)是"左旋"還是"右旋"時,要引入"輸出B"和"輸出A"電平的現(xiàn)狀態(tài)和前狀態(tài)進行分支邏輯判斷,軟件編程稍稍復雜一點。
現(xiàn)在很多單片微控制器的I/ O 口線都帶有鍵盤中斷功能,圖1 所示的按鍵和圖2 所示的旋轉(zhuǎn)式光電編碼開關(guān),可通過上拉電阻的形式直接接到這些I/ O 口線上。有操作信號時,口線的電平改變會引起鍵盤中斷的發(fā)生,CPU 響應中斷后可去處理相應的操作。在微處理器I/ O 口線或外中斷口線緊張的情況下,可以如圖3 所示,通過I2 C 總線外擴一片串行變并行的PCF8574 芯片,芯片P0~ P7 的8根口線可用作輸入或輸出;用作輸入時,口線電平的變化會引起芯片13 腳電平變低向微處理器申請中斷。圖3 中RL K 是旋轉(zhuǎn)式光電編碼開關(guān),它的"輸出A""輸出B"和"按下開關(guān)"接到了PCF8574 的P4、P5 和P6 ,在筆者研制的"電流互感器伏安特性試驗儀"中,PCF8574 的P0~P3 被用作輸出,經(jīng)接插件J9 ,通過光耦去驅(qū)動試驗電壓量程切換的繼電器。
圖3 節(jié)省I/ O 口線的按鍵輸入接口電路
2 交互界面的輸出結(jié)構(gòu)
菜單式交互界面的輸出部件可采用能顯示字符、漢字及圖形和曲線的大屏幕點陣式液晶顯示器。
帶有驅(qū)動控制器的點陣式LCD 液晶屏與微處理器的接口信號線除了8 位數(shù)據(jù)線外,一般還帶有讀有效線
、寫有效線
及地址譯碼的片選線
,所以對它的連接和讀寫操作,可看作是對微處理器片外的RAM 單元的連接和讀寫操作。讀寫操作中,不同的驅(qū)動控制器具有不同的指令格式,如常用于驅(qū)動320 ×240 點陣式液晶顯示屏的SED1335 液晶驅(qū)動芯片就帶有13 條指令,能方便地完成各種顯示功能。多任務下的選擇菜單可由多屏菜單形成多級鏈式結(jié)構(gòu),為便于敘述,以三級任務菜單為例,將作業(yè)分為主任務(用大寫字母A 、B、C 等表示) 、子任務(用小寫字母a 、b 、c 等表示) 和支任務(用數(shù)字1 、2 、3 等表示) ,圖4 是顯示界面的部分屏顯的匯總。每屏界面都有自己的編號:win1 、win2 、win3 ??.圖中win1 為主屏菜單,提供了主任務A、B 和C 3 個選項;win2 、win3 、win4 為第一級子菜單,為每項主任務提供了各自的子任務的選擇(如win2 屏是主任務A 的子任務A2a 、A2b 和A2c 的選項) ;win5 、win6和win7 是第二級子菜單,為第一級子菜單中的子任務提供下一級支任務(如win5 屏為win2 中的子任務選項A2a 提供A2a21 、A2a22 和A2a23 的支任務選項) ;各級子菜單中均有"返回"的選項,選擇執(zhí)行后返回上一級菜單。圖4 中的選項標志用■和□來指示, ■表示該項選中,選項的變動由增鍵和減鍵(或旋轉(zhuǎn)式光電編碼開關(guān)的"左旋"和"右旋") 來完成,選項的執(zhí)行由確認鍵(或旋轉(zhuǎn)式光電編碼開關(guān)的"按下選定") 來完成,根據(jù)■所在的位置,選項號opt =0 ,1 ,2 …….圖中舉例win14~win18 是具體任務的執(zhí)行情況界面,可以是測量值顯示,也可以是某參數(shù)的動態(tài)曲線顯示,可以是歷史數(shù)據(jù)查詢,等等。這些界面的"返回"功能在作業(yè)完成后自動進行,或默認按"確認"鍵返回。
這種結(jié)構(gòu)還很適合儀器在改進和升級時功能程序模塊的增加和變換。比如系統(tǒng)要增加"子任務B2d",只要在如圖4 所示的win3 屏顯中插入這個選項為opt = 3 ,使該屏為5 選項,則當標志■選中該項時程序即調(diào)用執(zhí)行"子任務B2d"的子程序。要增加"主任務D"的方法是類似的,只要在win1 屏顯中加入這個選項,然后程序根據(jù)菜單的選擇來分支就行了。
圖4 顯示界面的部分屏顯匯總
3 基于界面狀態(tài)的程序結(jié)構(gòu)
儀器儀表的系統(tǒng)程序結(jié)構(gòu),由按鍵和作業(yè)的對應關(guān)系可分為一鍵一義型和一鍵多義型兩種結(jié)構(gòu)。
對于一鍵多義型系統(tǒng)程序,作業(yè)的調(diào)度條件是多因數(shù)的,不僅與外因(鍵盤操作) 有關(guān),也與內(nèi)因(系統(tǒng)當前所處的狀態(tài)) 有關(guān)。為此,引入系統(tǒng)狀態(tài)的概念,即將系統(tǒng)運行情況分成若干狀態(tài)(如圖4 所示的界面狀態(tài)和選項狀態(tài),選項狀態(tài)屬于界面狀態(tài)的子狀態(tài)) ,使得在任何一個狀態(tài)下每一個按鍵只有唯一的定義。這樣一來,系統(tǒng)運行去向就可以由當前狀態(tài)和當前鍵碼來共同決定了。智能化儀器儀表正由一鍵一義型向一鍵多義型進化。如用圖4 所示的顯示界面來表征系統(tǒng)當前所處的狀態(tài),其程序結(jié)構(gòu)稱之為基于界面狀態(tài)的程序結(jié)構(gòu)。
為提高系統(tǒng)效率,對鍵盤(或旋轉(zhuǎn)式光電編碼開關(guān)) 的操作響應可采用中斷的方式進行。進入鍵中斷服務程序后,先判別是增建、減鍵、確認鍵(或旋轉(zhuǎn)式光電編碼開關(guān)的"左旋""右旋""按下選定") 的哪一個鍵碼觸發(fā)中斷;接著判別當前系統(tǒng)所處的狀態(tài)(當前的顯示屏號win 及選項號opt ) ; 再由鍵碼key ,系統(tǒng)狀態(tài)win 和opt 決定執(zhí)行什么作業(yè)。程序框圖如圖5 所示。值得一提的是,對那些不適合在中斷服務程序中執(zhí)行或執(zhí)行時間過長的作業(yè)(如打印等) ,可在中斷服務程序中置位該作業(yè)的啟動標志,待中斷返回后在主程序中再執(zhí)行選中的作業(yè),完成后清除該作業(yè)的啟動標志。
圖5 基于界面的交互過程
4 操作界面的上位機介入
電子技術(shù)的飛速發(fā)展,使嵌入式系統(tǒng)中的存儲器體積越來越小、容量越來越大。但是,如果要在一臺試驗用的儀器上進行日積月累的試驗數(shù)據(jù)的查詢和管理,如果要使儀器的實時試驗曲線具有較高的分辨率和對局部曲線進行分析,如果要使儀器的操作能遠程控制,那么,儀器單機的資源就略顯不足。
滿足上述要求的通常做法是用PC 機(或筆記本電腦) 作為儀器的上位機,通過RS232 串口(或USB口) 與儀器通信構(gòu)成自動測試系統(tǒng),使儀器共享上位計算機的資源,進一步增強智能儀器的性能。
基于界面狀態(tài)的程序結(jié)構(gòu)為上位計算機介入后對儀器的控制提供了很好的軟件平臺。微處理器在響應串口中斷的中斷服務程序中,首先從接收到的上位機傳來的信息判斷是何種作業(yè),然后用調(diào)用子程序的方法,調(diào)用圖4 所示的基于界面狀態(tài)的opt 作業(yè)程序。這樣,原來基于界面狀態(tài)的程序結(jié)構(gòu)幾乎不用改動,只要在串口中斷服務程序中根據(jù)上位機的命令來分支調(diào)用子程序就行了。當然,在上位機控制下執(zhí)行相應作業(yè)時,儀器上的液晶顯示界面仍然將同步顯示當前作業(yè),為遠程操作儀器和實地監(jiān)視儀器提供了方便。
5 結(jié) 語
大屏幕點陣式液晶顯示器和內(nèi)置大容量程序存儲器的微處理器的出現(xiàn),給儀器儀表的智能化進程推波助瀾。上述人機交互界面的軟硬件設(shè)計,僅是筆者在工程項目中的初步嘗試,基本達到了結(jié)構(gòu)簡單、操作方便、編程高效和界面友好的效果。用后臺大量的工作換取前臺操作的極其簡單和方便,應是儀器儀表業(yè)內(nèi)同行始終追求的境界。