自动打铃装置设计Word文档下载推荐.docx
《自动打铃装置设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《自动打铃装置设计Word文档下载推荐.docx(33页珍藏版)》请在冰点文库上搜索。
注:
成绩:
平时20%,论文质量40%,答辩40%。
摘要
本设计主要是针对于校园打铃系统要求,介绍了一种基于单片机的自动打铃系统的设计方法。
该设计硬件电路通过Proteus设计,主要由时钟电路、按键设定电路、单片机电路、显示电路和打铃电路组成。
系统以AT89C51单片机为控制器,时钟电路由单片机的外接石英晶体振荡器提供,显示电路采用2块LED数码管构成,打铃电路由三极管构成的驱动电路来驱动电铃工作。
软件部分通过Keil采用汇编语言编程来完成,整个系统在软件作用下工作。
同时,该设计在按键的作用下可以进行调时,调分,复位功能,并能在LED数码管上显示。
通过Proteus与Keil的联合仿真,本设计能够正常显示时间,并且能够在设定的时间点进行打铃,完成设计的要求。
关键词:
单片机;
显示电路;
打铃电路
第1章绪论
1.1设计的发展背景
当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未有的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
学习单片机的最有效的方法就是理论与实践并重,本文用AT89C51单片机设计的一个自动打铃系统。
打铃器作为一个提醒人们时间的设备,自然离不开提供时间的系统,最原始的打铃器是人工根据时间通过敲钟来提醒,随着技术的发展,开始有了机械时打铃器。
随着二十世纪电子技术的发展和二十一世纪半导体技术和集成电路的发展,电子技术开始渗入到各行各业,以电子表为主要基础提供时间基准的打铃器自然也是更新换代的更快,现在各种功能更多、使用更先进的打铃器层出不穷,有的还可以以音乐响铃代替传统的“呤呤”声,打铃器更多的向着智能型转变。
设备的智能化离不开单片机的使用。
单片机简单的说就是一款微型的计算机,包含中央处理器CUP、随机存取存储器RAM、只读存储器ROM、I/O口、串行口等部分,可以作为一个系统的主控制器,将其他部分电路整合到一起组成一个系统,为控制提供智能化。
1.2设计的要求及技术指标
本设计是以AT89C51单片机为核心的一款自动打铃系统,设计要求可设置10个响铃时间,并且具有时间显示功能。
完成该设计的整体过程如下:
1.分析设计要求,明确性能指标。
必须仔细分析课题要求、性能、指标及应用环境等,广开思路,构思出各种总体方案,绘制结构框图。
2.确定合理的总体方案。
以电路的先进性、结构的繁简、成本的高低及制作的难易等方面作综合比较,并考虑器件的来源,敲定可行方案。
3.设计各单元电路。
总体方案化整为零,分解成若干子系统或单元电路,逐个设计。
4.组成系统。
在一定幅面的图纸上合理布局,通常是按信号的流向,采用左进右出的规律摆放各电路,并标出必要的说明。
第2章方案设计
2.1系统方案选择
方案一:
采用数字电路来搭建,利用555时基电路构成振荡器产生100Hz频率的振荡电路,再通过分频器得到1Hz频率,即产生1秒计时时间,显示部分通过锁存器和驱动芯片将计时时间送入数码管显示。
设计框图如图2.1所示。
这种方案电路结构比较复杂,芯片使用比较多,灵活性不高,而且准确度不够精确,不利于系统的扩展。
图2.1数字电路设计的自动打铃系统框图
方案二:
采用AT89S51单片机作为系统控制单元,通过时钟芯片来实现计时功能,单片机负责将时间送入显示电路显示。
设计框图如图2.2所示。
这种方案电路设计简单,时间精确,使用方便。
而且单片机的强大功能使得系统方便扩展,有利于提高智能性。
图2.2基于单片机的自动打铃系统框图
综上所述,本设计采用方案二。
2.2总体设计框图
本设计是以AT89C51单片机为核心的一款自动打铃系统,以时钟芯片来实现计时功能,然后单片机负责将时间送入显示电路显示,整个系统不是很复杂,其设计主要由主控模块,时钟模块,显示模块,键盘接口模块等4部分构成。
通过内部定时产生中断,从而使驱动电铃打铃。
总体设计框图如图2.3所示:
图2.3总体设计框图
2.3基本原理概述
单片机的外接石英晶体振荡器能提供稳定、准确的基准频率,并经12分频后向内部定时器提供实时基准频率信号,设定定时器工作在中断方式下,连续对此频率信号进行分频计数,便可得秒信号,再对秒信号进行计数便可得到分、时等实时时钟信息。
如果石英晶体振荡器的频率信号为12MHz,设定定时器定时工作方式1下,定时器为3CBOH,则定时器每100ms产生1次中断,在定时器的中断定时处理程序中,每10次中断,则向秒计数器加1,秒计数器计数到60则向分计数器进位(并建立分进位标志),分计数器计数到60,则向时计数器进位,如此周而复始的连续计数,便可获得时、分、秒的信号,建立一个实时时钟。
接下来便可以进行定时处理和打铃输出,当主程序检测到有分进位标志时,便开始比较当前时间(小时与分、存放在RAM中)与信息时间表上的作息时间(小时与分,存放在ROM)是否相同,如有相同者,则进行报时处理并控制打铃,如有不相同则返回主程序,如此便实现了报时控制的要求。
第3章硬件电路设计
3.1主控器AT89C51
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能CMOS8位微处理器。
单片机的可擦除只读存储器可以反复擦除100次。
该器件采用ATMEL高密度非易失性存储器制造技术,与工业标准的MCS-51指令集和输出管脚相兼容。
AT89C51单片机的硬件结构如下图3.1所示:
图3.1AT89C51硬件结构图
AT89C51单片机主要由8大部分构成:
1个8位的微处理器,完成运算与控制功能片内128B的数据存储器,可扩展至片外64KB64KB的程序存储器,其类型是FlashROM,它的读写速度非常快,电擦除次数可达到10000次4个8位的可编程并行I/O口(P0,P1,P2,P3),可提供地址总线,数据总线,以及控制总线1个全双工的串行口2个16位的定时/计数器(T0,T1)中断系统:
包含5个中断源(外部中断0,定时器T0,外部中断1,定时器1,串行口中断)和2个中断优先级(低级,高级)21个特殊功能寄存器。
3.2单元电路设计
3.2.1时钟电路设计
89C51内部有一个用于构成振荡器的高增益反相放大器,它的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英晶体振荡器和微调电容,构成一个稳定的振荡器。
电路中的微调电容的典型值通常选择为30pF左右,其大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。
晶体振荡频率的范围通常为1.2~12Hz,本设计采用12MHz的石英晶体,并经12分频后向内部定时器提供实时基准频率信号。
设计电路见图3.2所示:
图3.2时钟电路图
3.2.2键盘接口电路设计
键盘是单片机应用中常用的一种输入器件,键盘的按键有触点式和非触点式之分,按接口原理有编码键盘和非编码键盘之分。
常用的按键一般为触点式按键,根据按键所连接的单片机引脚的电平高低来判断其是否按下。
按功能分,键盘有独立按键和矩阵按键之分,独立按键每一路按键就占用单片机的一个控制引脚,单片机直接获取其信息矩阵按键将按键排成由行和列组成的行列式,通过确认按键的行号和列号来确定每一路按键,利用少的单片机引脚控制更多的按键。
该部分设计由单片机的P1口控制按键电路。
其按键用于设定定时时间、打铃时间间隔,所以只需4路按键即可实现所需功能,采用独立式按键即可。
由于键盘只有四个,采用独立式按钮,分别与8051的P1.0,P1.1,P1.2相连,用普通按钮10KΩ上拉电阻,用查询法完成读健功能。
当某一个按钮按下的时候,其对应的引脚就由高电平变成低电平,然后通过单片机扫描读取引脚的电平来判断按钮是否按下。
设计电路见图3.3所示:
图3.3按键电路图
注意,由于按键是机械式触点,所以在断开或闭合时,一般都有抖动产生,虽然这个抖动时间在我们看来非常短,但是单片机执行指令的速度为微秒级别,很容易会读取这个时间而将其判断为真正的工作状态,从而引起误判。
因此,在设计中必须考虑到按键抖动的影响。
常用的去抖动的方法有两种:
硬件方法和软件方法。
硬件方法一般是加电容或者RS触发器软件方法是在单片机在检测引脚所连接的按键的工作状态时加一个延时程序再次确认,通过2次的确认就可以确保按键的工作状态不受机械抖动的影响了。
本设计采用软件方法。
3.2.3显示电路设计
本设计采用的是LED显示器,LED显示器有静态显示和动态显示两种显示方式。
LED显示器工作于静态显示方式时,各位的共阴极(或共阳极)连接在一起并接地(或接+5V),每位的段码线分别与一个8位的锁存器输出相连。
这种显示方式接口编程容易,但是占用口线较多。
在多位LED显示时,为简化硬件电路,所有位的段码线相应段并联在一起,由一个8位I/O口控制,形成段码线的多路复用,各位的公共端分别由相应的I/O线控制,形成各位的分时选通。
由于各位的段码线并联,8位I/O口输出的段码对各个显示位来说都是相同的。
本设计需用到8位8段LED数码管,每个数码管的选通由位选线来控制,采用动态显示器电路。
设计电路如图3.4所示:
图3.4显示电路
显示部分采用普通的共阴极数码管显示,采用动态扫描,以减少硬件电路,数码管分别为十时,时,十分,分,十秒,秒显示,显示时采用串行口输出段码。
采用动态扫描方式,通过一组单片机端口驱动并联在一起的LED发光管的一端(共阴或共阳端),LED发光管的另一脚接通用I/O口,控制其亮灭。
该方法能驱动较多的LED,控制方式较灵活,而且节省单片机的资源。
3.2.4响铃电路设计
本设计中的蜂鸣器驱动模块用到了蜂鸣器(SPEAKER)、三极管、100欧姆的电阻。
将蜂鸣器的一段接地,另一端接三极管的发射极,三极管的基极通过100欧姆的电阻接在三极管的P3.7引脚,三极管的集电极接+5V的电源。
其电路图如图3.5所示:
图3.5打铃电路
3.3整体电路设计
整体电路由个部分单元电路组合而成。
总体运行过程如下:
实现24小时制电子钟,在8位数码管显示,显示为时分秒,实现的格式为:
23-59-59。
到达预定时间启动蜂鸣器开始打铃,打铃的方式分为起床、熄灯和上下课铃两种。
系统使用了4个按键,3只按键用来调整时间,另一只为强制打铃按钮。
通过选择键选择调整位,选中位闪烁,按增加键为选中位加1,按减少键为选中位减1。
按强制打铃按钮是实现强制打铃或者强制关闭打铃。
整体电路图见附录
.
第4章系统软件设计
4.1系统软件设计的主要内容
软件是该LED显示屏控制系统的重要组成部分,在系统的软件设计中我们也才用了模块化设计,将系统的各部分功能编写成子模块的形式,这样增强了系统软件的可读性和可移植性。
统软件设计由三个模块编程组成:
蜂鸣器打铃编程,七段显示管显示编程,按键编程。
4.2基本思路概述
主程序首先是初始化部分,主要是计时单元清零,中断初始化,堆栈指针初始化,启动定时器工作,然后是调用显示子程序。
主程序的起始存储地址是0000H单元,但由于本系统用了定时器T0的中断,中断服务程序入口地址为000BH,因此从0000H单元起存放一条短调转指令AJMP,使真正的主程序从0300H单元开始存放。
4.3主程序流图设计
主程序初始化,并打开中断,然后执行中断服务程序。
实现24小时制电子钟,8位数码管显示,显示时分秒显示格式:
23-59-59(小时十位如果为0则不显示)。
到预定时间启动蜂鸣器模拟打铃,蜂鸣器BEEP:
P3.7打铃方式分起床、熄灯铃和上、下课铃两种系统使用4只按键,3只按键用来调整时间,另一只为强制打铃按钮,调整选择键SET_KEY:
P1.0通过选择键选择调整位,选中位闪烁增加键ADD_KEY:
P1.1按一次使选中位加1减少键DEC_KEY:
P1.2按一次使选中位减1,如果长按ADD_KEY或DEC_KEY,识别后则进行调时快进,此时停止闪烁。
如图4.1所示,主程序开始初始化后,就跳转到中断服务程序,如正常走时,则往下进行打铃时间的比较,继续向下执行对打铃的判断程序如不正常走时,则直接转到显示程序。
这以后,继续执行按键的检测,若有键按下,则取值打铃反之,则返回到中断服务程序的开始继续执行。
图4.1主程序流图
第5章仿真与分析
5.1系统调试
根据系统设计方案,本系统的调试共分为三大部分:
硬件调试,软件调试和软硬件联调。
由于在系统设计中采用模块设计法,所以方便对各电路模块功能进行逐级测试:
LED驱动模块的调试,数据存储模块的调试,PC机通信模块的调试等,最后将各模块组合后进行整体测试。
5.2仿真结果
此系统的仿真效果很好,能实现设计要求和目的所规定的内容。
仿真结果图如图5.1所示:
图5.1仿真结果图
仿真结果分析:
如上图所示,LED数码管显示时钟为11-28-07,准确显示时、分、秒信息,实现显示实时时钟的指标要求。
通过4个按键,能够实现调整时间功能,以便于观察仿真结果。
通过Proteus软件,可实现对打铃电路的仿真。
第6章设计总结
本次课程设计题目为自动打铃装置设计,首先通过查阅资料,确定整个设计的总体设计方案,然后,对整体方案的各个部分进行详细分析。
整个设计主要分为五大模块:
时钟电路、按键设定电路、单片机电路、显示电路和打铃电路。
分别对子模块的硬件部分和软件部分进行设计与仿真,最后组成一个整体设计电路。
通过对整体电路进行仿真,能够实现时钟显示和10个时间点的自动打铃,达到本设计的要求指标。
通过此次课程设计,本人对所学的知识有了很好的回顾和实践,提高了自己的动手和思考能力,这对本人自身的发展有很大的帮助,同时在此期间本人查阅了很多的书籍和资料,从中学到了很多课本上没有的知识,拓展了自己的知识面,如果没有前期的准备工作是没法很好的完成此次设计的,所以多学、多看、多想、多动手才是学好知识的必要素质,这对本人未来的发展和进步有着至关重要的作用。
本人签字:
参考文献
[1]张毅刚、彭喜元.《单片机原理与应用设计》电子工业出版社,2014.
[2]张鑫、华臻、陈书谦.《单片机原理及应用》[M].电子工业出版社,2005.
[3]丁元杰、吴大伟.《单片机实题集与实验指导书》[M].机械工业出版社,2004.
[4]李群芳,肖看.《单片机原理接口与应用》北京:
清华大学出版社,2005.
[5]周权.《基于单片机的出租车计费器设计和实现》[J].中山大学研究生学刊:
自然科学·
医学版,2011.
[6]林游,张俊杰,易凡.《霍尔传感器信号采集与显示系统设计》[J].现代电子技术,2009.
[7]杜春树.《基于Proteus和KeilC51的单片机设计与仿真》电子工业出版社,2009.
[8]王君.《单片机原理及控制技术》机械工业出版社,2012.
附录
整体电路图
元器件清单
器件名称
数量
AT89C51单片机
1片
BU208三极管
1个
晶振
按键
4个
LED显示器
10KΩ电阻
100Ω电阻
蜂鸣器
30pF电容
2个
10uF电容
程序清单
BEEPEQUP3.7;
定义蜂鸣器(电铃)控制信号输出口
ORG0000H;
程序入口地址
LJMPSTART
ORG000BH;
定时器0中断入口地址
LJMPTIMER_0
ORG0100H
/*****程序开始,初始化*****/
START:
SETBBEEP;
关闭蜂鸣器(电铃)
SETB48H;
使用一个bit位用于调时闪烁标志
SETB47H;
用一个bit位用于产生脉冲用于调时快进时基
CLR45H;
关闭响铃方式1标志
CLR44H;
关闭响铃方式2标志
MOVR1,#0;
调整选择键功能标志:
0正常走时、1调时、2调分、3调秒
MOV20H,#00H;
用于控制秒基准时钟源的产生
MOV21H,#00H;
清零秒寄存器
MOV22H,#00H;
清零分寄存器
MOV23H,#00H;
清零时寄存器
MOV24H,#00H;
用于控制调时闪烁的基准时钟的产生
MOVR2,#00H;
强制打铃标志
MOVR3,#00H;
强制打铃时长标志
MOVIP,#02H;
IP,IE初始化
MOVIE,#82H
MOVTMOD,#01H;
设定定时器0工作方式1
MOVTH0,#3CH
MOVTL0,#0B0H;
赋定时初值,定时50ms
SETBTR0;
启动定时器0
MOVSP,#40H;
重设堆栈指针
/*****主程序*****/
MAIN:
CJNER1,#00H;
是否为正常走时状态
LCALLBIJIAO2;
调用上、下课打铃比较子程序
LCALLDALING2;
调用响铃方式2执行子程序
LCALLDALING3
MAIN1:
LCALLDISPLAY;
调用显示子程序
LCALLKEY_SCAN;
调用按键检测子程序
JZMAIN;
无键按下则返回重新循环
LCALLSET_KEY;
调用选择键处理子程序
JB46H,MAIN;
如果已进行长按调整,则不再执行下面的单步调整
LCALLADD_KEY;
调用增加键处理子程序
LCALLDEC_KEY;
调用减少键处理子程序
LCALLDALING_KEY;
处理强制打铃/强制关闭铃声键
LJMPMAIN;
重新循环
/*****定时中断服务程序*****/
TIMER_0:
PUSHACC
PUSHPSW;
保护现场
MOVTH0,#3CH
MOVTL0,#0B0H;
重新赋定时初值
CPL47H;
产生脉冲用于调时快进时基
INC24H
MOVA,24H
CJNEA,#10,ADD_TIME;
产生0.5秒基准时钟,用于调时闪烁
CPL48H;
取反调时闪烁标志位
MOV24H,#00H
ADD_TIME:
INC20H
MOVA,20H
CJNEA,#20,RETI1;
产生1秒基准时钟
MOV20H,#00H;
一秒钟时间到,清零20H
CJNER2,#01H,ADD_M
INCR3
ADD_M:
MOVA,21H
ADDA,#01H
DAA;
作十进制调整
MOV21H,A
CJNEA,#60H,RETI1
MOV21H,#00H;
一分钟到
MOVA,22H
ADDA,#01H
DAA
MOV22H,A
MOV22H,#00H;
一小时到
MOVA,23H
MOV23H,A
CJNEA,#24H,RETI1
到24点,清零小时
RETI1:
POPPSW
POPACC;
恢复现场
RETI;
中断返回
/*****显示处理*****/
DISPLAY:
MOVA,21H;
秒
ANLA,#0FH
MOV2FH,A;
转换出秒个位,存入2FH
ANLA,#0F0H
SWAPA
MOV2EH,A;
转换出秒十位,存入2EH
JB46H,MIN;
如果长按按键(调时快进),则跳过闪烁处理
CJNER1,#3,MIN;
如果R1为3,闪烁秒位待调整
JB48H,MIN
MOV2FH,#0AH;
使该位为10,查表得到使该位不显示的输出
MOV2EH,#0AH
MIN:
MOVA,22H;
分
ANLA,#0FH
MOV2DH,A;
转换出分个位,存入2DH
MOVA,22H
ANLA,#0F0H
SWAPA
MOV2CH,A;
转换出分十位,存入2CH
JB46H,HOUR;
CJNER1,#2,HOUR;
如果R1为2,闪烁分位待调整
JB48H,HOUR
MOV2DH,#0AH;
MOV2CH,#0AH
HOUR:
MOVA,23H;
时
ANLA,#0FH
MOV2BH,A;
转换出时个位,存入2BH
MOVA,23H
ANLA,#0F0H
MOV2AH,A;
转换出时十位,存入2AH
JB46H,DISP;
CJNER1,#1,DISP;
如果R1为1,闪烁时位待调整
JB48H,DISP
MOV2BH,#0AH;
MOV2AH,#0AH
/*****数码管动态扫描显示*****/
DISP:
MOVDPTR,#TABLE
MOVA,2FH
MOVCA,@A+DPTR
MOVP0,A
CLRP2.7
LCALLDELAY
SETBP2.7;
显示秒个位
MOVA,2EH
MOVCA,@A+DPTR
CLRP2.6
SETBP2.6;
显示秒十位
MOVA,#40H
CLRP2