基于51单片机制作电子时钟_第1页
基于51单片机制作电子时钟_第2页
基于51单片机制作电子时钟_第3页
基于51单片机制作电子时钟_第4页
基于51单片机制作电子时钟_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

基于51单片机制作电子时钟电子时钟是一种使用数字电路和单片机控制的时钟,它具有精准、稳定、可靠、方便等特点。相比传统机械时钟,电子时钟具有更高的精度和更低的成本,同时也更易于维护和管理。因此,电子时钟已经成为现代家庭、办公室、学校等场所的主流时钟类型。电子时钟的基本特点电子时钟的基本特点包括数字显示、精度高、稳定性好、可编程性强、体积小、功耗低等。其中,数字显示是电子时钟最显著的特点之一,它使用LED数码管或LCD显示屏来显示时间和日期等信息。同时,电子时钟的精度和稳定性也非常高,可以达到毫秒级别的精度。此外,电子时钟还具有较强的可编程性,可以方便地进行时间校准、闹钟设置等操作。由于电子时钟采用数字电路和单片机控制,因此体积小、功耗低也是其重要特点之一。任务要求本次设计的任务是设计一款基于单片机的电子时钟,要求具有精准、稳定、可靠、方便等特点,并且具备时间校准、闹钟设置等常用功能。同时,设计要求尽可能地简单、实用、经济、美观。设计方案本设计采用AT89S51单片机作为控制核心,使用LED数码管作为显示模块,通过按键和晶振等外部元器件实现时间校准、闹钟设置等功能。整个系统分为硬件设计和软件设计两个部分,其中硬件设计包括控制系统的硬件设计、LED数码管显示电路设计等;软件设计包括程序编程、流程图设计、测试调试等。控制系统的硬件设计控制系统的硬件设计包括单片机选型、晶振电路、按键电路、LED数码管显示电路等。在单片机选型方面,本设计选择了AT89S51单片机,它具有丰富的外设和强大的计算能力,可以满足本设计的需求。晶振电路采用4MHz晶振,以保证系统的稳定性和精度。按键电路采用矩阵按键设计,可以实现多个按键的输入和输出。LED数码管显示电路采用共阳极的设计,可以方便地控制数码管的亮灭。控制系统的软件设计控制系统的软件设计包括程序编程、流程图设计、测试调试等。程序编程采用C语言编写,主要实现时间计算、显示控制、按键扫描等功能。流程图设计主要用于系统的逻辑分析和程序设计。测试调试则是对整个系统进行功能测试和性能调试,以保证系统的正常运行。总结本设计成功地实现了基于单片机的电子时钟的设计,具有精准、稳定、可靠、方便等特点,并且具备时间校准、闹钟设置等常用功能。同时,设计采用简单、实用、经济、美观的原则,使得整个系统具有较高的实用价值和美观度。时间对于人们来说非常宝贵,但是繁忙的工作容易让人忘记当前时间。在某些情况下,遗忘并不会造成太大的影响,但是对于重要的事情来说,一时的耽误可能会导致严重后果。于是,在1957年,Ventura发明了世界上第一只电子表,从而奠定了电子时钟的基础。如今,现代的电子时钟基于单片机的计时工具采用延时程序产生时间中断,从而实现计时功能,成为人们日常生活中不可或缺的工具。现代高精度的计时工具大多采用石英晶体振荡器,因此电子钟、石英钟和石英表都具有高精度、稳定性好、使用方便、不需要经常调试等特点。数字式电子钟采用集成电路计时,用LCD显示器或数码管代替指针显示时间,减小了计时误差。这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。随着人类科技文明的不断发展,时钟不再仅仅是用来显示时间的工具,它还需要实现更多功能。高精度、多功能、小体积、低功耗已成为现代时钟发展的趋势。本文基于这种趋势,以单片机为控制核心,设计制作一个符合指标要求的多功能数字时钟。该设计以单片机芯片AT89S51为核心控制器,通过硬件电路的制作和软件程序的编制,设计制作出一个电子时钟系统。该系统由时钟电路模块、复位电路模块、LED数码管显示模块和键盘控制模块组成,具有简单清晰的操作界面,能够在4V~7V直流电源下正常工作。它能够准确显示时间,可以随时进行时间调整。该设计以硬件软件化为指导思想,充分发挥单片机功能,大部分功能通过软件编程来实现,电路简单明了,系统稳定性高。同时,该时钟系统还具有功耗小、成本低的特点,具有很强的实用性。在该设计中,芯片的选择非常重要。通过选择AT89S51芯片作为核心控制器,能够满足设计要求,实现多种功能。在本设计中,我们采用了AT89S51单片机芯片作为主要元件。AT89S51是一款低功耗、高性能的CMOS8位单片机,拥有4kBytes的可系统编程的Flash只读程序存储器。该芯片采用了ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。它不仅集成了Flash程序存储器,还支持在线编程(ISP)和传统方法进行编程。因此,AT89S51单片机在通用8位微处理器和单片机芯片中具有很强的功能和低价位的优势,可以灵活应用于各种控制领域。AT89S51芯片具有很强的性能和可靠性,是单片机系统中的常用元件之一。它采用了ATMEL公司的高密度、非易失性存储技术,内置4kBytes的可反复擦写1000次的Flash只读程序存储器和通用8位中央处理器。同时,该芯片还支持ISP(In-systemprogrammable)Flash存储,可为许多嵌入式控制应用系统提供高性价比的解决方案。AT89S51的引脚功能说明如下:Vcc为电源电压,GND为接地。P0口是一组8位漏极开路型双向I/O口,可用作输出口,每位能驱动8个TTL逻辑门电路,也可用作高阻抗输入端。在访问外部数据存储器或程序存储器时,P0口线分时转换地址和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,需要外接上拉电阻。P1口是一个带有内部上拉电阻的8位双向I/O口,可驱动4个TTL逻辑门电路,可作为输入口使用。在Flash编程和程序校验期间,P1接收低8地址。P2口是一个八位双向I/O口,带有内部上拉电阻。P2的输出缓冲级可驱动四个TTL逻辑门电路。当对端口写入“1”时,内部上拉电阻将端口拉高并可作为输入口。如果某个引脚被外部信号拉低,由于内部存在上拉电阻,它将输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容(即特殊功能寄存器(SFR)区中P2寄存器的内容)在整个访问期间不会改变。在Flash编程和程序校验期间,P2也接收高位地址和其他控制信号。P3口是一个八位双向I/O口,带有内部上拉电阻。P3的输出缓冲级可驱动四个TTL逻辑门电路。当对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。如果被外部拉低,P3口将用上拉电阻输出电流。除了作为一般的I/O口线外,P3口的第二个重要用途是接收一些用于Flash闪速存储器编程和程序校验的控制信号。P3口还有第二个功能,如表2-1所示。其中,RST是复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平。可以通过设置SFRAUXR的DISRT0位(地址8EH)打开或关闭该功能。DIRT0位缺省为RESET输出高电平打开状态。ALE/PROG用于访问外部程序存储器或数据存储器时,输出地址锁存允许(ALE)脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此可对外输出时钟或用以定时目的。需要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如果必要,可以通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,单片机执行外部程序时,应设置ALE无效。PSEN是程序储存允许的缩写,它是外部程序存储器的读选通信号。当AT89S51从外部程序存储器取指令或数据时,每个机器周期都会有两次PSEN有效,即输出两个脉冲。如果访问的是外部数据存储器,则不会有两次有效的PSEN信号。除此之外,还有许多其他的信号名称,如RXD、TXD、INT0、INT1、T0、T1、WR和RD等。EA/VPP是外部访问允许的缩写。如果要使CPU仅访问外部程序存储器(地址为0000H—FFFFH),则EA端必须保持低电平(接地)。需要注意的是,如果加密位LB1被编程,复位时内部会锁存EA端状态。如果EA端为高电平(接VCC端),CPU则会执行内部程序存储器中的指令。在Flash存储器编程时,该引脚需要加上+12V的编程电压VPP。XTAL1是振荡器反相放大器及内部时钟发生器的输入端,而XTAL2则是振荡器反相放大器的输出端。LED数码管是一种把多个LED显示段集成在一起的显示设备。共阳极和共阴极是两种常见的类型。在多位数码管中,某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。数码管的显示方法可分为静态显示和动态显示,而本设计采用的是动态显示。其原理是各个数码管的相同端连接在一起,共同占用8位段引管线。在此同时,依次给出各个数码管公共端加有效信号,并给出该数码管加有效的数据信号。当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。CLRC;高8位初值修正ADDCA,TH0;高8位初值修正MOVTH0,A;重装初值(高8位修正值)DJNZR4,ENDT0;1秒未到,退出中断服务程序CLRR4;1秒到,清零计时器SETBP3.7;时分秒转换标志位置1ENDT0:POPPSW;状态字出栈恢复POPACC;累加器出栈恢复SETBTR0;开启定时器T0SETBET0;允许T0中断RETIT;中断服务程序结束;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DISPLAY:MOVR7,#8;位码数初值(8位数码管)MOVA,@R0;取数据MOV20H,A;暂存数据MOVA,#0BFH;数码管位码初值(1、3、4、5、6、7、8)DISPLAY1:MOVP2,A;送位码MOVA,20H;取暂存数据SWAPA;高低4位交换ANLA,#0FH;取低4位MOVP0,A;送数据MOVA,#0EFH;数码管位码初值(2)MOVP2,A;送位码MOVA,20H;取暂存数据ANLA,#0F0H;取高4位SWAPA;高低4位交换ANLA,#0FH;取低4位MOVP0,A;送数据DJNZR7,DISPLAY1;8位数码管送完,退出显示子程序RET;显示子程序结束清除显示:将R0指向的数据清零,再将R0指向下一个数据,重复执行直到清空8位数码管。同时,将20H(标志用)清零,7AH(熄灭符)放入数据,设定T0、T1为16位定时器,设定T0、T1的初值为50ms,开启总中断、T0中断、T0定时器。然后设定1秒计时器,每秒调用显示子程序,并检查P3.3口是否为1(用于时分秒转换),若为1则跳转到时间调整程序。1秒计时结束后,清零计时器、将时分秒转换标志位置1,继续执行显示子程序。1秒计时程序:T0中断服务程序,用于计时1秒。在中断响应时,先将T0中断允许、T0定时器关闭,然后修正T0的初值(低8位修正值和高8位修正值),并检查计时器是否达到1秒,若未达到则退出中断服务程序,若达到则清零计时器、将时分秒转换标志位置1,继续执行显示子程序。显示子程序:先将R7设为8,表示8位数码管需要送位码和数据。然后依次将8位数据取出,暂存到20H中,先送位码1、3、4、5、6、7、8,再将暂存数据的高低4位交换,取低4位送到P0口,再送位码2,取高4位送到P0口,直到8位数码管的位码和数据全部送完,退出显示子程序。ADDSS:设置R4为14H,设置R0为71H,调用ADD1子程序,将结果存入R3,将R3存入A寄存器。如果A寄存器的值等于60H,则跳转到ADDMM标签。否则,跳转到ADDHH标签。调用CLR0子程序,将R0设置为77H,并将结果存入R3。将A寄存器的值存入R3,如果A寄存器的值等于24H,则跳转到HOUR标签。调用CLR0子程序,将R0设置为79H,并将结果存入R3。将A寄存器的值存入R3,如果A寄存器的值小于60,则退出中断。修正高8位初值,重新加载初值,开启T0定时器,如果次中断未到,则退出中断。如果次中断到(1秒),则重新赋初值,指向秒计时单元(71H-72H),调用加1程序(加1秒操作),将秒数据放入A寄存器(R3为2位十进制数组合),清除进位标志,如果小于60秒,则退出中断。当计时器达到60秒或更多时,清除秒计时单元并将指针指向分计时单元(76H-77H)。然后,分计时单元加1分钟并将分数据放入A寄存器中。清除进位标志。如果计时器小于60分,则退出中断;否则,清除分计时单元并将指针指向小时计时单元(78H-79H)。然后,小时计时单元加1小时并将时数据放入A寄存器中。清除进位标志。如果计时器小于24小时,则退出中断;否则,清除小时计时单元并将分、时计时单元数据移入对应的显示单元。最后,恢复状态字(出栈)、恢复累加器并开放T0中断。最后,中断返回。闪动调时程序:T1中断服务程序用于时间调整时调整单元闪烁指示。在中断服务程序中,首先保护现场,然后装定时器T1定时初值。如果0.3秒未到,则退出中断(50MS中断6次)。否则,重装0.3秒定时用初值,并对闪烁标志取反。如果02H位为1,则显示单元“熄灭”。否则,正常显示。最后,恢复现场并退出中断。清零程序:该程序用于将计时单元清零。具体操作为:清累加器,清当前地址单元,指向前一地址,前一地址单元清空。最后返回子程序。时钟调整程序:当调时按键按下时,进入此程序。首先关闭定时器T0中断和定时器T0。然后调用1秒延时程序。如果键按下时间小于1秒,则关闭显示(省电)。接着进入调时状态,赋闪烁定时初值,并允许T1中断和开启定时器T1。等待P3.7口为(键未释放),等待键释放,分调整闪烁标志置1。等待键按下,延时0.5秒。如果按下时间大于0.5秒,则转调小时状态。如果按下时间小于0.5秒,则进行加1分钟操作。取调整单元数据,清进位标志,将调整单元数据与60比较。如果调整单元数据小于60,则转SET4循环。如果调整单元数据大于或等于60,则清进位标志。AJMPSET4SETBET0;将ET0寄存器置1,进入省电状态,LED不显示SETBTR0;将TR0寄存器置1,开启T0定时器,开启时钟CLOSE:JBP3.3,CLOSE;等待按键按下LCALLDISPLAY;有键按下,调用显示子程序延时削抖JBP3.3,CLOSE;是干扰返回CLOSE等待WAITH:JNBP3.3,LJMPWAITH;等待键释放SETHH:CLRSETB01H;小时调整标志置1SETHH1:JNBP3.3,SET5;等待按键按下LCALLDL05S;有键按下延时0.5秒JNBP3.3,SETOUT;按下时间大于0.5秒退出时间调整LCALLADD1;按下时间小于0.5秒加1小时操作CJNEA,#24H,HOUU;计时单元数据与24比较,小于24转SET6循环SETOUT:JNBP3.3,LCALLDISPLAY;等待键释放JNBP3.3,LJMPSET1;返回主程序,LED数据显示亮SET1:LCALLDISPLAY;调用显示子程序AJMPSET2SET3:LCALLDISPLAY;调用显示子程序AJMPSET4SET5:LCALLDISPLAY;调用显示子程序AJMPSETHH1CLR0;在时钟调整时,如果当前时间大于等于24时,清空操作SET6;跳转到SET6循环,继续进行时钟调整P3.3,SETOUT1;退出程序,等待按键释放DISPLAY;延时削除抖动P3.3,SETOUT;存在抖动,返回SETOUT并等待01H

温馨提示

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

评论

0/150

提交评论