1 任务及要求
1.1设计任务
用3开关控制的两数码显示倒数计时器的Proteus仿真及汇编程序设计。
1.2 设计要求
利用AT89C51单片机的P0端口连接到电路图左边的数码管上,P2端口连接到电路图右边的数码管上, P3.1、P3.3、P3.5分别接三个开关。启动时,两数码管都显示为零,每按下P3.1开关时,给左边显示十位的数码管加一,每按下P3.3开关时,给右边显示个位的数码管加一。然后当按下P3.5开关时启动倒数计时,当左右数码管显示都为零时,LED红灯开始闪烁。
2 设计思想
2.1 硬件设计思想
硬件包括AT89C51芯片,两个数码管,一个红色LED和3个控制开关,在
51芯片外部接一个震荡时钟频率。用51芯片的控制模块,具有按键等功能,并利
用51芯片的P0、P2口作输出信号,P3.1、P3.3、P3.5做控制输入信号,使得数码管显示在软件的控制下工作。
2.2 软件设计思想
采用汇编语言编写程序,程序由一个主函数,3个按键控制子程序和3个延时子程序构成。由主函数实现等待按键,控制左右数码管数字显示和启动倒数计时。当启动倒数计时程序后,程序按步进行让后当条件满足时调用红灯闪烁程序来结束程序。
3 电路原理与电路图
3.1 电路原理
单片机最小系统。一个AT89C51单片机做为控制电路,运用其P0、P2口来控制两数码管显示,通过P3.1、P3.3两按键控制给左右两数码管加数,通过P3.5按键来控制倒数计时。P1.0接LED显示。
1
3.2 电路原理图
4 流程图与算法描述
4.1 系统流程图
如图4.1所示
开始 P3.5=1? 启动倒数计时子程序 P3.1=1? 调用左数码管置数子程序 P3.3=1? 调用右数码管置数子程序
图4.1主函数流程图
2
4.2 置数子程序流程图
如图4.2所示
把R1移入A中 通过MOV A,@A+DPTR调用表格 将A从表格中取得的数显示在左数码管调用延时子程序 将R1加1 NO 判断R1是否为7 YES 将R1置0 返回
图4.2十位显示数码管置数子程序流程图
3
4.3 启动倒计时子程序流程图
如图4.3所示
取R1,R2的数 将R1,R2分别作为一个两位数存入R0 R0自减1 取R0个位,十位数 R0十位,个位数调用表格显示在左右数码管上 调用延时子程序 NO R0=0? YES 红灯闪烁 END
图4.3 启动倒数计时子程序
4
4.4延时子程序流程图
如图4.4所示
R3置数100 R4置数20 20H置数250 NO 20H-1=0? NO R4-1=0? NOR3-1=0? YES 返回
图4.4 延时子程序
5