您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机电子时钟设计
Xtu清华大学题目:基于单片机的学院:信息工程学院专业班级:学号:姓名:11设计题目:电子时钟设计目的:应用单片机控制技术,以89c51单片机为核心的电子时钟设计目标:在数码管上显示相应的时间,并通过一个控制键来实现时间的调整和是否进入省电模式的转换任务下达时间:2010年3月1日任务完成时间:2010年3月11日指导教师评语:年月日设计成绩:22摘要;该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一并通过一个控制键用来实现时间的调节和是否进入省电模式的转换。应用Proteus的ISIS软件实现了单片机电子时钟系统的设计与仿真。该方法仿真效果真实、准确,节省了硬件资源。关键词:单片机;电子时钟;键盘控制33引言:1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。1设计要求功能:电子时钟能够显示时、分、秒显示时间的功能,还可以进行时和分的校对,而且其片选的灵活性强。并且是以单片机为核心来设计的。2方案论证与对比2.1单片机的型号选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。442.2数码管显示工作原理数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。553系统硬件电路的设计总体硬件原理图如图1所示XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U4AT89C51图1系统电路原理图AT89C51因为其含一个可擦除的ROM,以及其存储数据的时间长度可达10年之久所以选其作为该设计的核心控制部件。663.1键盘电路设计该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。达到时间调节的目的。选择的多功能按键如图2所示。图2多功能控制键3.2主控模块89C5189C51是一个8位单片机,片内ROM全部采用FLASHROM技术,晶振时钟为12MHz。89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。第31引脚需要接高电位使单片机选用内部程序存储器;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS,通常在VCC和VSS引脚之间接0.1μF高频滤波电容。4系统软件设计4.1系统软件概述在主程序的开始定义了一组固定单元用来存储计数的分、秒、时的存储单元。在主程序中,对不同的按键进行扫描,实现秒表,时间调整。系统总体流程图如图3所示。77图3总体流程图NYNYT0中断入口通过查表方式显示数据位选值=8数码位选加1位选数值=0秒计数加1秒计数=500秒计数=0SECOND加1中断返回开始88系统子程序流程图如图4所示。YYNNN子程序入口SECOND=60SECOND=0,并MINUTE加1MINUTE=60MINUTE=0,并HOUR加1显示数据处理中断返回HOUR=24Y图4子程序流程图995系统测试本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。系统开始仿真的仿真图如图5系统仿真图所示。图5系统仿真图10106总结通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗了过多的内存资源。本次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。我知道,今后我的路还是很长,我要学的东西也有很多。通过这次实习,我深刻的认识到计算机专业的路的不平坦,但我会以一种良好的态度去迎接每一个挫折和挑战。1111参考文献[1]谢自美.电子线路设计·实验·测试[M].武汉:华中理工大学出版社,1992.[2]何立民.单片机应用系统设计[M].北京:北京航空航天大学出版社,1993.[3]楼然笛.单片机开发[M].北京:人民邮电出版社,1994.[4]付家才.单片机控制工程实践技术[M].北京:化学工业出版社2004.3.[5]李光才.单片机课程设计实例指导[M].北京:北京航空航天大学出版社2004.[6]朱定华.单片机原理及接口技术实验[M].北京:北方交通大学出版社2002.11.[7]刘湘涛.江世明.单片机原理与应用[M].北京:电子工业出版社,2006.1212附录一部分程序清单源程序ORG0000H;程序执行开始地址LJMPSTART;跳到标号START执行ORG0003H;外中断0中断程序入口RETI;外中断0中断返回ORG000BH;定时器T0中断程序入口LJMPINTT0;跳至INTTO执行ORG0013H;外中断1中断程序入口RETI;外中断1中断返回ORG001BH;定时器T1中断程序入口LJMPINTT1;跳至INTT1执行ORG0023H;串行中断程序入口地址RETI;串行中断程序返回START:MOVR0,#70H;清70H-7AH共11个内存单元MOVR7,#0BH;CLEARDISP:MOV@R0,#00H;INCR0;DJNZR7,CLEARDISP;MOV20H,#00H;清20H(标志用)MOV7AH,#0AH;放入熄灭符数据MOVTMOD,#11H;设T0、T1为16位定时器MOVTL0,#0B0H;50MS定时初值(T0计时用)MOVTH0,#3CH;50MS定时初值MOVTL1,#0B0H;50MS定时初值(T1闪烁定时用)MOVTH1,#3CH;50MS定时初值1313SETBEA;总中断开放SETBET0;允许T0中断SETBTR0;开启T0定时器MOVR4,#14H;1秒定时用初值(50MS×20)START1:LCALLDISPLAY;调用显示子程序JNBP3.7,SETMM1;P3.7口为0时转时间调整程序SJMPSTART1;P3.7口为1时跳回START1SETMM1:LJMPSETMM;转到时间调整程序SETMM;;1秒计时程序;;INTT0:PUSHACC;累加器入栈保护PUSHPSW;状态字入栈保护CLRET0;关T0中断允许CLRTR0;关闭定时器T0MOVA,#0B7H;中断响应时间同步修正ADDA,TL0;低8位初值修正MOVTL0,A;重装初值(低8位修正值)MOVA,#3CH;高8位初值修正ADDCA,TH0;MOVTH0,A;重装初值(高8位修正值)SETBTR0;开启定时器T0DJNZR4,OUTT0;20次中断未到中断退出ADDSS:MOVR4,#14H;20次中断到(1秒)重赋初值MOVR0,#71H;指向秒计时单元(71H-72H)ACALLADD1;调用加1程序(加1秒操作)MOVA,R3;秒数据放入A(R3为2位十进制数组合)1414CLRC;清进位标志CJNEA,#60H,ADDMM;ADDMM:JCOUTT0;小于60秒时中断退出ACALLCLR0;大于或等于60秒时对秒计时单元清0MOVR0,#77H;指向分计时单元(76H-77H)ACALLADD1;分计时单元加1分钟MOVA,R3;分数据放入ACLRC;清进位标志CJNEA,#60H,ADDHH;ADDHH:JCOUTT0;小于60分时中断退出ACALLCLR0;大于或等于60分时分计时单元清0MOVR0,#79H;指向小时计时单元(78H-79H)ACALLADD1;小时计时单元加1小时MOVA,R3;时数据放入ACLRC;清进位标志CJNEA,#24H,HOUR;HOUR:JCOUTT0;小于24小时中断退出ACALLCLR0;大于或等于24小时小时计时单元清0OUTT0:MOV72H,76H;中断退出时将分、时计时单元数据移MOV73H,77H;入对应显示单元MOV74H,78H;MOV75H,79H;POPPSW;恢复状态字(出栈)POPACC;恢复累加器SETBET0;开放T0中断RETI;中断返回1515;;闪动调时程序;;;T1中断服务程
本文标题:基于单片机电子时钟设计
链接地址:https://www.777doc.com/doc-6180700 .html