完整word版基于单片机的智能火灾报警系统1.docx
《完整word版基于单片机的智能火灾报警系统1.docx》由会员分享,可在线阅读,更多相关《完整word版基于单片机的智能火灾报警系统1.docx(20页珍藏版)》请在冰豆网上搜索。
![完整word版基于单片机的智能火灾报警系统1.docx](https://file1.bdocx.com/fileroot1/2023-8/18/00fb1d62-1245-439d-b6cb-0063c0948201/00fb1d62-1245-439d-b6cb-0063c09482011.gif)
完整word版基于单片机的智能火灾报警系统1
《单片机原理与应用》课程设计
毕业设计(论文)
题目煤气检漏仪的设计与实现
姓名黎梓浩
学号11
专业班级本电气自动化126
所在学院电气工程系
指导教师(职称)张雨沐
1系统方案设计
1.1系统总体规划
煤气探测器通过物理、化学现象——气(燃烧气体)、烟(烟雾粒子)、热(温度)的探测,将探测到的火情信号转化成火警电信号传递给煤气报警控制器。
煤气报警器将在接收到火警信号后经分析处理同时发出声和光的报警信号,并在屏幕上显示出烟雾浓度的级别和温度值,同时对应的发光二级管亮起。
当系统检测到危险信号时,系统自动启动自救工作,减轻火灾带来的危害。
此外,用户可以通过功能设置键进行报警限值的设置,也可以通过此方法取消当前报警。
整体电路的框图如图2-1所示。
图2-1系统原理及组成框图
1.2单片机内部结构及接口描述
AT89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
AT89C52引脚图如图2-2所示。
图2-2AT89C52引脚图
VCC:
电源
GND:
地
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写如“1”时,引脚用作于高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
引脚号的第二功能:
P1.0:
T2(用于定时器/计数器T2的外部计数输入),时钟输出。
P1.1:
T2EX(用于定时器/计数器T2的捕捉/重载触发信号和方向控制)。
P1.5:
MOSI(用于系统编程)。
P1.6:
MISO(用于系统编程)。
P1.7:
SCK(用于系统编程)。
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。
在应用中,P2口使用很强的内部上发送1。
在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。
在Flash校验时,P2口也接收高8位地址字节和一些控制信号.
1.3主要元件的选型
1.3.1AT89C52单片机
在煤气检漏仪的设计中,单片机是其核心部件。
它一方面要接收来自传感器送来的温度、烟雾对应的两种模拟信号分别进行处理,以控制后续电路进行相应动作;与此同时查询是否有键按下的请求。
在单片机完成这些工作的过程中,尤其是信号处理中,比较浓度值后送入显示的软件实现比较复杂,要求单片机具备较快的运算速度,使检测人员能够较准确地观测到烟雾浓度,并根据情况进行相应的处理。
并且也要考虑选择低价实用的机型,并为研制同一系列的低功耗产品做准备。
根据多方面的比较,本设计选用ATMEL公司的AT89C52单片机作为控制器。
AT89C52片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。
可以在4V到5.5V宽电压范围内正常工作。
不断发展的半导体工艺也让该单片机的功耗不断降低。
根据本次设计的具体情况,采用双列直插DIP-40封装。
AT89S52的实物图如图2-3所示。
图2-3DIP-40封装AT89C52实物图
1.3.2集成温度传感器DS18B20
DS18B20有三只引脚:
VCC、DQ和VDD。
采用了外部供电的链接方式,而总线必须链接上拉电阻,线总线在空置状态时,都是一直处于高电平。
DS18B20的内部有64位的ROM单元和9字节的暂存器单元,64位ROM包含了DS18B20唯一的序列号。
原理图如图2-4。
图2-4DS18B20原理图
DS18B20内部结构
DS18B20内部结构主要由4部分组成:
64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL,配置寄存器。
DS18B20的管脚排列如图2-5所示。
图2-5DS18B20的管脚排列
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:
用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
表2-2转换后得到的12位数据
表2-2是12位转化后得到的12位数据,存储在18B20的2个8bit的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0℃,则这5位为0,只要将测到的数值乘于0.0625即可得到实际温度,如果温度小于0℃,则这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。
1.3.3气体传感器MQ-2
本设计中采用的MQ-2型烟雾传感器属于二氧化锡半导体气敏材料,属于表面离子式N型半导体。
当与烟雾接触时,如果晶粒间界处的势垒受到该烟雾的调制而变化,就会引起表而电导率的变化。
利用这一点就可以获得这种烟雾存在的信息。
例如遇到可燃气体(如CH4等)时,原来吸附的氧脱附,而由可燃烟雾以正离子状态吸附在二氧化锡半导体表面;氧脱附放出电子,烟雾以正离子状态吸附也要放出电子,从而使二氧化锡半导体导带电子密度增加,电阻值下降。
而当空气中没有烟雾时,二氧化锡半导体又会自动恢复氧的负离子吸附,使电阻值升高到初始状态。
这就是MQ-2型燃性烟雾传感器检测可燃烟雾的基本原理。
图2-6MQ-气体传感器结构和外形
MQ-2气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。
当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。
使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。
这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。
结构和外形如图2-6所示,封装好的气敏元件有6只针状管脚,其中4个用于信号取出2个用于提供加热电流。
1.3.4模数转换芯片ADC0832
ADC0832是美国国家半导体公司生产的一种8位分辨率A/D转换芯片,可以适应一般的模拟量转换要求。
其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。
芯片转换时间仅为32μS,有双数据输出可作为数据校验,转换速度快且稳定性能好。
通过DI数据输入端,可以轻易的实现通道功能的选择。
其引脚如图2-8所示。
图2-8ADC0832引脚图
正常情况下ADC0832与单片机的接口应为4条数据线:
CS、CLK、DO、DI。
由于DO端与DI端在通信时未同时有效并与单片机的接口是双向的,所以电路设计时可将DO和DI并在一根数据线上使用。
当CS输入端应为高电平时芯片禁用,CLK和DO/DI的电平可任意。
当进行A/D转换时,CS使能端应置于低电平并且保持到转换结束。
芯片开始转换工作时,由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。
第1个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。
第2、3个脉冲下沉之前DI端输入2位数据用于选择通道功能,其功能表如表2-4所示。
表2-4ADC0832功能表
MUXAddress
Channel#
SGL/
ODD/SIGN
0
1
0
0
+
-
0
1
-
+
2系统硬件设计
2.1AT89S52复位电路
复位是使单片机或系统恢复某种确定的初始状态。
单片机就是从复位开始工作的。
开机瞬间RST引脚获得高电平,随着电容C1的充电,引脚的高电平将逐渐下降。
若RST引脚的高电平保持2个机器周期,单片机就复位,持续保持则循环复位。
复位操作有两种基本形式:
一种是上电复位,另一种是上电与按键均有效的复位,本设计使用的是上电复位方式,上电复位电路图如图3-1所示。
图3-1单片机的复位电路
2.2温度传感器电路
DS18B20可以使用外部电源VDD,也可以使用内部的寄生电源。
当VDD端口接3.0V—5.5V的电压时是使用外部电源;当VDD端口接地时使用了内部的寄生电源。
无论是内部寄生电源还是外部供电,I/O口线要接6.8KΩ左右的上拉电阻。
本设计采用的是外部电源供电方式,连接图如图3-2所示。
图3-2温度采集电路
DS18B20的外部电源供电方式在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题,可以保证转换精度。
在外部供电的方式下应注意GND引脚不能悬空,否则不能转温度,读取的温度总是85℃。
2.3MQ-2烟雾感器电路
本设计烟雾传感器采用MQ-2,在可燃气体或烟雾中MQ-2烟雾传感器的电阻会有相应的变化,测量电极和加热器构成的敏感元件固定在塑料或不锈钢制成的腔体内,加热器为气敏元件提供了必要的工作条件。
气敏元件共有6只针状管脚,其中4个用于信号取出,2个用于提供加热电流。
直流电压直接供传感器MQ-2的加热丝H-H工作,H两端接到电源的两端起预热的作用,检测烟雾之前要加热丝给传感器MQ-2预热一定时间。
当采集到电压后经过AD模数转换器将模拟量转换为数字量。
经过校准就可以得到准确的烟雾或者可燃气体的浓度。
这种传感器具有轻微的极性,在满足传感器电性能要求的前提下,为更好利用传感器的性能,还需要通过滑动变阻器的调节与校准,才能得到精确的烟雾信号。
其电路图如图3-3所示。
图3-3MQ-2基本电路
2.4A/D转换ADC0832电路
A/D转换电路在本设计中采用的是数模转换常用芯片ADC0832,烟雾传感器的输出端接到ADC0832的CH0。
经烟雾传感器MQ-2所检测的电压信号为模拟信号,无法直接被单片机所识别,所以在经过放大电路后对信号进行A/D装换,将模拟信号转化为数字信号输入单片机。
ADC0832电路图如图3-4所示。
图3-4A/D转换电路
2.5报警器电路
由AT89S52实现声音报警控制。
蜂鸣器为无源蜂鸣器,低电平时发出声音,当室内可燃性气体浓度、烟雾浓度或温度超过设定的限定值时,单片机将P3.7置为低电平,三极管导通,扬声器发出蜂鸣报警,直到有工作人员将电路断开,或烟雾、温度降到限值以下。
蜂鸣器负极接地,正极接三极管输出,其电路原理图如图3-5所示。
图3-5声音报警电路
2.6七段数码管显示电路
数据采集进来并被成功地由模拟量转化为数字量后,就被传送到系统的显示模块,让人们更直接地观察到相关数据。
在本系统中,对LED进行的是动态扫描,除了给显示器提供段的输入之外,还要对显示器进行位控制。
显示器的第一位显示烟雾浓度级别,而后两位则显示当前实际温度,中间显示“-”将温度和烟雾分开。
本系统显示用的4位七段共阳数码管由数码管专用数码驱动芯片74HC245驱动,P2为数据段码输出口,P2.0至P2.7分别接驱动芯片74HC245的A0至A7,74HC245的B0至B7分别接数码管的a、b、c、d、e、f、g、dp,P0.0、P0.1、P0.2、P0.3引脚用作位选,分别控制4位数码管的亮灭。
数码管的位选引脚接上拉电阻为共阳,可以由位选引脚输出高低电平经过74HC07驱动器控制数码管亮灭。
七段数码管电路图如图3-7所示。
图3-7数码管显示电路图
2.7状态指示灯、控制键电路
状态指示灯控制电路如图3-8所示,单片机AT89S52引脚的P1.5、P1.7控制输出的状态指示灯。
绿灯亮表示室内环境处于正常状态,环境中没有火灾危险。
红灯表示温度超过了设定的报警限值。
若同时亮,说明温度和烟雾都超过了设定的报警限值,即可能会发生火灾,提醒用户尽快采取相应措施。
图3-8状态指示灯电路
控制键电路采用独立式按键设计。
4个按键分别接单片机的P1.0、P1.1、P1.2、P1.3,单片机的P1口接上拉电阻。
单片机扫描是否有按键闭合,如有键闭合,则判断键号并转入相应的键处理。
功能控制键电路如图3-9所示,4个键定义如下:
P1.0:
手动报警键,按此键可以手动启动报警功能。
P1.1:
限值设置键,按此键则可以进入报警值的设定。
P1.2:
限值减键,按此键当前设定项报警限值逐减。
P1.3:
限值加键,按此键当前设定项报警限值逐加。
3系统软件设计
3.1主函数的程序
煤气检漏仪主程序流程图如图4-1所示。
图4-1主程序流程图
系统启动后首先进行初始化,然后开启中断,在中断中对数据进行及时采集,并且在中断中将检测值与报警限设定值相比较,判断是否要报警。
然后进入主程序的死循环中,不断循环执行四项功能:
显示数据、判断是否手动报警、判断是否要设定报警值、判断是否需要显示精确值。
而数据采集于报警判断则在定时中断中执行,在主函数中显示的数据是烟雾的级别与整数位温度值。
主函数程序如下:
voidmain()
{
sysrest();//系统初始化
while
(1)
{
xianshi();//显示温度和烟雾数据
if(SD==0)sdong();//检查是否启动手动报警
if(SET==0)czhi();//检查是否启动设置报警值
if(Jia==0||Jian==0)jingque();//是否显示精确值
}
}
3.2中断服务的程序
系统设定定时器工作方式后开启系统中断,以便响应中断定时,及时对室内烟雾浓度和温度进行采样,并及时判断是否超过设定的限值。
系统初始化成功后便开始接受中断申请,定时中断间隔时间为65乘以16毫秒即约1秒左右对烟雾数据和温度数据进行一次采样,然后把数据送入主程序的显示函数中等待中断退出然后显示。
中断中同时判断是否需要报警进行判断,能即使报警。
因此本设计对数据有良好的时效性,不会因主程序的运行而影响对数据的处理。
中断服务程序如下:
voidtimer0(void)interrupt1
{
TR0=0;
is++;
if(is==16){datadisp(dat0=adc0832(CH),ReadTemperature());is=0;}
Baoj();
TH0=-(Time)/256;//
TL0=-(Time)%256;//
TR0=1;
}
3.3数据处理的程序
由于烟雾数据采集、AD转换后得到的是烟雾浓度,设计中要求数码管中显示的是烟雾浓度的级别,所以对数据采集后,还要对烟雾浓度数据对烟雾浓度进行分等级。
烟雾等级数据放在disdata[0]中,由主函数里的xianshi()函数调用。
本设计中将烟雾浓度等级分为6个级别:
F0、F1、F2、F3、F4、F5,各个级别对应烟雾浓度值如下:
F0:
烟雾浓度小于等于5;
F1:
烟雾浓度小于等于20;
F2:
烟雾浓度小于等于40;
F3:
烟雾浓度小于等于80;
F4:
烟雾浓度小于等于120;
F5:
烟雾浓度大于120;
温度数据采集并数据转换后直接存放在disdata[2]和disdata[3]中,disdata[2]存放的是温度的十位数,disdata[3]则存放的是温度的个位数。
temp是用于判断是否报警用的。
数据处理程序如下:
voiddatadisp(uinty,uintt)//数据处理
{
ywu=(y%10000)/1000*1000+(y%1000)/100*100+(y%100)/10*10+y%10;
{
if(ywu>=0)disdata[0]=0;
if(ywu>5)disdata[0]=1;
if(ywu>20)disdata[0]=2;
if(ywu>40)disdata[0]=3;
if(ywu>80)disdata[0]=4;
if(ywu>120)disdata[0]=5;
}
temp0=t;
{
disdata[2]=(t%1000)/100;
disdata[3]=(t%100)/10;
}
temp=disdata[2]*10+disdata[3];
}
3.4数据显示的程序
为了将烟雾级别与温度数据在数码管中分开,设计中把烟雾级别现在是第一个数码管,第二个数码管显示“-”将其分开,第三四个数码管分别显示温度的个位十位。
这样对数据的实际情况一目了然。
数据显示子程序如下:
voidxianshi()//将disdata[]里的温度数据在数码管上显示
{
intkey=0;
if(pbi>=0){show();pbi--;}else
for(;key<=3;key++)//
{
Disdata=~(led_mod[11]);
P1=~led_com[key];//取反可变成共阴数码管显示
Disdata=~(led_mod[disdata[key]]);//取反可变成共阴数码管显示
Delay(200);
}
}
3.6报警值设置的程序
系统初始化后,用户可以根据自己修要对报警值进行设置,温度的设置值为整数,设置的是温度的实际值。
烟雾的设置是对烟雾浓度的级别进行设置。
烟雾浓度分为6个级别(0~5),P0^1为设置键,当检测到启动设置报警值按键被按下时,则系统进入设置程序。
P0^2、P0^3对应减和加。
“设置”键处于按下状态时,显示当前所设置的烟雾级别与温度报警值,释放后则默认进入烟雾报警级别设置,数码管只显示当前烟雾级别。
再次按下设置按键时则进入温度报警值设置,数码管只显示当前设定温度。
按“加”和“减”键进行报警值的递增、递减设置,长按设置按键表示确认设置并退出,若用户在进入设置状态持续6秒没有动作,系统则自动退出到正常状态。
报警值设置程序流程图如图4-3所示。
图4-3报警值设置程序流程图
系统自动报警子程序如下:
voidczhi(void)//
{
js=1000;ys=js;ts=js;//js=60为一秒
while(SET==0)show();
while((ys>0)&&(ts>0))//设置温度报警值
{
shezhi[1]=11;shezhi[2]=11;shezhi[3]=11;//温度的设定值不亮
while(ys>0)
{
while(SET==0)show();
ys=js;show();
while(Jian==0){if(yuxian==0)break;show();yuxian--;delayt(300);shezhi[0]=yuxian;}
while(Jia==0){if(yuxian==9)break;show();yuxian++;delayt(300);shezhi[0]=yuxian;}
while(SET!
=0&&Jia!
=0&&Jian!
=0){show();ys--;if(ys<=0){ys=0;ts=0;break;}}
if(SET==0){ys=0;ts=js;delayt(250);if(SET==0){ys=0;ts=0;}}
}
restzhi();shezhi[0]=11;shezhi[1]=11;//烟雾的设定值不亮
while(ts>0)
{
ts=js;show();
while(Jian==0){if(tuxian==0)break;show();tuxian--;delayt(300);shezhi[2]=tuxian/10;shezhi[3]=tuxian/1-tuxian/10*10;}
while(Jia==0){if(tuxian==99)break;show();tuxian++;delayt(300);shezhi[2]=tuxian/10;shezhi[3]=tuxian/1-tuxian/10*10;}
while(SET!
=0&&Jia!
=0&&Jian!
=0){show();ts--;if(ts<=0){ts=0;ys=0;break;}}
if(SET==0){ts=0;ys=js;delayt(250);if(SET==0){ys=0;ts=0;}}
}
ts=js;restzhi();//重载设定值
}
while(SET==0)show();
}
5总结与展望
煤气检漏仪可保障生产与生活的安全,避免火灾和爆炸事故以及煤气中毒的发生,降低风险,是防火和安全生产所必备的安全仪器。
本论文是在对烟雾、温度传感器和报警技术进行深入研究的基础上,通过比较,最后合理地确定系统的设计方案,并对仪器的整体设计和各个组成部分进行了详细的分析和详细设计。
整个系统最终实现了预期的目标。
本系统通过设计一个以AT89S52单片机为核心的火灾报警器可以实现声光报警、浓度显示、报警限设置、精确数据显示等功能。
是一种结构简单、性能稳定以及使用方便的智能化的火灾报警器。
本报警器的电路结构设计的很简单,易于维护。
由于实现了对普通环境中烟雾浓度和温度的实时监控,能广泛应用于居民家庭、企事业单位等多方面的安全防范。
参考文献
[1]杨素行.模拟电子技术基础简明教程(第三版)[M].北京:
高等教育出版社,2005.
[2]邹其洪,黄智伟,高嵩等.电工电子实验与计算机仿真[M].北京:
电子工业出版社,2005.
[3]朱定华.单片微机原理、汇编与C51及接口技术[M].北京:
清华大学出版社,2010.
附录
附录1检漏仪原理图
附录2检漏仪实物图