艾 紅,萬明明
(北京信息科技大學(xué) 自動化學(xué)院 控制工程系,北京 100192)
高新技術(shù)的迅猛發(fā)展,為儀器儀表的發(fā)展提供了強大的推動力。儀器儀表產(chǎn)品的高科技化必將成為儀器儀表科技與產(chǎn)業(yè)的發(fā)展主流。儀表的發(fā)展朝著數(shù)字化、智能化、網(wǎng)絡(luò)化、多功能化的方向快速趨近。同時儀表性能也不斷提高,如速度更快、靈敏度更高、穩(wěn)定性更好等[1]。智能儀表火災(zāi)報警儀監(jiān)控系統(tǒng)能夠通過人機交互實現(xiàn)儀表功能??梢允够馂?zāi)報警儀當(dāng)溫度超出上限時實現(xiàn)報警??梢栽O(shè)置時間實現(xiàn)實時顯示時間??梢栽O(shè)置房間號和對應(yīng)報警上限值。智能儀表的數(shù)據(jù)輸入編輯、光標(biāo)閃爍、選擇菜單中相應(yīng)功能、時間設(shè)置、實時時間顯示等監(jiān)控程序在火災(zāi)報警儀中起著關(guān)鍵的作用。
智能儀表火災(zāi)報警儀監(jiān)控系統(tǒng)實現(xiàn)的功能有顯示當(dāng)前時間、設(shè)置時間值、設(shè)置報警上限、定檢查詢、查看報警信息、溫度巡檢及系統(tǒng)初始化。進入這些功能的主要方式是從功能菜單進入,火災(zāi)報警儀設(shè)置了一個主菜單和一個二級菜單。當(dāng)屏幕處于任何狀態(tài)下,按下鍵盤中的菜單鍵即可進入系統(tǒng)主菜單,主菜單將顯示四行漢字,分別是“時間信息”,“設(shè)置上限”,“定檢”和“報警信息”。通過上下鍵選中某一行后可以執(zhí)行相應(yīng)功能,當(dāng)選中“時間信息”并按下確認(rèn)鍵時,屏幕將顯示二級菜單,二級菜單顯示兩行漢字,提供了兩項選擇“顯示時間”與“設(shè)置時間”
智能儀表火災(zāi)報警儀需要記錄報警發(fā)生的時間。允許操作員實現(xiàn)設(shè)置時間值的功能。操作員手工從鍵盤置入年、月、日、時、分、秒信息。具有當(dāng)前輸入位的光標(biāo)閃爍功能,具有時間值輸入錯誤時的退格刪除功能,具有輸入錯誤數(shù)據(jù)時的錯誤提示功能。時間設(shè)置功能的顯示畫面如圖1所示。

圖1 設(shè)置時間值功能畫面
在菜單處理程序中,程序設(shè)置了一個功能號存儲單元。當(dāng)操作員通過鍵盤操作選中了設(shè)置時間,那么當(dāng)按下確認(rèn)鍵時,程序?qū)⑹褂霉δ芴D(zhuǎn)執(zhí)行調(diào)用設(shè)置時間程序,完成執(zhí)行設(shè)置時間的操作。
智能儀表火災(zāi)報警儀采用DS1302時鐘芯片實現(xiàn)時間的實時顯示。能夠及時刷新屏幕保證時間顯示的準(zhǔn)確性。時間顯示功能為操作員提供當(dāng)前的時間信息,也可以對時間設(shè)置功能進行驗證。為了時間顯示不打斷正常的溫度采集程序,時間值的刷新功能放在了整個溫度采集周期的最后一個階段,即當(dāng)完成了整個溫度采集周期后才刷新一次顯示時間。又由于一個溫度采集周期的時間不能保證為一秒鐘,因此為了顯示時間的準(zhǔn)確,時間顯示功能提供的時間值只精確到了“分”。為了補償因為缺少“秒”時間的跳動而造成的死板界面,該功能在顯示時間界面上增加了一個動態(tài)顯示,在每次刷新時間時,界面的上下沿都會增加一個點或者消除一個點,讓人能夠感到時間在走動。顯示時間的畫面如圖2所示。

圖2 時間顯示畫面
火災(zāi)報警儀中采用DS18B20數(shù)字溫度傳感器作為感溫元件,系統(tǒng)中存儲器由24C256組成,用于存儲報警信息。系統(tǒng)初始化功能完成的任務(wù)是重寫存儲器E2PROM中的傳感器序列號,重寫報警上限值和清空報警信息存儲區(qū),同時還將對傳感器寫入默認(rèn)報警上限值。其目的是在系統(tǒng)第一次運行或更換了E2PROM芯片后執(zhí)行系統(tǒng)初始化功能,以寫入系統(tǒng)正常運行所必需的信息。由于系統(tǒng)初始化功能可能會丟失一些有用信息,因此初始化功能并沒有在主菜單中顯示,而需要操作員在菜單狀態(tài)下輸入功能碼方可實現(xiàn),因此具有一定的級別并防止誤操作。在執(zhí)行初始化程序之前,屏幕還將提示是否進行初始化的確認(rèn)信息,以防誤操作引起不必要的損失。
智能儀表監(jiān)控功能的實現(xiàn)需要鍵盤和顯示器的密切配合?;馂?zāi)報警儀中使用的RT12864M液晶顯示器不僅可以顯示漢字,而且在一個漢字位置可以顯示兩個ASCII碼所對應(yīng)的字符。在進行顯示操作時,為了方便顯示數(shù)據(jù)的定位,顯示器為每個漢字顯示位定義了一個地址,地址在實際顯示屏中的相對位置如表1 所示。
基于串行接口的漢字液晶顯示器RT12864M,為了實現(xiàn)正確顯示,需要向液晶顯示器串行傳送3個字節(jié)。當(dāng)向液晶顯示器發(fā)送指令或數(shù)據(jù)時,如果發(fā)送第1個字節(jié)為F8H,則后續(xù)字節(jié)2和字節(jié)3為指令內(nèi)容。如果發(fā)送第一個字節(jié)為FAH,則后續(xù)字節(jié)2和字節(jié)3即為要顯示數(shù)據(jù)的ASCII碼或漢字機內(nèi)碼的高字節(jié)和低字節(jié)。向液晶顯示器發(fā)送三個字節(jié)的子程序為PR1。PR1子程序中將使用DATA3和DATA2存儲器單元的內(nèi)容。單片機內(nèi)部RAM的DATA2單元存放有要發(fā)送的指令或數(shù)據(jù),DATA3單元存放有要發(fā)送的第1個字節(jié)內(nèi)容。
屏幕顯示是為了對操作過程輸出可視化信息,是實現(xiàn)監(jiān)控功能不可缺少的一部分。設(shè)計中采用的液晶顯示器操作方式,按照一次性顯示字符的多少,可分為單個地址顯示和連續(xù)多個地址顯示兩種方式。單個地址顯示的含義是,每次顯示時都要先向顯示器發(fā)送一個字節(jié)的顯示地址,然后發(fā)送兩個字節(jié)的顯示數(shù)據(jù);而連續(xù)多個地址顯示的含義是,一開始時先向顯示器發(fā)送一個字節(jié)的顯示起始地址,然后接著向顯示器發(fā)送一串連續(xù)顯示的數(shù)據(jù)。
單個地址顯示通常用于顯示單個數(shù)據(jù)或多個地址不連續(xù)的數(shù)據(jù)。如時間顯示就采用了單個地址顯示方式。在每次時間更新時,屏幕上的內(nèi)容:“年”、“月”、“日”、“時”、“分”并不更新,而更新的僅是時間數(shù)據(jù)。由于在該界面下,時間數(shù)據(jù)的顯示地址并不連續(xù),因此只能用單個地址顯示方式顯示。
連續(xù)多個地址顯示通常用于顯示多個連續(xù)地址的數(shù)據(jù)。例如監(jiān)控功能實現(xiàn)中各種功能界面的切換,由于各功能的界面差異較大,因此在剛進入時需要調(diào)用刷屏顯示,此時的顯示可以用連續(xù)多個地址顯示方式。這時只需發(fā)送給顯示器一個首地址,然后連續(xù)將顯示數(shù)據(jù)發(fā)送給顯示器,這樣能夠節(jié)省多次發(fā)送地址的時間,提高顯示效率。
數(shù)據(jù)輸入與編輯功能包括了一段光標(biāo)閃爍功能,實現(xiàn)原理是由一位狀態(tài)標(biāo)記位來決定光標(biāo)的顯示或隱藏。光標(biāo)閃爍程序根據(jù)目前光標(biāo)的顯示位置以及光標(biāo)狀態(tài)亮和滅的標(biāo)記位來更新光標(biāo)所在的顯示地址內(nèi)容。程序設(shè)計時MARK15為光標(biāo)亮或滅的標(biāo)志。MARK15=1表示光標(biāo)亮,而MARK15=0表示光標(biāo)滅。光標(biāo)閃爍即實現(xiàn)閃爍下劃線__的功能。在程序設(shè)計時要考慮光標(biāo)__所處的位置。由于一個漢字顯示位置為兩個數(shù)字,兩個數(shù)字的顯示需要向液晶顯示器發(fā)送兩個數(shù)字的ASCII碼。5FH為光標(biāo)__的ASCII碼,執(zhí)行此程序前高位數(shù)字的內(nèi)容存放在R5寄存器中,低位數(shù)字的內(nèi)容存放在R6寄存器中。程序執(zhí)行時如果光標(biāo)在高位,則R5=5FH,R6的內(nèi)容為數(shù)字。如果光標(biāo)在低位,則R5的內(nèi)容為數(shù)字,R6=5FH。程序中首先根據(jù)標(biāo)志MARK15判斷光標(biāo)是亮還是滅,如果MARK15=1,說明光標(biāo)處于亮的狀態(tài),則顯示器將顯示R5和R6對應(yīng)的內(nèi)容。如果MARK15=0說明光標(biāo)處于滅的狀態(tài),則要判斷此時光標(biāo)處于高位還是低位,光標(biāo)在高位時,使R5寄存器值=20H,R6的內(nèi)容保持不變,此時顯示器對應(yīng)地址的高位顯示空格即滅,而顯示器對應(yīng)地址的低位顯示R6寄存器的內(nèi)容。如果MARK15=0光標(biāo)處于滅的狀態(tài),而光標(biāo)在低位時,高位R5的內(nèi)容保持不變,使R6寄存器值=20H,此時顯示器對應(yīng)地址的高位顯示R5寄存器內(nèi)容,而顯示器對應(yīng)地址的低位顯示空格即滅。程序執(zhí)行前R7寄存器內(nèi)容為要顯示數(shù)字所在顯示器地址。實現(xiàn)光標(biāo)閃爍程序如下:


光標(biāo)狀態(tài)亮和滅的標(biāo)記位MARK15在溫度采集程序運行一個周期后,將MARK15進行一次求反操作,并調(diào)用一次光標(biāo)閃爍程序。通過與上述程序的結(jié)合就可以解決在數(shù)據(jù)輸入和編輯時光標(biāo)的閃爍問題。
在軟件編程方面,菜單的編寫主要集中在如何實現(xiàn)由鍵盤控制按鍵即控制向上鍵↑或向下鍵↓的移動選中相應(yīng)功能,以及按下確定鍵OK時執(zhí)行相應(yīng)功能的程序跳轉(zhuǎn)。由于火災(zāi)報警儀采用的液晶顯示器RT12864M在相鄰的行與行之間,顯示器顯示字符的地址不連續(xù)。因此,在鍵盤按鍵操作向上鍵↑向上選中一行或向下鍵↓向下選中一行時,程序需要逐行比較以確定所選中的行。選中行在顯示器上用行號標(biāo)志→來指示。
程序設(shè)計時為了實現(xiàn)功能跳轉(zhuǎn),對不同功能設(shè)置了不同功能號,溫度巡檢界面功能號為00H,剛進入主菜單時功能號為01H,此后功能號根據(jù)向上鍵↑和向下鍵↓進行加減或者由程序改變功能號。以輸入向上按鍵↑為例,當(dāng)操作員按下鍵盤上的↑鍵時,選中上一行菜單,顯示器上新選中的一行將重新顯示選中行號標(biāo)志 →。按鍵↑實現(xiàn)上移一行以及對應(yīng)功能號計算的程序如下所示。
程序中設(shè)計了顯示二級菜單MARK27標(biāo)志。MARK27=1,表示處于顯示二級菜單狀態(tài)。存儲單元LINE_NUM表示存放當(dāng)前指針行號。一級菜單即主菜單中,當(dāng)行號標(biāo)志 → 指示在第1行、第2行、第3行和第4行時,功能號分別為01H、02H、03H和04H。二級菜單中,當(dāng)行號標(biāo)志 → 指示在第1行和第2行時,功能號分別為0AH和09H。




SEC_M為二級菜單中按鍵↑的處理程序。CL_PRINT為換行顯示子程序。當(dāng)對主菜單或二級菜單進行操作時,選中一行漢字,則有對應(yīng)行號標(biāo)志指示。行號標(biāo)志為 →。程序設(shè)計時顯示器顯示當(dāng)前選中行號標(biāo)志 → 的漢字機內(nèi)碼為A1FAH,每次根據(jù)新行號決定了當(dāng)前選中行號標(biāo)志 → 的顯示地址。新行號的顯示地址在R2寄存器中存放。而原行號的顯示地址在LINE_NUM內(nèi)存單元中存放。菜單在顯示器第1行、第2行、第3行和第4行的顯示地址分別為81H、91H、89H和99H。由于顯示地址為漢字顯示地址,因此清除原行號的選中標(biāo)志 → 時,需在原行號的相應(yīng)地址向液晶顯示器發(fā)送兩個空格的ASCII碼20H。
近年來新型微處理器技術(shù)與智能化技術(shù)的不斷發(fā)展和推廣應(yīng)用,迅速改變著儀器儀表的本質(zhì)特征,并使其具備和擁有了傳統(tǒng)儀器儀表無法實現(xiàn)的、全新的功能[2]。智能儀表人機交互功能使用戶能夠?qū)χ悄軆x表進行狀態(tài)干預(yù)和數(shù)據(jù)輸入;也能夠向用戶報告運行狀態(tài)與處理結(jié)果。內(nèi)含微處理器的智能儀表不僅精度高、測量范圍廣,而且在復(fù)雜數(shù)據(jù)處理,人機對話過程中都具有常規(guī)儀表所無法比擬的優(yōu)點[3]。設(shè)計的智能儀表火災(zāi)報警儀監(jiān)控程序可靠性高,性能穩(wěn)定,實現(xiàn)了多點溫度監(jiān)視與報警功能。
[1] 孫迎遠,郭國選,張婷.控制儀表在我國測控領(lǐng)域中的應(yīng)用及展望[J].內(nèi)江科技,2008,(1):41-43.
[2] 吳錚,周劍利.智能測溫儀表的研究與實現(xiàn)[J].儀器儀表與分析監(jiān)測,2007,(3):30-31.
[3] 周燕玲,王羨欠.工業(yè)控制中通用型智能儀表系統(tǒng)設(shè)計[J].微計算機信息,2008.