基于無(wú)線警報(bào)系統(tǒng)的LCD顯示菜單設(shè)計(jì)
摘要:為了在無(wú)線警報(bào)系統(tǒng)上實(shí)現(xiàn)數(shù)據(jù)輸入、顯示及存儲(chǔ)等屏幕顯示功能,提出了基于4*4個(gè)鍵盤交互的LCD顯示多屏菜單設(shè)計(jì)方法。以ARM CortexTM-M0群說奈⒋理器為主控芯片,結(jié)合點(diǎn)陣液晶模塊HTM12864進(jìn)行C語(yǔ)言程序系統(tǒng)設(shè)計(jì)。對(duì)菜單數(shù)據(jù)項(xiàng)和功能函數(shù)進(jìn)行獨(dú)立設(shè)計(jì),使菜單顯示窗口化,并為每個(gè)窗口配置一個(gè)按鍵處理的回調(diào)函數(shù)來(lái)實(shí)現(xiàn)窗口切換。系統(tǒng)運(yùn)行結(jié)果表明,該方法實(shí)現(xiàn)簡(jiǎn)單,占用內(nèi)存少,操作界面簡(jiǎn)便,達(dá)到設(shè)計(jì)方法的目的。
本文引用地址:http://butianyuan.cn/article/201809/388346.htm隨著人們對(duì)生活質(zhì)量要求的提高,“智能家居”已經(jīng)走入了我們的生活中。智能家居是以住宅為平臺(tái),兼?zhèn)浣ㄖ?、網(wǎng)絡(luò)通信、計(jì)算機(jī)技術(shù)、設(shè)備自動(dòng)化,集系統(tǒng)、結(jié)構(gòu)、服務(wù)、管理為一體的安全、舒適、健康的居住環(huán)境。家居報(bào)警系統(tǒng)是智能家居系統(tǒng)的一個(gè)重要組成部分,實(shí)現(xiàn)智能家居環(huán)境下的安防智能化,人機(jī)交互界面美觀可靠,操作方便等是安防系統(tǒng)發(fā)展的趨勢(shì)。
無(wú)線警報(bào)系統(tǒng)利用無(wú)線通信和傳感技術(shù),通過無(wú)線傳感器網(wǎng)絡(luò)采集家庭內(nèi)的信息,并通過無(wú)線通信將異常情況及時(shí)傳輸給用戶或保安人員,用戶遠(yuǎn)程操作,實(shí)現(xiàn)遠(yuǎn)程防火防盜警報(bào)。本文介紹在智能無(wú)線警報(bào)系統(tǒng)中實(shí)現(xiàn)多級(jí)菜單功能,方便設(shè)置和操作。
在傳統(tǒng)的多級(jí)菜單的實(shí)現(xiàn)辦法上,文獻(xiàn)提出兩點(diǎn)改進(jìn):把菜單項(xiàng)數(shù)據(jù)與功能程序分開和復(fù)用菜單項(xiàng)。文獻(xiàn)提出了一種基于單片機(jī)系統(tǒng)的多級(jí)菜單模塊化編程方法,使得程序編寫效率較高,軟件維護(hù)簡(jiǎn)單。文獻(xiàn)提出基于飛思卡爾單片機(jī)MC9S08GT60控制的LCD人機(jī)界面方案,實(shí)現(xiàn)了數(shù)據(jù)通信、字符顯示以及波形監(jiān)測(cè)等功能。文獻(xiàn)采用一鍵多義的非編碼制鍵盤用標(biāo)記轉(zhuǎn)移算法,設(shè)計(jì)出基于4個(gè)鍵盤交互的多屏菜單系統(tǒng)。
鑒于之前的改進(jìn)及設(shè)計(jì)方法,獨(dú)立LCD顯示模塊,引入菜單窗口化的設(shè)計(jì)方法,使菜單項(xiàng)數(shù)據(jù)和函數(shù)功能完全分離,在菜單窗口下分行顯示菜單項(xiàng),同時(shí)完善LCD顯示與鍵盤處理交互方法。為智能無(wú)線警報(bào)器設(shè)計(jì)開發(fā)4 x 4鍵盤與128x64圖形點(diǎn)陣LCD模塊交互的程序,在不同菜單窗口下,通過函數(shù)指針調(diào)用不同的按鍵處理函數(shù),實(shí)現(xiàn)不同菜單窗口之間的切換。具有多級(jí)菜單顯示結(jié)構(gòu),可完成分級(jí)菜單顯示、參數(shù)設(shè)置及存儲(chǔ)等常用功能,而且操作方便快捷。
1 智能無(wú)線警報(bào)系統(tǒng)結(jié)構(gòu)
智能無(wú)線警報(bào)系統(tǒng)結(jié)構(gòu)如圖1所示,主要由單片機(jī)控制模塊、GSM通信模塊、無(wú)線傳感器接收模塊、LCD模塊、電源模塊等組成。
各個(gè)模塊簡(jiǎn)介:MCU:主控芯片,實(shí)現(xiàn)與各模塊之間進(jìn)行數(shù)據(jù)交換和過程控制。GSM模塊:提供GSM通信功能,支持語(yǔ)音和短信收發(fā),SPK和MIC由GSM模塊處理,MCU不需要參與,GSM模塊通過UART串口與MCU通信,完成警報(bào)信息的發(fā)送、接收控制和語(yǔ)音通信功能;Buzzer:蜂鳴器,警報(bào)時(shí)產(chǎn)生蜂鳴聲;Siren:警笛,警報(bào)時(shí)參數(shù)警笛聲;ASK433模塊:接收433Mhz警報(bào)信息;Key:包括矩形鍵盤和各類功能按鍵,用于用戶密碼的輸入、各類設(shè)置和緊急警報(bào)等;LCD顯示:采用132*64液晶顯示模塊,通過SPI與MCU通信,可通過鍵盤完成對(duì)警報(bào)手機(jī)的設(shè)置和更改,并將設(shè)置和更改數(shù)據(jù)存儲(chǔ),實(shí)現(xiàn)輸入數(shù)據(jù)、顯示、存儲(chǔ)參數(shù)等功能。
2 LCD模塊總體設(shè)計(jì)
2.1 軟硬件開發(fā)環(huán)境介紹
本系統(tǒng)使用的主控芯片為新唐的NUC100,該芯片是32位內(nèi)嵌ARM Cortex-M0內(nèi)核的微控制器,運(yùn)行頻率可達(dá)50MHz,內(nèi)建128K字節(jié)的Fla sh存儲(chǔ)器,4K/8K/16K字節(jié)內(nèi)建SRAM和4K字節(jié)用于存儲(chǔ)ISP引導(dǎo)代碼的ROM。另外還有豐富的外設(shè),如定時(shí)器,看門狗定時(shí)器,RTC,RDMA,UART,SPI/MICROWIRE,I2C,IS,PWM定時(shí)器,豐富的GPIO,PS2,12位ADC,模擬比較器,低電壓復(fù)位控制盒欠壓檢測(cè)功能。按鍵類型為4*4的矩陣,即0~9,*,#,OK,↑, ↓,DEL鍵。本系統(tǒng)使用的LCD顯示屏的類型為HTM13264,分辨率是132*64的,顯示類型為點(diǎn)陣,數(shù)據(jù)輸入方式為SPI。
軟件編譯環(huán)境為Keil μVision4編譯器,μVision4集成開發(fā)環(huán)境、仿真器、調(diào)試器等,提供一個(gè)單純統(tǒng)一的環(huán)境,可以快速的編輯、仿真和調(diào)試程序。通過μVision4的工具條,就可以實(shí)現(xiàn)絕大多數(shù)調(diào)試和編輯的功能。
2.2 LCD菜單顯示需求分析
根據(jù)該系統(tǒng)菜單的設(shè)計(jì),LCD屏幕分四行顯示,每行可以允許顯示8個(gè)漢字字符,16個(gè)英文字符,如圖2所示第一行是狀態(tài)欄,顯示感應(yīng)器注冊(cè)、通信模塊信號(hào)量和電池電量,其他三行根據(jù)不同場(chǎng)景顯示不同的內(nèi)容,所有設(shè)置項(xiàng)目分三級(jí)菜單。
2.3 LCD菜單顯示原理
菜單顯示設(shè)計(jì)主要分為按鍵處理和菜單窗口兩部分,主要原理是在主程序中設(shè)置一個(gè)按鍵處理程序,各菜單窗口利用統(tǒng)一的按鍵接口函數(shù)對(duì)按鍵處理程序中的按鍵函數(shù)指針進(jìn)行重定向設(shè)定,使得按鍵處理程序能夠指向各菜單窗口。每次按鍵操作完畢,均回到主程序。
2.3.1 菜單窗口實(shí)現(xiàn)方法
除狀態(tài)欄外,將其他所有需要顯示的菜單內(nèi)容窗口化,即空閑窗口,第一級(jí)菜單窗口,第二級(jí)菜單窗口,第三級(jí)菜單窗口,之外還需要增加提示窗口。以窗口為單位來(lái)顯示,可以簡(jiǎn)化進(jìn)入、返回操作的處理。細(xì)化窗口下的顯示,即將每個(gè)窗口分為三行顯示,每行的顯示內(nèi)容根據(jù)上級(jí)窗口的ID來(lái)定義。為每個(gè)窗口配置一個(gè)按鍵處理回調(diào)函數(shù),在收到按鍵中斷后,交由回調(diào)函數(shù)處理當(dāng)前的窗口上的回調(diào)函數(shù)。
2.3.2 行顯示實(shí)現(xiàn)方法
顯示行的類型應(yīng)該分為可編輯字符型,可編輯密碼型和不可編輯類型。行的顯示是包含在窗口中的,需要為窗口創(chuàng)建一個(gè)顯示行的棧,或者是一個(gè)顯示數(shù)組,用來(lái)支撐列表式的顯示方式。
2.3.3 窗口進(jìn)入、退出規(guī)則
如圖3所示,為空閑界面下進(jìn)入其他菜單的處理規(guī)則,其他窗口的處理于此類似。所有非編輯窗口都做超時(shí)處理,超時(shí)后都要返回到空閑界面。窗口返回時(shí),返回到上一窗口的進(jìn)入位置。
2.3.4 窗口具體實(shí)現(xiàn)方法
包含空閑窗口在內(nèi),整個(gè)界面的窗口顯示共有4個(gè)窗口。空閑窗口應(yīng)該為程序的常駐窗口,即開機(jī)后空閑窗口的顯示數(shù)據(jù)就會(huì)一直存在于RAM中,其余窗口則是根據(jù)按鍵事件的處理來(lái)創(chuàng)建和銷毀。由于無(wú)法做到動(dòng)態(tài)內(nèi)存分配,所以窗口的銷毀并不會(huì)帶來(lái)內(nèi)存的釋放,而只是數(shù)據(jù)清除。每一級(jí)的窗口顯示列表根據(jù)菜單樹分級(jí)的定義應(yīng)該為一固定值,并為每一個(gè)項(xiàng)目條標(biāo)記一個(gè)ID,用作循環(huán)顯示以及作為類型標(biāo)記,如圖4所示。每個(gè)顯示窗口都包含3個(gè)顯示行數(shù)據(jù)結(jié)構(gòu),用來(lái)為每次屏幕刷新提供數(shù)據(jù)。每個(gè)按鍵設(shè)有專門的程序處理入口。
3 系統(tǒng)運(yùn)行結(jié)果
在新唐NUC100上和HTM13254的硬件平臺(tái)上,實(shí)現(xiàn)了LCD多級(jí)菜單的顯示,參數(shù)設(shè)置及存儲(chǔ)功能。上電初始化屏幕之后,顯示的空閑屏幕通過輸入不同的密碼進(jìn)入不同的菜單窗口,當(dāng)輸入正確的安防密碼之后,進(jìn)入安防設(shè)置界面,如圖5所示;當(dāng)輸入正確的設(shè)置密碼之后,進(jìn)入操作設(shè)置界面,如圖6所示。以上兩個(gè)不同的窗口下,都可以通過上下鍵,移動(dòng)光標(biāo),實(shí)現(xiàn)翻屏顯示;通過確定鍵進(jìn)入下一級(jí)菜單;通過返回鍵返回上一級(jí)菜單出口或者直接退出到空閑界面。
設(shè)置參數(shù)時(shí),通過上下鍵和確認(rèn)鍵選擇要設(shè)置的參數(shù),不可編輯類型,如安防設(shè)置窗口,直接按下確定鍵設(shè)置??删庉嬜址?,如短信或者電話號(hào)碼設(shè)置,在進(jìn)入設(shè)置界面之后,通過上下鍵和確定鍵進(jìn)入電話號(hào)碼設(shè)置界面,通過上下鍵選擇要編輯的菜單項(xiàng),此時(shí),按下*號(hào)鍵,進(jìn)入編輯界面,如圖7所示,通過鍵盤上4*4的鍵盤矩陣,輸入大小寫字符及數(shù)字,按下確定鍵,即可保存輸入的數(shù)據(jù),如圖8所示。
實(shí)驗(yàn)結(jié)果表明,LCD菜單屏顯示界面簡(jiǎn)潔美觀,和鍵盤交互操作方便快捷。LCD菜單的顯示程序按模塊化設(shè)計(jì),不受其他模塊程序等其他任何程序的影響。增加鍵盤有效性檢查,視誤操作為無(wú)效操作,保持在當(dāng)前窗口,減少了用戶的操作量;當(dāng)無(wú)線安防警報(bào)系統(tǒng)功能擴(kuò)增時(shí),LCD模塊程序的結(jié)構(gòu)不變,有利于功能擴(kuò)展。
4 結(jié)束語(yǔ)
介紹了多級(jí)菜單新的設(shè)計(jì)模式,仿照棧的數(shù)據(jù)結(jié)構(gòu),使菜單設(shè)計(jì)變得更為簡(jiǎn)單方便,軟件維護(hù)更容易,為每個(gè)菜單窗口配置一個(gè)按鍵處理回調(diào)函數(shù),產(chǎn)生按鍵中斷后,交由回調(diào)函數(shù)去處理當(dāng)前窗口上的按鍵反應(yīng)。通過安防警報(bào)系統(tǒng)實(shí)現(xiàn)的實(shí)際應(yīng)用表明,以上方法是切實(shí)有效的。同時(shí),這些方法也為其他控制系統(tǒng)的多級(jí)菜單設(shè)計(jì)提供了參考和選擇。
評(píng)論