基于单片机的自动打铃系统设计很完整.docx

上传人:b****0 文档编号:9891947 上传时间:2023-05-21 格式:DOCX 页数:24 大小:421.49KB
下载 相关 举报
基于单片机的自动打铃系统设计很完整.docx_第1页
第1页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第2页
第2页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第3页
第3页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第4页
第4页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第5页
第5页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第6页
第6页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第7页
第7页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第8页
第8页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第9页
第9页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第10页
第10页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第11页
第11页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第12页
第12页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第13页
第13页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第14页
第14页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第15页
第15页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第16页
第16页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第17页
第17页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第18页
第18页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第19页
第19页 / 共24页
基于单片机的自动打铃系统设计很完整.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的自动打铃系统设计很完整.docx

《基于单片机的自动打铃系统设计很完整.docx》由会员分享,可在线阅读,更多相关《基于单片机的自动打铃系统设计很完整.docx(24页珍藏版)》请在冰点文库上搜索。

基于单片机的自动打铃系统设计很完整.docx

基于单片机的自动打铃系统设计很完整

摘要

近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。

简易自动打铃系统的出现,使学校上下课铃声得以有效管制,对于减轻学校管理人员工作量、提高学校各工作效率,减少管理人员因忘记打铃,从而导致老师拖延课程时间起到明显效果。

本系统采用单片机STC89C52为中心器件来设计简易自动打铃控制器,系统实用性强、操作简单、扩展性强。

关键词:

单片机;8255扩张芯片;数码管显示时钟模块;键盘调时钟模块;定时蜂鸣器鸣叫模块。

 

简易自动打铃系统

设计要求

利用单片机作为控制核心,完成一个简易自动打铃系统。

具体功能要求如下:

      

(1)基本计时和显示功能(12小时制)。

可设置当前时间(包括上下午标志,时、分的数字显示)。

(2)能实现基本打铃功能,规定:

上午7:

30早自习:

打铃5秒、停2秒、再打铃5秒。

下午10:

30熄灯铃:

打铃5秒、停2秒、再打铃5秒。

1方案论证与对比

1.1方案一

根据设计要求,由于本设计是可调时钟显示与打铃功能,可以使用中断之类的器件利用其转换效应。

在有键按下时,就可以用单片机进行数据的处理,从而实现调时钟与打铃功能。

在显示电路上,就可以用数码管将被调时钟显示出来,直接用AT89C52引脚接数码管、键盘、蜂鸣器,这种设计需要用用到大量的CPUI/O口,若要同时实现更多功能则CPUI/O口不够用。

1.2方案二

根据开发板设计原理图与实物图,我们的开发板有8255扩张芯片可用,调时可不用中断按键,同时外中断1与蜂鸣器同时都接着STC89C52的口,因此要实现同时用外中断1调时和蜂鸣器打铃会产生冲突,不可取。

这里利用8255扩张键盘和数码管减少CPU接口的浪费,矩阵式键盘调时能更好的实现所需的功能。

1.3方案对比与选择

从以上两种方案,很容易看出,采用方案二,能充分利用资源,软件设计思路也比较简单,故采用了方案二。

本方案的计时部分使用单片机内部的可编程定时器,根据单片机是利用STC-52中的89C52作为其核心部分,其内部的定时/计数器进行中断定时,配合软件延时实现时、分的计时,键盘输入部分,系统用8255作为单片机的键盘输入,其采用3*1矩阵结构,其中两个键用于调整时间分和时,另一个键用于调上下午标志。

上电后系统自动进入时钟显示,从A00-00开始计时,此时可以设定当前时间。

系统内部设定时间鸣叫,定时时间到,蜂鸣器鸣叫。

(参考于:

李军,《51系列单片机高级实例指南》)

2单元电路设计与计算

2.1复位电路

STC-52单片机的复位是由外部的复位电路来实现的。

复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。

上电复位:

上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。

上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。

为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。

电路图如下:

图1复位电路

上电自动复位是通过外部复位电路的电容充电来实现的。

只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。

2.2时钟电路

时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。

因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。

常用的时钟电路有两种方式:

一种是内部时钟方式,另一种为外部时钟方式。

本文用的是内部时钟方式。

电路图如下:

图2时钟电路

STC-52单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。

这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。

2.3按键电路

按键的开关状态通过一定的电路转换为高、低电平状态。

按键闭合过程在相应的I/O端口形成一个负脉冲。

闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。

抖动持续时间的长短与开关的机械特性有关,一般在5-10ms之间。

为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。

,每个按键的工作状态不会产生互相影响。

电路图如下:

图3按键电路

电路图PC0—PC3接低电平做输入,PC4—PC7做扫描线。

当有按键按下时即把低电平送入8255的PC4—PC7使得所连引脚置低。

实现调时钟的功能。

2.4数码显示功能说明

八段LED数码管显示器能够显示十进制或十六进制数字及某些简单的字符,这种显示器显示的字符较少,形状有些失真,但控制简单,使用方便,在单片机应用系统中使用较多,我们采用六位八段共阳极数码管显示时钟,每个数码管的8段是有芯片8255的PB口控制亮灭,每个数码管的公共脚分别由8255的PA0-P5经三极管扩流后进行控制,电路原理图如下:

(参考于:

楼然苗,《单片机课程设计指导》)

图4显示电路

 

2.5蜂鸣器电路

单片机的引脚用来控制蜂鸣器的工作,当输出高电平时,三极管截止,蜂鸣器不工作,当引脚输出低电平时,三极管导通,蜂鸣器工作,同时二极管发光。

电路原理图如下图所示:

图5响铃电路

3系统软件工作流程

3.1系统软件设计流程图

这次的自动打铃设计用到很多子程序,它们的流程图分别如下所示。

主程是先开始,然后启动定时器,定时器启动后显示A00-00,再进行按键检测,检测完后,可调时。

接着进行响铃检测,检测是否响铃。

图6系统软件

3.2按键处理流程图

按键处理是先检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就检测上下午标志按键是否按下,上下午标志按键如果按下,上下午就交替转变;如果没有按下,就把时间显示出来。

(参考于:

王俊峰,《8051单片机实践与应用》)

图7按键检测

3.3定时器中断流程图

定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。

时间显示是先分个位计算显示,然后是分十位计算显示,再然后是时个位显示,再就是时十位计算显示。

(参考于:

张鑫,《单片机原理及应用》)

 

图8定时器

3.4响铃流程图

响铃是系统自动到规定的时间则把蜂鸣器置低,使得蜂鸣器鸣叫,从而达到打铃的效果,时间有软件预定。

图9响铃

4系统功能测试与整体指标

单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。

一般的方法是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。

4.1系统各功能模块的性能调试与测试

硬件电路板:

我们用的电路板有机的融合了单片机的各功能单元,电路板将所有的I/O接口引出,采用USB线供电模式,STC89C52支持串口方式直接下载程序。

8255芯片做扩张用。

6位数码管做动态扫描显示,蜂鸣器做单片机发声。

4*4矩阵式键盘做计键盘动态扫描检测。

拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。

若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。

将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。

4.2系统功能测试

走时:

默认为走时状态,按12小时制分别显示“A/P-时时-分分”,有2个“-”动态显示,时间会按实际时间以秒为最少单位变化。

 

走时调整:

按S12对上下午进行调整,按一下变换一次;按S4对分进行调整,按一下加一分;按S8对时进行调整,按一下加一小时,从而达到快速设定时间的目的。

4.3系统误差原因分析

时间是一个基本物理量,具有连续、自动流逝、不重复等特性。

我国时间基准来自国家授时中心,人们日常使用的时钟就是以一定的精度与该基准保持同步的。

结合时间概念和误差理论,可以定义电子钟的走时误差S=S1-S2,S1表示程序实际运行计算所得的秒;S2表示客观时间的标准秒。

S>0时表示电子钟秒单元数值刷新滞后,即走时误差为“慢”;反之,S<0表示秒单元数值的刷新超前,即走时误差为“快”。

本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。

晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。

4.4系统整体指标测试

软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。

软件调试可以采取离线调试和在线调试两种方式。

前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。

本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。

仿真部分采用protus6professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。

首先打开protus6professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wave6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。

5详细仪器清单

 

表格1仪器清单

仪器名称

数量

电阻

10

蜂鸣器

1

8255芯片

1

STC89C52

1

8段数码管

6

键盘

3

LED指示灯

2

电源

1

6总结与思考致谢

我在这一次简易自动打铃系统的设计过程中,很是受益匪浅。

通过对自己在大学三年时间里所学的知识的回顾,并发挥对所学知识的理解和思考及书面表达能力,自己亲手设计,最终完成目标了。

这为自己今后进一步深化学习,积累了一定宝贵的经验。

把知识转化为能力的实际训练。

培养了我运用所学知识解决实际问题的能力。

通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。

这个课程设计十分有意义,我获得宝贵经验。

通过这次课程设计,我们知道了理论和实际的距离。

自己今后将会更加的把理论知识和实际应用结合起来,提高自己的能力。

在此感谢学校各级领导给予我们这次自我学习的机会,同时感谢指导老师的精心指导,在老师的指导与帮助下,使得我们自己动手设计的能力得到很大的提高。

7参考文献

[1]张鑫,单片机原理及应用.(F)北京:

电子工业出版社,

[2]王俊峰,8051单片机实践与应用.(H)北京:

清华大学出版社,2003..4

[3]楼然苗,单片机课程设计指导。

(G)北京:

北京航空航天大学出版社,

[4]李军,51系列单片机高级实例开发指南(M)北京:

北京航空航天大学出版社,2004

[5]朱定华,戴汝平,单片机原理与应用.(M)北京:

清华大学出版社,2003

[6]刘国钧,陈绍业,王凤翥.图书馆目录[M].北京:

高等教育出版社,.

附录一:

总设计原理图

附录二:

总设计PCB板图

附录三:

程序

BEEPEQU

ORG0000H;程序入口地址

LJMPSTART

ORG000BH;定时器0中断入口地址

LJMPTIMER_0

ORG0030H

/*****程序开始,初始化*****/

START:

SETBBEEP;关闭蜂鸣器

CLR44H

MOV20H,#00H;用于控制秒基准时钟源的产生

MOV21H,#00H;清零秒寄存器

MOV22H,#00H;清零分寄存器

MOV23H,#00H;清零时寄存器

MOV24H,#30H;A,P寄存器

MOVIP,#02H;IP,IE初始化

MOVIE,#82H

MOVTMOD,#01H;设定定时器0工作方式1

MOVTH0,#3CH

MOVTL0,#0B0H;赋定时初值,定时50ms

SETBEA

SETBTR0;启动定时器0

MOVSP,#40H;重设堆栈指针

 

/*****主程序*****/

MAIN:

LCALLDISPLAY;调用显示子程序

LCALLBIJIAO;调用早自习,熄灯打铃子程序

LCALLDALING;调用打铃子程序

LCALLKEYBOARD;调用键盘扫描

LJMPMAIN;重新循环

/*****定时中断服务程序*****/

TIMER_0:

PUSHACC

PUSHPSW;保护现场

MOVTH0,#3CH

MOVTL0,#0B0H;重新赋定时初值

INC20H

MOVA,20H

CJNEA,#20,RETI1;产生1秒基准时钟

MOV20H,#00H;一秒钟时间到,清零20H

MOVA,21H

ADDA,#01H

DAA;作十进制调整

MOV21H,A

CJNEA,#60H,RETI1

MOV21H,#00H;一分钟到

MOVA,22H

ADDA,#01H

DAA

MOV22H,A

CJNEA,#60H,RETI1

MOV22H,#00H;一小时到

MOVA,23H

ADDA,#01H

DAA

MOV23H,A

CJNEA,#13H,RETI1

MOV23H,#01H;到12点,转到1点

MOVA,24H

CJNEA,#30H,A1

MOV24H,#70H

SJMPRETI1

A1:

MOV24H,#30H

RETI1:

POPPSW

POPACC;恢复现场

RETI;中断返回

/*****显示处理*****/

DISPLAY:

MIN:

MOVA,22H;分

ANLA,#0FH

MOV2DH,A;转换出分个位,存入2DH

MOVA,22H

ANLA,#0F0H

SWAPA

MOV2CH,A;转换出分十位,存入2CH

HOUR:

MOVA,23H;时

ANLA,#0FH

MOV2BH,A;转换出时个位,存入2BH

MOVA,23H

ANLA,#0F0H

SWAPA

MOV2AH,A;转换出时十位,存入2AH

/*****数码管动态扫描显示*****/

MOVDPTR,#0D7FFH

MOVA,#81H

MOVX@DPTR,A

MOVA,#B

MOVR2,A

MOVDPTR,#0D1FFH

MOVX@DPTR,A

MOVA,2DH

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVDPTR,#0D2FFH

MOVX@DPTR,A

CALLD1MS;分个位

MOVA,#B

MOVR2,A

MOVDPTR,#0D1FFH

MOVX@DPTR,A

MOVA,2CH

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVDPTR,#0D2FFH

MOVX@DPTR,A

CALLD1MS;分十位

MOVA,#B

MOVR2,A

MOVDPTR,#0D1FFH

MOVX@DPTR,A

MOVA,#7FH

MOVDPTR,#0D2FFH

MOVX@DPTR,A

CALLD1MS

MOVA,#B

MOVR2,A

MOVDPTR,#0D1FFH

MOVX@DPTR,A

MOVA,24H

MOVDPTR,#0D2FFH

MOVX@DPTR,A

CALLD1MS;上下午标志

MOVA,#B

MOVR2,A

MOVDPTR,#0D1FFH

MOVX@DPTR,A

MOVA,2BH

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVDPTR,#0D2FFH

MOVX@DPTR,A

CALLD1MS;时个位

MOVA,#B

MOVR2,A

MOVDPTR,#0D1FFH

MOVX@DPTR,A

MOVA,2AH

MOVDPTR,#TABLE

MOVCA,@A+DPTR

MOVDPTR,#0D2FFH

MOVX@DPTR,A

CALLD1MS;时十位

D1MS:

MOVR7,#02H

DMS:

MOVR6,#0FFH

DJNZR6,$

DJNZR7,DMS

RET

/*****数码管字形编码表*****/

TABLE:

DB0XA0,0XBB,0X62,0X2A,0X39,0X2C,0X24,0XBA,0X20,0X28;字形显示编码

/*****键盘扫描*******/

KEYBOARD:

MOVDPTR,#0D7FFH

MOVA,81H

MOVX@DPTR,A

MOVDPTR,#0D5FFH

MOVA,#0FFH

MOVX@DPTR,A

MOVDPTR,#0D5FFH

MOVA,#10H

MOVX@DPTR,A

MOVXA,@DPTR

ANLA,#0FH

JNZDELAY100

SJMPEXIT

DELAY100:

MOVR1,#200

D100:

MOVR2,#248

DJNZR2,$

DJNZR1,D100

MOVXA,@DPTR

ANLA,#0FH

JNZKEY

SJMPEXIT

KEY:

MOVR0,A

CJNER0,#08H,D1

MOVA,23H

ADDA,#01H

DAA

MOV23H,A

CJNEA,#13H,RE

MOV23H,#01H

RE:

LCALLDISPLAY

SJMPEXIT

D1:

CJNER0,#04H,D2

MOVA,22H

ADDA,#01H

DAA

MOV22H,A

CJNEA,#60H,REY

MOV22H,#00H

//MOV22H,A

REY:

LCALLDISPLAY

SJMPEXIT

D2:

CJNER0,#02H,EXIT

MOVA,24H

CJNEA,#30H,A0

MOV24H,#70H

SJMPEXIT

A0:

MOV24H,#30H

EXIT:

RET

/*****打铃时间对比程序(起床、熄灯)*****/

BIJIAO:

MOVA,24H

CJNEA,#30H,B0

MOVA,23H

CJNEA,#07H,B0

MOVA,22H

CJNEA,#30H,B0;上午7:

30到

SETB44H;开启响铃方式1

RET

B0:

MOVA,24H

CJNEA,#70H,EXIT_1

MOVA,23H

CJNEA,#10H,EXIT_1

MOVA,22H

CJNEA,#30H,EXIT_1;下午10:

30到

SETB44H;开启响铃方式1

RET

EXIT_1:

CLR44H

RET

/*****响铃方式1程序(响5秒停2秒再响5秒)*****/

DALING:

JNB44H,EXIT_DALING

MOVA,21H;响铃起始时间由秒实时控制

CJNEA,#00H,L1

CLRBEEP

L1:

MOVA,21H

CJNEA,#05H,L2

SETBBEEP

L2:

MOVA,21H

CJNEA,#07H,L3

CLRBEEP

L3:

MOVA,21H

CJNEA,#12H,EXIT_DALING

SETBBEEP

RET

EXIT_DALING:

RET

END

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2