电子时钟单片机【完整版】_第1页
电子时钟单片机【完整版】_第2页
电子时钟单片机【完整版】_第3页
电子时钟单片机【完整版】_第4页
电子时钟单片机【完整版】_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、烟台南山学院单片机课程设计题目电子时钟姓名:所在学院所学专业:班级:学号:指导教师:完成时间:摘要随时代的发展,生活节奏的加快,人们的时间观念愈来愈强;随自动化、智能化技术的发展,机电产品的智能度愈来愈高,用到时间提示、定时控制的地方也会愈来愈多,因此,设计开发数字时钟具有良好的应用前景。由于单片机价格的低成本、高性能,在自动控制产品中得到了广泛的应用。本设计利用Atmel公司的AT89S52单片机对电子时钟进行开发,设计了实现所需功能的硬件电路,应用汇编语言进行软件编程,并用实验板进行演示、验证。在介绍本单片机的发展情况基础上,说明了本设计实现的功能,以及实验板硬件情况,并对各功能电路进行了

2、分析。主要工作放在软件编程上,用实验板实现时间、日期、定时及它们的设定功能,详细对软件编程流程以及调试进行了说明,并对计时误差进行了分析及校正,提出了定时音与显示相冲突问题及解决方案。实验证明效果良好,可以投入使用。本次仿真设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及MCS51单片机都种资源应用并具有综合功能的小系统目标板的设计与编程应用,使学生不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,同时在软件编程、排版调试、焊接技术、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应

3、用系统的开发设计工作打下一定的基础。在本学期的开始我们进行了计算机工程实践,在实践中我们以微机原理与接口技术课程中所学知识为基础,设计了电子时钟系统。本系统为多功能数字钟的系统。本设计以单片机AT89c51为控制核心,选用DS1302串行时钟芯片,RT1602液晶显示器实现液晶显示当前时间、日期、星期。本电子时钟具有日期、时、分、秒的显示、调整功能,采用的时间制式为24小时制,时间显示格式为时(十位、个位)、分(十位、个位)、秒(十位、个位)。关键词:单片机AT89S52电子时钟汇编语言目录绪论错误!未定义书签。1.总体设计错误!未定义书签设计目的错误!未定义书签总体设计错误!未定义书签2.硬

4、件设计错误!未定义书签总体接线错误!未定义书签22硬件连接错误!未定义书签3.软件设计错误!未定义书签主程序流程图及程序设计错误!未定义书签键盘非法性检测错误!未定义书签断服务程序流程错误!未定义书签4.仿真调试错误!未定义书签总结错误!未定义书签参考文献错误!未定义书签绪论单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。在工业生产中,电流、电压、温度、压力和流量也都是常用的被控参数。单片机电子时钟系统,是利用单片机作为系统的主控制器,采用AT89S52单片机作为控制核心对时钟芯片DS1302的控制,同时读取时间,并队输入信号作出处理。该单片机具有集成度高,运算快速

5、快,体积小、运行可靠,价值低廉的特点。鉴于这样的重要性,我们打算设计一种基于单片机的电子时钟系统,实现对时间的调整。本设计以单片机AT89C51为控制核心,由实时时钟模块,键盘模块组成其中实时时钟采用DS1302可实现对时间的显示,设置,计时等功能在日常生活和工作中,我们常常用到定时控制,如扩印过程中的曝光定时等。早期常用的一些时间控制单元都使用模拟电路设计制作的,其定时准确性和重复精度都不是很理想,现在基本上都是基于数字技术的新一代产品,随着单片机性价比的不断提高,新一代产品的应用也越来越广泛。大则可以构成复杂的工业过程控制系统,完成复杂的控制功能;小则可以用于家电控制,甚至可以用于儿童电子

6、玩具。它功能强大、体积小、质量轻、灵活好用,配以适当的接口芯片,可以构成各种各样、功能各异的微电子产品。近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。数子时钟在日常生活中最常见,应用也最广泛。本次设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程

7、来实现,电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的特点具有很强的实用性,而且系统具有一定的可扩展性。总体设计设计目的应用单片机控制技术,设计出以89c51单片机为核心的电子时钟,电子时钟能够显示时、分、秒显示时间的功能,还可以进行时和分的校对,而且其片选的灵活性强。设计一个电子时钟,可以查询日历,可以设置时间,掉电时间不丢失;时钟必须有定闹功能,定闹设置掉电不丢失。总体设计该电子时钟由89C51,BUTTON,1602LCD液晶屏等构成,采用晶振电路作为驱动电路,利用单片机内部定时计数器0通过软件扩展产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满

8、二十四小时为一天。闹钟和时钟的时分秒的调节是由一个按键控制,而另外一个按键控制时钟和闹钟的时间的调节。图1系统结构框图该电子时钟由STC89C51,BUTTON,1602LCD液晶屏等构成,采用晶振电路作为驱动电路,晶振电路的晶振频率为12MHZ,使用的定时器/计数器工作方式0,通过软件扩展产生的一秒定时,达到时分秒的计时,60秒为一分钟,60分钟为一小时,24小时为一天,又重00:00:00开始计时。没有按键按下时,时钟正常运行,当按下调节时钟按键K1,就会关闭时钟,当按下闹钟按键K3时时钟就会进入设置时间界面,但是时钟不会停止工作,按K2键,就可以对时钟和闹钟要设置的时间进行调整。硬件设计

9、总体接线装有UNSPTMIDE仿真软件的PC机一台,UNSPTM十六位单片机实验箱一台8pin排线两根、短路块若干。本程序用到的实验箱硬件模块为:SPCE061A核心及实验箱中提供的4*4键盘模块和6位LED数码管显示模块。SPE061A共提供两个16位通用的并行I/O口:I0A0-I0A15I0B0-I0B15。两个口的每一位都可以通过编程单独定义为输入或输出口,本实验采用IOA15IOA8连接4*4键盘,IOA0IOA7、I0A0I0A15连接数码管。图总体接线图这部分的主要接线如下:I0A8-15接液晶显示模块DB0-DB7IOB4接液晶显示模块AOIOB5接液晶显示模块的R/WIOB6

10、接液晶显示模块的EPDB0-DB7为双向数据口,AO为数据/使命控制位,R/w为读/写信号,EP是全能端(低电平有效)要这部分工作时Key接线与IOA低八位相连就可以了。本实验中,定义每个键的功能,包括数字键、功能键和一些保留键,其中标“0-9”为数字键,标“F2-F4”为保留键,标“F1”为重新设置时间键,标“ENT”为确认键,标“DEL”为删除键。运行程序后,按常规的显示方法,从数码管的第一位开始显示,六位数码管一次显示时、分、秒的十位、个位。设置错误按DEL键即可重新设置,设置完成按ENT键,重新设置按F1键。22硬件连接利用4*4键盘和6位LED数码管分别与SPCE061A单片机IOA

11、口、IOB口的相关引脚相接,I0A0I0A7连接和6位数码管的ag、dp,IOA口的高八位IOA15IOA8连接4x4键盘的L1L4、C1C4,IOB15IOB12连接数码管的位信号14,IOB2IOB1连接数码管的位信号56,IOB0连接数码管的分隔符信号DD。几把JP4、JP5的引脚全部用跳线短接起来,用一根排线连接J27和JP7。时间的设置可以通过4*4键盘的数字键来完成,时间的显示通过6位数码管来完成,以实现计时的功能。硬件连接图如下:软件设计主程序流程图及程序设计本系统软件设计程序主要分为主程序(其中包括键盘非法性检测、时钟数据处理、键值转换等子模块)、中断服务子程序、键盘子程序、数

12、码管显示子程序及中断定义子程序。主程序对程序框架进行设计在调用各个子程序实现系统时钟的设置及重置功能,下面分别详细介绍。图主程序流程图主程序代码:#include#include#include061Atypedefunsignedcharuchar;TOC o 1-5 h z#defineKEY_DEL11#defineKEY_ENT12#defineKEY_F113#defineYESCarryFlag1#defineClearCarryFlag0#defineYESIntFlag1#defineClearIntFlag0#definetrue1#definefalse0unsignedi

13、ntINTflag;unsignedintKeyVal;unsignedintKeyDownTimes;unsignedintKeycodeLED6;unsignedintEnterFg;unsignedintF1flag;unsignedintsecFlag,minFlag,hourFlag;voidclockPro(void);unsignedintSetKeyValPro(void);unsignedintKeyDataChange(unsignedintKey_Data);unsignedintg_Data11=0 x003f,0 x0006,0 x005b,0 x004f,0 x00

14、66,0 x006d,0 x007d,0 x0007,0 x007f,0 x006f;intmain()unsignedinti;KeyDownTimes=0;INTflag=0;EnterFg=0;i=0;Key_Init();DIG_Init();while(1)KeyVal=Key_Get();KeyVal=KeyDataChange(KeyVal)switch(KeyVal)caseKEY_F1:INT_IRQ5();if(KeyDownTimes=6)KeyDownTimes=0;F1flag=true;EnterFg=false;caseKEY_DEL:if(F1flag=true

15、)if(KeyDownTimes0)KeyDownTimes-;break;case0 xff:break;caseKEY_ENT:if(KeyDownTimes=6)SP_INT_IRQ5();F1flag=false;EnterFg=truebreak;default:if(F1flag=true)if(KeyDownTimes6)KeycodeLEDKeyDownTimes=KeyVal;if(SetKeyValPro()=true)KeyDownTimes+;break;for(i=0;i6;i+)DIG_Set(i+1,g_DataKeycodeLEDi);clockPro();F_

16、ClearWatchdog();键盘非法性检测开始判断数字键按下的次数数字键数字键数字键数字键数字键按下次按下次按下次按下次按下次数为1数为2数为3数为4数为51f按下数如果前一次按下数按下数字键小按下数字键字键小字键小于3时2,按下的数于6时于6时有效字键小于四有效有效才有效数字键按下次数为6返回检测结果图键盘非法性检测子程序流程图voidSetKeyValPro(void)unsignedintSetKeyValPro(void)ucharflag;switch(KeyDownTimes)case0:if(KeycodeLEDKeyDownTimes3)flag=true;elseflag

17、=false;break;case1:if(KeycodeLEDKeyDownTimes-1=2)开始秒的个位是不是9秒的十位是不是5秒回零分的个位是不是9分的十位是不是5分回零时的十位不为2时的个位是不是3时回零返回if(KeycodeLEDKeyDownTimes5)flag=true;elseflag=false;elseflag=true;break;if(KeycodeLEDKeyDownTimes6)N一秒的个位加1N秒的十位加1,个位回零分的个位加1*分的十位加1,个位回零时的个位是不是9时的个位加1图时钟数据处理子程序流程图分的十位加1,个位回零voidclockPro(voi

18、d)while(INTflag=1)INTflag=ClearIntFlag;if(KeycodeLED4=5&KeycodeLED5=9)KeycodeLED4=0;KeycodeLED5=0;secFlag=YESCarryFlag;elseif(KeycodeLED5=9)KeycodeLED5=0;KeycodeLED4+;elseKeycodeLED5+;while(secFlag=1)secFlag=ClearCarryFlag;if(KeycodeLED2=5&KeycodeLED3=9)KeycodeLED2=0;KeycodeLED3=0;minFlag=YESCarryFl

19、ag;elseif(KeycodeLED3=9)KeycodeLED3=0;KeycodeLED2+;elseKeycodeLED3+;while(minFlag=1)minFlag=ClearCarryFlag;if(KeycodeLED0=2&KeycodeLED1=3)KeycodeLED0=0;KeycodeLED1=0;hourFlag=YESCarryFlag;elseif(KeycodeLED1=9)KeycodeLED1=0;KeycodeLED0+;elseKeycodeLED1+;断服务程序流程图IRQ5中断服务程序流程图IRQ6中断服务程序流程图程序说明:在IRQ5_2H

20、Z中断里定时Is的时间,在IRQ6_TMB2中断里调用键盘程序扫描键盘,而IRQ4的1KHZ中断当中,进行数码管显示的动态扫描。中断服务程序代码:.INCLUDE061A.INCLUDE.INCLUDE.IRAM.PUBLICsum;.VARsum=0.PUBLIC_IRQ5;.PUBLIC_IRQ6;xternal_INTflag;.externalF_Key_Scan.PUBLIC_IRQ4_IRQ4:pushr1,r5tospr1=C_IRQ4_1KHztestr1,P_INT_CtrljnzL_IRQ4_1KHzr1=C_IRQ4_2KHztestr1,P_INT_CtrljnzL_I

21、RQ4_2KHzL_IRQ4_4KHz:callF_DIG_Driver1=C_IRQ4_4KHzP_INT_Clear=r1popr1,r5fromspretiL_IRQ4_2KHz:P_INT_Clear=r1popr1,r5fromspretiL_IRQ4_1KHz:P_INT_Clear=r1popr1,r5fromspretiIRQ5:pushr1,r4tosp;r1=0 x0008;testr1,P_INT_Ctrl;jnzL_4Hz;判断键码本系统是通过4*4键盘的数字键来完成时、分、秒的准确计时,通过数码管显示出来。按确认键完成设置,重置键重新设定时间,删除键删除上一步操作,重新设置。单片机课程设计已经接近尾声,留给我印象最深的不是我最后做成了什么或者我的设计实现了什么功能,我认为最重要的是设计的过程。因为设计的过程在整个过程中所占时间最多,锻炼我们的价值也是最大的。设计开始的时候我真的是毫无头绪,甚至有过放弃的想法,但终于坚持了下来。我明白了要设计一个成功的电路,除了有创新

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论