单片机在显示时,往往要用到动态扫描,比如共阳或共阴数码管显示,8×8点阵显示等。但是有实时操作,比如有键盘扫描时,动态显示扫描占用了大量的CPU时间,从而耽误了实时检测。或者键盘延时操作时,显示有闪烁的现象,如何解决这一问题呢?如果把主程序这条流程线和动态显示扫描流程线分开考虑,则可以很好地解决这一难题。主程序中进行实时键盘扫描,用定时器作动态显示扫描,两条线分开处理,互不干扰,相得益彰。
范例一:99s可预设定时器
1. 电原理图(见图1)
图1
2. 要求如下
(1) 使用89C51 单片机, 实现0 ~ 99s 倒计时/ 定时电路。其中VCC使用+ 5V 外接电源。
(2)按键S1,每按一次可加1 预设计时/ 定时时间,按键S2 为启动键,启动后采用倒计时方式运行,当运行到零后指示灯以亮半秒、灭半秒的方式工作。
(3)当运行到零,以指示灯方式工作后,按键S1,可取消,并且加1预设时间。
3. 程序说明
从上例源程序中可以看出,定时器T0作为动态显示扫描中断子程序,定时器T0设置为自动重装载模式,初值为6,计250次后产生中断,如晶体采用12MHz,则4次中断后的时间为1ms,可以显示一个数码管,等下一个1ms时间到后,再显示下一个数码管。而在主程序中则完成键盘扫描以及扫描后的设置。
范例二:数字钟电路
1. 电原理图(见图2)
图2