您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于单片机AT89S52的多功能数字钟设计
基于单片机AT89S52的多功能数字钟设计摘要:多功能数字钟的系统采用AT89S52单片机作为控制系统的核心,模型采用单片机作为主控制器,设计与实现基于单片机的数字钟。主要讨论了它从软件上实现的过程,流程图的设定,电路图的绘制,重点在单片机特有的定时中断方式,在最后富有采用中断方式实现的数字钟的源程序。由于该系统具有时间显示、闹钟等完整功能,有很高的利用价值。关键字:AT89S52、74LS245、数字钟1、引言:数字钟是采用数字电路实现对时分秒数字显示的计时装置,广泛用于个人家庭、办公室等公共场所,已成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体与振荡器的广泛应用,使得数字钟的精度远远超过老式钟表,而且大大地扩展了钟表原先的报时功能,这些的实现都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。2、硬件系统设计:系统基于AT89S52单片机基本系统,使用了2个四位数码管显示、译码器、ISP下载等接口。该系统的设计框图,如下:AT89S52复位电路时钟电路四位共阳数码管闹钟指示译码器74LS245按键电源图1数字电子钟系统的设计框图3、任务及功能要求设计制作一个新型可编程数字电子钟,能够设定时间,要求能用LED显示,同时具有闹钟功能,可以设定闹铃时间。当电子钟到达设定的时间时,闹钟响起。4、系统硬件电路设计系统硬件电路组成:主控制器AT89S52、译码器74LS245、显示电路、蜂鸣器、ISP接口和电源部分。4.1主控制器单片机AT89S52AT89S528位单片机是MSC-51®系列产品的升级版,有世界著名半导体公司ATMEL在购买MSC-51®设计结构后,利用自身优势技术——(掉电不丢数据)闪存生产技术对旧技术进行改进和扩展,同时使用新的半导体生产工艺,最终得到成型产品。与此同时,世界上其他的著名公司也通过基本的51内核,结合公司自身技术进行改进生产,推广一批如51F020等高性能单片机。AT89S52片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在4V到5.5V宽电压范围内正常工作。不断发展的半导体工艺也让该单片机的功耗不断降低。同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP-40的封装。DIP-40封装89S52引脚图4.2显示电路LED显示块是由发光二极管显示字段的显示器件。这种显示块有共阴与共阳两种结构。共阴极LED显示块的发光二极管阴极共地,当某个发光二极管的阳极为高电平时,发光二极管点亮。共阳极LED显示块的放光二极管阳极并接。七段显示块与单片机接口非常容易,只要将一个8位并行输出口语显示块的发光二极管引脚相连即可(AT89S52需要加上拉电阻)。此次电路采用2个4位共阳LED数码管,从P0口输出段码,列扫描用P2.0一P2.7来实现,列驱动用9012。如图4.3下载接口ISP接口部分是一个10芯的接线柱,接ISP下载器。通过相应的ISP软件,用户可对单片机程序存储器Flash中的代码进行方便的擦写;ISP电缆和AT89S52通过一个10针的IDC口进行连接4.4电源部分电源部分是有电源插口以及滤波电容组成。如果不加滤波电容,系统极有可能会不稳定。滤波电容一般用铝电解和瓷片电容。如图7图7电源部分4.5蜂鸣器电路:蜂鸣器是广泛应用于各种电子产品的一种元器件,它用于提示、报警、音乐等许多应用场合。三极管作蜂鸣器的驱动,增加了蜂鸣器的驱动电流。蜂鸣器的正极性的一端接到三极管的发射极,另一端连接到地,三极管的基极由单片机的P3.4管脚控制,高电平时蜂鸣器响,低电平时不响。另外,蜂鸣器的声音大小及音调可以通过调整P3.4管脚的置高时间及输出的波形进行控制。蜂鸣器的连接电路的原理图如图8图8蜂鸣器部分4.6复位电路:MCS-51单片机的复位电路,如图9。在RESET输入端出现高电平时实现复位和初始化。在震荡器运行的情况下,要实现复位操作,必须使RST引脚至少保持两个机器周期的高电平。在CPU在第二个机器周期内执行内部复位操作,以后每一个机器周期重复一次,直至RST端电平变低复位期间不产生ALE信号。当RST引脚返回低电平以后,CPU从0地址开始执行程序。图9单片机复位电路4.7时钟电路,8051内部片内有一个由反相放大器构成的振荡电路,XTAL1和XTAL2分别为震荡电路的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式时钟电路如图10。在XTAL1和XTAL2引脚上外接定时元件,内部震荡电路就产生自己震荡。定是元件通常采用石英晶体和电容组成的并联谐振回路。外部方式的时钟电路,XTAL1接地,XTAL2接外部振荡器。一般要求输入方波信号的频率低于33Mhz。本文设计的系统采用的是内部方式的时钟电路。图10内部方式的时钟电路4.8系统设计电路原理图:4.9原理分析本设计的数字电子钟由左往右分别显示:时、分、秒,主要使用到单片机定时/计数功能,采用2个LED共阳极数码管,使用T0进行计数。当计数到20时总计数为一秒。当计数达到1秒时,秒增加1;当秒达到60时,对秒清零,分增加1;当分达到60时,对分清零,时增加1;当时达到24时,对时清零。用程序和代码控制数码管显示电路,就可以使数码管以动态扫描的方式显示6位数的时间,同时还可以设定闹钟模式。4.10流程图:5、总结部分:1)实验中遇到的问题及解决方法:四位LED显示第二位b、c显示其一时出现两个暗淡,都显示时,则很清晰,经过电压表测量,问题是AD1和AD2出现短路,已得到解决。调试过程中,蜂鸣器一直处于报警状态,经过仔细检查,发现是程序定义的接口和实际接口不一样,从而导致蜂鸣器持续报警的问题,已得到解决。2)调试与分析:硬件调试:在硬件方面,由于电路不是很复杂,所以焊接起来不是很难,容易出现问题的地方在与焊接是否出现虚焊,跳线是否接实,管脚是否连接正确等。软件调试:在编译器下进行程序编译及仿真调试时,应分段并以子程序为单位逐个进行,最后结合硬件实时调试。3)实验中注意事项:注意分清楚USB口的电源和地线位置,焊接好后用万用表测量确认,避免烧坏单片机及其他器件;单片机滤波电容尽可能贴近单片机电源引脚焊接,以增强滤波效果;注意蜂鸣器的正负极;注意发光二极管的正负极,一般长脚为正,短脚为负;单片机及其下载部分焊好后可以利用下载一个*.HEX文件。能够下载后再焊接和调试测温程序。初始化时钟芯片赋初值是定闹钟程序取时钟否数码管显示Key4键按下开始4)结束语:随着电子技术的不断进步,数字时钟正扮演者越来越重要的角色,所以需要我们不断去改进和完善它。例如,我们应尽量考虑到人的因素,增强始终的实用性和操作性,为使用者提供切实的方便,营造一种舒适的生活氛围。所以,再设计的时候,我们应该从多面、多角度去考虑问题,而且应该进一步提高时钟的质量,并尽可能的增加一些使用的功能。通过自行焊接和调试一个单片机系统,我熟悉了单片机基本的开发流程和单片机的深入学习。在完成这个设计的同时,我复习了书本上的许多相关内容,受益匪浅。在获得理论知识的同时,实践中也获得了许多书本上没有的东西。学会了调试和查找问题并解决问题的能力,我深入了解了焊普通元件与电路元件的技巧、数字时钟的工作原理及其他各电路元件的作用等。这些知识不仅在课堂上有效,对以后的学习工作有很大的指导意义,在日常生活中更是有着现实意义;也对自己的动手能力是个很大的锻炼。实践出真知,纵观古今,所有发明创造无一不是在实践中得到检验的。没有足够的动手能力,就奢谈在未来的科研尤其是实验研究中有所成就。在实习中,我锻炼了自己动手技巧,提高了自己解决问题的能力。通过不断的学习,我越来越感觉到,单片机的开发包括软件和硬件开发,软件开发需要具备汇编和C语言的知识,硬件开发一般需要基本的电路板设计、焊接和调试等基本技能。所以,我觉得单片机的学习不仅仅是单片机本身的学习,还包括其他的一些基本功的训练。通过自行设计焊接单片机,会遇到各种各样的问题,这些都是自己在学习单片机时的疑惑引发的,通过自己去设计焊接能够帮助自己认识许多方面的问题,加深对知识的理解,同时也对自己的动手实践能力是个巨大的提高。附录:程序:#includereg52.h#includeintrins.h#defineucharunsignedchar#defineunitunsignedintvoiddisplay();voidshiji();unittime1=0;unittime2=0;unittime3=0;unittime4=0;unittime5=0;unitk=0;unitcount_1s=0;sbitBeep=P1^4;sbitkey1=P1^0;sbitkey2=P1^1;sbitkey3=P1^2;sbitkey4=P1^3;ucharw=0xff;uniti=0;unitj=0;unita=0;bitb=0;bits=0;ucharnpos=0x01;uchartab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voiddelay(uniti){while(i--);}voidshiji(){if(time1=60){time1=0;time2=time2+1;if(time2=60){time2=0;time3=time3+1;if(time3=12){time3=0;}}}}voidkeyscan2(){if(key3==0){delay(5000);if(key3==0){while(key3==0);s=s^1;}}if(s==0){if(key1==0){delay(5000);if(key1==0){while(key1==0);if(b==0){time2++;if(time2=60){time2=0;}}if(b==1){time4++;if(time4=60){time4=0;}}}}if(key2==0){delay(5000);if(key2==0){while(key2==0);if(b==0){if(time2==0){time2=60;}time2--;}if(b==1){if(time4=0){time4=60;}time4--;}}}}if(s==1){if(key1==0){delay(5000);if(key1==0){while(key1==0);if(b==0){time3++;if(time3=12){time3=0;}}if(b==1){time5++;if(time5=12){time5=0;}}}}if(key2==0){delay(5000);if(key2==0){while(key2==0);if(b==0){if(time3==0){time3=12;}time3--;}if(b==1){if(time5==0){time5=12;}time5--;}}}}}voidmain(){EA=1;TMOD=0x00;TH1=0Xf8;TL1=0X18;TR1=1;ET1=1;while(1){;}}voidcount60s()interrupt3{TL1=0x18;TH1=0Xf8;if((++count_1s)%60==0)time1++;shiji();display();if((time4==time2)&(time5==time3)==1){Beep=0;}else{Beep=1;}keyscan2();if(key4==0){delay(2000);if(key4==0){while(key
本文标题:基于单片机AT89S52的多功能数字钟设计
链接地址:https://www.777doc.com/doc-3915637 .html