农机四组定时闹钟设计方案报告文件_第1页
农机四组定时闹钟设计方案报告文件_第2页
农机四组定时闹钟设计方案报告文件_第3页
农机四组定时闹钟设计方案报告文件_第4页
农机四组定时闹钟设计方案报告文件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

PAGE1基于单片机的定时闹钟设计摘要:本设计是定时闹钟的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子定时闹钟。电子钟设计可采用数字电路实现,也可以采用单片机来完成。数字电子钟是用数字集成电路构成的,用数码管显示“时",“分",“秒"的现代计时装置。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。AT89C51单片机结合七段显示器设计的简易定时闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响,进-步可以扩充控制电器的启停关键词:单片机时钟闹铃1、总体方案设计电子闹钟应包括复位电路、时钟电路、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分。CPU复位、时钟等电CPU复位、时钟等电路按钮电路6位数码管显示电路闹铃声指示电路电源图1电子闹钟的主电路指的是图1中虚线框内部分,主要涉及到CPU电路和按键按钮电路。主机的设计具体地说有:1)系统时钟电路设计;2)系统复位电路设计;3)按键与按钮电路设计;4)闹铃声指示电路设计。设计内容包括了时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分的设计.采用五个开关来控制定时闹钟的工作状态,按键功能说明:K1、调整时间的小时;K2、调整闹钟的小时;K3、调整时钟分钟和闹钟的分钟;K4、调整确认及查看闹钟设定的时间;K5、复位键。课程设计准备中我们根据具体的要求,查找资料,然后按要求根据已学过的时钟程序用KEILC编写定时闹钟的程序,依据程序利用proteus7.3软件进行了仿真试验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。设计完成的定时闹钟达到课程设计的要求,在到达定时的时间便立即发出蜂鸣声音,持续一分钟,显示采用的六位阳极数码管电路.2、硬件设计2。1系统时钟电路设计对于时间要求不是很高的系统,只要按图进行设计就能使系统可靠起振并稳定运行。但由于原理图中的C1、C2电容起着系统时钟频率微调和稳定的作用,因此,在本闹钟系统的实际应用中一定要注意正确选择参数(30±10PF),并保证对称性(尽可能匹配),选用正牌厂家生产的瓷片或云母电容,如果可能的话,温度系数要尽可能低。实验表明,这2个电容元件对闹钟的走时误差有较大关系。2.2系统复位电路的设计智能系统一般应有手动或上电复位电路.复位电路的实现通常有两种方式:1)RC上电复位电路;2)专用µP监控电路.前者实现简单,成本低,但复位可靠性相对较低;后者成本较高,但复位可靠性高,尤其是高可靠重复复位。对于复位要求高、并对电源电压进行监视的场合,大多采用这种方式。本次课程设计采用了上电按钮电平复位电路。2。3闹钟指示电路设计闹铃指示可以有声或光两种形式。本系统采用声音指示。关键元件是蜂鸣器。蜂鸣器有无源和有源两种,前者需要输入声音频率信号才能正常发声,后者则只需外加适当直流电源电压即可,元件内部已封装了音频振荡电路,在得电状态下即起振发声。市场上的有源蜂鸣器分为3V、5V、6V等系列,以适应不同的应用需要。闹钟电路是用比较器来比较计时系统和定时系统的输出状态,如果计时系统和定时系统的输出状态相同,则发出一个脉冲信号,再和一个高频信号混合,送到放大电路驱动扬声器发声,从而实现定时闹响的功能。其电路设计参见系统原理图。2.4电子闹钟的显示电路设计本次课程设计采用了6位数码管显示电路.在6位LED显示时,为了简化电路,降低成本,采用动态显示的方式,6个LED显示器共用一个8位的I/O,6位LED数码管的位选线分别由相应的P2。0~P2。5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即P0口。译码显示电路将“时”,“分”、“秒”计数器的输出状态七段显示译码器译码,通过6位LED七段显示器显示出来。到达定时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一蜂鸣器实现闹铃。校时电路时用来对“时”、“分”显示数字进行校对调整的.3软件设计3.1概述软件设计的重点在于秒脉冲信号的产生、显示的实现、以及按键的处理等方面。基于软件的秒脉冲信号通常有延时法和定时中断法.延时法一般采用查询方式,在延时子程序前后必然需要查询和处理的程序,导致误差的产生,因此其秒脉冲的精度不高;中断法的原理是,利用单片机内部的定时器溢出中断来实现。例如,设定某定时器每100ms中断1次,则10次的周期为1s.本系统中所使用的晶振频率为12MHZ。3.2系统软件主模块的设计主模块是系统软件的主框架.结构化程序设计一般有“自上而下”和“自下而上”两种方式,“自上而下"法的核心就是主框架的构建。它的合理与否关系到程序最终的功能的多少和性能的好坏。本系统的主模块的程序框图如下图2所示:CPU初CPU初始化定时0初始化中断初始化串口初始化显示待机指示符设定闹铃时间判设置闹铃时间否?显示刷新启动走时有关变量初始化刷新显示判时或分变化否?秒指示判1秒到否?闹铃判是否到闹铃时间?延时YYYY图23.3基本显示模块设计基本显示模块设计的重点是由显示代码取得相应的段码,显示段码数据的并行发送,高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟,石英表,石英钟都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。程序流程如图3所示。将16进制时分秒数据转化为BCD显示代码将16进制时分秒数据转化为BCD显示代码关显示以免显示抖动关显示以免显示抖动通过串口将时分秒数据传入数码管通过串口将时分秒数据传入数码管打开显示打开显示图33。4时间设定模块设计设置键吗?设置模块初始化将在编参数送显示缓冲区闪烁标志为真?将当前位的显示代码置暗代码调基本显示模块刷新显示设置键吗?设置键吗?设置模块初始化将在编参数送显示缓冲区闪烁标志为真?将当前位的显示代码置暗代码调基本显示模块刷新显示设置键吗?当前编辑位下移(下一位)当前编辑的是分各位?结束设定+键吗?根据当前位的性质分别进行+1处理(含上下限判断)NNNNN图43.5闹铃功能的实现闹铃功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题.闹铃判别与闹铃处理的关键在于判别何时要进行闹铃.当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。译码显示电路将“时”、“分”、“秒”计数器的输出送到七段显示译码驱动器译码驱动,通过六个七段LED显示器显示出来.闹铃电路根据计时系统的输出状态产生一脉冲信号,然后加上一个高频或低频信号送到放大电路驱动蜂鸣器发声实现报时。校时电路是直接加一个脉冲信号到时计数器或者分计数器或者秒计数器来对“时”、“分”、“秒”显示数字进行校对调整。其流程图如下所示:时十位、个位,分十位时十位、个位,分十位、个位改变了设置闹铃标志是否设置了闹铃清除闹铃标志判当前时间是设定时间中断返回中断返回YNY闹铃判别处理图5图6在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及定时时间的序号等。在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。时,分,秒显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化.初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数。由于定义了定时闹钟组,在这里采用中断组次,每中断一次比较一组闹钟,避免了一次比较中断时间过长,影响下次中断时间.显示之后查询闹铃标志位是否与前面所置数相等,若相等则响铃。为了避免响铃影响显示,采用了每显示几屏以后在显示程序中出现脉冲,驱动喇叭,不会影响显示.之后用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。参考文献【1】林洁.单片机应用实例开发.西安电子科技大学出版社,2009【2】张毅刚。单片机原理及应用。北京高等教育出版社,2005【3】李法春.单片机原理及接口技术案例教程.北京机械工业出版社,2008【4】李全利.单片机原理及应用技术。北京高等教育出版社,2001【5】徐江海.单片机实用教程。北京机械工业出版社,20064附录4.1元件清单:六位共阳极数码管1个7404反向器1个AT89C511个按钮5个晶振1个30pF电容2个10pF电容1个上拉电阻A102G1个NPN三极管1个1KΩ电阻2个喇叭1个4。2程序附录: ORG0000HLJMPSTARTORG000BHLJMPTIMESTART:MOVSP,#50H MOV20H,#00H;定义秒 MOV21H,#00H;定义分MOV22H,#00H;定义时MOV23H,#01H;定义闹钟分钟MOV24H,#01H ;定义闹钟小时MOV25H,#00H MOV26H,#01HMOV30H,#00H;BCDSECONDMOV31H,#00HMOV32H,#00H;BCDMINUTEMOV33H,#00HMOV34H,#00H;BCDHOURMOV35H,#00HMOV36H,#01HMOV37H,#00HMOV38H,#01HMOV39H,#00H MOV50H,#00H;按键次数 MOVTMOD,#01H;16位计数器MOVTH0,#03CH;赋初值MOVTL0,#0B0HMOVIE,#87H;中断允许SETBTR0;启动T0MOVR2,#14HMOVP2,#0FFH CLRP3.7MAIN:LCALLTIMEPRO ;调用闹钟判断GB: LCALLDISPLAY1 ;调用时间显示JBP1.3,M1;P1。3=1时转移S4没有按下LCALLSETTIME;调用SETTIME调时子程序LJMPMAINM1:JBP1.2,M2;P1g。2=1时转移S3LCALLSETATIME;调用SETATIME子程序LJMPMAINM2:JBP1。0,M4;P1.0=1时转移S1LCALLLOOKATIME;调用LOOKATIME显示闹钟子程序M4:LJMPMAIN;;;;;;;;延时子程序;;;;;;;;DELAY:MOVR4,#030HDL00:MOVR5,#0FFHDL11:MOVR6,#9HDL12:DJNZR6,DL12DJNZR5,DL11DJNZR4,DL00RET ;;;;;;;时间调整;;;;;;;;;SETTIME: ;设置时间L0:LCALLDISPLAY1MM1:JBP1.3,L1;P1。3=1时转移MOVC,P1。3JCMM1LCALLDELAY1;延时JCMM1MSTOP1:MOVC,P1。3 ;P1.3为0时转移JNCMSTOP1LCALLDELAY1 ;延时 MOVA,50H INC50H CJNEA,#00H,HJ1 LJMPL0HJ1:MOVC,P1。3JNCMSTOP1INC22H;小时自加一MOVA,22HCJNEA,#18H,GO12;小时计数循环MOV22H,#00H;复位MOV34H,#00HMOV35H,#00HLJMPL0L1:JBP1.1,L2;P1。1=1时转移MOVC,P1.1JCL1LCALLDELAY1;延时JCL1MSTOP2:MOVC,P1。1 ;P1。1=0时转移JNCMSTOP2LCALLDELAY1;延时MOVC,P1。1JNCMSTOP2INC21H;分钟加一MOVA,21HCJNEA,#3CH,GO11;分钟计数循环MOV21H,#00H;复位MOV32H,#00HMOV33H,#00HLJMPL0GO11:MOVB,#0AHDIVABMOV32H,B;将A的低4位存入32单元MOV33H,A;将A的高4位存入33单元LJMPL0GO12:MOVB,#0AHDIVABMOV34H,B;将A的低4位存入34单元MOV35H,A;将A的高4位存入35单元LJMPL0L2:JBP1.0,L0;P1。0=1时转移MOVC,P1。0JCL2LCALLDELAY1;延时MOVC,P1。0JCL2STOP1:MOVC,P1。0 ;P1.0=0时转移JNCSTOP1LCALLDELAY1;延时MOVC,P1。0JNCSTOP1 MOV50H,#00HLJMPMAIN;;;;;;设置闹钟;;;;;;;;SETATIME:LCALLDISPLAY2;调用DISPLAY2显示闹钟N0:LCALLDISPLAY2MM2:JBP1.2,N1;P1。2=1时转移MOVC,P1。2JCMM2LCALLDELAY1;延时JCMM2MSTOP3:MOVC,P1。2 ;P1。2=0时转移JNCMSTOP3LCALLDELAY1;延时 MOVA,50H INC50H CJNEA,#00H,HJ2 LJMPN0HJ2:MOVC,P1。2JNCMSTOP3INC24H;小时加一MOVA,24HCJNEA,#24,GO22;小时计数循环MOV24H,#00H;复位MOV38H,#00HMOV39H,#00HLJMPN0N1:JBP1.1,N2;P1。1=1时转移MOVC,P1。1JCN1LCALLDELAY1;延时JCN1MSTOP4:MOVC,P1。1 ;P1。1=0时转移JNCMSTOP4LCALLDELAY1;延时MOVC,P1。1JNCMSTOP4INC23H;分钟加一MOVA,23HCJNEA,#60,GO21;分钟计数循环MOV23H,#00H;复位MOV36H,#00HMOV37H,#00HLJMPN0GO21:MOVB,#0AHDIVABMOV36H,B;将A的低4位存入36单元MOV37H,A;将A的高4位存入37单元LJMPN0GO22:MOVB,#0AHDIVABMOV38H,B;将A的低4位存入38单元MOV39H,A;将A的高4位存入39单元LJMPN0N2:JBP1.0,N0;P1.0=1时转移MOVC,P1。0JCN2LCALLDELAY1;延时MOVC,P1.0JCN2STOP2:MOVC,P1。0JNCSTOP2LCALLDELAY1MOVC,P1。0JNCSTOP2 MOV50H,#00HLJMPMAINTIMEPRO:MOVA,21HMOVB,23HCJNEA,B,BK;判断定时闹钟的分钟MOVA,22HMOVB,24HCJNEA,B,BK;判断定时闹钟的小时SETB25H。0MOVC,25H。0LCALLTIMEOUT;调用TIMEOUTBK:RETTIMEOUT:X1:LCALLBZ;调用喇叭响应程序LCALLDISPLAY2;延时CLR25H.0;调用喇叭响应程序结束JBP1.0,X1;P1。0=1时转移LCALLDELAY ;延时CLR25H.0LJMPDISPLAY1BZ:CLRP3。7MOVR7,#250;喇叭响应时间T2:MOVR6,#124T3:DJNZR6,T3DJNZR7,T2SETBP3。7RETLOOKATIME:LCALLDISPLAY2MM:JNBP1。0,LOOKATIMELCALLDELAY1LJMPMAINDELAY1:MOVR4,#14H;时间延时DL001:MOVR5,#0FFHDL111:DJNZR5,DL111DJNZR4,DL001RET;;;;;;;;;;;;定时;;;;;;;;;;;;TIME:PUSHACC;保护现场PUSHPSWMOV TH0,#03CH;初值 MOV TL0,#0B0H DJNZR2,RET0 MOV R2,#14H MOVA,20H CLRC INCA;秒自加一 CJNE A,#3CH,GO1;秒计数循环 MOV20H,#0;复位MOV30H,#0MOV31H,#0 MOV A,21H INCA;分钟自加一CJNEA,#3CH,GO2;分钟计数循环MOV21H,#0H;复位MOV32H,#0MOV33H,#0 MOV A,22H INC A;小时自加一 CJNEA,#18H,GO3;小时计数循环 MOV22H,#00H;复位MOV34H,#0MOV35H,#0 AJMPRET0GO1: MOV 20H,AMOVB,#0AHDIVABMOV31H,A;将A的低4位存入31单元MOV30H,B;将A的高4位存入30单元 AJMPRET0GO2:MOV21H,AMOVB,#0AHDIVABMOV33H,A;将A的低4位存入33单元MOV32H,B;将A的高4位存入32单元 AJMP RET0GO3: MOV 22H,AMOVB,#0AHDIVABMOV35H,A;将A的低4位存入35单元MOV34H,B;将A的高4位存入34单元 AJMP RET0RET0:POPPSW;恢复现场POPACCRETI;;;;;;;;;;;显示子程序;;;;;;;;;;;DISPLAY1: MOV R0,#30HMOVR3,#0FEHMOVA,R3PLAY1:MOVP2,AMOVA,@R0;取要显示的数据MOVDPTR,#DSEG1;指向字形段码首地址MOVCA,@A+DPTR CPLA;查表取字形段码MOVP0,A;指向P0口

温馨提示

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

评论

0/150

提交评论