时钟系统设计
《单片机原理及接口》
课程设计报告
题 目: 时钟系统设计
专业名称: 电子信息工程
班 级: 092
学 号: 910706221
姓 名: 邹小东
2011年 12月
时钟系统设计
电子信息工程学院 通信081 赖福财
指导教师:陈炜
一 设计内容和目标
1.1设计目标
设计一时钟系统,系统具有时钟功能,能准确显示时、分、秒。并且具有校正功能:能
够修改当前的时间。
1.2设计内容
本次设计采用单片机AT89C51控制,以AT89C51为核心,通过对一个实现定时、时钟显示、
闹钟等功能的时间系统的设计,其中结合了数码管显示、动态扫描、单片机定时中断等技术。实
验在Proteus 仿真软件和开发板中试验均满足要求。
软件实现时钟功能、闹钟功能。
时钟功能
(1)利用单片机片内定时器T0计时,用6个LED 数码管显示时、分、秒,最
大计数值为23:59:59,以24小时计时方式运行;
(2)使用按键开关可实现时、分,秒调整; 能整点提醒(短蜂鸣,3s );
(3)可通过按键进入省电状态(数码管不亮,时钟不停)。
闹钟功能
(1)本设计可设置2个闹钟
(2) 能通过按键实现闹钟/时钟功能之间的转换;
(3)可通过按键设定闹钟时间,在定时闹铃时精确到分,可通过6位LED 数
码管显示闹钟设定时间,闹钟时间达到时蜂鸣器响10s 。
(4)可通过按键实现在设定闹钟后取消闹时功能。
二 设计方案的选择与论证
该课题主要有两种方案:一种是用数字电路通过硬件实现,另一种是用单片机通过软件编
程实现。在以上两种方案中:第一种是直接采用的是数字电路,但是在外围电路和控制比较麻烦,
需要比较多的器件来控制;第二种是采用软件来实现一些特定功能,硬件电路只需要一些显示部
件和控制部件,其他的都是由软件来实现。第一种一切都由硬件实现,几乎没有软件编程,但电
路复杂、芯片多、后续制板及硬件调试麻烦而且成本高;第二种虽电路简单、芯片少、成本低,
但编写程序相当复杂。经过一番利弊的权衡及对今后电子业发展趋势的考量,最后敲定用单片机
方案实现。
另外用单片机实现本设计也有两种可选的子方案:第一种,用软件编程实现设计中的钟控
功能;另一种则选用单片机加时钟芯片DS1302实现钟控功能。在本次主要的是时间的设计,因
此对时间的精度要求是比较高的,竟量是误差减少到最小值,但是为了更好的练习复习自己在以
前所学习的编程能力,所以不采用单片机加时钟芯片的方案,直接用软件编程实现钟控功能。
三 系统原理设计
3.1 设计思想
单片机控制系统是整个控制系统的核心,它完成整个系统的信息处理及协调功能。本次我们
选用ATMEL 公司的AT89C51芯片;其功能强大,兼容性好。AT89C51是与8051兼容的CHMOS 微
控制器。与CHMOS 工艺的8051一样,支持软件选择的空闲和掉电两种节电方式。
3.2系统框图
图3-1 系统框图
四 电路设计及其工作原理
4.1控制部分:AT89C51单片机
AT89C51单片机概述:AT89C51单片机是国Atmel 公司生产的采用高性能的静态89C2051
设计,是一个低电压,高性能CHMOS 8位单片机,片内含4kbytes 的可反复擦写的只读Flash
程序存储器和128 bytes的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易
失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash 存储单元。
AT89C51是一个功能强大的单片机,但它只有40个引脚,32个双向输入/输出(I/O)端口,
其中P1是一个完整的8位双向I/O口,两个外中断口,两个16位可编程定时计数器,两个全双
向串行通信口,一个模拟比较放大器。
图4-1 AT89C51时钟电路连接
在本设计中AT89C51的时钟电路采用内部时钟方式,此方式是在XTAL1和XTAL2两端跨接晶
体或陶瓷谐振器。在本设计中XTAL1和XTAL2两端跨接11.0592MHz 晶体振荡器,其发出的脉冲
直接送入内部时钟电路。
在AT89C51在本设计中的I/O口应用:P1.0和P1.5是接发光二极管,判断当前选择位。P0.0
—P0.7是数码管的段选;P2.0—P2.2是数码管的位选。P2.3是蜂鸣器,作闹铃和准点报时用。
P27是3-8译码器的控制位。P3.0—P3.7是4X4矩阵按键的判断输入口,是对时间调整\闹铃时
间设置, 和其他功能的区分与操作。
4.2数码管显示部分
本设计中所涉及数码管皆采用共阴数码管,显示电路为动态扫描式显示。
图4-2 3-8译码器连接
图4-3 数码管连接
图4-4 上拉电阻
数码管段选AT89C51的P0.0--P0.7实现数码管段选,P2.0--P2.2控制3-8译码器实现数码
管的位选。在本次设计的电路中,由于二级管使用的是共阴数码管,在P0口接上拉电阻起驱动
作用。
4.3 发光二极管电路
用来显示当前控制位,接电阻起分压作用
图4-5 LED灯
4.4 闹钟设计
当设计的时间到达的时候,要驱动蜂鸣器,使其能够响起,声音的频谱范围约在几十到几千
赫兹,若能利用程序来控制单处机某个口线的高电平或低电平,则在该口线上就能产生一定频率
的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续
时间,就能改变输出频率,从而改变音调。
4.5 按钮部分
图4-6 按键电路
五 程序代码
本实验实验代码较长,我只选择几个关键步骤进行分析
5.1闹钟程序
if(time[5]==retime1[5]&time[4]==retime1[4]&time[3]==retime1[3]&time[2]==retime1[2]&time[1]
d=0;
//闹钟1的时分各个位和时钟判断是否一致,一致则状态位b 变为0
if(time[5]==retime2[5]&time[4]==retime2[4]&time[3]==retime2[3]&time[2]==retime2[2]&time[1]
d=0;
//闹钟2的时分各个位和时钟判断是否一致,一致则状态位b 变为0
if(time[1]>=1) d=1; //10秒后闹钟停止
5.2按键限制
case 0xde:
if(j==1||j==3||j==5||(j==4&k==0&time[5]>1)||(j==4&k==1&retime1[5]>1)||(j==4&k==2&retime2[5]>
1)) break; //在时分秒十位和当小时十位为2时的小时个位时按下8键没反应,这些位不能为8
else{ if(TR0==0&&k==0){ time[j]=8 ;if(--j== -1) j=5; } //判断在时钟模式下,并在对应位下写
// 8,移到下一位
if(k==1){retime1[j]=8;if(--j== 1) j=5; } //闹钟1对应位写8,并移到下一位
if(k==2) {retime2[j]=8; if(--j== 1) j=5; } } break; //闹钟2对应位写8,
// 并移到下一位,跳出switch
六 调试
在调试这一环节,本次将其分为时钟显示、时钟校正、闹钟设定控制、闹钟响闹待机等功能
进行分步调试。
6.1时钟显示
Proteus上电后数码管显示“000000”,然后开始计时。
本设计采用24小时制可以显示到从“00 00 00”到“23 59 59”,
图5-1时钟显示
6.2时钟校正
要进行时间校正必须先按下暂停/开始按键使时钟暂停,然后选择按键中的数字键设定所要的时钟数值,LED 灯会显示当前所控制的位,如果输入错误可以按下复位按键使控制位回到最高位。
图5-2 闹钟1显示
6.3闹钟显示与关闭
按下模式切换键可以显示闹钟1和闹钟2,闹钟默认是24:00即关闭状态,通过最高位显
示1和2判断来闹钟1和闹钟2。
关闭闹钟按键按下之后闹钟会被置为24;00即关闭。
图5-3 闹钟1显示
图5-4 闹钟2 显示
图5-5 闹钟1设置
6.4待机
直接按下待机按键数码显示管灭掉,单片机正常运行,照常计时。
图5-6 待机
结 束 语
我的设计最大的亮点是使用4X4矩阵键盘,使得设置闹钟和时间都可以直接选择数字,避免加1的繁琐步骤,还有可以选择待机和关闭闹钟功能,满足数字闹钟的各项基本要求。
当然这个设计也存在不足。按照人类的习惯,电子钟的时和分之间,分和秒之间都应该有“-”此符号,但在此设计中却没有达到这一点 。还有在程序的编写中没有真正实现模块化,使得别人在阅读和应用上有一些不便。
在这次难得的课程设计过程中我锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我思考问题的完整性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力,并且让我们熟练掌握了有关器件的性能及测试方法。