版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
利用89C51设计一个简易日历时钟系统,时钟系统硬件主要由单片机控制的计时电路、复位等辅助电路、按键电路、数码管显示电路、电源系统等组成。日历时钟可以显示年、月、时、分、秒;可以设置年、月、时、分。其中计时控制电路由AT89C51单片机控制;按键电路包含时间设置;时间显示屏电路由7个数码管组成;电源系统由小功率整流滤波稳压电路组成,输出直流电压5V,向主电路及显示电路供电。系统框图如图1所示。「7「一!按键与按钮电路一十7段数码管显示电路TOC\o"1-5"\h\zIAT89C511I复位等辅助电路—;:IL,j„„'J电源系统图1日历时钟系统框图在计时过程中,系统利用89C51自身的计时器T0作为时钟基准,计时器中断的准确度直接关系到整个系统的精度,因此获取精确的定时时钟信号成为该系统的关键。MCS-51单片机内有2个可编程的16位定时器/计数器,在本系统设计中采用AT89C51的定时器丁0,并工作在方式l下,晶振频率为12MHz。1T0定时中断定时器/计数器丁0工作方式1的电路逻辑结构如图2所示。TO定时特性功能寄存器由TL0(低8位)和TH0(高8位)构成。特殊功能寄存器TMOD控制定时寄存器的工作方式;TCON则用于控制定时器T0和T1的启动和停止计数,同时管理定时器TO和T1的溢出标志等。程序开始时需对TL0和TH0进行初始化编程,以定义它们的工作方式,并控制T0和T1的计数。在系统的设计中,计时单位以s为基准,并要求日误差W10s,如果用循环去做,无法满足精度要求。选用12MHz的晶体可得到l〃s的精度,经分析确定使用定时器0的方式l。这个方式下定时器0是16位定时器,也就是最大定时值为jFFFFH,12MHz晶体的每个定时周期为1ps,最多可以定时FFFFHX1ps=65635ps,即使使用最大值也无法一次定时1s,设计中使用1次定时20ms,50次定时中断得到1s。20ms定时中断的定时值为:FFFFH-20ms/lps=B1DFH[1].图2定时器/计数器工作方式1逻辑结构2程序测试与调整在KeiluVision3平台下利用C语言实现如下代码:#include<reg52.h>#defineueharunsignedcharuehardataMScond=0;//msuchardataScond=0;//suchardataMinure=0;//rainuchardataHollr=0;//hvoidmain(void){EA=1;//允许CPU中断ET0=1;//定时器0中断打开TMOD=0xl;//设定时器0为方式1TH0=0xBl:TL0=0xDF~//设定时值为20000ps(20ms)TR0=1;//开始定时while(1);}voidTime0(void)interrupt1using1{TH0=0xBl;//20ms断点(1)TL0=0xDF;//设定时值MScond=MScond+1;if(MScond==50){MScond=0;Scond=Scond+1;if(Seond==60){Scond=0;Minute=Minute+1;//分断点(2)if(Minute==60){Minute=0;Hour=Hour+1;//d,时断点(3)if(Hour==24){Hour=0;}}}}首先调试每20ms中断时的精度,在选项中设定调试晶振为12MHz,在(1)处设置一个断点再运行,这时记录下每次中断时的时间,如图3所示。在初始化中费时为551Ms,每一次中断时间应该考虑该项的影响。在实际处理中可以利用两次中断时间的差来作为定时器的中断时间间隔。
0x0f0x01dptr0x00以PC$C:0xG09Estates0x0f0x01dptr0x00以PC$C:0xG09Estates20568sec0.02056800•—J20|voidTimeO(void)interrupt1THO^OkBI:AHU-UALl1,
;?.3TLO二OkDF;//设定时值初MScond=MScond+l:if(MSccmd=5Ci)US通过测试,得到第一次为0.02056800s,第二次为0.04058000s,第三次为0.06059Z00s。可以看出,每中断一次会比定时值长了12Mso如果将断点设定在(2)处,并通过LogicAnalyzertool,得到分钟第一次中断的时间为60.03657s,第二次中断的时间为120.07257s,则每分钟的实际时间为60.036s。再将断点设定在(3)处,得到小时第一次中断的时间为3602.160576s,第二次中断的时间为7204.320576s,可以得到小时的实际时间为3602.16s,如图4所示。PC$
……states
secC:0x00C236021605783602.16057800Hour-Hour+1:if(Hour==24)(b)分析工具结样PC$
……states
secC:0x00C236021605783602.16057800Hour-Hour+1:if(Hour==24)(b)分析工具结样(a)执行结果图为什么会产生这些误差呢?通过对中断程序的汇编源码进行分析,实际上中断程序入堆栈时使用了两条语句:PUSHACC和PUSHPSW0执行人栈指令花费了4个机器周期,加上重新对TH0和TL0的加载又用去2个机器周期,计数值加1花费了2个机器周期,中断返回约4个机器周期共约12个机器周期。为了消除这些因素的影响,需要在对T0设置计数值时减去12个机器周期,将计算得到的初始值B1DFH加上12(0CH)得到:B1DFH+12=B1EBH作为新的定时器初值,修改后的程序为:#include<reg52.h>#defineucharunsignedcharuchardataMScond=0;//msuehardataSeond=0;IlsuchardataMinute:0;IIrainuchardataHour=0;IIhvoidmain(void){EA=1;II允许CPU中断ET0=1;II定时器0中断打开TMOD=Oxl;II设定时器0为方式1TH0=0xBl;TL0=OxEB;II设定时值为20000ps(20ms)减去12psTR0=1;II开始定时while(1);voidTime0(void)interrupt1using1{TH0=0xBl;II20ms断点(1)TL0=0xDF‘II设定时值MSeond=MScond+1:if(MSeond==50){MScond=0;Seond=Seond+1;if(Scond==60){Scond=0;Minute=Minute+1;II分断点(2)if(Minute==60){Minure=0;IId,时断点⑶Hour=Hour+1;if(Hour==24)IId,时断点⑶重新调试程序,仍然在选项中设定调试晶振为12MHz,重新测试20ms定时器的实际时间,在(1)处设置一个断点后运行,重新记录下每次中断时的时间,如图5所示。初始化时间为556以s,为消除其影响,使用两次中断时间间隔来作为定时器实际获得的基准时钟。PC$
,,,■statesPC$
,,,■states"■-secC:0x009E205560.02055600TH0=0xBl:TL0=0xEB;〃设定时值MScond=MScond+1:图5修正后每20ms的实际时间得到第一次中断时的时间为0.020556。Os,第二次为O.040556000s,第三次为0.060556。Os,可以看出每次中断间隔刚好20ms。如果将断点设定在(2)处,并通过LogleAnalyzertool,得到第一次中断时时间为60.00057s第二次为120.00057s间隔刚好60s。将断点设定在(3)处,得到第一次中断的时间为3600.000578s,第二次中断时间为7200.000578s时间间隔为3600s测试结果如图6所示,完全可以满足系统设计而女。PC$st&tes-secMinute=0;Hour=Hour+l:if(Hour==24)(a)执行结果图C:0x00C2PC$st&tes-secMinute=0;Hour=Hour+l:if(Hour==24)(a)执行结果图3总结通过对定时器的误差分析和校正,可以提高系统的精确度。当然,上面的分析是在软环境下理想晶振频率下实现的,在现实中会因晶振偏差等因素而造成误差[2]。在该测试中,主程序没有进行其他处理,而在日历设计中还要涉及到计时器T1的中断来完成对扫描显示电路的处理,还包括外部中断对时钟进行了调整,加上一些闹钟功能,这必然会对T0的定时精确性产生影响。另外,当中断程序中语句越多,占用的机器周期也越多,因此在设计中
应充分利用KeiluVIsion3的分析工具,通过多次调整计数初值以获取精确的时钟信号,这对于要求精确时钟信号的应用具有重要的意义。第1章前言单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。由于具有上述优点,在我国,单片机已广泛地应用在工业自动化控制、自动检测、智能仪器仪表、家用电器、电力电子、机电一体化设备等各个方面,而51单片机是各单片机中最为典型和最有代表性的一种。这次毕业设计通过对它的学习、应用,以AT89S51芯片为核心,辅以必要的电路,设计了一个简易的电子时钟,它由直流电源供电,通过数码管能够准确显数字时钟是现代社会应用广泛的计时工具,在航天、电子等科研单位,工厂、医院、学校等企事业单位,各种体育赛事及至我们每个人的日常生活中都发挥着重要的作用。本系统是基于AT89C51单片机设计的一个具有六位LED显示的数字时实时钟,采用独立式按键进行时间调整,同时引入一个内部充电电源在停止外部供电时,仍具有内部计时的功能。该系统同时具有硬件设计简单、工作稳定性高、价格低廉等优点第2章系统设计2.1电路组成及工作原理本文数字时钟设计原理主要利用AT89C51单片机,由单片机的P0口控制数码管的位显示,P2口控制数码管的段显示,P1口与按键相接用于时间的校正。在设计中引入两个电源电路,一个是外部电源系统产生+5V电压,用于给CPU及显示电路提供工作电压,这是数字时钟正常工作时的总电压。另一个是备用电源,当外部电源关断时由它提供工作电压使CPU继续工作,利用单片机的空闲方式降低功耗,数码管不显示但能使计时保持正常,不会造成掉电时计时清零的现象。针对内外两个电源情况又加入了MC34064电压检测电路,用于时实判断是哪各电源在工作。整个系统工作时,秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为'分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”疽'时计数器”采用24进制计时器,可实现对一天24小时的累计。显示电路将“时”、“分”、“秒”计数器的输出,通过六个七段LED显示器显示出来。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。2.2硬件部分2.2.1单片机系统2.2.1.1单片机是一种集成电路芯片,采用超大规模技术把具有数据处理能力(如算术运算,逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM),只读程序存储器(ROM),输入输出电路(I/O口),可能还包括定时计数器,串行通信口(SCI),显示驱动电路(LCD或LED驱动电路),脉宽调制电路(PWM),模拟多路转换器及A/D转换器等电路集成到一块单块芯片上,构成一个最小然而完善的计算机系统。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。本文采用的单片机为AT89C51,AT89C51是一种低功耗、高性能的片内含有4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。它的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密
度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。2.2.2.2AT89C51的主要性能参数:与MCS-51产品指令系统完全兼容4k字节可重擦写FLASH闪速存储器1000次擦写周期全静态操作:0Hz—24MHz三级加密程序存储器128x8字节内部RAM32个可编程I/O口线2个16位定时/计数器6个中断源可编程串行URAR通道低功耗空闲和掉电模式AT89C51提供以下标准功能:4k字节FLASH闪速存储器,128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51降至0Hz的静态逻辑操作,并支持两种可选的节电工作模式。空闲方式体制CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器体制工作并禁止其他所有不见工作直到下一个硬件复位。2.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《曲式与作品分析(2)》2021-2022学年第一学期期末试卷
- 淮阴师范学院《英国文学作品选读》2023-2024学年第一学期期末试卷
- 淮阴师范学院《小学生品德发展与道德养成》2021-2022学年第一学期期末试卷
- 淮阴师范学院《固体废物处理与处置》2023-2024学年第一学期期末试卷
- 淮阴工学院《书籍设计2》2022-2023学年第一学期期末试卷
- 淮阴师范学院《会计电算化实训》2021-2022学年期末试卷
- DB1402T36-2024农村居家养老服务规范
- 拓展创新思维的企业教育培训考核试卷
- 塑料制品在船舶制造上的应用考核试卷
- 煤矿通风安全监测监控培训考核试卷
- 苏教版五年级上册数学试题-第一、二单元 测试卷【含答案】
- 发挥产业工会作用的实施方案
- 科捷物流介绍(中文版)ppt课件
- 军事地形学地形图基本知识
- 2022版义务教育(生物学)课程标准(含2022年修订和新增部分)
- 六年级综合实践活动课件-珍爱生命远离毒品 全国通用(共24张PPT)
- 建设工程竣工消防验收记录表(DOC36页)
- 沉井专项施工方案DOC
- 切削力计算参考模板
- 一年级海洋教育教案
- 聚氨酯硬泡沫配方及计算
评论
0/150
提交评论