单片机课程设计基于AT89S52的电子钟设计.docx
- 文档编号:10409058
- 上传时间:2023-02-11
- 格式:DOCX
- 页数:19
- 大小:22.33KB
单片机课程设计基于AT89S52的电子钟设计.docx
《单片机课程设计基于AT89S52的电子钟设计.docx》由会员分享,可在线阅读,更多相关《单片机课程设计基于AT89S52的电子钟设计.docx(19页珍藏版)》请在冰豆网上搜索。
单片机课程设计基于AT89S52的电子钟设计
摘要
本次数字电子钟课程设计采纳ATMEL公司的AT89S52为大体芯片,外配以12MHZ的晶振作为时钟电路,按键与电阻电容组成的复位电路,通进程序下载软件与数字钟硬件连接,实现24小时的时,分,秒计时系统。
该电子钟设置4个按键,别离实现对时,分,秒加一和开启电子钟的作用。
在具体数码显示中能够实现自动记时,手动调时,满24小时自动清0的作用。
关键词数字电子钟;AT89S52;硬件设计;软件设计
ABSTRACT
Thecurriculumdesign,digitalelectronicclockwithATMELCorporationAT89S52asthebasicchips,accompaniedby12MHzcrystalasanexternalclockcircuit,composedofkeywiththeresistanceandcapacitanceoftheresetcircuit,throughtheprogramtodownloadsoftwareanddigitalclockhardwareconnection,toachievea24-hours,minutesandseconds,timekeepingsystem.Theelectronicclockissetfourbuttons,respectively,torealizehours,minutesandseconds,plusoneandopeningtheelectronicclockspecificdigitaldisplaycanbeautomatictimer,manualtransfer,thefull24-hourautomaticcleaning0role.
Keywords:
Digitalelectronicclock;;AT89S5;HardwareDesign;SoftwareDesign
1设计课题任务、功能要求说明及方案介绍………………………………1
设计课题任务…………………………………………………………………1
功能要求说明…………………………………………………………………1
设计整体方案介绍及原理说明………………………………………………1
2设计课题硬件系统的设计…………………………………………………2
设计课题硬件系统各模块功能简要介绍……………………………………2
设计课题电路原理图、PCB图、元器件布局图……………………………2
设计课题元器件清单………………………………………………………3
3设计课题软件系统的设计……………………………………………………4
设计课题利用单片机资源的情形…………………………………………4
设计课题软件系统各模块功能简要介绍……………………………………4
设计课题软件系统程序流程框图……………………………………………4
设计课题软件系统程序清单…………………………………………………8
4设计结论、仿真结果、误差分析、教学建议………………………………9
设计课题的设计结论及利用说明……………………………………………9
设计课题的仿真结果…………………………………………………………9
设计课题的误差分析…………………………………………………………10
设计体会………………………………………………………………………10
教学建议………………………………………………………………………10
参考文献…………………………………………………………………………12
致谢…………………………………………………………………………13
附录…………………………………………………………………………14
1设计课题任务、功能要求说明及方案介绍
设计课题任务
设计一个数码显示的电子钟,具有以下功能:
通电显示扫描字符P,按键实现自动记时,按时报时,手动调时及数码显示的功能。
功能要求说明
对实验板通电后开始进入自动扫描系统,数码显示为P,按开始键自动进入24小时计时系统,在有键干扰下,进入手动调时系统:
按调时键对时进行加一,按调分键对分进行加一,按调秒键对秒进行加一,退出手动调时系统后,计时系统在调整后的状态下运行。
当计时达到24小时后,系统自动清0,从头进入计时系统。
设计课题整体方案介绍及工作原理说明
本数字电子钟要紧由时钟电路,复位电路,下载电路,4位独立式键盘,AT89S52,限流电阻,74LS245驱动和数码管组成。
具体设计方案如下图:
图整体设计方案图
该数字电子钟由“秒脉冲发生器”,“分脉冲发生器”,“时脉冲发生器”,“时调时器”,“分调时器”,“秒调时器”,“译码显示器”“键扫描器”组成。
1秒按时信号是整个系统的时基信号,它直接决定计时系统的精度,一样用石英晶体振荡器来实现。
将标准秒信号送入“秒计数”缓冲单元,“秒计数”缓冲采纳10进制计数,每累计60秒产生一个“分脉冲”信号,该信号送入“分计数”缓冲单元。
“分计数”缓冲单元也采纳10进制计数,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数”缓冲单元。
“时计数器”采纳10进制计时,可实现对一天24小时的累计。
通过对时,分,秒缓冲单元数据进行译码,分时输出送至七段LED数码管。
整点报时电路为依照依照“时计数”缓冲单元的转变产生一个“报时脉冲”,开启蜂鸣器报时。
在电子钟正常走时进程中,要紧利用了单片机内部RAM的四组工作寄放器区,堆栈缓冲区,自概念的数据暂存区,数据显示缓冲区等。
2设计课题硬件系统的设计
设计课题硬件系统各模块功能简要介绍
数字电子钟的硬件系统模块设计要紧分为:
时钟电路,复位电路,键盘电路,显示电路,电源电路。
(1)时钟电路:
系统的时钟电路设计是采纳的内部方式,即利用芯片内部的振荡电路。
AT89单片机内部有一个用于组成振荡器的高增益反相放大器。
引脚XTAL1和XTAL2别离是此放大器的输入端和输出端。
那个放大器与作为反馈元件的片外晶体谐振器一路组成一个自激振荡器。
外接晶体谐振器和电容C1和C2组成并联谐振电路,接在放大器的反馈回路中。
对外接电容的值尽管没有严格的要求,但电容的大小会阻碍震荡器频率的高低、震荡器的稳固性、起振的快速性和温度的稳固性。
因此,此系统电路的晶体振荡器的值为12MHz,电容应尽可能的选择陶瓷电容,电容值约为22μF。
在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳固和靠得住地工作。
(2)复位电路:
复位是由外部的复位电路来实现的。
片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每一个机械周期的S5P2,由复位电路采样一次。
复位电路通常采纳上电自动复位和按钮复位两种方式,此电路系统采纳的是上电与按钮复位电路,如下图。
那时钟频率选用6MHz时,C取22μF,Rs约为200Ω,Rk约为1K。
(3)键盘电路:
当非编码键盘的按键较少时,采纳独立式键盘比较方便,能够随意拿硬件作为预处置,各键盘之间不阻碍,编程相对矩阵式键盘简单,但占用的I/O口线较多。
(4)显示电路:
显示器普遍地用于直观地显示数字系统的运行状态和工作数据,依照材料及生产工艺,单片机应用系统中经常使用的显示器有:
发光二极管LED显示器、液晶LCD显示器、CRT显示器等。
LED显示器是此刻最经常使用的显示器之一。
LED显示器的显示操纵方式按驱动方式可分成静态显示方式和动态显示方式两种。
关于多位LED显示器,通常都是采纳动态扫描的方式进行显示,其硬件连接方式如系统原理图。
在动态方式中,逐个地循环地址亮列位显示器。
如此尽管在任一时刻只有一名显示器被点亮,可是由于人眼具有视觉残留效应,看起来与全数显示器持续点亮成效完全一样。
(5)电源电路:
此刻市面上销售的编程器有很多都是由PC机的USB口直接供电,为了降低本设计的本钱及节省设计时刻,没有另外设计编程器,而直接购买了市场上的USB供电及下载器。
设计课题电路原理图、PCB图、元器件布局图
设计课题电路原理图,见附录二;
设计课题电路的PCB图,见附录三;
设计课题电路的元器件布局图,见附录四;
设计课题元器件清单
设计课题元器件清单如表所示。
表元器件清单
名称数量参数
电阻5个1K
共阳数码管2个4位一体
电阻4个
ISP下载口插座1个
一般插座1个40PIN
电阻8个470
电阻5个200
按键5个
插针1排40PIN
锁紧插座1个40PIN
驱动一套74ls245
USB供电接口及供电线一套
晶振及其插座一套12MHz
电容2个30pF
极性电容1个22μF
排阻1个10K
芯片1块AT89S52
发光二极管1个
六角开关1个
电容各1个470μf、104P
铜柱(带螺母)4个
3设计课题软件系统的设计
设计课题利用单片机资源的情形
单片机资源利用的情形如下:
P0口作为段码输出口,输出数码管显示的段码信号;P3口作为位码输出口,输出数码管的位显示;输出数码管位选信号;晶振;调整状态键IN_SET:
;通过调整状态键来肯按时刻是不是进入调整时刻状态;小时调整键HH_SET:
;按一次使选中位加1;分钟调整键MM_SET:
;按一次使选中位加1;秒钟调整键SS_SET:
;按一次使选中位加1;当自动运行到整点,蜂鸣器发声报时;30H-3FH;16个寄放器单元作为数据显示单元;
30H用于秒个位数据存储;31H用于秒十位数据存储;
32H用于分个位数据存储;33H用于分十位数据存储;
34H用于时个位数据存储;35H用于时十位数据存储;
3FH用于秒个位显示存储;3EH用于秒十位显示存储;
3DH用于分个位显示存储;3CH用于分十位显示存储;
3BH用于时个位显示存储;3AH用于时十位显示存储;
46H用于1秒计时溢出;
堆栈栈底:
60H。
设计课题软件系统个模块功能简要介绍
本设计的软件系统模块大致分为:
主程序模块,中断效劳程序,数码驱动显示程序,键扫程序。
主程序:
用于对程序进行全局操纵,包括信号的输入输出,挪用各个功能的子模块,调配按键的利用。
中断效劳程序:
用于产生1S的脉冲信号。
键盘扫描模块:
用于及时校正计时状态。
数码驱动模块:
用于驱动数码管的正确显示计时。
设计课题软件系统程序流程框图
系统软件采纳汇编语言按模块化方式进行设计,然后通过Keil软件开发平台将程
序转变成十六进制程序语言,接着利用Proteous进行仿真,读出显示数据。
主程序流程框图如所示;
加1子程序如所示;
显示子程序框图如所示;
中断效劳程序程序如所示;
键盘扫描子程序框图如所示;
图主程序流程框图
图加1子程序流程框图
图显示子程序
图中断子程序
图键盘扫描子程序
设计课题软件系统程序清单
设计课题软件系统程序清单,详见附录一。
4设计结论、仿真结果、误差分析、教学建议
设计课题的设计结论及利用说明
本次数字电子钟的设计实现了24小时的计时,在P1口接四个独立式键盘对时刻进行操纵。
设计利用了2个四位一体的共阳数码管做为显示器,用于显示24小时的时刻值;设计了4个按键对时刻进行操纵:
按键S1有三个作用:
第一用于开启自动计时,第二用于退出自动计时并进入调整时刻状态,第三用于退出调整时刻状态,开启自动计时状态;按键S2用于对小时进行调整;按键S3用于对分钟进行调整;按键S4用于对秒钟进行调整。
当整点时刻到,蜂鸣器报警。
设计课题的仿真结果
在ProteusISIS的80C51中下载程序生成的HEX文件,按开始符号运行,在数码管上观看程序运行结果,系统仿真结果如图与所示。
设计功能如下:
(1)、“P.”状态:
未按键之前,上电,数码显示P点。
程序运行后,按复位键,显示P点。
(2)、自动运行状态:
程序开始显P后,按S1键,系统进入计时状态,现在,按S2,S3,S4键无效。
(3)、调整状态:
在自动运行进程中,按S1键,退出自动运行状态,计时暂停。
现在,按键S2,S3,S4有效,均代表调剂时,分,秒。
每按一次,对应的数码加一。
按键S1,退出调整状态,接着计时。
时刻显示格式为:
时分秒;
图“P.”运行状态仿真
图时钟运行状态仿真
设计课题的误差分析
实际程序下载到实验板中的电子钟显示存在必然的误差,误差来源可能为三个方面:
第一,在程序运行进程中,时钟周期的不精准致使机械周期与理论值存在必然的不同;第二在中断一秒显示进程中,一些指令需要消耗必然的机械周期,使得一秒延时比实际要长;第三在键抖动的反映程度在运行中比较慢。
设计体会
本次数字电子钟的课程设计,学习将理论与实践相结合,对数字器件及集成电路有较深切的熟悉,初步把握综合运用所学知识分析和设计一样数字系统的大体方式,增强动手解决实际问题的能力。
熟悉到了自身的许多缺点和不足,初步接触到了如何将硬件与软件相连接来实现必然的自动化。
在实验板的焊接进程中,更深地意识到焊接技术的重要性。
使咱们明白现实生活中电子钟的工作原理,锻炼了查资料的能力。
教学建议
在一个学期的相处进程中,通过实践形象地将抽象化的单片机书本知识具体化,把握一些与单片机相关的软件,在王韧教师的教学进程中,课堂气氛轻松愉快,同窗们学习单片机的热情高涨,结合自身情形,希望王韧教师在以后的教学进程中能够多与同窗交流思想,讨论课程学习方式。
参考文献
[1]马莹莹.基于Proteus的单片机系统电路设计与仿真.辽宁工学院学报.,第4期.
MaProteussystemcircuitdesignand
.8JournalofLiaoningInstituteofTechnology,No.4.
[2]陈刚.张天鹏,数字电子钟的分析与设计.办公自动化杂志.2020,第152期.ChenGang.ZhangtianPeng,digitalelectronicclockanalysisanddesign.Officeutomationmagazine.2020,p.152.
[3]曹巧媛.单片机原理及应用[M],北京:
电子工业出版社,.CaoQiaoYuan.MicrocontrollerTheoryandApplication[M],Beijing:
ElectronicIndustryPress,.
[4]李广弟.朱月秀,单片机基础,北京:
航空航天大学出版社,.LiGuangdi.ZhuXiu,microcontroller-based,Beijing:
AeronauticsandAstronauticsUniversityPress,.
致谢
感激。
。
。
。
。
。
。
。
附录
附录1
;本电子钟6位数码管显示时分秒,可整点报时
;显示格式:
00-00-00
;通过4只按键来调整时刻
;P0口输出数码管段选信号,P3口输出数码管位选信号;晶振
;为蜂鸣器发声报时
;刘远桃2020年12月31日
;;;;;;;;;;;变量概念段;;;;;;;;;;;;;;;;;
SECGEEQU30H;秒个位存储单元
SECSHEQU31H;秒十位存储单元
MINGEEQU32H;分个位存储单元
MINSHEQU33H;分十位存储单元
HOUGEEQU34H;时个位存储单元
HOUSHEQU35H;时十位存储单元
INTCISHUEQU46H;要求的计数溢出次数,即1秒计时的循
环次数
IN_SETEQU
HH_SETEQU
MM_SETEQU
SS_SETEQU
;;;;;;;;;;;;;程序起始;;;;;;;;;;;;;;;;;
ORG0000H;程序执行开始地址
LJMPDISPP
ORG000BH;定时器T0中断程序入口
LJMPINTT0;跳至INTTO执行
ORG0030H
DISPP:
MOVA,#20H;位选
TT:
MOVP3,A
MOVP0,#0CH;段码"P."
LYT2:
JBIN_SET,TT;键是否按下,没按下则转移
LCALLDL
JNBIN_SET,LYT2;键是否松开,松开往下走
MAIN:
MOVR0,#30H;RAM区首地址
MOVR7,#16;RAM区单元个数
TT1:
MOV@R0,#00H
INCR0
DJNZR7,TT1
MOVSP,#60H;确立堆栈区
MOVIP,#02H
SETBEA
SETBET0;
MOVTMOD,#01H;设定定时器0工作方式1
MOVTL0,#0DCH;装计数初值
MOVTH0,#0BH
SETBTR0;启动定时器0
START:
LCALLDISP;开始计时显示
JNBIN_SET,SETTIME;判断是否进入时间调整状态
LJMPSTART
;;;;;;;;;;时刻调整段;;;;;;;;;;;;;;;;;
SETTIME:
CLRTR0;暂停计时
LCALLDISP;调显示
JNBIN_SET,SETTIME;判键是否松开,松开则往下走
LYT:
LCALLDISP;调显示
JNBIN_SET,OUT_SET;判断调整键是否再次按下,按下则跳出
调整状态,正常计时
JNBSS_SET,S1;IN-SET没有再次按下,判断调秒键是否
按下,按下那么转移到秒加一程序
JNBMM_SET,S2;调秒键没有再次按下,判断调分键是否
按下,按下那么转移到分加一程序
JNBHH_SET,S3;调分键没有再次按下,判断调时健是否
按下,按下那么转移到时加一程序
LJMPLYT
S1:
LCALLDL;去抖动
S11:
LCALLDISP;调显示
JNBSS_SET,S11;判调秒键是否松开,松开则往下执行
MOVR0,#SECSH;秒十位存储单元地址
LCALLDADD1;秒加1
LCALLDISP;调显示
MOVA,R2
XRLA,#60H;判是否到60秒
JNZLYT1;是则往下走,没到则跳转
LCALLCLR0
LJMPLYT
S2:
LCALLDL;去抖动
S22:
LCALLDISP
JNBMM_SET,S22
MOVR0,#MINSH;秒十位存储单元地址
LCALLDADD1;分加1
LCALLDISP
MOVA,R2
XRLA,#60H;判是不是到60分
JNZLYT1
LCALLCLR0
LJMPLYT
S3:
LCALLDL;去抖动
S33:
LCALLDISP
JNBHH_SET,S33
MOVR0,#HOUSH;秒十位存储单元地址
LCALLDADD1;时加1
LCALLDISP
MOVA,R2
XRLA,#24H;判是不是到24H
JNZLYT1
LCALLCLR0
LJMPLYT
OUT_SET:
LCALLDISP
JNBIN_SET,OUT_SET;判键是否松开
SETBTR0;松开则继续计时
LJMPSTART
LYT1:
LJMPLYT
;;;;;;;;;;;;;1秒中断程序;;;;;;;;;;;;;;;;
INTT0:
PUSHDPL
PUSHDPH
PUSHPSW
PUSHACC
SETBRS1;改变当前寄存器组为组3
SETBRS0
CLRET0
CLRTR0
MOVTL0,#0DCH;装计数初值
MOVTH0,#0BH
SETBTR0
MOVA,INTCISHU;循环次数减1
DECA
MOVINTCISHU,A
JNZRET0;不满20次,转RET0返回
SETB
MOVINTCISHU,#14H;满20次,开始计时操作
MOVR0,#SECSH;秒十位存储单元地址
LCALLDADD1;十进制秒加1
MOVA,R2
XRLA,#60H;判是否到60秒
JNZRET0;不到,转RET0返回
LCALLCLR0;到60秒,秒显示缓冲单元清0
MOVR0,#MINSH;分十位存储单元地址
LCALLDADD1;十进制分加1
MOVA,R2
XRLA,#60H;判是否到60分
JNZRET0;不到,转RET0返回
CLR;开蜂鸣器
LCALLCLR0;到60分,分显示缓冲单元清0
MOVR0,#HOUSH;时十位存储单元地址
LCALLDADD1;十进制时加1
MOVA,R2
XRLA,#24H;判是否到24时
JNZRET0;不到,转RET0返回
LCALLCLR0;到24时,时显示缓冲单元清0
RET0:
POPACC
POPPSW;恢复当前寄存器组的组号
POPDPH
POPDPL
SETBET0
RETI;中断返回
;;;;;;;;;;;;;显示子程序;;;;;;;;;;;;;;;;;
DISP:
PUSHDPH
PUSHDPL
PUSHACC
PUSHPSW
CLRRS1;改变当前寄存器组为组1
SETBRS0
MOV3FH,30H
MOV3EH,31H
MOV3DH,32H
MOV3CH,33H
MOV3BH,34H
MOV3AH,35H
MOVR1,#3AH;显示缓冲存储单元首地址
MOVR2,#01H;从右至左显示
DISP1:
MOVA,@R1
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP0,A;送段控
MOVP3,R2;送位控
ACALLDL;延时2毫秒
MOVA,R2
JB,DISP2
RLA
INCR1
MOVR2,A
AJMPDISP1
DISP2:
POPPSW;恢复当前寄放器组的组号
POPACC
POPDPL
POPDPH
RET
;;;;;;;;;;;;加1子程序;;;;;;;;;;;;;;;;;
DADD1:
MOVA,@R0;将十位送入A
DECR0
SWAPA;十位数占高4位
ORLA,@R0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 基于 AT89S52 电子钟 设计