单片机控制数显“消屏”算是的探讨
扫描二维码
随时随地手机看文章
在众多的数控、数显智能化器件中,很大一部分是没日没液、长年累月地工作着的(如电力部门的智能路灯钟控器、干式变压器中的智能温控仪等),这样对数字显示部件尤其刺能耗较大手工艺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机的“静屏”功能。从某种意义上讲是延长了系统中部分元器件的使用寿命,而不影响单片机控制系统其它功能。这种猫头鹰头“睁一只眼,闭一只眼”的工作方式对那些“没日没夜、长年累月”运行着的仪器设备来说是不无裨益的。再者,由多个单片机组合的控制系统运用类似工作方式,在不影响系统监控功能的前提下,此“休眠”彼“工作”互为调协,互相应和,或许是一着延长元器件使用寿命的好举措。