ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:137.86KB ,
资源ID:6903181      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6903181.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机电子时钟方案设计书15491.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机电子时钟方案设计书15491.docx

1、基于单片机电子时钟方案设计书15491设计题目:电子时钟设计目的:应用单片机控制技术,以89c51单片机为核心的电子时钟设计目标:在数码管上显示相应的时间,并通过一个控制键来实现时间的调整和是否进入省电模式的转换关键词:单片机;电子时钟;键盘控制引言:1957年,Ventura发明了世界上第一个电子表,从而奠定了电子时钟的基础,电子时钟开始迅速发展起来。现代的电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。现在高精度的计时工具大多数都使

2、用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时、分、秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。1设计要求功能:电子时钟能够显示时、分、秒显示时间的功能,还可以进行时和分的校对,而且其片选的灵活性强。并且是以单片机为核心来设计的。2方案论证与对比21单片机的型号选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电

3、压,高性能CMOS8位微处理器,器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。22数码管显示工作原理数码管是一种把多个LED显示段集成在一起的显示设备。有两种类型,一种是共阳型,一种是共阴型。共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。共阴型就是把多个LED显示段的阴极接在一起,即为公共商。阳极即为二极管的正极,又称为

4、正极,阴极即为二极管的负极,又称为负极。通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。数码管显示方法可分为静态显示和动态显示两种。静态显示就是数码管的8段输入及其公共端电平一直有效。动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出

5、该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。3系统硬件电路的设计总体硬件原理图如图1所示 图1 系统电路原理图AT89C51因为其含一个可擦除的ROM,以及其存储数据的时间长度可达10年之久所以选其作为该设计的核心控制部件。3.1键盘电路设计该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一

6、。达到时间调节的目的。选择的多功能按键如图2所示。 图2 多功能控制键3.2主控模块89C5189C51是一个8位单片机,片内ROM全部采用FLASH ROM技术,晶振时钟为12MHz。89C51是标准的40引脚双列直插式集成电路芯片,有4个八位的并行双向I/O端口,分别记作P0、P1、P2、P3。第31引脚需要接高电位使单片机选用内部程序存储器;第40脚为电源端VCC,接+5V电源,第20引脚为接地端VSS,通常在VCC和VSS引脚之间接0.1F高频滤波电容。4系统软件设计4.1系统软件概述 在主程序的开始定义了一组固定单元用来存储计数的分、秒、时的存储单元。在主程序中,对不同的按键进行扫描

7、,实现秒表,时间调整。系统总体流程图如图3所示。图3 总体流程图系统子程序流程图如图4所示。5系统测试 本系统的软件系统主要可分为主程序、定时计数中断程序、时间调整程序、延时程序四大模块。在程序设计过程中,加强了部分软件抗干扰措施,下面对部分模块作介绍。系统开始仿真的仿真图如图5系统仿真图所示。 图5系统仿真图 6 总结通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。损耗了过多的内存资源。本次的设计使我从中学到了一些很重要的东西,那

8、就是如何从理论到实践的转化,怎样将我所学到的知识运用到我以后的工作中去。在大学的课堂的学习只是在给我们灌输专业知识,而我们应把所学的用到我们现实的生活中去,此次的电子时钟设计给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应于以后的竞争,同时在查找资料的过程中我也学到了许多新的知识,在和同学协作过程中增进同学间的友谊,使我对团队精神的积极性和重要性有了更加充分的理解。 我知道,今后我的路还是很长,我要学的东西也有很多。通过这次实习,我深刻的认识到计算机专业的路的不平坦,但我会以一种良好的态度去迎接每一个挫折和挑战。参考文献1 谢自美电子线路设计实验测试M武汉:华中理工大学出版

9、社,1992.2 何立民单片机应用系统设计M北京:北京航空航天大学出版社,1993.3 楼然笛单片机开发M北京:人民邮电出版社,1994.4 付家才单片机控制工程实践技术M北京:化学工业出版社 2004.3.5 李光才单片机课程设计 实例指导M 北京:北京航空航天大学出版社 2004.6 朱定华单片机原理及接口技术实验M北京:北方交通大学出版社2002.11.7 刘湘涛江世明单片机原理与应用M. 北京:电子工业出版社,2006.附录一 部分程序清单 源程序ORG 0000H 。程序执行开始地址LJMP START 。跳到标号START执行ORG 0003H 。外中断0中断程序入口RETI 。外

10、中断0中断返回ORG 000BH 。定时器T0中断程序入口LJMP INTT0 。跳至INTTO执行ORG 0013H 。外中断1中断程序入口RETI 。外中断1中断返回ORG 001BH 。定时器T1中断程序入口LJMP INTT1 。跳至INTT1执行ORG 0023H 。串行中断程序入口地址RETI 。串行中断程序返回START: MOV R0,#70H 。清70H-7AH共11个内存单元MOV R7,#0BH 。CLEARDISP: MOV R0,#00H 。INC R0 。DJNZ R7,CLEARDISP 。MOV 20H,#00H 。清20H(标志用)MOV 7AH,#0AH 。

11、放入熄灭符数据MOV TMOD,#11H 。设T0、T1为16位定时器MOV TL0,#0B0H 。50MS定时初值(T0计时用)MOV TH0,#3CH 。50MS定时初值MOV TL1,#0B0H 。50MS定时初值(T1闪烁定时用)MOV TH1,#3CH 。50MS定时初值SETB EA 。总中断开放SETB ET0 。允许T0中断SETB TR0 。开启T0定时器MOV R4,#14H 。1秒定时用初值(50MS20)START1: LCALL DISPLAY 。调用显示子程序JNB P3.7,SETMM1 。P3.7口为0时转时间调整程序SJMP START1 。P3.7口为1时跳

12、回START1SETMM1: LJMP SETMM 。转到时间调整程序SETMM 。 1秒计时程序 。INTT0: PUSH ACC 。累加器入栈保护PUSH PSW 。状态字入栈保护CLR ET0 。关T0中断允许CLR TR0 。关闭定时器T0MOV A,#0B7H 。中断响应时间同步修正ADD A,TL0 。低8位初值修正MOV TL0,A 。重装初值(低8位修正值) MOV A,#3CH 。高8位初值修正ADDC A,TH0 。MOV TH0,A 。重装初值(高8位修正值) SETB TR0 。开启定时器T0DJNZ R4, OUTT0 。20次中断未到中断退出ADDSS: MOV R

13、4,#14H 。20次中断到(1秒)重赋初值MOV R0,#71H 。指向秒计时单元(71H-72H)ACALL ADD1 。调用加1程序(加1秒操作)MOV A,R3 。秒数据放入A(R3为2位十进制数组合)CLR C 。清进位标志CJNE A,#60H,ADDMM 。ADDMM: JC OUTT0 。小于60秒时中断退出ACALL CLR0 。大于或等于60秒时对秒计时单元清0 MOV R0,#77H 。指向分计时单元(76H-77H)ACALL ADD1 。分计时单元加1分钟MOV A,R3 。分数据放入ACLR C 。清进位标志 CJNE A,#60H,ADDHH 。ADDHH: JC

14、 OUTT0 。小于60分时中断退出ACALL CLR0 。大于或等于60分时分计时单元清0 MOV R0,#79H 。指向小时计时单元(78H-79H)ACALL ADD1 。小时计时单元加1小时 MOV A,R3 。时数据放入ACLR C 。清进位标志CJNE A,#24H,HOUR 。HOUR: JC OUTT0 。小于24小时中断退出ACALL CLR0 。大于或等于24小时小时计时单元清0OUTT0: MOV 72H,76H 。中断退出时将分、时计时单元数据移MOV 73H,77H 。入对应显示单元MOV 74H,78H 。MOV 75H,79H 。POP PSW 。恢复状态字(出栈

15、)POP ACC 。恢复累加器SETB ET0 。开放T0中断 RETI 。中断返回 。 闪动调时 程 序 。 。T1中断服务程序,用作时间调整时调整单元闪烁指示INTT1: PUSH ACC 。中断现场保护PUSH PSW 。MOV TL1, #0B0H 。装定时器T1定时初值 MOV TH1, #3CH 。DJNZ R2,INTT1OUT 。0.3秒未到退出中断(50MS中断6次) MOV R2,#06H 。重装0.3秒定时用初值CPL 02H 。0.3秒定时到对闪烁标志取反 JB 02H,FLASH1 。02H位为1时显示单元熄灭 MOV 72H,76H 。02H位为0时正常显示MOV

16、73H,77H 。MOV 74H,78H 。MOV 75H,79H 。INTT1OUT: POP PSW 。恢复现场POP ACC 。RETI 。中断退出FLASH1: JB 01H,FLASH2 。01H位为1时,转小时熄灭控制MOV 72H,7AH 。01H位为0时,熄灭符数据放入分MOV 73H,7AH 。显示单元(72H-73H),将不显示分数据MOV 74H,78H 。MOV 75H,79H 。AJMP INTT1OUT 。转中断退出 FLASH2: MOV 72H,76H 。01H位为1时,熄灭符数据放入小时MOV 73H,77H 。显示单元(74H-75H),小时数据将不显示 M

17、OV 74H,7AH 。MOV 75H,7AH 。AJMP INTT1OUT 。转中断退出 。 加1子 程 序 。ADD1: MOV A,R0 。取当前计时单元数据到ADEC R0 。指向前一地址SWAP A 。A中数据高四位与低四位交换ORL A,R0 。前一地址中数据放入A中低四位 ADD A,#01H 。A加1操作DA A 。十进制调整MOV R3,A 。移入R3寄存器ANL A,#0FH 。高四位变0MOV R0,A 。放回前一地址单元MOV A,R3 。取回R3中暂存数据INC R0 。指向当前地址单元SWAP A 。A中数据高四位与低四位交换ANL A,#0FH 。高四位变0MOV

18、 R0,A 。数据放入当削地址单元中 RET 。子程序返回 。 清零程序 。CLR0: CLR A 。清累加器MOV R0,A 。清当前地址单元DEC R0 。指向前一地址MOV R0,A 。前一地址单元清0RET 。子程序返回 。 时钟调整程序 。当调时按键按下时进入此程序SETMM: CLR ET0 。关定时器T0中断CLR TR0 。关闭定时器T0LCALL DL1S 。调用1秒延时程序JB P3.7,CLOSEDIS 。键按下时间小于1秒,关闭显示(省电) MOV R2,#06H 。进入调时状态,赋闪烁定时初值 SETB ET1 。允许T1中断SETB TR1 。开启定时器T1SET2

19、: JNB P3.7,SET1 。P3.7口为0(键未释放),等待SETB 00H 。键释放,分调整闪烁标志置1SET4: JB P3.7,SET3 。等待键按下LCALL DL05S 。有键按下,延时0.5秒JNB P3.7,SETHH 。按下时间大于0.5秒转调小时状态MOV R0,#77H 。按下时间小于0.5秒加1分钟操作LCALL ADD1 。调用加1子程序MOV A,R3 。取调整单元数据CLR C 。清进位标志CJNE A,#60H,HHH 。调整单元数据与60比较HHH: JC SET4 。调整单元数据小于60转SET4循环LCALL CLR0 。调整单元数据大于或等于60时清

20、0CLR C 。清进位标志AJMP SET4 。跳转到SET4循环CLOSEDIS:SETB ET0 。省电(LED不显示)状态。开T0中断SETB TR0 。开启T0定时器(开时钟)CLOSE: JB P3.7,CLOSE 。无按键按下,等待。LCALL DISPLAY 。有键按下,调显示子程序延时削抖JB P3.7,CLOSE 。是干扰返回CLOSE等待WAITH: JNB P3.7,WAITH 。等待键释放LJMP START1 。返回主程序(LED数据显示亮)SETHH: CLR 00H 。分闪烁标志清除(进入调小时状态)SETHH1: JNB P3.7,SET5 。等待键释放SETB

21、 01H 。小时调整标志置1SET6: JB P3.7,SET7 。等待按键按下LCALL DL05S 。有键按下延时0.5秒JNB P3.7,SETOUT 。按下时间大于0.5秒退出时间调整MOV R0,#79H 。按下时间小于0.5秒加1小时操作LCALL ADD1 。调加1子程序MOV A,R3 。CLR C 。CJNE A,#24H,HOUU 。计时单元数据与24比较HOUU: JC SET6 。小于24转SET6循环LCALL CLR0 。大于或等于24时清0操作AJMP SET6 。跳转到SET6循环SETOUT: JNB P3.7,SETOUT1 。调时退出程序。等待键释放LCA

22、LL DISPLAY 。延时削抖JNB P3.7,SETOUT 。是抖动,返回SETOUT再等待CLR 01H 。清调小时标志CLR 00H 。清调分标志CLR 02H 。清闪烁标志CLR TR1 。关闭定时器T1CLR ET1 。关定时器T1中断SETB TR0 。开启定时器T0SETB ET0 。开定时器T0中断(计时开始)LJMP START1 。跳回主程序SET1: LCALL DISPLAY 。键释放等待时调用显示程序(调分)AJMP SET2 。防止键按下时无时钟显示SET3: LCALL DISPLAY 。等待调分按键时时钟显示用AJMP SET4SET5: LCALL DISP

23、LAY 。键释放等待时调用显示程序(调小时)AJMP SETHH1 。防止键按下时无时钟显示SET7: LCALL DISPLAY 。等待调小时按键时时钟显示用AJMP SET6SETOUT1: LCALL DISPLAY 。退出时钟调整时键释放等待AJMP SETOUT 。防止键按下时无时钟显示 。 显示程序 。 DISPLAY: MOV R1,#70H 。指向显示数据首址MOV R5,#0FEH 。扫描控制字初值PLAY: MOV A,R5 。扫描字放入AMOV P3,A 。从P3口输出MOV A,R1 。取显示数据到AMOV DPTR,#TAB 。取段码表地址MOVC A,A+DPTR

24、。查显示数据对应段码MOV P1,A 。段码放入P1口LCALL DL1MS 。显示1MSINC R1 。指向下一地址MOV A,R5 。扫描控制字放入A JNB ACC.5,ENDOUT 。ACC.5=0时一次显示结束RL A 。A中数据循环左移MOV R5,A 。放回R5内AJMP PLAY 。跳回PLAY循环ENDOUT: SETB P3.5 。一次显示结束,P3口复位MOV P1,#0FFH 。P1口复位 RET 。子程序返回TAB: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,0FFH 。共阳段码表 。 延时程序 。 。1MS延时程序,LED显示程序用DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2DJNZ R6,DL1RET。20MS延时程序,采用调用显示子程序以改善LED的显示闪烁现象DS20MS: ACALL DISPLAYACALL DISPLAYACALL DISPLAYRET20MS延时程序,用作按键时间的长短判断DL1S: LCALL DL05SLCALL DL05SRETDL05S: MOV R3,#20H 。8毫秒*32=0.196秒DL05S1: LCALL DISPLAYDJNZ R3,DL05S1RETEND 。程序结束

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1