基于单片机89C51的报警器与旋转灯.docx
《基于单片机89C51的报警器与旋转灯.docx》由会员分享,可在线阅读,更多相关《基于单片机89C51的报警器与旋转灯.docx(14页珍藏版)》请在冰点文库上搜索。
基于单片机89C51的报警器与旋转灯
课程设计
设计题目:
基于单片机的报警器与旋转灯设计
学生姓名:
周颖指导教师:
高峰
二级学院:
机电工程学院专 业:
电气工程及其自动化
班 级:
11电气
(一)班学 号:
**********
2.2.2开关报警器模块5
2.3软件设计8
2.3.1主程序模块8
3系统调试10
3.1软件调试10
3.1.1proteus软件仿真10
3.1.2程序10
基于单片机的报警器与旋转灯设计
摘要
报警器与旋转灯,是一种为防止或预防某事件发生所造成的后果,以声、光两种形式来提醒或警示我们应当采取某种行动的电子产品。
随着科技的进步,机械式报警器越来越多地被先进的电子报警器代替,经常应用于系统故障、安全防范、交通运输、医疗救护、应急救灾、感应检测等领域,与社会生产密不可分。
其通常具有以下几个优点:
1)光效节能:
光效高、寿命长、节能环保;优良的芯电路设计,声音和声光两种工作模式任意转换,声音报警声强高达115分贝以上,穿透能力强。
2)充电组,充放电性能稳定、容量高、自放电率低、节能环保。
3)安全可靠:
采用先进的光学软件和优化的结构密封设计,具有很强的环境适应性,转动安静平稳,经受强力的碰撞和冲击,确保元件可在恶劣的环境中长期稳定可靠的工作。
4)使用方便:
体积小、重量轻、携带方便,可采用台面放置、手提、磁力吸附等多种方式。
关键词:
电子报警器;先进;单片机
1绪论
报警器与旋转灯一般匹配探测器,应根据实际现场环境和用户的安全防范要求,合理的选择和安装各种类型的报警探测器,才能较好的达到安全防范的目的。
当选择和安装报警探测器不合适时,有可能出现安全防范的漏洞,达不到安全防范的严密性,给入侵者造成可乘之机,从而给安全防范工作带来不应有的损失。
报警探测器的灵敏度和可靠性是相互影响的。
合理选择报警探测器的探测灵敏度和采用不同的抗外界干扰的措施,可以提高报警探测器性能。
采用不同的抗干扰措施,决定了报警探测器在不同环境下的使用性能。
了解各种报警探测器的性能和特点,根据不同使用环境,合理配置不同的报警探测器是防盗报警系统的关键环节。
本课题的主要任务是设计采用单片机控制的报警器与旋转灯,要求通过外部中断0控制报警器和旋转灯。
报警器与P3.7口接,八个发光二极管分别接P2口。
当接外部中断0的开关按下时,报警器响,八个发光二极管顺时针方向旋转;当第二次按下开关时,报警器停止和发光二级管熄灭。
设计报警器与旋转灯的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试。
2系统设计
2.1设计方案论证
采用40脚,片内带8kBFlashROM的ATC89C51单片机作为控制核心,开关模块和报警器模块接P3口,旋转灯模块接P2口,按以上系统构架设计,单片机端口资源刚好满足要求。
设计框图如图2-1所示。
图2-1报警器与旋转灯系统结构图
2.2系统硬件设计
基于单片机的报警器与旋转灯系统的电路原理图如图2-2所示。
系统由旋转灯模块、复位模块、开关报警器模块和电源模块四部分组成。
2.2.1控制模块
控制模块原理图如图2-3所示。
主控制器采用ATC89C51。
ATC89C51是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能CMOS8位的微处理器。
在本设计中,P3口用于对报警器和旋转灯的控制,连接开关和蜂鸣器。
P2口用于对旋转灯的控制。
在控制模块里面,包含了时钟电路以及复位电路两部分。
图2-2基于单片机的报警器与旋转灯系统电路原理图
图2-3控制模块原理图
A.时钟电路
ATC89C51内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部方式的时钟电路如图2-4(a)所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图2-4(b)所示,XTAL2接地,XTAL1接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
(a)内部方式时钟电路(b)外部方式时钟电路
图2-4时钟电路
B复位及复位电路
a.复位操作
复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
b.复位信号及其产生
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
整个复位电路包括芯片内、外两部分。
外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位相按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的。
这样,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。
其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。
2.2.2开关报警器模块
开关控制电路的运行,报警器是运行中所显示的一种状态。
如图2-5所示。
图2-5开关报警器模块
在没有按键按下时,P3.7口输出的是高电平。
当某一层有键按下时,相应的端口引脚变为低电平。
蜂鸣器短脚接地,长脚直接接P3.7口。
2.2.3旋转灯模块
旋转灯电路由8个LED发光二极管和8个280Ω的电阻构成。
该电路设计比较简单,但是要注意节点的电气连接。
如图2-6所示。
2.2.4硬件电路中器件选择
A.ATC89C51单片机
STC89系列单片机是MCS-51系列单片机的派生产品。
它们在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。
STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。
本设计采用ATC89C51,它提供的功能标准如表2-1。
表2-1ATC89C51功能标准
兼容MCS51指令系统
8K可反复擦写FlashROM
32个双向I/O口
256x8bit内部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
ATC89C51引脚图如图2-7所示。
图2-6旋转灯模块
图2-7ATC89C51
a.主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
b.外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
c.控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
d.可编程输入/输出引脚(32根)
ATC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
P0口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
2.3软件设计
2.3.1主程序模块
系统主程序主要用于变量及其他部件的初始化,如系统的初始化,以便能够准确的进行相应的操作。
同时进行相应的功能键判断,从而实现特殊功能。
其相应的流程图2-8所示。
图2-8报警器与旋转灯系统主程序流程图
2.3.2中断程序
在相应的外部中断和定时器中断程序中,首先响应外部中断,再响应两个定时器中断,读取键值,旋转灯旋转,报警器响,在定时器重置初始值以后,再次外部中断返回。
中断程序的相应流程图如2-9所示。
图2-9中断程序流程图
3系统调试
3.1软件调试
对软件先用仿真器进行了调试。
用仿真器运行正常后,再用Keil将程序烧到ATC89C51单片机中,进行了脱机调试。
3.1.1proteus软件仿真
使用proteus原理及仿真电路如图3-1所示。
图3-1proteus原理及仿真图
3.1.2程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitSPK=P3^7;
ucharFRQ=0x00;
//延时
voidDelayMS(uintms)
{
uchari;
while(ms--)for(i=0;i<120;i++);
}
//INT0中断函数
voidEX0_INT()interrupt0
{
TR0=~TR0;//开启或停止两定时器,分别控制报警器的声音和LED旋转
TR1=~TR1;
if(P2==0x00)
P2=0xe0;//开3个旋转灯
else
P2=0x00;//关闭所有LED
}
//定时器0中断
voidT0_INT()interrupt1
{
TH0=0xfe;
TL0=FRQ;
SPK=~SPK;
}
//定时器1中断
voidT1_INT()interrupt3
{
TH1=-45000/256;
TL1=-45000%256;
P2=_crol_(P2,1);
}
//主程序
voidmain()
{
P2=0x00;
SPK=0x00;
TMOD=0x11;//T0、T1方式116位计数器
TH0=0x00;
TL0=0xff;
IT0=1;
IE=0x8b;//开启0,1,3号中断
IP=0x01;//INT0设为最高优先
TR0=0;
TR1=0;//定时器启停由INT0控制,初始关闭
while
(1)
{
FRQ++;
DelayMS
(1);
}
}
4结论
在大学期间,从接触单片机的课程开始,单片机就给我留下了神秘感。
不论是对课程的学习,还是心中对课程的看法,直到自己独自完成布置的单片机课程,自己的对单片机才有了实质性的了解。
实验任务分配下来后,一开始确实很迷茫。
因为完全没有头绪,无从下手。
看这网页中搜索的浩瀚的资料,真是一个头两个大,也第一次体会到了长时间对这电脑屏幕痛苦的感觉。
之后我静下心来,仔细挖掘这次实验的问题所在。
我所作的课题关键在于利用3个中断对LED灯的显示和按键触发的处理。
想通这些后我开始查阅相关资料,从芯片组成到C语言程序,开始深入的学习。
从查阅彭伟的《单片机C语言程序设计实训100例》开始,到《最小系统的焊接要点》、《如何利用protel软件绘制原理图和pcb图》,我一步步去尝试,一次次和同学讨论解决自己存在的问题,最终将单片机课程完成。
通过这次实验,我认为学习的不仅仅是知识,更重要的是解决问题时坚毅不拔的精神,人不会被打败,只有被摧毁。
在求知的道路上我们不能轻易放弃,不能放纵退缩。
只有迎难而上,方能摘取胜利的果实!
参考文献
[1]彭伟.单片机C语言程序设计实训100例—基于8051+Proteus仿真[M].北京:
电子工业出版社,2010
[2]郭天祥.新概念51单片机C语言教程—入门、提高、开发拓展全攻略[M].北京:
电子工业出版社,2010
[3]陈益飞.单片机原理及应用技术[M].北京:
国防工业出版社,2011