报警信号的检测与告警提示汇总.docx
《报警信号的检测与告警提示汇总.docx》由会员分享,可在线阅读,更多相关《报警信号的检测与告警提示汇总.docx(27页珍藏版)》请在冰豆网上搜索。
报警信号的检测与告警提示汇总
单片机课程设计任务书
学生姓名:
杨柳专业班级:
电信1005班
指导教师:
刘运苟工作单位:
信息工程学院
题目:
报警信号的检测与告警提示
初始条件:
(1)提供实验室机房;
(2)模拟、数字电子技术的基本理论学习。
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):
(1)电路由开关控制,报警电路,声音放大电路组成;
(2)用P1.0输出1kHz和500Hz的音频信号驱动扬声器,作为报警信号,要求1kHz的信号响100ms,500Hz的信号响200ms,交替进行,P1.7接一开关进行控制,当开关和时响报警信号,当开关断开时告警信号停止。
(3)运用外部中断接入一报警信号,当开关合上时,发出1kHz的音频信号驱动扬声器告警,开关断开时撤销报警。
(4)拓展越多,得分越高。
时间安排:
(1)布置课程设计任务,查阅资料,确定方案四天;
(2)进行编程设计一周;
(3)完成课程设计报告书三天;
指导教师签名:
年月日
系主任(或责任教师)签名:
年月
摘要
伴随着社会的发展,人们的生活质量不断提高,拥有了更多的奢饰品,因此防盗报警就成了一项重要的课题。
本次课程设计的“报警信号的检测与告警提示”是基于单片机的智能化应用,首先通过传感器来感应报警信号是否被触发,并通过单片机系统控制报警电路发出特定频率的报警声音信号,在发出报警信号之前通过放大电路将报警信号放大从而达到声音报警的目的。
为了更方便,还定义了开关控制报警信号功能,可以随时关闭它。
论文首先简单介绍报警器的研究背景、国内报警器的发展现状以及未来趋势,然后结合应用电路具体介绍了该电路的工作原理,基本电路结构以及控制过程。
关键字:
报警器、单片机、放大器、防盗报警
1.绪论
在日常生活和生产的各个领域,凡是有自动控制要求的地方,都会有单片机的影子,也即单片机的应用已经相当普及。
单片机的应用有利于系统的小型化、智能化及多功能化。
单片机的应用从根本上改变了传统的控制系统设计思想和设计方法。
从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。
用软件替代部分硬件,使系统软件化提高性能,是传统控制技术的一次革命。
本次课程设计即是利用单片机设计一报警信号的检测与告警提示。
设计者不但要熟练掌握单片机的编程技术,还要有较强的单片机硬件方面的知识。
1.1课题背景及研究意义
传统的机械式报警设备在实际使用中暴露出一些隐患,其报警的不及时性、错误率高以及设备开销大、维护困难等都给社会的安全带来影响。
随着微处理技术的快速发展,低价位、低功耗、高性能的小型单片机比比皆是。
采用单片机后,许多以前需要硬件完成的功能,现在可以通过软件程序就可以控制报警实现,使报警信号的测量与控制较普通的硬件实现更加容易,电路结构更加简单,更具有扩展性。
我们可以在现有的声音报警电路结构上,随时更新探测器软件,加入最新的探测触发信号算法,对报警后进行事件处理,使之报警更准确,性能更可靠,更人性化。
1.2国内外报警控制系统的发展现状与未来前景
1.2.1国内报警器控制系统的发展现状
报警器在国外发达国家,无论是其技术含量还是市场制度以及管理水平都提高到作为一种服务提供给公民,它拥有完善的法律保障体系。
在发达国家,电子安全产品已经广泛应用于公司和家庭的安全防护,并且大部分用到了单片机。
到目前为止,美国超过50%左右的家庭已经安装了电子防盗产品来保护安全。
1.2.2国内报警器控制系统的发展现状
国内报警器的发展比较晚,从事的都是些中小企业,且有以下几点制约因素:
1.好的国外引进报警器价格高,售后保障差,造成用户面窄
目前国内引进报警器的初装费约为10000元左右,每月高达500元以上的运营服务费,使普遍人群无力承担,也就缩小了用户人群。
2.客户要求不一,变动较多,密度不够,造成难以统一管理
现在大部分用户都是很分散的人群,并且要求各异,使产品设计、生产以及安装服务带来很大不便,不能统一管理。
1.2.3国内外报警控制系统的未来前景
基于以上说明,国内外单片机市场仍在,又加上单片机如今快速发展,低价位、低功耗、高性能的优点使得它更能适应各种复杂要求,有着广泛的应用市场。
1.3课题设计目的
1.巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力。
2.培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力。
3.通过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。
1.4课题设计任务
1.用P1.0输出1kHz和500Hz的音频信号驱动扬声器,作为报警信号,要求1kHz的信号响100ms,500Hz的信号响200ms,交替进行,P1.7接一开关进行控制,当开关和时响报警信号,当开关断开时告警信号停止。
2.运用外部中断接入一报警信号,当开关合上时发出1kHz的音频信号驱动
扬声器告警,开关断开时撤销报警。
2.系统概述
2.1系统功能分析
从设计的要求来分析该设计须包含如下结构:
外界触发信号模拟、主控单片机模块检测与控制、报警控制电路控制报警方式、声音放大电路、声音报警模块、
发光LED指示模块、液晶显示模块以及相关的控制管理软件组成。
硬件仿真可以在Proteus中完成;软件设计部分在KeilUV4中完成。
2.2系统组成框图
根据设计要求及其功能分析可知,系统可分为主控模块、报警控制模块、音频放大模块、声音报警模块、检测触发模块等组成。
其系统原理框见图2.1所示。
图2.1系统框图
2.3系统实现原理
本系统采用AT89C51单片机作为控制核心,通过P3.2(INT0)外部中断作为报警源,将产生的信号通过单片机处理,经P1.0接一音频放大模块送扬声器发声,此过程中检测P1.7口的开关状态来控制P1.0口的报警频率和是否报警,从而通过扬声器实现声音报警输出。
并且将两个功能以液晶和发光LED显示区别。
2.4系统流程框图
由系统的实现原理可知主流程图如图2.2所示。
图2.2主流程图
3.系统组成部分
3.1主控模块
主控模块采用ATMEL公司生产的AT89C51单片机作为系统的控制器,系统控制程序可以直接写入到芯片中。
即可以通过在keilUV4进行控制程序的编写,然后在Proteus仿真时将程序连接到芯片中来实现功能。
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS8位微处理器,它使用简单,软件编程灵活,自由度大。
可用软件编程实现各种算法和逻辑控制,并且功耗低、体积小、技术成熟和成本低。
但其工作需要石英晶体和微调电容的时钟电路,本系统中采用12MHz的晶振频率。
3.2报警控制模块
该模块采用一开关SW1(接P1.7)来控制声音报警器按照要求频率报警或关闭报警器。
当SW1拔向地时,开关选通,执行报警功能,当SW1拔向VCC时,开关断开,关闭报警功能。
3.3声音报警模块
声音报警信号可以通过扬声器来实现,扬声器又称“喇叭”。
是一种十分常用的电声换能器件,在出声的电子电路中都能见到它。
扬声器的种类繁多,音频电能通过电磁、压电或静电效应,使其纸盆或膜片振动周围空气造成音响。
按换能机理和结构分动圈式(电动式)、电容式(静电式)、压电式(晶体或陶瓷)、电磁式(压簧式)、电离子式和气动式扬声器等,电动式扬声器具有电声性能好、结构牢固、成本低等优点,应用广泛。
3.4发光二极管模块
发光二极管是一种能发光的半导体电子元件是半导体二极管的一种,可以把电能转化成光能。
当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。
常用的是发红光、绿光或黄光的二极管。
3.5音频放大模块
利用单片机本身的时钟信号很小,所以需要将信号进行放大。
经过综合分析,我们选用LM386。
LM386是美国国家半导体公司生产的音频功率放大器,主要应用于低电压消费类产品。
为使外围元件最少,电压增益内置为20。
但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至200。
输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW。
LM386的常见电压增益内置为20的原理图如图3.1所示。
图3.1音频放大增益=20
3.6液晶显示模块
LM032L采用标准的14脚接口,其中:
第1脚:
VSS为地电源。
第2脚:
VDD接5V正电源。
第3脚:
V0为液晶显示器对比度调整端。
第4脚:
RS为高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶执行命令。
第7~14脚:
D0~D7为8位双向数据线。
3.7检测触发模块
该模块采用一开关SW2(接P3.2)外部中断接入一报警信号,用了模拟外部中断信号。
中断的原理与应用:
80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器:
1中断请求:
定时和外中断控制寄存器TCON;
串行控制寄存器SCON;
2中断允许控制寄存器IE;
3中断优先级控制寄存器IP。
80C51外部中断源有2种触方式,即电平触发和脉冲触发。
当外部中断源为电平触发时,低电平有效。
CPU采样到外中断0引脚为低电平时,就认为是外中断0的一个有效的中断请求信号。
当外部中断源以脉冲方式触时,负脉冲有效。
CPU在一个机器周期采样到外中断0引脚为高电平,在接下来的一个机器周期采样到外中断0引脚是低电平,即出现了下降沿的跳变时,就认为是外中断0的一个有效的中断请求信号。
因为2次检测的间隔时间都至少维持一个机器周期,从而保证CPU能够检测到电平的跳变。
合理编写程序是实现对中断控制的最基本方法,外部中断标志的编程方式有中断方式和查询方式。
中断方式是指CPU在接收到外部中断请求时,暂时停止主程序的执行,转去处理相关的服务程序,再返回继续运行原程序。
中断方式下的编程有如下步骤:
1)开中断;2)设置中断优先级;3)中断源的相关控制;4)编写中断服务程序。
查询方式就是CPU主动地监测中断源的状态并做出反应。
其编程步骤如下:
1)关中断;2)中断源的相关设置;3)关中断查询及相关处理。
4.实验原理图
4.1实验原理总图
总实现原理为SW1、SW2控制报警信号并显示出来。
其原理见图4.1所示。
图4.1实验原理总图
4.2液晶显示模块原理图
主要完成功能1和功能2切换的直观显示,利用P0数据口和P2.0~P2.2控制口,完成指定字符的显示。
其显示原理如图4.2所示。
图4.2液晶显示模块原理图
4.3主控模块原理
通过单片机控制报警信号的处理与控制,包括复位电路和晶振电路。
有一个SW用于切换功能1和功能2,如图时为功能1,反之为功能2。
原理如图4.3所示。
图4.3液晶主控模块原理图
4.4SW1功能模块原理
当按下SW1时,即开关闭合,按1kHz的信号响100ms,500Hz的信号响200ms的报警信号报警,并交替进行;当开关断开时报警信号停止。
原理如图4.4所示。
图4.4液晶主控模块原理图
4.5SW2功能模块原理
当SW2开关合上时,发出1kHz的音频信号驱动扬声器告警,开关断开时撤销报警。
并且红色发光二极管亮显示当前为功能2,并且配合液晶一起显示。
其功能原理如图4.5所示。
图4.5液晶主控模块原理图
4.6报警放大功能模块原理
为了更人性化,加入了报警功能;又为使更清晰,加入了放大模块(LM386),这样就可以听到报警声音了。
报警模块如图4.6所示。
图4.6声音报警模块原理图
5.实验仿真图
5.1实验仿真图
5.1.1实验仿真图功能一
当开关SW1按下时蜂鸣器交替以500Hz和1KHz频率报警,并且对应的发光指示灯D1也发亮,液晶LCD上显示当前的功能为功能一;当弹起SW1时,报警器关闭,对应的指示灯D1也熄灭。
仿真图如图5.1所示。
图5.1功能一仿真图
5.1.2实验仿真图功能二
当开关SW2按下时蜂鸣器1KHz频率报警,并且对应的发光指示灯D2也发亮,液晶LCD上显示当前的功能为功能二;当弹起SW2时,报警器关闭,对应的指示灯D2也熄灭。
仿真图如图5.2所示。
图5.2功能二仿真图
5.2结果分析
整个实现用开关SW1和SW2进行发声的控制,包括频率的改变和报警信号的有无,具体如下:
功能一:
SW1控制1Khz和500Hz的信号交替发声
当开关SW1闭合时响报警信号,可听到声音一高一低如警车般的报警音,并且对应的发光二极管D1会发绿光,液晶会显示当前功能为功能一。
当开关SW1断开时告警信号停止,报警音消失,对应的D1也熄灭。
其实一高一低的声音是频率为1Khz和500Hz的信号交替发声。
开关SW1控制信号的有无,即是否报警。
功能二:
SW2控制1Khz信号发声
当开关SW2闭合时,只听到声音较高的报警音,对应的发光二极管D2发红光,液晶显示当前为功能二。
此声音即是1KHz的信号。
当开关SW2断开时告警信号停止,报警音消失。
6.心得体会
本次课程设计用Proteus软件仿真及keilUV4软件来实现报警信号的检测与告警提示。
通过这次设计,掌握了简单报警器的工作原理及工作过程,学会了使用Proteus软件来在单片机中加载入程序,并学会通过keilUV4软件来检验编写的程序的正确性,对以后的学习和工作都起到了一定的作用,加强了动手能力和专业技能。
在实习的过程中检验了以前学的系统知识的掌握度,使我更加熟悉汇编和C语言的编写。
设计是我们将来必需的技能。
这次设计恰恰给我们提供了一个应用自己所学知识的机会,在学习如何设计电路的过程中培养了我的设计思维,增加了实际操作能力。
参考文献
[1]李全利,迟荣强.单片机原理及接口技术.北京:
高等教育出版社,2005
[2]孙燕莲,韩巍,文福安.构建仿真实验系统关键技术的研究.实验技术与管理,2005
[3]刘南平,检测镀锌量分析仪的研制.津师范大学学报,2004
[4]马正强,单片机虚拟实验室的建立,单片机与嵌人式系统应用.2005
[5]代启化,基于Ptoteus的电路设计与仿真.自动化技术,2006
[7]夏继强,沈德金.单片机实验与实践教程.北京:
北京航空航天大学出版社,2001
[8]Machines,computations,anduniversality.MCU2004.Russia:
SaintPetersburg.
2004
[9]王洪建.AT89C2051在小区防盗报警系统中的应用.第七届青年学术会议论文集,2005
附件1:
汇编程序
FLAGBIT00H
ORG00H
X:
JBP3.2,Y
START:
JBP1.7,START;JNBFLAG,NEXT
MOVR2,#200
DV:
CPLP1.0
LCALLDELY500;LCALLDELY500
DJNZR2,DV
CPLFLAG
JBP3.2,START
NEXT:
MOVR2,#200
DV1:
CPLP1.0
LCALLDELY500
DJNZR2,DV1
CPLFLAG
SJMPSTART
DELY500:
MOVR7,#250
LOOP:
NOP
DJNZR7,LOOP
RET
Y:
SJMP$
END
附件2:
C程序
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitBEEP=P1^0;//P1.0口控制蜂鸣器
sbitLED1=P1^1;//指示当前SW1按下,实现功能一
sbitLED2=P1^2;//指示当前SW1按下,实现功能二
sbitSW=P1^3;//控制功能一二转换
sbitSW1=P1^7;//P1.7控制报警信号的有无
sbitSW2=P3^2;//外部中断控制报警信号
sbitLCD_RS=P2^0;//读写选择端
sbitLCD_RW=P2^1;//数据/命令选择端
sbitLCD_EN=P2^2;//使能端
ucharcount;
ucharcodedis1[]={"GongNeng1(SW1)"};
ucharcodedis2[]={"GongNeng2(SW2)"};
/***************************************
延时函数
****************************************/
/*延时500us程序,控制频率*/
voiddelay500(void)
{
unsignedchari;
for(i=250;i>0;i--)
{
_nop_();//空指令时间为1us
}
}
/*延时程序,控制显示*/
voiddelay(intms)
{
inti;
while(ms--)
for(i=0;i<250;i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
/******************************************
检查LCD忙状态
lcd_busy为1时,忙,等待。
为0时,闲,可写指令与数据。
*****************************************/
bitlcd_busy()
{
bitresult;
LCD_RS=0;
LCD_RW=1;
LCD_EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
result=(bit)(P0&0x80);
LCD_EN=0;
returnresult;
}
/**************************************
写指令数据到LCD
RS=L,RW=L,E=高脉冲,D0-D7=指令码。
************************************/
voidlcd_wcmd(ucharcmd)
{
while(lcd_busy());
LCD_RS=0;
LCD_RW=0;
LCD_EN=0;
_nop_();
_nop_();
P0=cmd;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=0;
}
/****************************************
写显示数据到LCD
RS=H,RW=L,E=高脉冲,D0-D7=数据。
***************************************/
voidlcd_wdat(uchardat)
{
while(lcd_busy());
LCD_RS=1;
LCD_RW=0;
LCD_EN=0;
P0=dat;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=1;
_nop_();
_nop_();
_nop_();
_nop_();
LCD_EN=0;
}
/**************************************
设定显示位置
***************************************/
voidlcd_pos(ucharpos)
{
lcd_wcmd(pos|0x80);//数据指针=80+地址变量
}
/*************************************
LCD初始化设定
**************************************/
voidlcd_init()
{
delay(15);//等待LCD电源稳定
lcd_wcmd(0x38);//16*2显示,5*7点阵,8位数据
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x38);
delay(5);
lcd_wcmd(0x0c);//显示开,关光标
delay(5);
lcd_wcmd(0x06);//移动光标
delay(5);
lcd_wcmd(0x01);//清除LCD的显示内容
delay(5);
}
/***************************************
清屏子程序
***************************************/
voidlcd_clr()
{
lcd_wcmd(0x01);//清除LCD的显示内容
delay(5);
}
/***************************************
主函数,控制报警信号
****************************************/
voidmain(void)
{
uchari;
delay(10);
lcd_init();//初始化LCD
lcd_clr();
while
(1)
{
//******程序1-SW1控制:
开关SW1合上,报警器响1KHz和500Hz交换*******
if(SW==1)
{
//显示SW1报警信息
lcd_pos(0x00);//设置显示位置为第一行第1列
i=0;
while(dis1[i]!
='\0')
{//显示字符"GongNeng1(SW1)"
lcd_wdat(dis1[i]);
i++;
}
lcd_pos(0x40);//设置显示位置为第二行第1列
i=0;
for(