计时秒表的单片机设计
[摘 要] 本文介绍了如何利用单片机中的定时器和外围部件构成一个99s秒表,能实现0~99秒的计时、停止、归零等功能,从而实现时间控制智能化的方法,摆脱了传统由人来控制时间的长短的不便。
[关键词] AT89S51芯片 74LS47译码/驱动器 共阳级LED数码管
0.前 言
单片机系统的开发应用给现代工业带来了一次新的技术革命,自动化,智能化均离不开单片机的应用。各种计时和定时装置也层出不穷,本设计就是一例。
1.设计要求和思路
第一次按下T1后,由单片机的处理芯片发出二进制编码。由于驱动显示的是十进制数,所以需要加一个译码器。开始计时后,当个位数显示到“9”后,便会向十位数进位。同时个位数也将返回初值,重新进行计时。当十位数与个位数都显示“99”时,说明显示以达到了所设定的最大值。同时,数码管显示也将归零,显示“00”,重新开始;则说明译码器还应该具有自动前、后沿灭零控制。第二次按下T1后,计时停止;第三次按下T1后,计时归零。则说明译码器还应该具有一个灭灯输入,它用来控制灯的输出或禁止输出。
2.硬件结构框图(如图1)
根据设计思路要求,可以知道本系统由以下几个部分组成:电源、输入按键开关、单片机处理芯片、译码器、数码管显示器等五部分组成。
3.硬件组成图
本电路硬件部分主要由按键控制部分和译码驱动与显示两部分组成。其中按键控制部分采用独立式按键,独立式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。译码驱动与显示部分由显示器接口芯片与显示器构成。硬件电路如图2所示。
图2 硬件电路图
4.程序及其说明
根据电路的设计要求,其控制程序流程如图3所示。在编写程序的过程中,先进行各种初始化,其次编写出主程序,再将模块程序分成3次按键按下的独立的按键程序模块,分别进行独立设计、调试和查错,然后再将调试正确的子程序连接成一个完整的子程序。最后将主程序和子程序连成了一个完整的程序。
图3 程序流程图
程序清单
ORG 00H
START: ANL P2,#00H ;显示00
JB P3.5,$ ;T1=0?有键按下?
CALL DELAY1 ;消除抖动
JNB P3.5,$ ;T1=1?放开?
MOV R0,#00 ;计时指针初值
L1: MOV A,R0 ;计时指针载入ACC
MOV P2,A ;输出至P2
MOV R5,#10 ;延时1秒
A1: MOV R6,#200
CALL DELAY
DJNZ R5,A1
MOV A,R0 ;计时指针加1
ADD A,#01H
DA A ;做十进位调整
MOV R0,A ;存回计时指针寄存器
JMP L1 ;重复计时
L2: CALL DELAY1 ;第2次按消除抖动
JB P3.5,L3 ;放开了?是则跳至L3停止计时
JMP L2
L3: JB P3.5,$ ;第3次按T1?
CALL DELAY1 ;消除抖动
L4: JB P3.5,START ;放开了?是则跳至START归零
JMP L4
DELAY:
D1: MOV R7,#248 ;0.5毫秒
JNB P3.5,L2 ;第2次按T1?
DJNZ R7,$
DJNZ R6,D1
RET
DELAY1: MOV R6,#60 ;30毫秒
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
RET
END
5.系统调试
程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后逐步将各子程序连接起来总调。联调需要注意的是:各程序模块间能否正确传递参数,根据要求判断是否要对各子程序进行现场保护与恢复。
1、调试前检查各元器件是否完好。
2、接上电源,发现电路不工作,可能出现的问题是在焊锡时,可能出现虚焊、漏焊等;立即寻找虚焊或漏焊的地方,将其焊好。
3、接上电源,发现电路短路,可能出现的问题是在焊锡时,将AT89S51、74LS47的电压和接地接反,应迅速查找上述三元件的连接图,并用万能表测量。
4、接上电源,电路工作,但数码管不显示,可能出现的问题是,1)数码管管脚错接,2)接数码管COM端可能接错,应检测其管脚是否反接。
因篇幅问题不能全部显示,请点此查看更多更全内容