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