在眾多的數控、數顯智能化器件中,很大一部分是沒日沒液、長年累月地工作著的(如電力部門的智能路燈鐘控器、干式變壓器中的智能溫控儀等),這樣對數字顯示部件尤其刺能耗較大手工藝LED數碼管的使用壽命就有很大影響。本文運用單片機的軟件處理,實現類似于微電腦PC機的“靜屏”功能——經一設定時間后自動“消屏”,從而延長了數據管等的使用壽命。在“消屏”期間,數碼管(包括指示燈中的幾個或全部)雖然不亮了,但系統監察信號的輸入和控制開關量的輸出等依然照常進行——所有功能保護不變,只要按動一個任一個輸入鍵,數碼管及指示燈就會恢復顯示(顯示當前應有的即時信息)。 1 “消屏”的實現 一般來講用單片機處理的顯示器件大多數是以循環掃描的方式進行顯示的,而監控的輸入輸出及其相應的指示,又往往與單片機的輸入輸出端口直接聯系。因此,既要“消屏”,又要保住輸入輸出端口隨著監控的具體情況及時更新,以便一旦由“消屏”恢復顯示時就能顯示當前應有的即時信息。至少要有兩點:①需有兩個循環程序,一個是正常顯示時用的主循環程序,另一個則是“消屏”時用的輔助循環程序——保證單片機能正常運行工作;②運用可進行“位”操作的內存字節單元,將輸入輸出端口的信息一一對應地記錄下來。換個角度來講,就是要想對某端口進行有關“位”的邏輯操作,首先要對跟其對應的內存單元進行相關“位”的邏輯操作,然后再賦值給對應的端口。這樣確保了即時信息不會因為“消屏”或偶爾由某種強烈干擾導致程序“跑飛”引起“看門狗”復位,使所有端口都被置“1”而丟失。只有這樣,設定的時間一到,MCU才能“無憂無慮”地跳出主循環而進入輔助循環程序運行,達到“消屏”的目的。一旦恢復顯示,應有的即時信息也隨之顯示,而監控端口能一直處于輸入輸出的即時狀態。 2 “消屏”運行的程序 實現“消屏”運行要牽涉的程序主要有:用以正常顯示的主循環程序、用以“消屏”的輔助循環程序和用以定時設置的時鐘程序。下面以干式變壓器智能溫控儀為例,給出如圖1所示的電原理方框圖以及實現“消屏”功能的三個主要部分的程序,其主流程如圖2所示。該溫控儀是一個以MCS-51系列的單片機AT89C52為核心,具有溫度監察、控制、故障報警、有5位數碼顯示及與PC機通信等功能的智能化儀器。 3 運行程序 3.1 顯示主循環程序 部分位及寄存器的定義 FUNCT EQU 95H ;P1.5為功能鍵輸入端口 FANNER EQU 96H ;P1.6為風機鍵輸入端口 EYRE EQU 97H ;P1.7為巡回鍵輸入端口 SIGN EQU 2FH ;定時到點“消屏”標志位 DECIMAL EQU 6FH ;小數點標志位 SEC EQU 46H ;秒計數寄存器 MIN EQU 47H ;分計數寄存器 HR EQU 48H ;時計數寄存器 INIT_0: ORG 0000H ;程序初始化 AJMP INIT_0 ORG 000BH AJMP T0ZD ORG 001BH AJMP T1ZD ORG 0050H DB0 C0H,0F9H,0A4H,0B0H ;字符的段碼 DB 99H,92H,82H,0D8H DB 80H,90H,0C6H,89H DB 88H,80H,0FFH ORG 0070H INIT_1:MOV 45H,#00H MOV 46H,#00H MOV 47H,#00H MOV 48H,#00H MOV TCON,#00H MOV TMOD,#11H MOV 0C8H, #04H MOV 0CAN,#0B4H MOV 0CBH,#3CH MOV 0CCH,#0B4H MOV 0CDH,#3CH MOV SCON,#00H MOV IE,#0BAH CLR SIGN ;初始化清零“消屏”標志位 LOOP0:MOV R1,#51H ;顯示字段的緩沖區由內存51H單元開始 MOV R2,#04H MOV R3,#05H ;顯示數碼為5位 LOOP1:MOV DPH,#00H MOV DPL,#50H MOV A,@R1 MOVC A,@A+DPTR JNB DECIMAL,LOOP2 ADD A,#02H ;小數點顯示處理 LOOP2:MOV P0,A MOV A,#03H ADD A,R2 MOV P3,A JNB FUNCT,KSM0 ;跳至鍵解釋子程序 JNB FANNER,KSM0 ;跳至鍵解釋子程序 JNB EYRE,KSM0 ;跳至鍵解釋子程序 JNB 72H,LOOP3 ANL 2EH,#0BH CLR 72H LOOP3:JB SIGH,LOOP20;若標志位為“1”則跳之“消屏”循環 LOOP4:LCALL YSCX ;調用循環顯示延時子程序 CLR DECIMAL LOOP5:MOV A,R2 RL A MOV R2,A JB 55H ,LOOP7 LOOP6:CJNE A,#10H,LOOP7 SETB DECIMAL LOOP7:INC R1 MOV P1,2AH ;內存2A記錄值賦予P1口 MOV P2,2BH ;內存2BH記錄值賦予P2口 DJNZ R3,LOOP1 LJMP LOOP0 主循環顯示程序是一個掃描式顯示的主循環。假若程序運行到倒數第十四條“JB SIGN,LOOP20”指令、且標志位“SIGN”(即“2FH”)已被置為邏輯“1”時,程序將跳出掃描顯示主循環,而進入“消屏”循環運行。其中,內存寄存器2AH、2BH是可位尋址操作的——分別對應于端口P1、P2的內存字節單元,它們的數據由具體運算監控程序賦予。另外,掃描顯示主循環程序中所牽涉到的諸如“跳至鍵解釋子程序”中的“鍵解釋子程序”、“調用循環顯示延時子程序”中的“循環顯示延時子程序”,以及下文中的溫度信息采訪監控程序等,由于篇幅的關系都沒有具體闡述,因為,它們不影響關于“消屏”的討論。 3.2 “消屏”輔助循環程序 LOOP20:INB SIGN,LOOP23 MOV P1,#0FBH MOV P3,#03H ORL 0D0H,#18H MOV R5,#25H LOOP21:MOV R6,#2AH LOOP22:DJNZ R6,LOOP22 DJNZ R5,LOOP21 ANL 0D0H,#0E7H MOV P0,#00H ;保證顯示輸出為“0” ——“消屏” ANL P1,#0E7H ;而監控通信端口仍正常工作 MOV P3,#03H JNB FUNCT,LOOP23 JNB FANNER,LOOP23 JNB EYRE,LOOP23 LJMP LOOP20 LOOP23:MOV P1,2AH ;記錄內容賦值給相應端口 MOV P2,2BH CLR SIGN LJMP LOOP1 在“消屏”循環程序運行中,當其倒數第6、第7、第8條指令中任一條指令的條件轉換成立,即有任一按鍵按下時,程序便退出“消屏”循環,回到主循環運行,進而由鍵解釋子程序對該按鍵作出解釋響應。“消屏”輔助循環程序中包含子延時程序。其實,整個“消屏”循環便是以延時程序做主體來運行“等待”的——等待時機(如有鍵按入或某種因素引起復位)跳出“消屏”運行程序,并“清零”標示位“SIGN”,回到掃描顯示主循環中去。“消屏”輔助循環程序只是為了“消屏” ——數碼管及LED指示燈中的幾個或全部不亮,而不影響系統的其它功能。 3.3 時鐘程序 T0ZD: PUSH ACC ;時鐘程序 MOV TL0,#0B4H MOV TH0,#3CH INC 45H MOV A,45H CJNE A,#0AH,FW0 INC 46H ;秒計數 INC 40H ;40H為2s間隔輔助內存單元 MOV 45H,#00H MOV A,40H CJNE A,#02H,T0ZD1 MOV 40H,#00H LCALL VISIT ;調用采用溫度信息子程序 T0ZD1:MOV A,46H CJNE A,#3CH,FW0 INC 47H ;分計數 MOV 46H,#00H MOV A,47H CJNE A,#3CH,FW0 INC 48H ;時計數 MOV 47H,#00H MOV A,48H CJNE A,#02H,FW0 MOV 48H,#00H SETB SIGN ;“消屏”標志位置“1” FW0:POP ACC RETI 時鐘程序其實是片內定時/計數器0的中斷服務程序。這段程序給出的是開機或最后一次按鍵后2個小時“消屏”標志位“SIGN”置“1”,即系統將進入“消屏”運行狀態,直到有鍵按下或某種因素引起復位時才“喚醒”回到掃描顯示主循環。當然,可根據具體的需要將時間設置成幾秒鐘、幾分鐘、幾十小時甚至幾天后才把“消屏”標志位“SIGN”置為邏輯“1”,使系統進入“消屏”運行狀態。中斷服務程序的另一個重要功能就是定期汲取并處理信息。以上中斷服務程序是每間隔2s采訪一次溫度信息和端口監控狀況用以運算分析,以便及時對系統作出相應的控制。 結束語 單片機控制數顯的“消屏”處理,類似于微電腦PC機的“靜屏”功能。從某種意義上講是延長了系統中部分元器件的使用壽命,而不影響單片機控制系統其它功能。這種貓頭鷹頭“睜一只眼,閉一只眼”的工作方式對那些“沒日沒夜、長年累月”運行著的儀器設備來說是不無裨益的。再者,由多個單片機組合的控制系統運用類似工作方式,在不影響系統監控功能的前提下,此“休眠”彼“工作”互為調協,互相應和,或許是一著延長元器件使用壽命的好舉措。 |