实验六 时、分、秒计时器的设计.doc
PAGE4
PAGE9
实验六时、分、秒计时器的设计
一、实验目的
掌握数码管动态显示的基本方法;
掌握键盘按键控制的实现方法;
根据已知电路和设计要求在实验板上实现时、分、秒计时器。
二、实验内容
1、在STC89C52实验平台上实现时、分、秒时钟,4位数码管上显示分、秒或者时、分。
2、应用键盘控制时间的显示。键盘按键控制“切换时分、分秒显示”、“启动停止”、“加秒显示内容”、“加分显示内容”、“加时显示内容”。
3、根据已知电路和设计要求在PROTEUS平台仿真实现时钟系统。
三、实验原理
流程图如下所示:
开始显示单元清零T0、T1设为16位计数模式
开始
显示单元清零
T0、T1设为16位计数模式
允许T0中断
调用显示子程序
进入功能程序
按下键否?
否
是
开始
现场保护,重置初值
启动下一个50ms
50ms计数器加1
秒单元加1,50ms计数器清0,秒写入秒个位和秒十位
50ms计数器=20?
否
是
分单元加1,秒单元清0,分写入分个位和分十位
秒单元=60?
时单元加1,分单元清0,时写入时个位和时十位
分单元=60?
时单元清0
时单元=24?
中断返回
否
否
否
是
是
是
1、主程序流程图2、定时器/计数器T0中断服务程序流程图
5仿真分析
在ProteusISIS的80C51中载入程序生成的HEX文件,按开始符号运行,在数码管上观察程序运行结果,系统仿真结果如图5.1所示。
设计功能如下:
(1)、初始状态:未按键之前,上电,数码显示00-00-00。程序运行后,从秒针开始自动运行。当秒数到59后,下一秒自动变为00,分针变为01,以此类推。
(2)、调整状态:仿真运行过程中,按p0键,系统暂停,此时,继续按p0无效。第三次按p0,又开始,如此循环。
、设置状态:按下p0暂停后,按p1,则时针加一,按下p2,则时针减一;按两下p0,在按下p1,则分针加一,按下p2,则分针减一。
时间显示格式为:时分秒;
误差分析:实际程序到实验板中的电子钟显示存在一定的误差,误差来源可能为三个方面:第一,在程序运行过程中,时钟周期的不精确导致机器周期与理论值存在一定的差别;第二在中断一秒显示过程中,一些指令需要消耗一定的机器周期,使得一秒延时比实际要长;第三在键抖动的反应程度在运行中比较慢。
5.1实例仿真
总结
通过这次的课程设计我认识到我对单片机的知识学的太少了,对于书本上很多知识还不能灵活运用,都需要去巩固加强,我会在以后的学习中弥补我的不足。我也了解了80C51集成环境和PROTEUS仿真软件的使用,用此软件练习电子时钟的设计,不仅使我熟悉了软件的使用方法,而且复习了单片机编程的相关知识。在使用中,我体验到了单片机的神奇之处,也激发了我不少的兴趣,引领着我不断的探索单片机的未知世界。本次的课程设计,我也学到了一些更重要的东西,那就是如何从理论到实践的转化,怎样将所学到的知识运用于实践。大学的课堂只是在学习专业知识,而我们应当把所学的知识用到我们现实的生活中去。此次的的电子时钟设计给我奠定了一个实践基础,我会在以后的学习生活中磨练自己,使自己变得更加优秀。
在本次的设计中,特别感谢张老师和王老师的指导,在老师的讲解和指导下,我成功的解决了设计中的许多问题,也使我知道了认真的重要性。也感谢同学给我的帮助,没有他们的帮助,我一个人是无法完成的,他们让我明白了学问的真正含义。
OUTBITEQU08002H;位控制口
OUTSEGEQU08004H;段控制口
INCEQU08001H;键盘读入口
LEDBUFEQU60H;显示缓冲
HOUREQU40H
MINUTEEQU41H
SECONDEQU42H
C100USEQU43H
TICKEQU10000
T100USEQU256-50
LJMPSTART
ORG000BH
T0INT:PUSHPSW
PUSHACC
MOVA,C100US+1
JNZGOON
DECC100US
GOON:DECC100US+1
MOVA,C100US
ORLA,C100US+1
JNZEXIT
MOVC100US,#HIGH(TICK)
MOVC100US+1,#lOW(TICK)
INC