ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:136.04KB ,
资源ID:18850315      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/18850315.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的数字时钟的设计Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的数字时钟的设计Word文档下载推荐.docx

1、 1 何立民等单片机中级教程:原理与应用M北京:航空航天大学出版社,2006 2 宋彩利等单片机原理与C51编程M西安:西安交通大学出版社,2008 3 郭天祥等51单片机C语言教程M北京:电子工业出版社,2010完 成 期 限: 2012年12月24日指导教师签名: 2012年 12月7日一、背景及意义随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。 由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用Atmel公司的AT89S

2、52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用c语言进行软件编程,并用实验板进行演示、验证。 在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了分析。主要工作放在软件编程上,用实验板实现时间、日期、及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正。实验证明效果良好,可以投入使用。数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老

3、式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。二、系统分析(一)总体方案设计系统设计要求 (1) 时钟显示在1602液晶上,并且按秒实时更新。(2) 能够显示年月日时分秒以及星期,并能够根据实际运行情况刷新数据。(3) 能够使用按键随时调节时钟的年月日时分秒星期,按键可设计成三个有效键,分别为功能选择键,数值增大键,数值减小键。(4)

4、系统主要包括时钟电路、复位电路、按键电路以及LCD显示电路。按键部分使用实验板上的矩阵键盘分离出的三个按键。系统的整体组成框图如图1所示。图1 系统方框图(二)系统组成部分1单片机的选型 由于本系统只需要单片机完成对计时的显示以及处理定时计数的中断,对于IO资源以及处理速度无特殊要求,所以选择STC公司生产的STC89C52单片机。AT89C52增加了在线调试功能,程序可以通过JTAG接口下载、调试和固化,可实现实时仿真和在线编程或在系统编程,具有通过网络进行升级、维护的功能。2时钟电路单片机工作的时间基准是由时钟电路提供的。在单片机的XTAL1和XTAL2两个管脚,接一只晶振及两只电容就构成

5、了单片机的时钟电路。XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大

6、器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。3复位电路单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。89系列单片机的复位信号是从RST引脚输入到芯片的施密特触发器中的。当系统处于正常工作状态时,且

7、振荡器稳定后,如果RST引脚有一个高电平并维持2个机器周期(24个振荡周期),则CPU就可响应并且将系统复位。复位分为手动复位和上电复位。4 LCD显示电路本设计显示电路使用1602液晶设计,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。显示电路使用LCD1602进行设计,1602采用标准的16脚接口。其中: 第1脚:VSS为电源地 第2脚:VDD接5V电源正极 第3脚:V0为液晶显示器对比度调整端。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、

8、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。5 按键电路本系统包括功能按键KEY1,数值增大键key2,数值减小键key3,使用实验板上的矩阵键盘分离出的三个按键。三、系统硬件设计(一)系统原理图 图2(二)时钟电路本设计采用外部时钟方式,分别接到单片机的XTAL1和XTAL2引脚,采用的晶振为11.0592MHz,原理图如图2。 图3(三)复位电路复位电路采用上电复位,上电瞬间,由于电容

9、两端的电压为零不能突变,RST端的电压逐渐下降,只要在RST端保持足够长时间的高电平,8051单片机便可自动复位,原理图如图3。 图4(四)LCD显示电路显示电路使用LCD1602进行设计,1602采用标准的16脚接口,此部分原理图如图4。 图5四、系统软件设计本设计的源程序主要包含以下几个函数:(一)延时函数 在程序中进行延时时调用此函数void delay(uchar z) uchar i; for(z;z0;z-) for(i=110;ii-);(二)显示函数 显示程序包括对LCD1602写指令函数,写数据函数,数的拆分函数,显示年月日时分秒函数,显示星期函数五个部分。 1 写指令函数

10、1602液晶的写指令函数,在使用LCD1602显示数据前需要调用此函数对LCD1602写指令void write_com(uchar com) rs=0; lcden=0; P0=com; delay(5); lcden=1; 2写数据函数 在对LCD1602写指令之后调用此函数对1602写数据void write_date(uchar date) rs=1; P0=date;3数的拆分函数 write_sfm ,write_nyr把时,分,秒,年,月,日的个位与十位分别赋值给shi,ge。void write_sfm(uchar add,uchar date) uchar shi,ge; s

11、hi=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi); write_date(0x30+ge);4显示年月日时分秒函数void write_nyr(uchar add,uchar date) write_com(0x80+add);5星期显示函数 write_zhou根据运行情况把星期送给LCD1602进行显示。void write_zhou(uchar date)uchar n; write_com(0x80+12); if( date=1) for(n=0;n3;n+) write_date(table

12、2n); delay(5); if( date=2) write_date(table3n); if( date=3) write_date(table4n); if (date=4) write_date(table5n);if (date=5) write_date(table6n);if( date=6) write_date(table7n);if( date=7) write_date(table8n);(三) 初始化函数 对LCD1602进行初始化,并设置定时器0为工作方式1并对定时器装初值.完成初始状态的显示。void init() uchar num; dula=0; wela

13、=0;write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); for(num=0;num16;num+) write_date(tablenum); write_com(0x80+0x40);12; write_date(table1num); TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1;(四)键盘检测 对按键进行检测,当key1按下时选中功能键,光标开始在相应的位置闪烁,此

14、时按下key2或key3便可以对光标对应位置的数据进行加1减1操作。void keyscan() rd=0; if(s1=0) delay(5); if(s1=0) s1num+; while(!s1); if(s1num=1) TR0=0; write_com(0x80+0x40+10); write_com(0x0f); if(s1num=2) write_com(0x80+0x40+7); if(s1num=3) write_com(0x80+0x40+4); if(s1num=4) write_com(0x80+13);if(s1num=5) write_com(0x80+9); if

15、(s1num=6) write_com(0x80+6); if(s1num=7) write_com(0x80+3); if(s1num=8) s1num=0; write_com(0x0c); TR0=1; if(s1num!=0) if(s2=0) delay(5); if(s2=0) while(!s2); if(s1num=1) miao+; if(miao=60) miao=0; write_sfm(10,miao); write_com(0x80+0x40+10); if(s1num=2) fen+; if(fen=60) fen=0; write_sfm(7,fen); writ

16、e_com(0x80+0x40+7); if(s1num=3) shi+; if(shi=24) shi=0; write_sfm(4,shi); write_com(0x80+0x40+4); if(s1num=4) m+; if(m=8) m=1; write_zhou(m); write_com(0x80+13); if(s1num=5) ri+; if(ri=31) ri=1; write_nyr(9,ri); write_com(0x80+9); if(s1num=6) yue+; if(yue=13) yue=1; write_nyr(6,yue); write_com(0x80+

17、6); nian+; if(nian=100) nian=0; write_nyr(3,nian); write_com(0x80+3); if(s3=0) if(s3=0)s3); miao-; if(miao=-1) miao=59; fen-; if(fen=-1) fen=59; shi-; if(shi=-1) shi=23; m-; if(m=0) m=7; ri-; if(ri=0) ri=30; yue-; if(yue=0) yue=12; nian-; if(nian=-1) nian=99; write_com(0x80+93); 五、结束语经过与标准时间对比, 我们可以

18、发现时钟计数后出现了误差,所设计的数字式秒表比我们的标准时间要慢,而且相比较的时间越长他的时差越大。经过分其主要原因是软件都有关。本设计采用的晶振为11.0592MHz,而我们在为定时器装入初值时为了计算方便把晶振当成12MHz算的,所以定时器装入的初值在计算时并不准确,并且中断函数在运行时也会占用一段时间,这些开始时并未考虑在内。经过软件调试时把原本的判断语句if(count=20)改为if(count=18),从而把误差控制在一个可以接受的范围内。【参考文献】1 何立民等单片机中级教程原理与应用M北京:2 宋彩利等单片机原理与C51编程M西安:3 郭天祥等51单片机C语言教程M北京:附录1

19、 数字时钟成品展示附录2源程序#include#define uchar unsigned char #define uint unsigned intsbit dula=P26;sbit wela=P27;sbit rs=P35;sbit lcden=P34;sbit s1=P30;sbit s2=P31;sbit s3=P32;sbit rd=P37;sbit wr=P36;uchar count,s1num,m=5;char miao,shi,fen,nian=12,yue=12,ri=14,zhou;uchar code table= 2012-12-14 FRI ;uchar code table1= 00:00:00uchar code table2=MONuchar code table3=TUEuchar code table4=WEDuchar code table5=THUuchar code table6=FRIuchar code table7=SATuchar code table8=SUNvoid delay(uint z) uint x,y; for(x=z;xx-) for(y=110;yy-);void write_com(uchar com)void write_date(uchar date) write_com(0x38); delay

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1