自动打铃系统.docx
《自动打铃系统.docx》由会员分享,可在线阅读,更多相关《自动打铃系统.docx(21页珍藏版)》请在冰豆网上搜索。
自动打铃系统
摘要
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
简易自动打铃系统的出现,使学校上下课铃声得以有效管制,对于减轻学校管理人员工作量、提高学校各工作效率,减少管理人员因忘记打铃,从而导致老师拖延课程时间起到明显效果。
本系统采用单片机STC89C52为中心器件来设计简易自动打铃控制器,系统实用性强、操作简单、扩展性强。
关键词:
单片机;8255扩张芯片;数码管显示时钟模块;键盘调时钟模块;定时蜂鸣器鸣叫模块。
目录
设计要求1
1方案论证与对比1
1.1方案一1
1.2方案二1
1.3方案对比与选择1
2单元电路设计与计算2
2.1复位电路2
2.2时钟电路2
2.3按键电路3
2.4数码显示功能说明4
2.5蜂鸣器电路4
3系统软件工作流程5
3.1系统软件设计流程图5
3.2按键处理流程图5
3.3定时器中断流程图6
3.4响铃流程图7
4系统功能测试与整体指标8
4.1系统各功能模块的性能调试与测试8
4.2系统功能测试8
4.3系统误差原因分析9
4.4系统整体指标测试9
5详细仪器清单9
6总结与思考致谢10
7参考文献10
附录一:
总设计原理图11
附录二:
总设计PCB板图12
附录三:
程序13
简易自动打铃系统
设计要求
利用单片机作为控制核心,完成一个简易自动打铃系统。
具体功能要求如下:
(1)基本计时和显示功能(12小时制)。
可设置当前时间(包括上下午标志,时、分的数字显示)。
(2)能实现基本打铃功能,规定:
上午7:
30早自习:
打铃5秒、停2秒、再打铃5秒。
下午10:
30熄灯铃:
打铃5秒、停2秒、再打铃5秒。
方案论证与对比
方案一
根据设计要求,由于本设计是可调时钟显示与打铃功能,可以使用中断之类的器件利用其转换效应。
在有键按下时,就可以用单片机进行数据的处理,从而实现调时钟与打铃功能。
在显示电路上,就可以用数码管将被调时钟显示出来,直接用AT89C52引脚接数码管、键盘、蜂鸣器,这种设计需要用用到大量的CPUI/O口,若要同时实现更多功能则CPUI/O口不够用。
方案二
根据开发板设计原理图与实物图,我们的开发板有8255扩张芯片可用,调时可不用中断按键,同时外中断1与蜂鸣器同时都接着STC89C52的P3.3口,因此要实现同时用外中断1调时和蜂鸣器打铃会产生冲突,不可取。
这里利用8255扩张键盘和数码管减少CPU接口的浪费,矩阵式键盘调时能更好的实现所需的功能。
方案对比与选择
从以上两种方案,很容易看出,采用方案二,能充分利用资源,软件设计思路也比较简单,故采用了方案二。
本方案的计时部分使用单片机内部的可编程定时器,根据单片机是利用STC-52中的89C52作为其核心部分,其内部的定时/计数器进行中断定时,配合软件延时实现时、分的计时,键盘输入部分,系统用8255作为单片机的键盘输入,其采用3*1矩阵结构,其中两个键用于调整时间分和时,另一个键用于调上下午标志。
上电后系统自动进入时钟显示,从A00-00开始计时,此时可以设定当前时间。
系统内部设定时间鸣叫,定时时间到,蜂鸣器鸣叫。
(参考于:
李军,《51系列单片机高级实例指南》)
单元电路设计与计算
复位电路
STC-52单片机的复位是由外部的复位电路来实现的。
复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
上电复位:
上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。
上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。
为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。
电路图如下:
图1复位电路
上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
时钟电路
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
常用的时钟电路有两种方式:
一种是内部时钟方式,另一种为外部时钟方式。
本文用的是内部时钟方式。
电路图如下:
图2时钟电路
STC-52单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器。
按键电路
按键的开关状态通过一定的电路转换为高、低电平状态。
按键闭合过程在相应的I/O端口形成一个负脉冲。
闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是处于高、低电平之间的一种不稳定状态,称为抖动。
抖动持续时间的长短与开关的机械特性有关,一般在5-10ms之间。
为了避免CPU多次处理按键的一次闭合,应采用措施消除抖动。
,每个按键的工作状态不会产生互相影响。
电路图如下:
图3按键电路
电路图PC0—PC3接低电平做输入,PC4—PC7做扫描线。
当有按键按下时即把低电平送入8255的PC4—PC7使得所连引脚置低。
实现调时钟的功能。
数码显示功能说明
八段LED数码管显示器能够显示十进制或十六进制数字及某些简单的字符,这种显示器显示的字符较少,形状有些失真,但控制简单,使用方便,在单片机应用系统中使用较多,我们采用六位八段共阳极数码管显示时钟,每个数码管的8段是有芯片8255的PB口控制亮灭,每个数码管的公共脚分别由8255的PA0-P5经三极管扩流后进行控制,电路原理图如下:
(参考于:
楼然苗,《单片机课程设计指导》)
图4显示电路
蜂鸣器电路
单片机的P3.3引脚用来控制蜂鸣器的工作,当P3.3输出高电平时,三极管截止,蜂鸣器不工作,当P3.3引脚输出低电平时,三极管导通,蜂鸣器工作,同时二极管发光。
电路原理图如下图所示:
图5响铃电路
系统软件工作流程
系统软件设计流程图
这次的自动打铃设计用到很多子程序,它们的流程图分别如下所示。
主程是先开始,然后启动定时器,定时器启动后显示A00-00,再进行按键检测,检测完后,可调时。
接着进行响铃检测,检测是否响铃。
图6系统软件
按键处理流程图
按键处理是先检测分按键是否按下,分按键如果按下,分就加1;如果没有按下,就检测时按键是否按下,时按键如果按下,时就加1;如果没有按下,就检测上下午标志按键是否按下,上下午标志按键如果按下,上下午就交替转变;如果没有按下,就把时间显示出来。
(参考于:
王俊峰,《8051单片机实践与应用》)
图7按键检测
定时器中断流程图
定时器中断时是先检测1秒是否到,1秒如果到,秒单元就加1;如果没到,就检测1分钟是否到,1分钟如果到,分单元就加1;如果没到,就检测1小时是否到,1小时如果到,时单元就加1,如果没到,就显示时间。
时间显示是先分个位计算显示,然后是分十位计算显示,再然后是时个位显示,再就是时十位计算显示。
(参考于:
张鑫,《单片机原理及应用》)
图8定时器
响铃流程图
响铃是系统自动到规定的时间则把蜂鸣器置低,使得蜂鸣器鸣叫,从而达到打铃的效果,时间有软件预定。
图9响铃
系统功能测试与整体指标
单片机应用系统的调试包括硬件和软件两部分,但是他们并不能完全分开。
一般的方法是排除明显的硬件故障,再进行综合调试,排除可能的软/硬件故障。
系统各功能模块的性能调试与测试
硬件电路板:
我们用的电路板有机的融合了单片机的各功能单元,电路板将所有的I/O接口引出,采用USB线供电模式,STC89C52支持串口方式直接下载程序。
8255芯片做扩张用。
6位数码管做动态扫描显示,蜂鸣器做单片机发声。
4*4矩阵式键盘做计键盘动态扫描检测。
拿到电路板后,首先要检查加工质量,并确保没有任何方面的错误,如短路和断路,尤其要避免电源短路;元器件在安装前要逐一检查,用万用表测其数值,看是否与所用相同;完成焊接后,应先空载上电(芯片座上不插芯片),并检查各引脚的电位是否正确。
若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。
将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求。
系统功能测试
走时:
默认为走时状态,按12小时制分别显示“A/P-时时-分分”,有2个“-”动态显示,时间会按实际时间以秒为最少单位变化。
走时调整:
按S12对上下午进行调整,按一下变换一次;按S4对分进行调整,按一下加一分;按S8对时进行调整,按一下加一小时,从而达到快速设定时间的目的。
系统误差原因分析
时间是一个基本物理量,具有连续、自动流逝、不重复等特性。
我国时间基准来自国家授时中心,人们日常使用的时钟就是以一定的精度与该基准保持同步的。
结合时间概念和误差理论,可以定义电子钟的走时误差S=S1-S2,S1表示程序实际运行计算所得的秒;S2表示客观时间的标准秒。
S>0时表示电子钟秒单元数值刷新滞后,即走时误差为“慢”;反之,S<0表示秒单元数值的刷新超前,即走时误差为“快”。
本次设计的单片机电子钟系统中,其误差主要来源包括晶体频率误差,定时器溢出误差,延迟误差。
晶体频率产生震荡,容易产生走时误差;定时器溢出的时间误差,本应这一秒溢出,但却在下一秒溢出,造成走时误差;延迟时间过长或过短,都会造成与基准时间产生偏差,造成走时误差。
系统整体指标测试
软件程序的调试一般可以将重点放在分模块调试上,统调是最后一环。
软件调试可以采取离线调试和在线调试两种方式。
前者不需要硬件仿真器,可借助于软件仿真器即可;后者一般需要仿真系统的支持。
本次课题,Keil软件来调试程序,通过各个模块程序的单步或跟踪调试,使程序逐渐趋于正确,最后统调程序。
仿真部分采用protus6professional软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。
首先打开protus6professional软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制;绘制好后再选择wave6000已经编译好的*.hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再运行查,直到满足要求。
详细仪器清单
表格1仪器清单
仪器名称
数量
电阻
10
蜂鸣器
1
8255芯片
1
STC89C52
1
8段数码管
6
键盘
3
LED指示灯
2
电源
1
总结与思考致谢
我在这一次简易自动打铃系统的设计过程中,很是受益匪浅。
通过对自己在大学三年时间里所学的知识的回顾,并发挥对所学知识的理解和思考及书面表达能力,自己亲手设计,最终完成目标了。
这为自己今后进一步深化学习,积累了一定宝贵的经验。
把知识转化为能力的实际训练。
培养了我运用所学知识解决实际问题的能力。
通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。
这个课程设计十分有意义,我获得宝贵经验。
通过这次课程设计,我们知道了理论和实际的距离。
自己今后将会更加的把理论知识和实际应用结合起来,提高自己的能力。
在此