单片机原理及应用课程设计报告书题目:时钟计时器的设计姓名:学号:专业:电气工程及其自动化指导老师:周令设计时间:2011年4月电子与信息工程学院目录1. 引言 (1)1.1. 设计意义 (1)1.2. 系统功能要求 (1)2. 方案设计 (1)2.1. 数字时钟计时器设计方案论证 (1)2.2. 硬件系统的总体设计框图 (2)3. 硬件设计 (2)4. 软件设计 (3)4.1. 主程序 (3)4.2. 显示子程序 (4)4.3. 定时器T0中断服务程序 (4)4.4. 定时器T1中断服务程序 (5)4.5. 调时功能程序 (6)4.6. 秒表功能程序 (6)4.7. 闹钟时间设定功能程序 (6)5. 调试及性能分析 (7)5.1. 硬件调试 (7)5.2. 软件调试 (7)5.3. 性能分析 (8)6. 设计总结 (8)7. 附录A:汇编源程序 (9)8. 附录B:作品实物图片 (26)9. 参考文献 (27)时钟计时器的设计1.引言1.1.设计意义随着时代的进步和发展,单片机技术已经普及到我们生活,工作,科研,各个领域,已经成为一种比较成熟的技术,本文将介绍一种基于单片机控制的数字时钟计时器,本数字时钟计时器,可以显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)及定时设定提醒(蜂鸣器)等功能。
人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字时钟计时器就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从单片机技术入手,一切向着数字化控制,智能化控制方向发展。
本设计所介绍的数字时钟计时器与传统的计时器相比,具有读数方便,操作简单,计时精准,还能实现整点提醒,定时提醒等功能。
其输出时间采用数字显示,主要用于对时间要求精度高的场所,或科研实验室使用,该设计控制器使用单片机AT89C52,用6位共阳极LED数码管以串口传送数据,实现数字显示功能,能准确达到以上要求。
1.2. 系统功能要求用单片机及6位LED数码管显示时、分、秒,以24小时计时方式运行,能整点提醒(短蜂鸣,次数代表整点时间),使用按键开关可实现时、分调整,秒表/时钟功能转换,省电(关闭显示)及定时设定提醒(蜂鸣器)等功能。
2.方案设计2.1. 数字时钟计时器设计方案论证为了实现LED显示器的数字显示,可以采用静态显示法和动态显示法。
由于静态显示法需要数据锁存器等硬件,接口复杂一些,又考虑到时钟显示只有6位,且系统没有其他复杂的处理任务,所以决定采用动态扫描法实现LED的显示。
单片机采用易购的AT89C52系列,这种单片机具有足够的空余硬件资源,可以实现其他的扩充功能。
如果考虑使用电池供电,则可采用LV 系列单片机。
2.2. 硬件系统的总体设计框图时钟计时器硬件系统的总体设计方框图如图2-1所示,控制器采用单片机AT89C52,数字输出采用6位共阳极LED 数码管以动态扫描法实现数字显示。
图2-1 硬件系统的总体设计方框图3. 硬件设计时钟计时器的硬件电路如图2.2所示。
该电路采用AT89C52单片机最小化应用设计,采用共阳7段LED 显示器,P0口段码数据,P2.0~P2.5口作列扫描输出,P1.0,P1.1,P1.2,P1.3口接4个按钮开关,用于调时及功能设置,P1.7端口接5V 的小蜂鸣器,用于按键发音及定时提醒、整点到时提醒等,为了提供共阳LED 数码管的列扫描驱动电压,用三极管9012做电源驱动输出,采用12MHZ 晶振,可提高秒计时的精确性。
6位LED 显示器 列驱动按键开关蜂鸣器 AT89C52 P0 单片机 控制器P2图3-1 时钟计时器的硬件电路4.软件设计4.1. 主程序本设计中计时采用定时器T0中断完成,秒表使用定时器T1中断完成。
主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。
其主程序执行流程如图2.3所示。
图4-1 主程序流程图4.2. 显示子程序时间显示子程序每次显示6个连续内存单元的十进制BCD码数据,首地址在调用显示程序时先指定。
内存中50H~55H为闹钟定时单元,60H~66H为秒表计时单元,70H~75H为时钟显示单元。
由于采用7段共阳极LED数码管动态扫描实现数据显示,所以显示用十进制BCD码数据的对应段码存放在ROM表中。
显示时,先取出内存地址中的数据,然后查得对应的显示用段码从P0口输出,P2口将对应的数码管选中供电,就能显示该地址单元的数据值。
为了显示小数点及“—”、“A”等特殊字符,在显示班级和计时时应采用不同的显示子程序。
4.3. 定时器T0中断服务程序定时器T0用于时间计时。
定时溢出中断周期设为50ms,中断进入后先进行定时中断初值校正,当中断累计20次时,对秒计数单元进行加1操作。
时钟计数单元地址分别在70H~71H(秒)、76H~77H(分)、78H~79H(时)中,最大计时值为23时59分59秒。
7AH单元内存放“熄灭符”数据(#0AH),用于时间调整时的闪烁功能。
在计数单元中,采用十进制BCD码计数,满10进位。
T0中断计时程序流程图如图2.4所示。
图4-2 T0中断计时程序流程图4.4. 定时器T1中断服务程序T1中断程序用于指示时间调整单元数字的闪烁或秒表计数,在时间调整状态下,每过0.3s左右,将对应调整单元的显示数据换成“熄灭符”数据(#0AH).这样,在调整时间时,对应调整单元的显示数据会间隔闪亮。
在做秒表计时时,每10ms中断一次,计数单元加1,每100次为1s.秒表计数单元地址在60H~61H (10毫秒)、62H~63H(秒)、64H~65H(分)中,最大计数值为99分59.99秒。
T1中断服务程序流程图如图2.5所示。
图4-3 T1中断服务程序流程图4.5. 调时功能程序调时功能程序的设计方法是:按下P1.0口按键,若按下时间小于1s,则进入省电状态(数码管不亮,时钟不停);否则进入调分状态,等待操作,此时计时器停止走动。
当再按下P1.0口按键时,若按下时间小于0.5s,则时间加1分钟;若按下时间大于0.5s,则进入小时状态。
按下P1.1口按键时,可进行减1调整。
在消失调整状态下,当按键按下的时间大于0.5s时,退出时间调整状态,时钟从0s开始计时。
4.6. 秒表功能程序在正常时钟状态下,若按下P1.1口按键,则进行时钟/秒表显示功能的转换,秒表中断计时程序启动,显示首地址改为60H,LED将显示秒表计时单元60H-65H中的数据。
按下P1.2口的按键开关,可实现秒表清0、秒表启动、秒表暂停功能;当再按下P1.1口按键时,关闭T1秒表中断计时,显示首址又改为70H,恢复正常时间的显示功能。
4.7. 闹钟时间设定功能程序在正常时钟状态下,若按下P1.3口的按键开关,则进入这顶闹时调分状态,显示首地址改为50H。
LED将显示50H-55H中的闹钟设定时间,显示式样为00:00—,其中高2位代表时,低2位代表分,在定时闹铃时精确到分。
按P1.2键,分加1;按P1.0键,分减1.若再按P1.3键,则进入时调整状态,显示式样为00:00:—,再按P1.2键,时加1,按P1.0键,时减1.按P1.1键,闹铃有效,显示式样变为00:00:-0;再按P1.1键,闹铃无效,显示式样又变为00:00:—。
再按P1.3键,调整闹钟时间结束,回复正常时间的显示。
在闹铃时,可按一下P1.3口的按键开关使蜂鸣停止,不按则蜂鸣器将鸣叫1min 后自行停止。
在设定闹钟后,若要取消闹时功能,则可按下P1.3键,当听到“滴”的一声时表明已取消了闹铃功能。
5.调试及性能分析5.1. 硬件调试在上电前先对照硬件电路原理图检查电路板的焊接情况,看有没有虚焊及漏焊的地方,检查的方式是用万用表欧姆档对照电路原理图一块块的检查,最主要的是对数码管之间连接的检查,这一块接线较多,检查时一定要每一个管脚都对应上,比如a脚对a脚,b脚对b脚,按此顺序一步步检查。
接着就是列驱动电路的检查也就是三极管的检查,先要弄清三极管的每个脚对应的是哪个极,然后再按线路检查。
最后是单片机的检查,先要检查是否接入正负极,其次要检查晶振是否接上,后再检查其他部位。
待所有都检查完后再上电,此时一般都没什么问题,都能得出实验现象。
我在调试时主要问题是晶振没有接入,所以刚开始只是显示0而没其他现象,后来接入后就好了。
5.2. 软件调试软件调试是在Keil C51编译器下进行的,主要改的地方是日期显示地方。
在提供的汇编源程序中,显示日期和学号的子程序中将STAB表,启动时显示2006年12月23日、C04-2-28(学号)用STAB:DB0AH,0AH,0AH,0AH,0AH,0AH,08H,02H,0CH,02H,0CH,04H,00H,0B H,0AH,0AHDB03H,02H,0CH,02H,01H,0CH,06H,00H,00H,02H,0AH,0AH,0AH,0AH, 0AH,0AH改为STAB:DB0AH,0AH,0AH,0AH,0AH,01H,05H,00H,02H,02H,05H,03H,08H,00H, 0AH,0AHDB00H,02H,0CH,05H,00H,0CH,01H,01H,00H,02H,0AH,0AH,0AH,0AH,0 AH,0AH通过编译可以正确显示学号:083522051 日期:2011-5-20,然后通过下载工具将此程序烧到单片机内。
5.3. 性能分析根据设计程序的分析可知,LED显示器动态扫描的频率约为167Hz,实际使用观察时完全没有闪烁。
由于计时中断中加了中断延时误差处理,所以实际计时精度很高,可满足多种场合要求。
根据设计,可以设计一个滚动显示子程序,使制作日期,学号以一定速度滚动显示。
6.设计总结通过此次的单片机课程设计,使我学到了很多知识,也提高了动手实践能力。
在这次课程设计中,我们首先要进行原理图的设计,然后把所有原件检测和整理好,待所有的元器件配齐后再进行元件的布局,布局的好坏很重要,一方面它会影响到整体的美观性,另一方面也影响焊接的难易程度及用线的数量。
接着就是要对原理图进行分析,这是至关重要的环节,原理是否弄懂直接关系到实验能不能成功,原理图的分析主要包括弄懂各芯片、各器件的功能,比如说要清楚74LS244芯片的各引脚图的功能,还要知道6位LED数码管的引脚图以及三极管的各个脚对应的是哪个极等问题。
在这些都弄懂后接下来就是焊接了,,焊接时既要要焊的牢,又要焊的美观,这些都需要在焊接过程中十分注意。
焊接工作完成后需要进行调试,调试一般情况下都会出现各种各样的问题,幸运的是,我第一次调试就成功了,从而证明了硬件没问题啦。