基于单片机的简易报警器

一、需求分析
现代社会,家庭安全、财产安全和社会公共安全已成为人们普遍关注的问题 。盗贼破门而入、爬窗而出,博物馆展品无故丢失,江河水位上涨……这一系列问题都和人们生活息息相关 。
针对这类现象,今利用单片机的原理,特设计了一款简易报警器,来解决这些问题 。
二、设计规划
1、整体构思系统,确定工作原理 。
2、用Protel99设计电路图,确定所需元件参数,并由此设计PCB图 。
3、购买所需元件和实验板,依据PCB焊接电路 。
4、用KeilC51编写程序,并用仿真器仿真通过,下载至芯片AT89S52 。
5、调试硬件系统,符合预期构想 。
6、创新改进系统 。
三、原理设计
 
原理简介
通过单片机AT89S52控制红色LED2、绿色LED1、蜂鸣器U1和监测信号端口J2,C3排除干扰信号 。图中S2、EC1和R2组成单片机复位电路,三极管Q0起音频放大作用,晶振Y0为12MHz,J1接DC5V电源 。
工作描述
安全情况下,绿灯点亮,红灯熄灭,喇叭无声;一旦信号监测端口有脉冲或电平变化(依场合设置为高脉冲或低脉冲,高电平或低电平)出现,即触发报警器进入报警状态,红绿灯交替闪烁,喇叭发出警报声 。
除非关闭电源或按下复位键,否则会报警不止,从而达到报警目的 。
四、硬件设计
1、PCB的设计
 
PCB属性:单面板7.62×5.08cm2 (可依场合小型化)
2、元器件清单
 
3、元件安装图
 
4、布线图
 
 
五、单片机程序
1、程序流程图
 
2、C语言程序
#include
#define Signal 0x00 //脉冲信号定义
sbit LED_G=P0^0; //绿灯驱动端口
sbit LED_R=P0^1; //红灯驱动端口
sbit Pulse=P2^0; //脉冲信号检测端口
sbit Buzzer=P2^1; //喇叭驱动端口
unsigned int Count=0;//闪烁时间计数
//延时1毫秒函数
void Delay_ms(unsigned int ms)
{
unsigned char Temp;
while(ms--)
for(Temp=0;Temp<120;Temp++);
}
//高脉冲信号扫描函数
unsigned char Key_Scan()
{
if(Pulse==0)
{
Delay_ms(100);
if(Pulse==1)
{
Delay_ms(200);
return Signal;
}
else return 0xff;
}
else return 0xff;
}
//定时器0初始化
void Timer_Start()
{
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
TR0=0;
ET0=1;
EA=1;
}
//定时器0中断服务函数,闪灯和鸣喇叭
void Timer0_Serve()interrupt 1
{
TH0=0xfc;
TL0=0x18;
Count++;
if(Count>=200)
{
Count=0;
LED_G=~LED_G;
LED_R=~LED_G;
Buzzer=~Buzzer;
}
}
//主函数
void main()
{
unsigned char Key_Code;
Timer_Start();
LED_G=0;
LED_R=1;
Buzzer=1;
Pulse=1;
while(1)
{
Key_Code=Key_Scan();
switch(Key_Code)
{
case Signal:TR0=1;break;
default:break;
}
}
}
3、汇编程序
;程序名称:
; 简易报警器
;硬件资源:
; 红色LED-------------P2.3
; 绿色LED-------------P2.4
; 蜂鸣器--------------P2.0
; 脉冲输入------------P3.4
;-------------------------------------
;端口定义
ledg equ p2.4
ledr equ p2.3
bzzr equ p2.0
pls equ p3.4
;-------------------------------------
;数据存储
pulse equ 20h.0
;-------------------------------------
;程序代码
org 0000h
jmp main
org 0100h
;系统初始化
init :
clr pulse
setb ledr
clr ledg
setb bzzr
setb pls
ret
;延时ms毫秒
delay_ms:
mov r7,a
delay1 :mov r6,#5
delay2 :mov r5,#100
djnz r5,$
djnz r6,delay2
djnz r7,delay1
ret
;脉冲检测
pls_ch :
jb pls,fail
mov a,#1
call delay_ms
jnb pls,succ
jmp fail
succ :setb pulse
jmp exit
fail :clr pulse
exit :ret
;报警信号产生
alarm :
cpl bzzr
cpl ledr
mov c,ledr
cpl c
mov ledg,c
ret
;主程序
main :
call init
scan :call pls_ch
jb pulse,start
jmp scan
start :call alarm
mov a,#200
call delay_ms
jmp start
end
说明:汇编程序的设计思路与C语言的有所不同,程序更高效和紧凑,建议选用 。
六、应用举例
1、家庭安全:在J2端口接一个大面积按键,置于门口地毯之下,夜间打开报警器,只要有人踏上地毯,J2获得一个低脉冲,即触发报警,如果再在窗棂上安置一个滑触开关,一同接入J2端口,则可达到综合防盗目的 。
2、文物安全:在J2端口接一个小按键,置于博物馆文物之下,全天打开报警器,只要有人拿起文物,按键弹起,J2端口立即获得一个高脉冲,即触发报警,如果再增加同样的检测端口和指示灯,则可对多个文物同时监控 。
3、水利安全:在J2端口接一个浮力触发装置,放置在江边,设定水位报警点,一旦达到危险水位,同样报警,如果在江边安置一个水位到电压的传感器,经AD转换送入单片机,可实时远程监测水位变化 。
……
七、功能扩展
在脉冲端口接入一个温度传感器,如DS18B20,单片机通过对温度采样,可实现自动温度超限报警 。
……
【基于单片机的简易报警器】说明:本报警器作为一个简单的单片机应用设计,适用于毕业设计或课程设计,而且可依据需求进行相应的扩展设计 。

    推荐阅读