智能配電監(jiān)控系統(tǒng)的人機(jī)交互設(shè)計(jì)
摘要:以宏晶公司STC12C5A60S2單片機(jī)處理器作為控制器,以矩陣鍵盤作為輸入設(shè)備,以RS485通信接口芯片作為數(shù)據(jù)更新方式,用北京青云公司生產(chǎn)的LCD3202401作為顯示輸出設(shè)備,研究設(shè)計(jì)了相應(yīng)的硬件電路與顯示驅(qū)動程序,在此基礎(chǔ)上完成了人機(jī)交互系統(tǒng)的設(shè)計(jì)。充分利用成本低、資源少的單片機(jī)系統(tǒng)實(shí)現(xiàn)完善的人機(jī)交互功能。
關(guān)鍵詞:人機(jī)交互;LCD;單片機(jī)
1 系統(tǒng)設(shè)計(jì)方案
本系統(tǒng)設(shè)計(jì)按鍵時遇到以下情況:(1)產(chǎn)品外設(shè)較多,單片機(jī)I/O口比較少,設(shè)計(jì)時需要考慮節(jié)省I/O口。(2)現(xiàn)場情況所限,鍵盤與主機(jī)板要有一段距離。(3)鍵盤需要15個按鍵,同時擴(kuò)展一個復(fù)位按鍵,共16個按鍵。根據(jù)以上的情況采用A/D鍵盤最為合適。
考慮到系統(tǒng)顯示既要求有圖顯示又有字符顯示功能,因此采用單片機(jī)控制LCD,使LCD的畫圖、字符顯示等功能最大程度地利用。
本系統(tǒng)設(shè)計(jì)的效果如圖1所示。
2 系統(tǒng)結(jié)構(gòu)和原理
人機(jī)交互系統(tǒng)負(fù)責(zé)數(shù)據(jù)顯示及輸入,通過RS485接口與主控模塊進(jìn)行信息交換,通過工業(yè)液晶顯示主控模塊傳送的電量參數(shù)信息,并通過鍵盤輸入設(shè)定系統(tǒng)工作模式、參數(shù)門限、通信協(xié)議。校正模擬量通道的各項(xiàng)電參數(shù)以及用圖形直觀表示一次圖及電壓參數(shù)的工作狀態(tài),并在出現(xiàn)過流過壓等告警信息時發(fā)出報(bào)警聲。系統(tǒng)能夠在有限成本的條件下很好地完成此多項(xiàng)功能。
顯示系統(tǒng)由硬件和軟件兩部分構(gòu)成,如圖2和圖3所示。
硬件部分以STC12C5A60S2單片機(jī)為核心,晶振和復(fù)位電路作為系統(tǒng)工作的必要設(shè)備,從3×5矩陣鍵盤接收輸入命令,同時通過RS485與主控模塊進(jìn)行實(shí)時通訊。其中鍵盤通過單片機(jī)的A/D功能直接采集電壓判斷來實(shí)現(xiàn)。
軟件部分可分為底層驅(qū)動程序和上層控制兩部分。底層驅(qū)動包括設(shè)置系統(tǒng)時鐘和系統(tǒng)模式,配置I/O口、初始化串口打開ADC轉(zhuǎn)換功能,初始化LCD控制器、中斷控制器等。上層控制程序不斷查詢是否有按鍵按下。若有按鍵按下,則執(zhí)行相應(yīng)的任務(wù),LCD顯示相應(yīng)的內(nèi)容;同時如果需要,通過RS485向主控模塊發(fā)出控制或請求數(shù)據(jù)等信息。
3 系統(tǒng)硬件電路設(shè)計(jì)
3.1 鍵盤電路
人機(jī)交互系統(tǒng)中輸入控制命令,設(shè)置數(shù)值,查詢電參數(shù)、歷史數(shù)據(jù)、告警信息等都肯定要使用鍵盤。系統(tǒng)中設(shè)計(jì)采用的是3×5的鍵盤,外加一個復(fù)位按鍵組合成4×4格式安裝,其中除了0~9這10個數(shù)字外,還有確定鍵“Enter”、菜單鍵“Menu”、上鍵“Up”、下鍵“Down”、“靜音”鍵及復(fù)位鍵。在端口KEY0、KEY1、KEY2輸出線上接上拉電阻,使端口能準(zhǔn)確的置高、置低。上拉電阻的另一端則連接在一起接5 V電源。電路圖如圖4所示。
圖為3x5鍵盤設(shè)計(jì)電路,KEY0、KEY1、KEY2連接至單片機(jī)具有A/D功能的I/O口,此時就可以通過A/D掃描讀取,可以根據(jù)A/D值判斷有無按鍵按下或是那個按鍵按下。根據(jù)上圖電阻值可以算出:無按鍵按下,A/D值為5 V;SW1按下,通過計(jì)算知A/D值為VCC×R1/(R1+R20)=0.16 V;SW4按下,A/D值為VCC×R1/(R1+R20+R24)=0.733 V;同理,SW7=1.559 V;SW10=2.287 V;S5=2.875 V;根據(jù)A/D采集值比較,最接近哪個鍵值的范圍,則就是該按鍵。
使用此方法需注意按鍵選用接觸性較好的按鍵。按鍵差的使用時間一長,容易產(chǎn)生接觸電阻,按鍵多容易誤檢測。
3.2 LCD顯示電路
系統(tǒng)采用北京青云公司生產(chǎn)的LCD3202401液晶控制器,LCD3202401使用功能強(qiáng)大的RA8835作為控制器。此LCD有4位顯示數(shù)據(jù)線,且傳輸數(shù)據(jù)迅速;具有強(qiáng)大的作圖功能;支持文本顯示、圖形顯示以及圖形和文本混合顯示;具備簡捷的MPU接口和功能齊全的控制指令集。單片機(jī)與LCD的接口電路 如圖5所示。
圖中LCD與單片機(jī)管腳連接處加1 kΩ的限流電阻,可以有效防止單片機(jī)管腳電流過大造成LCD液晶屏損壞。由于單片機(jī)的頻率為22 MHz,所以傳輸時肉眼看不到數(shù)據(jù)是一位一位傳輸?shù)?,從人類視覺的角度上看,就仿佛是全部字符或圖片同時顯示一樣。
4 軟件設(shè)計(jì)
本謝十中,主菜單和子菜單多達(dá)30多項(xiàng),且要實(shí)時同步顯示,從而增大了應(yīng)用層設(shè)計(jì)的難度。因此程序采用模塊化結(jié)構(gòu),主要包括主菜單頁面切換模塊、按鍵掃描模塊、選項(xiàng)管理控制模塊和數(shù)據(jù)輸入模塊。
4.1 主菜單頁面切換模塊
為按用戶要求切換操作界面,定義了一個page_index映像寄存器,其值在1~P之間變化,P為操作界面的個數(shù)。本系統(tǒng)中P的值為9。主菜單界面,如圖6所示。
如果page_index=1,則LCD顯示器上顯示第1頁面;一次圖頁面如圖7所示。為最大限度地使用系統(tǒng)的Flash,其中的線條及方框均直接使用其繪圖功能實(shí)現(xiàn)。
如果page_index=2,則LCD顯示器上顯示第2頁面。用戶可按數(shù)字鍵控制page_index的值選擇對應(yīng)頁面,實(shí)現(xiàn)人機(jī)交互。電參數(shù)頁面如圖8所示。
4.2 按鍵掃描模塊
對15個操作按鍵進(jìn)行掃描,將結(jié)果保存在key映像寄存器中。該寄存器有個狀態(tài)標(biāo)志位keyState,如果其值為True,則意味著對應(yīng)的按鍵按下;反之,則松開,程序運(yùn)行時將按鍵讀取后清除標(biāo)志位。如圖9為鍵盤模塊程序流程圖。
4.3 選項(xiàng)管理控制模塊
若當(dāng)前的操作界面屬于“選項(xiàng)界面”,由于設(shè)置的參數(shù)較多,將選項(xiàng)頁面分為幾個頁面設(shè)置,按下“Up”和“Down”鍵或直接按數(shù)字鍵,可選擇對應(yīng)的頁面。如圖10為選項(xiàng)管理控制模塊流程圖。
為了便于分析,以設(shè)置頁面為例來說明。設(shè)置頁面共分為5頁來設(shè)置,包括系統(tǒng)參數(shù)設(shè)置頁面、門限參數(shù)設(shè)置頁面、Modbus設(shè)置頁面、以太網(wǎng)設(shè)置頁面及CAN設(shè)置頁面,當(dāng)從主菜單選擇設(shè)置進(jìn)入設(shè)置頁面后,可按數(shù)字鍵或上下鍵選擇頁面。比如按2鍵進(jìn)人設(shè)置頁面中的門限設(shè)置,如圖11所示。
此時按回車可對數(shù)值進(jìn)入輸入設(shè)置,圖中的2/5為當(dāng)前的頁面提示,2為第2頁,5為總頁數(shù)。
4.4 數(shù)據(jù)輸入模塊
若當(dāng)前的操作頁面屬于“置數(shù)界面”,使用數(shù)字鍵輸入滿足用戶要求的任何數(shù)值,例如圖11中的門限設(shè)置中的數(shù)值輸入。數(shù)據(jù)輸入模塊的程序流程圖如圖12所示。
利用上述模塊,只需少量的程序代碼就可以靈活地實(shí)現(xiàn)選項(xiàng)、修改數(shù)據(jù)及切換操作界面等功能。
5 結(jié)束語
本設(shè)計(jì)采用C語言編程,所選單片機(jī)為STC12CSA60S2,盡管其程序存儲器只有60kB,但卻實(shí)現(xiàn)了30多頁操作界面的顯示和切換,以及數(shù)據(jù)設(shè)定和查詢等人機(jī)交互功能,同時還實(shí)現(xiàn)了監(jiān)控,控制和通信功能。