基于STC89C51单片机的烟雾报警器设计(煤气火灾检测报警)(含文档、源码与proteus仿真,以及系统详细介绍)

本篇文章论述的是基于STC89C51单片机的烟雾报警器设计的详情介绍,如果对您有帮助的话,还请关注一下哦,如果有资源方面的需要可以联系我。

目录

摘要

原理图

实物图

仿真图

元件清单

代码

系统论文

资源下载


摘要

随着现代家庭用火、用电量的增加,家庭火灾发生的频率越来越高。烟雾报警器也随之被广泛应用于各种场合。

本课题所研究的无线多功能火灾报警器采用STC89C51为核心控制器,利用气体传感器MQ-2、ADC0809模数转换器等实现基本功能。通过这些传感器和芯片,当环境中烟雾浓度或可燃气体浓度等发生变化时系统会发出相应的灯光报警信号和声音报警信号,以此来实现烟雾报警,当烟雾达到一定的范围时,系统还可以驱动继电器工作,继电器可以驱动负载,如换气风扇、报警信号灯、消火栓水龙头开关等。实现智能报警控制。

关键词:气体传感器MQ-2;火灾报警;单片机;智能控制

原理图


实物图


仿真图


元件清单(部分)


代码


//程序头函数
#include <reg52.h>
//显示函数
#include <display.h>

//宏定义
#define uint unsigned int 
#define uchar unsigned char
#define Data_ADC0809 P1
 
//管脚声明
sbit LED_R= P2^2;	//COled
sbit LED_Y= P2^0;
sbit FENG = P2^5;	//蜂鸣器
sbit san=P3^4;		//风扇
//ADC0809
sbit ST=P3^3;
sbit EOC=P3^6;
sbit OE=P3^2;
sbit A0=P3^1;		//0809A0地址脚
//按键
sbit Key1=P2^6;		//设置键
sbit Key2=P2^7;		//加键
sbit Key3=P3^7;		//减键

bit bdata flag2,flag7;
uchar set;


//函数声明
extern uchar ADC0809();
extern void Key();
/*
void delay(uint z)
{
	uint i,j;
	for(i=0;i<z;i++)
	for(j=0;j<121;j++);
}
*/

//
uchar MQ2=0,MQ7=0;		//读取传感器数据变量

//指示灯变量

uchar WARNING2=30,WARNING7=20;		//初始上限值

void init()				 //定时器初始化函数
{
	TMOD=0x01;			  //工作方式
 	TL0=0xb0;
 	TH0=0x3c;			 //赋初值
 	EA=1;				 //打开中断总开关
	ET0=1;				//打开中断允许开关
 	TR0=1;				//打开中断定时开关
}

void main()			   //主函数
{
	Init1602();		   //初始化显示函数
	init();			   //初始化定时器
	while(1)		   //进入循环
	{
		A0=0;		   //地址脚=0时,读取MQ2数据				                   
		MQ2=ADC0809();
		A0=1;		   //地址脚=1时,读取MQ7数据
		MQ7=ADC0809();
		if(set==0)	   //不在设置状态时
		Display_1602(MQ2,MQ7,WARNING2,WARNING7); //正常显示数据
		if(set==0)
		{
			if(MQ2<WARNING2)	   //判断数据是否小于报警值
			flag2=0;
			else if(MQ2>WARNING2)
			flag2=1;
			if(MQ7<WARNING7)
			flag7=0;
			else if(MQ7>WARNING7)
			flag7=1;			
		}
		else
		{
			flag2=0;flag7=0;
		}
		Key();						 //扫描按键函数
	}
}
//ADC0809读取信息
uchar ADC0809()
{
	uchar temp_=0x00;
	OE=0;	//初始化高阻太
	ST=0;	//转化初始化
	ST=1;	//开始转换
	ST=0;
	while(EOC==0)	//外部中断等待AD转换结束
	OE=1;	   //读取转换的AD值
	temp_=Data_ADC0809;
	OE=0;
	return temp_;
}

void Key()			  //按键函数
{
	if(Key1==0)		   //设置按键
	{
		while(Key1==0);//按键释放
		FENG=0;		   //打开蜂鸣器
		set++;		   //设置变量加
		flag2=0;
		flag7=0;	   //报警变量清零
		LED_Y=1;
		LED_R=1;	   //关闭LED
		san=1;		   //关闭风扇
		TR0=0;		   //关闭定时器
	}
	if(set==1)		   //设置报警值
	{
		write_com(0x38);//屏幕初始化
		write_com(0x80+0x40+6);//位置
   		write_com(0x0f);//打开显示 无光标 光标闪烁
   		write_com(0x06);//当读或写一个字符是指针后一一位
		FENG=1;

	}
	if(set==2)
	{
		write_com(0x38);//屏幕初始化
		write_com(0x80+0x40+15);//位置
   		write_com(0x0f);//打开显示 无光标 光标闪烁
   		write_com(0x06);//当读或写一个字符是指针后一一位
		FENG=1;

	}
	else if(set>=3)		 //设置完
	{
		set=0;			 //清零
		write_com(0x38);//屏幕初始化
		write_com(0x0c);//打开显示 无光标 无光标闪烁
		FENG=1;			//关闭蜂鸣器
		TR0=1;			//打开定时器
	}
	if(Key2==0&&set==1)	//加按键按下
	{
		while(Key2==0);		//按键释放
		FENG=0;				//打开蜂鸣器,做按键音
		WARNING2++;						//报警值加
		if(WARNING2>=255)				//报警值加到最大
		WARNING2=0;						//报警值清零
		write_com(0x80+0x40+4);			//选中位置显示报警值
		write_data('0'+WARNING2/100);	//将报警值拆开成单独的一位,显示。例如报警值是123,那么123除以100的商是1,这里显示的就是1
		write_data('0'+WARNING2/10%10);	//123除以10得到的商是12,,12除以10的余数就是2,这里显示的就是2
		write_data('0'+WARNING2%10);	//123除以10的余数是3,这里显示的就是3,数据+“0”是为了得到液晶中对应数字的显示码
		write_com(0x80+0x40+6);			//闪烁的位置
		FENG=1;							//关闭蜂鸣器
	}
	if(Key2==0&&set==2)					//注释同上
	{
		while(Key2==0);
		FENG=0;
		WARNING7++;
		if(WARNING7>=255)
		WARNING7=0;
		write_com(0x80+0x40+13);
		write_data('0'+WARNING7/100);
		write_data('0'+WARNING7/10%10);
		write_data('0'+WARNING7%10);
		write_com(0x80+0x40+15);//位置
		FENG=1;
	}
	if(Key3==0&&set==1)
	{
		while(Key3==0);
		FENG=0;
		WARNING2--;
		if(WARNING2<=0)
		WARNING2=255;
		write_com(0x80+0x40+4);
		write_data('0'+WARNING2/100);
		write_data('0'+WARNING2/10%10);
		write_data('0'+WARNING2%10);
		write_com(0x80+0x40+6);//位置
		FENG=1;
	}
	if(Key3==0&&set==2)
	{
		while(Key3==0);
		FENG=0;
		WARNING7--;
		if(WARNING7<=0)
		WARNING7=255;
		write_com(0x80+0x40+13);
		write_data('0'+WARNING7/100);
		write_data('0'+WARNING7/10%10);
		write_data('0'+WARNING7%10);
		write_com(0x80+0x40+15);//位置
		FENG=1;
	}
}

系统论文


Abstract

Along with the modern home with fire, electricity consumption increases, the frequency of home fires is getting higher and higher. Smoke detectors have also been widelyused in various occasions.

Wireless multifunctional fire alarm in the paper uses STC89C51 as the core controller,the realization of the basic functions of the gas sensor MQ-2, ADC0809 converter etc..Through these sensors and chips, when environmental smoke concentration or combustible gas concentration changes the system sends out corresponding light alarm signal and the sound alarm signal, in order to achieve smoke alarm, when the smoke reaches a certain range, the system can also drive the relay, the relay can drive a load, such as a ventilation fan, alarm signal lamp, fire hydrant water tap switchetc.. Implementation of intelligent alarm control.

Key words: MQ-2 gas sensor; fire alarm; MCU; intelligent control

1 绪论

1.1 课题的研究背景

火灾作为一种在时空上失去控制的燃烧所引发的灾害,对人类生命财产和社会安全构成了极大的威胁。由此引发的重大安全事故比皆是,所以人类一直也未停止过对它的研究。

火灾早已成为我国常发性和破坏性以及影响力最强的灾害之一。随着经济和城市建设的快速发展,城市高层、地下建筑以及大型综合性建筑日益增多,火灾隐患也大大增加,火灾发生的数量及其造成的损失呈逐年上升趋势。

   在过去的很长一段时间,人类不得不进行专题研究火灾过程中爆发,截至目前,已形成一个较为成熟的概念。火灾的发生和发展过程是一个复杂的物理和化学过程,但也与环境很强的相关性。正常情况下,发生火警,伴随着烟雾,温度,光照,信号产生的过程。产生不同的环境和不同的火燃烧成分,烟雾粒度组成,温度分布和光谱的气体成分是不同的,所以火过程中涉及多个物理和化学参数,特点是强大的,一般的骚乱有着本质的不同。基于上述特点,早起的火灾探测技术应运而生,特别是多的火灾探测技术被广泛采用在火灾探测领域,如复合材料的物理参数复合烟气温度探测器,使用不同的带光传感器的复合双波段火焰探测器。

    在我国,随着经济的发展和生活水平的提高,工业与民用建设日趋增多,火灾发生的可能性也随之大幅提高。另外,现代建筑物中塑料制品和玻璃的大量应用使火场内外部的求援行为困难重重。现代建筑,尤其是在大型酒店,宾馆,商场,图书馆,博物馆,档案馆和办公楼及其他公共场所,对于火灾报警系统也提出了更高的要求。一旦发生火灾将很难及时救助,势必要给国家和个人带来不可估量的损失。 

基于上述情况,火灾自动报警技术便应运而生,火灾自动报警系统是始终警惕火灾报警和输出联动忠实的哨兵火灾信号的有力手段,是一种早期预警。

1.2 课题的研究目的与意义

目的:随着现代家庭用火,用电增加,家庭火灾发生的频率越来越高。家庭火灾,很容易扑灭不及时,有着缺乏消防设备和在场的人战斗惊慌失措逃离缓慢的不利因素,最终导致的生命和财产的重大损失。消防部门的统计数据显示,所有的火灾比例中,家庭火灾占全国火灾的30%。家庭火灾的原因是多方面的,可能把我们的注意力,也可能隐藏在我们没有注意到的地方。

综上所述,许多人因不懂家庭安全常识引起火灾事故,使好端端的幸福家庭眼间毁于一旦,有的导致家破人亡,而且一旦发生居民家庭火灾,处置不当、报警迟缓,是造成人员伤亡的重要因素。所以说,人们应该积极了解家庭火灾的主要起因,还有预防火灾的发生。这就是我们研究声光报警器的目的。

意义:在中国的一些大、中型城市,几乎每一天发生家庭火灾,所以每一个家庭必须始终关注防火。如果能根据你家的实际情况,提前采取简单的防火措施,有些悲剧是完全可以避免的。声音和视觉的报警,对减少火灾损失具有现实意义。

 一系列悲剧性的损失,由国家从社会各界意识到,声光报警对火灾的报警的必要性。据调查,在最近的火灾大部分的房子里还没有安装报警器。因此声光报警,对发生火灾预防具有重要意义。

1.3 火灾报警器的发展与现状

近年来,无线火灾报警系统在国外已被开发,并走向实用。起初,无线火灾报警系统不仅是价格贵,还必须连接布线,这是只适合一些特殊的地方,检测设备的一部分。今天,几乎所有的电气装置,可以通过无线遥控改变,可广泛应用于各类建筑和场所。美国松柏公司(ITI)成立于1981年,是美国最大的无线报警系统制造商制造,其产品占90%的无线报警器在北美市场的年销售额已接近一亿美元。该公司生产的无线火灾报警系统还通过了中国的“国家消防电子产品质量监督检验测试中心”的监测,该系统可作为火灾报警系统,但也可作为一个安全的系统,两者的结合,是一个高科技的无线安全系统。

    火灾报警系统在中国相对较晚,与发达国家相比, 20世纪70年代末的十年间,中国开始研制生产的火灾报警系统。 20世纪80年代后,国内各大厂商也大多是模仿国外产品,或引进国外技术生产的,没有真正意义上的核心技术,市场刚刚开始发展。真正的火灾报警产品的发展也促进了市场的成熟,政府逐步开放的大门,在同一时间,外国公司开始进入中国的防火市场,带来先进的技术在20世纪90年代。此期间,中国生产的火灾报警产品的企业也得到了快速发展,在一些企业中,技术合作,合资生产,并取得了不菲的成绩,但今天在市场上创造了许多强大的企业,有些技术已接近或赶上国际标准。

1.4课题的研究内容

烟雾报警器,主要检测可燃气体和烟雾,再通过单片机控制相应的报警和驱动负载。通过液晶显示当前的烟雾值,通过按键设定相应的阀值。

该项目主要是为了完成任务,包括:

⑴硬件部分:包括传感器的选择,显示模块的选择,烟雾信号转换电路的设计,报警驱动电路的设计。

(2)软件部分:包括微处理器控制程序的编制和原理图的绘制。

(3)系统的综合调试与分析:在软硬件完成以后,要对系统进行综合的测试与实验,分析系统的可靠性与实用性,调整系统的不足。

2 火灾报警器的总体方案设计

本课题主要是实现烟雾报警和火灾发生时的报警及控制,下面分别对系统功能要求、系统技术要求及系统实现方案总体阐述。

2.1系统的功能要求

本系统的研制主要包括以下几项功能:

(1)火情探测功能:为了提高火灾报警的准确性和及时性,火灾报警系统需要使用各种方法进行火灾探测。在实际使用中,根据不同的防火场所,用户可以选用温度探测法、可燃气体检测法及烟雾探测法等合适的火灾探测方法,来有效的探测火灾;

(2)灯光报警功能:当室内烟雾浓度过大、有火情产生、故障等异常情况发生时,报警器要进行灯光报警。当烟雾超过最大设定值时,可以驱动火灾控制负载工作。

2.2 系统的技术要求

在了解这个系统的工作原理以及功能之后,我们就可以基本确定系统的技术要求。系统采用的单片机处理器成本都比较低,可以满足批量生产和各类工程的需求。对于完整的一个系统而言,为提高市场的竞争力,这个系统应符合体积小、功耗低、数传性能可靠和成本低廉等技术要求。具体指标和参数如下:

(1)体积小:探测器的体积要尽可能的小,这样占用的空间才能减少,使用和更换才会方便;

(2)功耗低:系统可以采用三节5号干电池供电或5v电源供电。

(3)可靠性高:由于不确定的电磁干扰可能存在在系统工作环境中,为了保证系统长时间的可靠工作,以及减少误报次数,所以选择多指示灯,指示不同的状态。

2.3 系统的组成及方案设计

本设计主要由烟雾探测传感器电路、单片机、灯光报警电路、负载驱动电路、控制程序和编解码程序等组成。

系统的组成结构如下:

图2.1

致谢

这次毕业设计得到了很多人的帮助,其中**老师对我的关心和支持尤为重要,每次遇到难题,我首先想到的就是向金老师寻求帮助。另外,他严谨的作风使我的论文即使在谨小细微处也给予了纠正,让我的论文无论是结构还是内容变得更加公整、紧凑,感谢金老师对我的悉心指导。

感谢校方给予我这样一次机会,能够独立地完成这样一个设计作为检验这些年来学习的成果,在这个过程当中,学校给予我们各种方便,使我们在即将离校的最后一段时间里,能够更多学习一些实践应用知识,增强了我们实践操作和动手应用能力,提高了独立思考的能力。再一次对我的母校表示感谢。

感谢在整个毕业设计期间和我密切合作的同学,和曾经在各个方面给予过我帮助的伙伴们,正是因为有了你们的帮助,才让我不仅学到了本次课题所涉及的新知识,更让我感觉到了知识以外的东西,那就是团结的力量。


资源下载


如果有需要这个系统的源码、仿真、论文等资源的可以私信我。感谢你的阅读~

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 16:36:06       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 16:36:06       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 16:36:06       57 阅读
  4. Python语言-面向对象

    2024-07-18 16:36:06       68 阅读

热门阅读

  1. 使用Dockerfile构建镜像

    2024-07-18 16:36:06       20 阅读
  2. python开发基础——day14 模块与包

    2024-07-18 16:36:06       23 阅读
  3. 【国内当前可用pip&conda源刷新】

    2024-07-18 16:36:06       19 阅读
  4. 解决浏览器缓存导致获取不到最新前端代码问题

    2024-07-18 16:36:06       21 阅读
  5. 6Python的Pandas:数据读取与输出

    2024-07-18 16:36:06       22 阅读
  6. linux修改时区为CST

    2024-07-18 16:36:06       17 阅读
  7. 请求通过Spring Cloud Gateway 503

    2024-07-18 16:36:06       18 阅读
  8. 使用小皮面版的Nginx服务搭建本地服务器

    2024-07-18 16:36:06       21 阅读
  9. Jenkins 安装、部署与配置

    2024-07-18 16:36:06       23 阅读
  10. Nginx:502 Bad Gateway 错误的原因及解决方法

    2024-07-18 16:36:06       18 阅读
  11. Web开发-LinuxGit基础5-本地-分支

    2024-07-18 16:36:06       20 阅读
  12. 交易-软件科技股F4(kafka、NET、snow、MongoDB)

    2024-07-18 16:36:06       20 阅读
  13. 关于Hadoop生态系统一部分的Catalog

    2024-07-18 16:36:06       24 阅读
  14. 高内聚,低耦合的解释及实例【包学包会】

    2024-07-18 16:36:06       20 阅读
  15. 网页制作技术:概念、现状与展望?

    2024-07-18 16:36:06       20 阅读