人機(jī)界面(human-computer?interface),又稱用戶界面、人機(jī)交互、人機(jī)接口等,是人與機(jī)器之間傳遞、交換信息的媒介,是用戶使用計(jì)算機(jī)系統(tǒng)的綜合操作環(huán)境。在商品競(jìng)爭(zhēng)中,一個(gè)應(yīng)用系統(tǒng)的成功與否在某種程度上也取決于用戶使用界面的感受好壞,因此,人機(jī)界面的設(shè)計(jì)在應(yīng)用系統(tǒng)的設(shè)計(jì)中有著重要的作用。嵌入式系統(tǒng)強(qiáng)調(diào)人機(jī)界面操作的實(shí)時(shí)性,簡(jiǎn)單化,強(qiáng)調(diào)在特定平臺(tái)上特定應(yīng)用的時(shí)間空間效率。在傳統(tǒng)的小系統(tǒng)設(shè)計(jì)中。程序設(shè)計(jì)一般采用前后臺(tái)工作方式。應(yīng)用程序是一個(gè)無(wú)限的循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,時(shí)間相關(guān)性很強(qiáng)的關(guān)鍵操作(crltical?operation)是靠中斷服務(wù)來(lái)保證的。因?yàn)橹袛喾?wù)提供的信息一直要等到后臺(tái)程序走到該處理此信息這一步時(shí)才能得到處理.這種系統(tǒng)在處理信息的及時(shí)性上,比實(shí)際可以做到的要差。最壞情況下的任務(wù)級(jí)響應(yīng)時(shí)間取決于整個(gè)循環(huán)的執(zhí)行時(shí)間。因?yàn)檠h(huán)的執(zhí)行時(shí)間不是常數(shù),程序經(jīng)過某一特定部分的準(zhǔn)確時(shí)間也是不能確定的。如果程序修改了,循環(huán)的時(shí)序也會(huì)受到影響。
實(shí)時(shí)操作系統(tǒng)將應(yīng)用分解成多任務(wù),簡(jiǎn)化了應(yīng)用系統(tǒng)軟件的設(shè)計(jì)。良好的多任務(wù)設(shè)計(jì),有助于提高系統(tǒng)的穩(wěn)定性和可靠性,并使系統(tǒng)的實(shí)時(shí)性得到保證。很多實(shí)時(shí)操作系統(tǒng)提供了專用函數(shù),簡(jiǎn)化了程序的測(cè)試。
1、系統(tǒng)設(shè)計(jì)
如圖l所示,人機(jī)界面系統(tǒng)采用小鍵盤操作的文本菜單方式,使用在嵌入式數(shù)字視頻錄像DVR(Digital?Video?Record)系統(tǒng)中。在MSP430F149上移植μC/OS—Ⅱ來(lái)獨(dú)立實(shí)現(xiàn)人機(jī)界面的功能,用戶通過鍵盤輸入指令,經(jīng)過單片機(jī)處理后發(fā)往主系統(tǒng),同時(shí)把相應(yīng)信息通過專用芯片的OSD(0n?Screen?Display)功能顯示在監(jiān)視器上;用戶根據(jù)監(jiān)視器上的信息進(jìn)行菜單操作,形成人與機(jī)器的交互。
圖1?人機(jī)界面系統(tǒng)
把人機(jī)界面部分從主系統(tǒng)中獨(dú)立出來(lái),用戶所有輸入的指令由單片機(jī)來(lái)處理,減少了主系統(tǒng)的工作量,使整個(gè)系統(tǒng)模塊化,便于開發(fā)和調(diào)試,提高了可靠性和穩(wěn)定性.另外,這種人機(jī)界面設(shè)計(jì)具有通用性,便于移植到各種嵌入式系統(tǒng)中。本系統(tǒng)選用MSP430nF149單片機(jī),是基于以下三個(gè)方面的原因:
①?OSD功能需要經(jīng)常刷新,并且要處理與主機(jī)部分的數(shù)據(jù)交換,要求單片機(jī)的計(jì)算速度足夠高,并且要求嵌入式系統(tǒng)能夠長(zhǎng)時(shí)間正常運(yùn)轉(zhuǎn),且芯片功耗低。
②?實(shí)時(shí)操作系統(tǒng)本身要耗費(fèi)一部分內(nèi)存,同時(shí)0SD功能要求建立字庫(kù),要求內(nèi)存空間足夠大,否則要外接閃存,增加設(shè)計(jì)的復(fù)雜度及成本。
③?要連接鍵盤電路,需較多I/O口。
MSP430系列單片機(jī)是由TI公司開發(fā)的16位單片機(jī)。其突出特點(diǎn)是強(qiáng)調(diào)超低功耗,適合于各種功率要求低的應(yīng)用;有較高的處理速度,在8?MHz晶振的驅(qū)動(dòng)下,指令周期為125ns;MSP430F149具有60?KB的Flash?ROM和2?KB?RAM,可滿足系統(tǒng)程序量和數(shù)據(jù)量大的要求,可以解決因?yàn)榧虞d實(shí)時(shí)操作系統(tǒng)而增加的內(nèi)存需求,具有2個(gè)串行通信接口,其中一個(gè)串口用于跟主系統(tǒng)通信,另一個(gè)可用于控制其他外圍模塊;具有48個(gè)可獨(dú)立編程的I/O口,其中有2個(gè)具有中斷功能的8位并行端口,在設(shè)計(jì)按鍵電路時(shí),可方便地采用中斷方式識(shí)別鍵值。
2、軟件設(shè)計(jì)與實(shí)現(xiàn)
2.1?實(shí)時(shí)操作系統(tǒng)
μC/OS—II是一個(gè)源碼開放,擁有搶占式內(nèi)核,支持多任務(wù)的實(shí)時(shí)操作系統(tǒng);任務(wù)被分為休眠態(tài)、就緒態(tài)、運(yùn)行態(tài)、掛起態(tài)和被中斷態(tài)五種狀態(tài),內(nèi)核根據(jù)任務(wù)所處的狀態(tài)對(duì)任務(wù)作相應(yīng)的處理,已經(jīng)準(zhǔn)備就緒的高優(yōu)先級(jí)任務(wù)可以剝奪正在運(yùn)行的低優(yōu)先級(jí)任務(wù)對(duì)CPU的使用權(quán)。系統(tǒng)大部分代碼采用C語(yǔ)言編寫,與硬件相關(guān)的部分很集中,并給出了規(guī)范的接口說(shuō)明,移植相當(dāng)方便,可應(yīng)用于目前大多數(shù)型號(hào)的8位、16位、32位CPU。μC/OS—II提供的僅僅是一個(gè)操作系統(tǒng)內(nèi)核,對(duì)硬件系統(tǒng)要求很低,很適合在低端CPU上開發(fā)小系統(tǒng)。
將μC/OS—II移植在MSP430F149單片機(jī)上,對(duì)其進(jìn)行裁減,只保留消息隊(duì)列一種任務(wù)間通信方式,利用它的任務(wù)優(yōu)先級(jí)搶占機(jī)制,使人機(jī)界面很好地滿足嵌入式系統(tǒng)對(duì)實(shí)時(shí)性和可靠性的要求。下面詳細(xì)介紹基于μC/0S—II操作系統(tǒng)的程序設(shè)計(jì)。
2.2?軟件設(shè)計(jì)
本系統(tǒng)的軟件部分設(shè)計(jì)基于E-O模型的思想,劃分事件和目標(biāo)。以有限狀態(tài)機(jī)的方式,在實(shí)時(shí)操作系統(tǒng)μC/OS一Ⅱ中,用狀態(tài)機(jī)把目標(biāo)和事件聯(lián)系起來(lái),實(shí)現(xiàn)OA?(Object-Action)行為模式完成人機(jī)交互的過程,使以小鍵盤操作的文本菜單方式設(shè)計(jì)更清晰。
(1)事件-目標(biāo)驅(qū)動(dòng)的用戶界面模型
事件-目標(biāo)驅(qū)動(dòng)的用戶界面模型,即E-O模型(E-vent-Object?Drive?User?Interface?Model),將人機(jī)交互活動(dòng)歸結(jié)為事件與目標(biāo)的相互作用.事件是人機(jī)交互活動(dòng)中傳遞的信息,目標(biāo)是交互活動(dòng)的對(duì)象;事件引發(fā)交互活動(dòng),目標(biāo)是交互活動(dòng)的承受者。E-O模型基于的基本行為模式是“目標(biāo)-動(dòng)作”(OA),以目標(biāo)為核心,具有面向?qū)ο箫L(fēng)格。
E-O模型由四個(gè)邏輯部件組成:①設(shè)備管理模塊(device?management?module),提供與各種交互設(shè)備的接口,實(shí)現(xiàn)設(shè)備無(wú)關(guān)特性;②事件管理子系統(tǒng)(event?Man-agement?subsystem),它讀取輸入設(shè)備的輸入信息形成事件并進(jìn)行統(tǒng)一管理,將反饋信息的事件解釋為適當(dāng)?shù)妮敵鲋噶畈魉徒o輸出設(shè)備;③目標(biāo)管理子系統(tǒng)(object?Man-agement?subsystem),創(chuàng)建、裝載、保存用戶界面中各類目標(biāo),并對(duì)目標(biāo)進(jìn)行管理,④事件-目標(biāo)管理子系統(tǒng)(event-object?management?subsystem),主要職責(zé)是實(shí)現(xiàn)事件與目標(biāo)的整合,按適當(dāng)策略控制事件在各目標(biāo)結(jié)點(diǎn)之間流動(dòng),以形成和維持交互的過程,是整個(gè)用戶界面系統(tǒng)的核心。
(2)有限狀態(tài)機(jī)的形式化描述
有限狀態(tài)機(jī)FSM(Finite?State?Machine)由狀態(tài)、事件、轉(zhuǎn)換和活動(dòng)組成。每個(gè)狀態(tài)有1個(gè)狀態(tài)進(jìn)入動(dòng)作(entryaction)和1個(gè)狀態(tài)退出動(dòng)作(exit?action),每個(gè)轉(zhuǎn)換有1個(gè)源狀態(tài)和目標(biāo)狀態(tài)并且與1個(gè)事件相關(guān)聯(lián)。當(dāng)在源狀態(tài)時(shí),該事件發(fā)生且觸發(fā)轉(zhuǎn)換的監(jiān)護(hù)條件為真,則順序執(zhí)行下列一些動(dòng)作:①源狀態(tài)的退出動(dòng)作;②轉(zhuǎn)換動(dòng)作;③目標(biāo)狀態(tài)的進(jìn)入動(dòng)作。
FSM可以形式化表示為1個(gè)五元組:M=(0,I,λ,S,δ,S0)。
其中,S為有限狀態(tài)集;
I為有窮的事件輸入集;
0為有窮的輸出集,
S0為初始狀態(tài)集;
δ:S×I→S,進(jìn)入下一個(gè)狀態(tài)的過程;
λ:S×I→O,產(chǎn)生輸出的過程。
T=δUλ。T中的每個(gè)元素又可以表示為1個(gè)五元組,T=(Soure-State,Target-State,Input-Event,Con-straint,Action)。其中“Source-State”和“Target-State”分別表示T的初始狀態(tài)和目標(biāo)狀態(tài),“Input-Event”表示來(lái)自于I的輸入事件或?yàn)榭眨癈onstramt”表示監(jiān)護(hù)條件及輸入事件參數(shù)等約束,Action表示轉(zhuǎn)換執(zhí)行的動(dòng)作。
用軟件實(shí)現(xiàn)有限狀態(tài)機(jī)有兩種方法:表格法和過程驅(qū)動(dòng)法。表格驅(qū)動(dòng)法利用一個(gè)二維數(shù)組。該數(shù)組中的短一行與一個(gè)狀態(tài)相對(duì)應(yīng),每一列與一個(gè)輸入事件相對(duì)應(yīng),每一項(xiàng)則與某一狀態(tài)下對(duì)事件的處理相對(duì)應(yīng)。表格驅(qū)動(dòng)法適用于具有結(jié)構(gòu)規(guī)則、操作簡(jiǎn)單的有限狀態(tài)機(jī)。
過程驅(qū)動(dòng)法為每一個(gè)狀態(tài)都定義一個(gè)處理過程,處理過程實(shí)現(xiàn)在此狀態(tài)時(shí)對(duì)事件的響應(yīng),包括輸出處理及對(duì)當(dāng)前狀態(tài)值的轉(zhuǎn)換。這個(gè)過程可以用case語(yǔ)句區(qū)分事件,并采用相應(yīng)的處理。無(wú)論采用何種方法實(shí)現(xiàn)FSM,當(dāng)FSM收到一條消息時(shí)必須知道當(dāng)前的狀態(tài)。為此,對(duì)應(yīng)每一個(gè)狀態(tài)機(jī)必須能夠保存當(dāng)前所處的狀態(tài)。過程法適用于實(shí)現(xiàn)一個(gè)具有幾種轉(zhuǎn)換和復(fù)雜操作的有限狀態(tài)機(jī)。
2.3?程序設(shè)計(jì)與實(shí)現(xiàn)
基于消息驅(qū)動(dòng)的程序設(shè)計(jì)思想,為了保證系統(tǒng)的實(shí)時(shí)性,在中斷中只負(fù)責(zé)發(fā)送消息到相應(yīng)的任務(wù)的消息隊(duì)列,由應(yīng)用級(jí)的任務(wù)來(lái)處理,保證各個(gè)處理的時(shí)間是可確定的.主程序在消息循環(huán)中不斷地判斷各個(gè)任務(wù)的狀態(tài),執(zhí)行進(jìn)入就緒態(tài)的任務(wù)。這就允許采用異步方式處理各種中斷及任務(wù)。
本系統(tǒng)程序中采用了兩組有限狀態(tài)機(jī),運(yùn)用消息驅(qū)動(dòng)的方式來(lái)驅(qū)動(dòng)狀態(tài)的變更。一組是通信任務(wù)中以串口接收數(shù)據(jù)驅(qū)動(dòng)為事件對(duì)象的有限狀態(tài)機(jī),另一組是以用戶按鍵和命令碼驅(qū)動(dòng)為事件對(duì)象的有限狀態(tài)機(jī).在實(shí)時(shí)操作系統(tǒng)μC/OS一Ⅱ下,整個(gè)人機(jī)界面分為三個(gè)模塊,即三個(gè)任務(wù)來(lái)實(shí)現(xiàn),分別是鍵值處理模塊、與主機(jī)通信模塊和時(shí)鐘模塊。
●?鍵值處理模塊
OSTaskCreate(KEYTaskStart,(void*)O,&TaskKey-Stk[],7);
先初始化所有的模塊,然后在循環(huán)中接收并處理鍵盤的輸入,Key-Process(char?KeyValue)根據(jù)相應(yīng)的輸入鍵值和系統(tǒng)所處的狀態(tài),對(duì)菜單進(jìn)行相應(yīng)的操作。
State_Trans(char?RxData)根據(jù)鍵值輸入事件負(fù)責(zé)調(diào)度系統(tǒng)的狀態(tài),并在相應(yīng)的狀態(tài)下,根據(jù)從主系統(tǒng)收到的信息顯示菜單。
相關(guān)文章
基于LPC2119和μC/OSII的CAN中繼器設(shè)計(jì)
PLC與DCS集成的通信架構(gòu)及關(guān)鍵技術(shù)淺析
通信電源、機(jī)房環(huán)境集中監(jiān)控系統(tǒng)優(yōu)化和升級(jí)
TS101S型DSP與PCI總線的簡(jiǎn)易接口設(shè)計(jì)
人機(jī)界面中的LCD控制驅(qū)動(dòng)與接口設(shè)計(jì)
基于MSP430F149的實(shí)時(shí)多任務(wù)操作系統(tǒng)
微機(jī)繼電保護(hù)實(shí)驗(yàn)系統(tǒng)的研究與實(shí)現(xiàn)
電力操作電源智能電池巡檢系統(tǒng)的設(shè)計(jì)
蓄電池化成控制系統(tǒng)中顯示功能的實(shí)現(xiàn)
LCM12864ZK與MSP430F149的接口控制技術(shù)