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

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

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


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




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