生活中常因忙于其他事务而忘记煤气灶上煮的东西,或因午睡担心睡过头。本文介绍一个用AT89C2051制作的倒计数定时器,可在1~99分钟内设定定时时间,时间到达时发出“嘟、嘟”报警声提醒,定时过程中数码管显示剩余时间。
电路工作原理:电路由单片机电路、数码显示电路与报警电路组成。AT89C2051、X1、R1、C1组成单片机电路(R1、C1为复位电路,上电瞬间对C1充电使复位端1脚获高电平复位脉冲,单片机进入初始状态)。
数码管DS1、DS2及三极管VT2、VT3、电阻R3~R11组成显示电路,两只数码管分别显示分与十分。由于每只七段数码管(小数点不用)按常规需7×2=14条I/O线,对AT89C2051显然不够,故采用动态扫描显示:将两只数码管七段同名端并连,公共端COM各自独立受I/O控制。AT89C2051向字形输出口送字形码时两只数码管同收相同码,究竟哪位显示取决于COM端——COM由P3.5、P3.7分时控制、经VT2、VT3轮流导通,因视觉暂留,高速轮流点亮给人稳定显示的整体印象。因P1口能灌较大电流,采用共阳数码管。VD1作工作状态指示(定时期间闪烁),VT1、R2、SP1组成报警电路。
S1、S2为定时设定按钮(分别设定分位、十分位),每按一次相应数位加1、到9再按回0,按住不放则每0.2秒跳变。S3为启动按钮,按下启动倒计时,时间到后报警,显示与报警各占0.25秒交替持续60秒;按S3可提前结束报警并回初始状态(显示上一次设定值),便于反复使用同一时间(如口语测试)。
程序用汇编编写,由主程序、定时中断、数码显示、延时模块组成。动态扫描占用CPU时间较多,故采用定时中断计时以减小CPU负担:定时器定时60ms、调用1000次即1分钟。延时子程序(0.5ms)供显示与报警调用,决定显示刷新频率与报警音频频率(均为1000Hz)。字形码查表获得(P1.0空置、输出取1),20H、21H单元存分位、十分位数作查表地址。
印制板采用万能电路板;IC1用AT89C2051、12MHz晶振;D1、D2选共阳LED数码管;报警器用阻抗16Ω无源电磁式蜂鸣器。安装前先将汇编源程序编译成HEX再用编程器写入芯片。