课程设计-基于STC89C52单片机的时钟计时器的设计说明书.doc
《课程设计-基于STC89C52单片机的时钟计时器的设计说明书.doc》由会员分享,可在线阅读,更多相关《课程设计-基于STC89C52单片机的时钟计时器的设计说明书.doc(28页珍藏版)》请在三一文库上搜索。
1、湖南人文科技学院课程设计报告课程名称:单片机原理及应用课程设计设计题目: 时钟计时器 系 别: 通信与控制工程系 专 业: 电子信息工程 班 级: 08级二班 学生姓名: 学 号: 08409206 08409249 起止日期: 2010年12月19日 2010年12月26日指导教师: 教研室主任: 指导教师评语: 指导教师签名: 年 月 日成绩评定项 目权重成绩周杰王世伟1、设计过程中出勤、学习态度等方面0.22、课程设计质量与答辩0.53、设计报告书写及图纸规范程度0.3总 成 绩 教研室审核意见:教研室主任签字: 年 月 日教学系审核意见: 主任签字: 年 月 日24摘 要时钟计时器在现
2、在应用场合非常的广泛,近年来,随着科学技术的进步和时代的发展,人们对时钟的功能和精度提出了越来越高的要求,各种时钟的设计也越来越重要。本设计就是应用单片机强大的控制功能制作而成的多功能时钟,此次课程设计是以STC89C52为主芯片,结合8255芯片,6段LED数码管显示器及蜂鸣器等组成一个简单的多功能时钟计时器,具有时、分、秒的显示及调整功能。采用24小时制,时间显示格式为时、分、秒,并能整点提醒(蜂鸣),并有定时闹钟、秒表计时等功能。通过STC89C52的定时中断来设置时间并用LED数码管显示出来。本设计的一大特点就是在硬件设计中采用实时时钟芯片来实现计时,大大简化了硬件电路,并用C语言编程
3、,从而使设计更加简便易行。经调试,经过按键能实现本次设计要求的时间的调时、闹钟的设定及秒表计时等功能。关键词:时钟;定时闹钟;秒表;单片机目 录设计要求11总体设计方案论论证与对比11.1 方案一11.2 方案二11.3 综合分析22 单元硬件模块设计22.1 DS1302时钟模块22.2 键盘输入设定模块32.3 数码管显示模块42.4 定时模块62.5秒表模块63 系统软件工作流程图63.1 主程序63.2 DS1302实现时间子程序73.3 秒表子程序94 系统功能调试及结果分析94.1 硬件调试94.2 软件调试94.3 结果分析105 详细仪器清单106 总结与思考及致谢11参考文献
4、13附录一 电路原理图14附录二 系统程序15时钟计时器设计要求(1)能显示24小时制时间的小时、分、秒,能整点提醒(蜂鸣);(2)能通过按键设置时间,设置复位;(3)能通过按键设置定时的闹铃(蜂鸣);(4)能通过按键设置秒表计时。1总体设计方案论论证与对比1.1 方案一STC89C52单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用11.0592的晶振就能实现零误差的计时,因此可以利用此功能实现计时,方案一方框图见图1。蜂鸣键盘数码管STC89C52芯片图1 STC89C52单片机内部定时/计数器实现时钟1.2 方案二DS1302是美国DAL
5、LAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行电流充电的能力。方案二框图见图2。蜂鸣DS1302芯片STC89C52芯片键盘8255芯片数码管图2 利用DS1302芯片实现时钟1.3 综合分析根据本设计的要求,要实现一般的时钟功能和秒表功能,如果利用方案一,同时用T0做一般的
6、时钟计时中断和秒表计时,这样在实现秒表的时,时钟的时间计时就会被停下,方案一也可以利用T0做时钟计时中断,用T1做秒表计时中断,但考内到中断的优先级别,因为T0和T1不能同时响应,所以在运行秒表时时间也会停止运行,而在方案二中,利用单片机强大的控制功能,控制DS1302来实现时钟,利用STC89C52单片机内部带有的定时/计数功能实现秒表,这样做资源方面利用的系统资源少,在功能方面不但避免了方案一中实现秒表时需要停止时钟这一缺点,而且还有在系统掉电的情况下,利用DS1302特点,利用备用电池继续给DS1302继续供电,让时钟继续运行。综合两方案的优缺点,方案二为最佳。2 单元硬件模块设计本设计
7、的电路系统比较庞大,其总电路见附录一。以下为各硬件模块的设计。2.1 DS1302时钟模块DS1302芯片的特性介绍:DS1302有主电源/后备电源双电源引脚:Vcc1在单电源与电池供电的系统中提供低电源,并提供低功率的电磁备份;Vcc1在双电池系统中提供主电源。在这种运行方式中,Vcc1里连接到后备电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较打大者供电。当Vcc2大于(Vcc1+0.2V)时,Vcc2给DS1302供电;当Vcc2小于Vcc1时,DS1302由Vcc1供电。各引脚的功能为:1:Vcc2:5V电源。当Vcc2Vcc1+0.2V时,由
8、Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电;2、3:X1、X2 是外接晶振脚 (32.768KHZ的晶振);4:地(GND);5:CE/RST:复位脚;6:I/O:数据输入输出口(双向);7:SCLK:串行时钟,输入;8:Vcc1:备用电池端。DS1302芯片图见图3。图3 DS1302芯片图2.2 键盘输入设定模块在单片机系统中键盘中按钮数量较多,为了减少I/O口的占用,常常将按钮排列成矩阵形式。矩阵式键盘又称行列式键盘,有4个行线和4个列线,组成44行列结构可构成16个按键,组成一个键盘。比直接将端口线用于键盘多出了一倍,而且线数越多,区别越明显。因此
9、适用于按键较多的场合。判断键盘中有无按下:将全部行线置为低电平,然后检测列线的状态。只要有一列电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平与四跟行线相交叉的四个按钮之中。若有列线均为高电平,则键盘无键按下。其键盘硬件图见图4。图4 键盘示意图 判断闭合键盘所在的位置:在确认有键盘按下后,即可进入确定具体闭合键的过程。其办法是:依次将行线置为低电平,即在置某根行线为低电平,其它线为高电平。在确定某跟行线为低电平后,再逐次检测列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按钮就是闭合的按钮,最后返回键值。按键功能表见表1表1 按键功能表按键值功能0时间小时的设置,闹铃小
10、时设置键1时间分的设置,闹铃分的设置键2秒表转换、清零键3秒表计时开始、停止,闹铃转换键4时间复位显示键2.3 数码管显示模块单片机上面有一排6段LED数码管,每个数码管的8段是由芯片8255的PB口控制亮灭,每个数码管的公共脚分别由8255的PA0-PA5经三极管扩流后进行控制,数码管是笔画排序,单片机中的数码管是共阳极的,当公共脚接上电源正极,笔画脚通过一个220欧姆电阻接负极,对应的笔画就会点亮。8255芯片控制数码管电路图见图5。图5 8255控制数码管电路图显示数字0-9的8位二进制码见表2。表2 数码管段选亮灭显示码数字十六进制二进制GCdpDEBFA00xA01010000010
11、xBB1011101120x620110001030x2A,0010101040x390011100150x2C0010110060x240010010070xBA1011101080x200010000090x2800101000注:“0”对应笔画为点亮,“1”对应笔画为熄灭。要在某位数码管上显示一个数字,首先把待显示数字的显示码送给8255的PB口,接着选中要显示的位。例如:要在开发板中最左边的数码上显示一个0,则需要先把0的显示码0xA0送8255的PB口,接着PA0把需要显示的位赋0(低电平),随后让单片机保持这个值不变(比如让单片机进入死循环,如此就可以实现刚提出的要求)。打开电源,
12、下载时钟程序,通过动态扫描,即可实现时间的显示。2.4 定时模块DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM,采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。此外,DS1302有主电源、后备电源引脚:VCC在单电源与电池供电的系统中提供地点远,并提供低功率的电池备份;VCC2在双电源系统中提供主电源。在这种运用方式中,VCC1连接到后备电源,以便在没有主电源的情况下能保存信息及数据。为了充分利用这些优点,本次设计采用以下思路实现定时功能:通过按键调用写DS1302时钟芯片的程序,再通过键盘输入,在同步时钟作用下,分别将5个定时写入到DS
13、1302内保存。达到设定时间,单片机立即调用音乐程序,并通过蜂鸣器播放音乐,从而实现定时音乐提醒功能。2.5秒表模块定时器TO用于秒表计时,定时溢出中断周期设为50ms,中断进入后先进行定时中断初值校正,当中断累计2次(即50ms*2=0.1s)时,对秒计数单元进行加1操作。最大计时值为23时59分59秒。在计数单元中,采用十进制BCD码计数,满10进位。在正常状态下 若按下key2按键 则进行时钟/秒表显示功能的转换,秒表中断计时程序启动,显示程序显示秒表功能数组里的内容。再按下key2口的按键开关,可实现秒表清0,按下key3时秒表启动秒表暂停功能,当按下key4口按键时,关闭T0秒表中断
14、计时,显示首址又改为ds1302里的数据,恢复正常时间显示功能。其中断向量表如表3所示。表3 中断向量表中断源入口地址外部中断00003H定时器0000BH3 系统软件工作流程图3.1 主程序本设计中计时采用DS1302芯片完成,秒表使用定时器T0中断完成。主程序循环调用显示子程序和查键子程序,当端口有开关按下时,转入相应功能程序。其详细主程序见附录二,主程序执行流程图如图6所示。开始初始化调用显示子程序整点鸣叫进入功能程序按键?整点?YNY图6 主程序流程图3.2 DS1302实现时间子程序DS1302 的控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,
15、位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式, 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄
16、存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。其程序执行流程图如图7所示。使DS1302不具备写保护复位将产生一个高电平写1302地址变量初始化将该地址的数据读出地址增加延时一段时间写1302地址地址增加延时一段时间复位将产生1个高电平显示数据向该地址写数据数据写完了?数据写完了?YYNN开始始始图7 DS
17、1302工作流程图3.3 秒表子程序秒表功能是通过定时器T0中断来计时的,当有键按下,进入中断,进入中断之后,设置初值,再当秒表计时键按下,开始计时。其程序执行流程图如图8所示。保护现场秒表/闪烁恢复现场,中断返回定时初值校正闪烁处理T0中断时钟调时闪烁秒表加10ms处理图8 T0中断计时程序流程图4 系统功能调试及结果分析4.1 硬件调试时钟计时器的电路系统较大,对于印制板焊接方面不可轻视,只要出一处的错误,就会对检测造成很大的误差。在焊接电路板的时候,应该从最基本的最小系统开始,分模块,逐个进行焊接测试。在对各个硬件模块进行测试时,要保证软件正确的情况下去测试硬件,要不然发生错误时,不知道
18、到底是哪一方出错了。在检查无误后再对整个印制板进行调试及修改,通电检查LED显示器的点亮状况。4.2 软件调试时钟计时器是多功能的数字型,可以看当前时间,可以闹钟定时及秒表计时等功能,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题:比如闹钟蜂鸣停止不下来,秒表计时不能暂停,进行计时后不能复位等等一些问题。但通过对模块子程序逐个的进行修改,并结合硬件实时调试,在Keil C51下编译,最终解决了软件设计所遇到的问题。软件经调试无误后,将其下载到单片机中,均能达到设计所要的效果。4.3 结果分析 通过程序的设计和硬件的调试,基本完成了设计要求所要实现的功能。其系统结果分析如
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 基于 STC89C52 单片机 时钟 计时器 设计 说明书
链接地址:https://www.31doc.com/p-3292374.html