单片机课程设计基于at89s52的电子钟设计_第1页
单片机课程设计基于at89s52的电子钟设计_第2页
单片机课程设计基于at89s52的电子钟设计_第3页
单片机课程设计基于at89s52的电子钟设计_第4页
单片机课程设计基于at89s52的电子钟设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

摘 要本次数字电子钟课程设计采用ATMEL公司的AT89S52为基本芯片,外配以12MHZ的晶振作为时钟电路,按键与电阻电容组成的复位电路,通过程序下载软件与数字钟硬件连接,实现24小时的时,分,秒计时系统。该电子钟设置4个按键,分别实现对时,分,秒加一以及开启电子钟的作用。在具体数码显示中能够实现自动记时,手动调时,满24小时自动清0的作用。关键词 数字电子钟; AT89S52;硬件设计;软件设计 ABSTRACTThe curriculum design, digital electronic clock with ATMEL Corporation AT89S52 as the basic chips, accompanied by 12MHz crystal as an external clock circuit, composed of key with the resistance and capacitance of the reset circuit, through the program to download software and digital clock hardware connection, to achieve a 24-hours,minutes and seconds,timekeeping system. The electronic clock is set four buttons, respectively, to realize hours, minutes and seconds, plus one and opening the electronic clock role.In specific digital display can be automatic timer, manual transfer, the full 24-hour automatic cleaning 0 role.Key words: Digital electronic clock;;AT89S5;Hardware Design;Software Design目 录1 设计课题任务、功能要求说明及方案介绍11.1 设计课题任务11.2 功能要求说明11.3 设计总体方案介绍及原理说明12 设计课题硬件系统的设计22.1 设计课题硬件系统各模块功能简要介绍22.2 设计课题电路原理图、PCB图、元器件布局图22.3 设计课题元器件清单33 设计课题软件系统的设计43.1 设计课题使用单片机资源的情况43.2 设计课题软件系统各模块功能简要介绍43.3 设计课题软件系统程序流程框图43.4 设计课题软件系统程序清单84 设计结论、仿真结果、误差分析、教学建议94.1 设计课题的设计结论及使用说明94.2 设计课题的仿真结果94.3 设计课题的误差分析104.4 设计体会104.5 教学建议10参考文献12致 谢 13附 录 141 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个数码显示的电子钟,具有以下功能:通电显示扫描字符P,按键实现自动记时,定时报时,手动调时及数码显示的功能。1.2 功能要求说明对实验板通电后开始进入自动扫描系统,数码显示为P,按开始键自动进入24小时计时系统,在有键干扰下,进入手动调时系统:按调时键对时进行加一,按调分键对分进行加一,按调秒键对秒进行加一,退出手动调时系统后,计时系统在调整后的状态下运行。当计时达到24小时后,系统自动清0,重新进入计时系统。1.3 设计课题总体方案介绍及工作原理说明本数字电子钟主要由时钟电路,复位电路,下载电路,4位独立式键盘,AT89S52,限流电阻,74LS245驱动以及数码管组成。具体设计方案如图1.3所示: 图1.1 总体设计方案图该数字电子钟由“秒脉冲发生器”,“分脉冲发生器”,“时脉冲发生器”,“时调时器”,“分调时器”,“秒调时器”,“译码显示器”“键扫描器”组成。1秒定时信号是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器来实现。将标准秒信号送入“秒计数”缓冲单元,“秒计数”缓冲采用10进制计数,每累计60秒产生一个“分脉冲”信号,该信号送入“分计数”缓冲单元。“分计数”缓冲单元也采用10进制计数,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数”缓冲单元。“时计数器”采用10进制计时,可实现对一天24小时的累计。通过对时,分,秒缓冲单元数据进行译码,分时输出送至七段LED数码管。整点报时电路为根据根据“时计数”缓冲单元的变化产生一个“报时脉冲”,开启蜂鸣器报时。在电子钟正常走时过程中,主要使用了单片机内部RAM的四组工作寄存器区,堆栈缓冲区,自定义的数据暂存区,数据显示缓冲区等。2 设计课题硬件系统的设计2.1设计课题硬件系统各模块功能简要介绍数字电子钟的硬件系统模块设计主要分为:时钟电路,复位电路,键盘电路,显示电路,电源电路。(1)时钟电路:系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。AT89单片机内部有一个用于构成振荡器的高增益反相放大器。引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容C1和C2构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地工作。(2)复位电路:复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路,如图所示。当时钟频率选用6MHz时,C取22F,Rs约为200,Rk约为1K。(3)键盘电路:当非编码键盘的按键较少时,采用独立式键盘比较方便,可以随意拿硬件作为预处理,各键盘之间不影响,编程相对矩阵式键盘简单,但占用的I/O口线较多。(4)显示电路:显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及生产工艺,单片机应用系统中常用的显示器有:发光二极管LED显示器、液晶LCD显示器、CRT显示器等。LED显示器是现在最常用的显示器之一。LED显示器的显示控制方式按驱动方式可分成静态显示方式和动态显示方式两种。对于多位LED显示器,通常都是采用动态扫描的方法进行显示,其硬件连接方式如系统原理图。在动态方式中,逐个地循环地点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于人眼具有视觉残留效应,看起来与全部显示器持续点亮效果完全一样。(5)电源电路:现在市面上销售的编程器有很多都是由PC机的USB口直接供电,为了降低本设计的成本及节省设计时间,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。2.2设计课题电路原理图、PCB图、元器件布局图设计课题电路原理图,见附录二;设计课题电路的PCB图,见附录三;设计课题电路的元器件布局图,见附录四;2.3设计课题元器件清单设计课题元器件清单如表2.1所示。表2.1 元器件清单名 称数 量参 数电阻5个1K共阳数码管2个4位一体电阻4个4.7kISP下载口插座1个普通插座1个40PIN电阻8个470电阻5个200按键5个插针1排40PIN锁紧插座1个40PIN驱动一套74ls245USB供电接口及供电线一套晶振及其插座一套12MHz电容2个30pF极性电容1个22F排阻1个10K芯片1块AT89S52发光二极管1个六角开关1个电容 各1个470f、104P铜柱 (带螺母)4个3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况单片机资源使用的情况如下:P0口作为段码输出口,输出数码管显示的段码信号;P3口作为位码输出口,输出数码管的位显示;输出数码管位选信号;晶振11.0592M;调整状态键IN_SET:P1.0;通过调整状态键来确定时间是否进入调整时间状态;小时调整键HH_SET:P1.1;按一次使选中位加1;分钟调整键MM_SET:P1.2;按一次使选中位加1;秒钟调整键SS_SET:P1.3;按一次使选中位加1;当自动运行到整点,蜂鸣器发声报时;30H-3FH;16个寄存器单元作为数据显示单元; 30H 用于秒个位数据存储;31H 用于秒十位数据存储;32H 用于分个位数据存储;33H 用于分十位数据存储;34H 用于时个位数据存储;35H 用于时十位数据存储;3FH 用于秒个位显示存储;3EH 用于秒十位显示存储;3DH 用于分个位显示存储;3CH 用于分十位显示存储;3BH 用于时个位显示存储;3AH 用于时十位显示存储;46H 用于1秒计时溢出;堆栈栈底:60H。3.2设计课题软件系统个模块功能简要介绍 本设计的软件系统模块大致分为:主程序模块,中断服务程序,数码驱动显示程序,键扫程序。主程序:用于对程序进行全局控制,包括信号的输入输出,调用各个功能的子模块,调配按键的使用。中断服务程序:用于产生1S的脉冲信号。键盘扫描模块:用于及时校正计时状态。数码驱动模块:用于驱动数码管的正确显示计时。3.3 设计课题软件系统程序流程框图系统软件采用汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程序转变成十六进制程序语言,接着使用Proteous 进行仿真,读出显示数据。主程序流程框图如3.1所示;加1子程序如3.2所示;显示子程序框图如3.3所示;中断服务程序程序如3.4所示;键盘扫描子程序框图如3.5所示; 图3.1 主程序流程框图 图3.2 加1子程序流程框图 图3.3 显示子程序 图3.4 中断子程序 图3.5 键盘扫描子程序3.4 设计课题软件系统程序清单设计课题软件系统程序清单,详见附录一。4 设计结论、仿真结果、误差分析、教学建议4.1 设计课题的设计结论及使用说明本次数字电子钟的设计实现了24小时的计时,在P1口接四个独立式键盘对时间进行控制。设计使用了2个四位一体的共阳数码管做为显示器,用于显示24小时的时间值;设计了4个按键对时间进行控制:按键S1有三个作用:第一用于开启自动计时,第二用于退出自动计时并进入调整时间状态,第三用于退出调整时间状态,开启自动计时状态;按键S2用于对小时进行调整;按键S3用于对分钟进行调整;按键S4用于对秒钟进行调整。当整点时间到,蜂鸣器报警。4.2 设计课题的仿真结果在Proteus ISIS的80C51中下载程序生成的HEX文件,按开始符号运行,在数码管上观察程序运行结果,系统仿真结果如图4.1与4.2所示。设计功能如下: (1)、“P.”状态:未按键之前,上电,数码显示P点。程序运行后,按复位键,显示P点。 (2)、自动运行状态:程序开始显P后,按S1键,系统进入计时状态,此时,按S2,S3,S4键无效。(3)、调整状态:在自动运行过程中,按S1键,退出自动运行状态,计时暂停。此时,按键S2,S3,S4有效,均代表调节时,分,秒。每按一次,对应的数码加一。按键S1,退出调整状态,接着计时。时间显示格式为:时分秒; 图4.1 “P.”运行状态仿真 图4.2 时钟运行状态仿真4.3 设计课题的误差分析实际程序下载到实验板中的电子钟显示存在一定的误差,误差来源可能为三个方面:第一,在程序运行过程中,时钟周期的不精确导致机器周期与理论值存在一定的差别;第二在中断一秒显示过程中,一些指令需要消耗一定的机器周期,使得一秒延时比实际要长;第三在键抖动的反应程度在运行中比较慢。4.3 设计体会本次数字电子钟的课程设计,学习将理论与实践相结合,对数字器件及集成电路有较深入的认识,初步掌握综合运用所学知识分析和设计一般数字系统的基本方法,增强动手解决实际问题的能力。认识到了自身的许多缺点和不足,初步接触到了如何将硬件与软件相连接来实现一定的自动化。在实验板的焊接过程中,更深地意识到焊接技术的重要性。使我们明白现实生活中电子钟的工作原理,锻炼了查资料的能力。4.4 教学建议在一个学期的相处过程中,通过实践形象地将抽象化的单片机书本知识具体化,掌握一些与单片机相关的软件,在王韧老师的教学过程中,课堂气氛轻松愉快,同学们学习单片机的热情高涨,结合自身情况,希望王韧老师在以后的教学过程中能够多与同学交流思想,讨论课程学习方法。参考文献1 马莹莹.基于Proteus的单片机系统电路设计与仿真.辽宁工学院学报.2007.8,第4期. Ma Yingying.Microcontroller-based Proteus system circuit design and simulation.2007.8 Journal of Liaoning Institute of Technology, No. 4.2 陈刚.张天鹏,数字电子钟的分析与设计.办公自动化杂志.2009,第152期. Chen Gang. Zhangtian Peng, digital electronic clock analysis and design. Office utomation magazine .2009, p. 152.3 曹巧媛.单片机原理及应用M,北京:电子工业出版社,1997.7. Cao Qiao Yuan. Microcontroller Theory and Application M, Beijing: Electronic Industry Press, 1997.7.4 李广弟.朱月秀,单片机基础,北京:航空航天大学出版社,2007.6. Li Guangdi. Zhu Xiu, microcontroller-based, Beijing: Aeronautics and Astronautics University Press, 2007.6.致 谢感谢。附 录附录1;本电子钟6位数码管显示时分秒,可整点报时;显示格式:00-00-00;通过4只按键来调整时间;P0口输出数码管段选信号,P3口输出数码管位选信号;晶振11.0592M;P2.1为蜂鸣器发声报时;刘远桃 2009年12月31日;变量定义段;SECGE EQU 30H ;秒个位存储单元 SECSH EQU 31H ;秒十位存储单元 MINGE EQU 32H ;分个位存储单元 MINSH EQU 33H ;分十位存储单元 HOUGE EQU 34H ;时个位存储单元 HOUSH EQU 35H ;时十位存储单元 INTCISHU EQU 46H ;要求的计数溢出次数,即1秒计时的循环次数IN_SET EQU P1.0HH_SET EQU P1.1MM_SET EQU P1.2SS_SET EQU P1.3;程序起始; ORG 0000H ;程序执行开始地址 LJMP DISPP ORG 000BH ;定时器T0中断程序入口 LJMP INTT0 ;跳至INTTO执行 ORG 0030H DISPP:MOV A, #20H ;位选 TT:MOV P3, A MOV P0, #0CH ;段码P. LYT2:JB IN_SET, TT ;键是否按下,没按下则转移 LCALL DLJNB IN_SET, LYT2 ;键是否松开,松开往下走 MAIN:MOV R0, #30H ;RAM区首地址 MOV R7, #16 ;RAM区单元个数 TT1:MOV R0, #00H INC R0 DJNZ R7, TT1 MOV SP, #60H ;确立堆栈区MOV IP, #02HSETB EASETB ET0 ; MOV TMOD, #01H ;设定定时器0工作方式1MOV TL0, #0DCH ;装计数初值 MOV TH0, #0BH SETB TR0 ;启动定时器0 START:LCALL DISP ;开始计时显示 JNB IN_SET, SETTIME;判断是否进入时间调整状态LJMP START;时间调整段;SETTIME:CLR TR0;暂停计时 LCALL DISP;调显示 JNB IN_SET, SETTIME;判键是否松开,松开则往下走LYT:LCALL DISP;调显示 JNB IN_SET, OUT_SET;判断调整键是否再次按下,按下则跳出调整状态,正常计时JNB SS_SET, S1;IN-SET没有再次按下,判断调秒键是否按下,按下则转移到秒加一程序JNB MM_SET, S2;调秒键没有再次按下,判断调分键是否按下,按下则转移到分加一程序JNB HH_SET, S3;调分键没有再次按下,判断调时健是否按下,按下则转移到时加一程序LJMP LYT S1:LCALL DL ;去抖动S11:LCALL DISP;调显示JNB SS_SET, S11;判调秒键是否松开,松开则往下执行MOV R0, #SECSH ;秒十位存储单元地址 LCALL DADD1 ;秒加1 LCALL DISP;调显示 MOV A, R2 XRL A, #60H ;判是否到60秒 JNZ LYT1 ;是则往下走,没到则跳转 LCALL CLR0LJMP LYT S2:LCALL DL ;去抖动S22:LCALL DISPJNB MM_SET, S22MOV R0, #MINSH ;秒十位存储单元地址 LCALL DADD1 ;分加1 LCALL DISP MOV A, R2 XRL A, #60H ;判是否到60分 JNZ LYT1 LCALL CLR0 LJMP LYT S3:LCALLDL ;去抖动S33:LCALLDISPJNBHH_SET, S33MOV R0, #HOUSH ;秒十位存储单元地址 LCALL DADD1 ;时加1 LCALL DISP MOV A, R2 XRL A, #24H ;判是否到24H JNZ LYT1 LCALL CLR0 LJMPLYTOUT_SET:LCALLDISPJNB IN_SET, OUT_SET ;判键是否松开SETB TR0 ;松开则继续计时LJMPSTART LYT1:LJMP LYT ;1秒中断程序; INTT0:PUSHDPL PUSHDPH PUSHPSW PUSHACC SETB RS1 ;改变当前寄存器组为组3 SETB RS0 CLR ET0 CLR TR0 MOV TL0, #0DCH ;装计数初值 MOV TH0, #0BH SETB TR0 MOV A, INTCISHU ;循环次数减1 DEC A MOV INTCISHU,A JNZ RET0 ;不满20次,转RET0返回 SETB P2.1 MOV INTCISHU,#14H ;满20次,开始计时操作 MOV R0, #SECSH ;秒十位存储单元地址 LCALL DADD1 ;十进制秒加1 MOV A, R2 XRL A, #60H ;判是否到60秒 JNZ RET0 ;不到,转RET0返回 LCALL CLR0 ;到60秒,秒显示缓冲单元清0 MOV R0, #MINSH ;分十位存储单元地址 LCALL DADD1 ;十进制分加1 MOV A, R2 XRL A, #60H ; 判是否到60分 JNZ RET0 ;不到,转RET0返回 CLRP2.1;开蜂鸣器 LCALL CLR0 ;到60分,分显示缓冲单元清0 MOV R0, #HOUSH ;时十位存储单元地址 LCALL DADD1 ;十进制时加1 MOV A, R2 XRL A, #24H ;判是否到24时 JNZ RET0 ;不到,转RET0返回 LCALL CLR0 ;到24时,时显示缓冲单元清0 RET0:POP ACC POP PSW ;恢复当前寄存器组的组号 POP DPH POP DPL SETB ET

温馨提示

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

评论

0/150

提交评论