基于51单片机的智能火灾报警系统温度烟雾光

wx供重浩:创享日记
对话框发送:火灾报警
获取完整源码源文件+电路图+仿真文件+论文报告等
在这里插入图片描述


功能简介

51单片机+MQ-2烟雾传感+ADC0832模数转换芯片+DS18B20温度传感器+数码管显示+按键模块+声光报警模块

具体功能:
1、实时监测及显示温度值和烟雾浓度;
2、可通过三个按键设置烟雾报警值和温度报警值;
3、可实现手动紧急报警和手动取消报警功能;
4、温度超过阈值时,蜂鸣器响黄灯闪烁;烟雾超过阈值时,蜂鸣器响红灯灯闪烁;
5、测距范围: 烟物浓度:0——9等级;温度范围:0——99度。

在这里插入图片描述


原理图

在这里插入图片描述


PCB图

在这里插入图片描述


仿真图

在这里插入图片描述


软硬件设计框图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其余完整详见下载!


设计背景

智能火灾报警器系统的发展变化很快,新技术的发展进一步拓展了火灾报警系统的应用领域,为一些报警系统无法胜任的环境提供了有效的手段。我国的火灾报警从无到有,从有到现在的智能。火灾报警系统集早期探测、多传感器复合探测和探测器小型化、智能化的方向发展迈出了更快的步伐。

随着技术的创新,单片机早已深入应用到工农业生产各个领域及人们生活应用中。于是,各种类型的单片机也根据社会的需求而开发出来。单片机是器件级计算机系统,实际上它是一个微控制器或微处理器。由于它功能齐全、体积小、成本低,因此它可以应用到任何电子系统中去。同样,它也广泛应用于报警技术领域,使各类报警装置的功能更加完善,可靠性大大提高,以满足社会发展的需要。


硬件设计

智能火灾报警系统的原理是依据当烟雾浓度或温度达到设定值时,烟雾传感器和温度传感器感应到信号由ADC0832进行处理模数转化再到单片机进行处理,喇叭发出报警声音。系统共分为控制电路、检测电路、显示和报警电路。


软件设计

首先,开始执行初始化子程序,初始化实现的功能是I/O口输入、输出状态设定,寄存器初始化,中断功能等。设定定时初值为50ms,利用IAP写入EEPROM,作为取值间隔。然后,设置定时器0,选择方式1。方式1状态下,定时器的工作寄存器TH1、TL1,是全16位参与操作。接下来,定时器0中断的允许位置1,打开定时器0,关闭蜂鸣器,开启绿灯,设置报警初值。部分源码如下。

#include <reg51.h>	         //调用单片机头文件
#define uchar unsigned char  //无符号字符型 宏定义	变量范围0~255
#define uint  unsigned int	 //无符号整型 宏定义	变量范围0~65535
#include <intrins.h>
#include "eeprom52.h"

//数码管段选定义      0     1    2    3    4    5	 6	 7	  8	   9	
uchar code smg_du[]={0x5f,0x44,0x9d,0xd5,0xc6,0xd3,0xdb,0x45,0xdf,0xd7,0x40,0xfd/*-*/};
//数码管位选定义
uchar code smg_we[]={0x7f,0xbf,0xdf,0xef};

uchar dis_smg[8]  = {0xa0,0x84,0x62,0x2a,0x39,0x2c,0x24,0xba};	

sbit CS=P2^3;		//CS定义为P3口的第2位脚,连接ADC0832CS脚  PCB
sbit SCL=P2^0;		//SCL定义为P3口的第3位脚,连接ADC0832SCL脚
sbit DO=P2^1;		//DO定义为P3口的第4位脚,连接ADC0832DO脚

sbit ledy = P1^6;   //温度报警指示灯
sbit ledr = P1^7;   //烟雾报警指示灯 x
sbit dq   = P1^5;	//18b20 IO口的定义
sbit beep = P3^6;   //蜂鸣器IO口定义
uint temperature,s_temp ;  //温度的变量
uchar dengji,s_dengji;     //烟物等级
uchar shoudong;            //手动报警键

bit flag_300ms = 1;
uchar key_can;		 //按键值的变量
uchar menu_1;        //菜单设计的变量

/*************读取18b20内的数据***************/
uchar read_18b20()
{
	uchar i,value;
	for(i=0;i<8;i++)
	{
		dq = 0;			 //把总线拿低读时间隙开始 
		value >>= 1;	 //读数据是低位开始
		dq = 1;			 //释放总线
		if(dq == 1)		 //开始读写数据 
			value |= 0x80;
		delay_uint(5);	 //60us	读一个时间隙最少要保持60us的时间
	}
	return value;		 //返回数据
}

/****************按键处理数码管显示函数***************/
void key_with()
{
	if(key_can == 4) 	 //紧急报警键  手动报警
	{
		if(menu_1 == 0)
			shoudong = 1;
	}
	if(key_can == 1)	 //设置键
	{
		menu_1 ++;
		if(menu_1 >= 3)
		{
			menu_1 = 0;
		}
	}
	if(menu_1 == 0)
	{
		if((key_can == 2) || (key_can == 3))
			shoudong = 0;          //取消手动报警
	}
	if(menu_1 == 1)			//设置高温报警
	{
		if(key_can == 2)
		{
			s_temp ++ ;		//高温报警值加1 
			if(s_temp > 99)
				s_temp = 99;
		}
		if(key_can == 3)
		{
			s_temp -- ;		//高温报警值减1 
			if(s_temp <= 10)
				s_temp = 10 ;
		}
		dis_smg[0] = smg_du[s_temp % 10];	           //取个位显示
		dis_smg[1] = smg_du[s_temp / 10 % 10];  //取十位显示
		dis_smg[2] = 0x80;
		dis_smg[3] = 0x1b;	//显示c
		write_eeprom();			   //保存数据
	}	
	if(menu_1 == 2)			//设置烟物报警
	{
		if(key_can == 2)
		{
			s_dengji ++ ;	  //烟物报警值加1 
			if(s_dengji >= 9)
				s_dengji = 9;
		}
		if(key_can == 3)
		{
			s_dengji --;	  //烟物报警值减1 
			if(s_dengji <= 1)
				s_dengji = 1;
		}
		dis_smg[0] = smg_du[s_dengji % 10];	           //取个位显示
		dis_smg[1] = 0x80 ;  
		dis_smg[2] = 0x80;
		dis_smg[3] = 0xc7;	//显示q
		write_eeprom();			   //保存数据
	}	
}  

/***************主函数*****************/
void main()
{
	beep = 0;				    //开机蜂鸣器叫一声
	delay_1ms(200);
	P0 = P1 = P2 = P3 = 0xff;   //初始化IO口为高电平
	temperature = read_temp();  //读取温度值
	init_eeprom();  //开始初始化保存的数据
	delay_1ms(650);				
	temperature = read_temp();  //读取温度值
	time_init(); //初始化定时器 		
	while(1)  
	{
		key();					//独立按键程序
		if(key_can < 10)
		{
			key_with();			//按键按下要执行的程序
		}
		if(flag_300ms == 1)
		{		
			flag_300ms = 0;
			clock_h_l();
			temperature = read_temp();  //读取温度值
			dengji = ad0832read(1,0);	
			dengji = dengji * 10 / 250;
			if(menu_1 == 0)
			{
				if(temperature >= 99)
					temperature = 99;
				dis_smg[3]=smg_du[dengji];	    //显示烟物报警等级
				dis_smg[2]= 0x80;	            // -		
				dis_smg[1]=smg_du[temperature/10%10];	//十位
				dis_smg[0]=smg_du[temperature%10];	    //个位	ADC0832为8位ADC,数值为0~255,我们将其分开放入l_tmpdate数组中显示
			}
		} 
		delay_1ms(1);
	}
}

/*************定时器0中断服务程序***************/
void time0_int() interrupt 1
{	
	static uchar value;
	TH0 = 0xf8;
	TL0 = 0x30;     // 2ms
	value ++;	 
	display();	  //数码管显示函数
	if(value % 150 == 0)
	{
		flag_300ms = 1;	   //300ms
		value = 0;
	}
}

其余完整详见下载!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/29829.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

管理类联考——英语二——技巧篇——写作——B节——议论文——必备替换句型

议论文必备替换句型 (一&#xff09;表示很明显/众所周知的句型 It is obvious thatIt is clear thatIt is apparent thatIt is evident thatlt is self-evident thatIt is manifest thatIt is well-knownIt is known to all thatIt is widely-accepted thatIt is crystal-cl…

蓝牙客户端QBluetoothSocket的使用——Qt For Android

了解蓝牙 经典蓝牙和低功耗蓝牙差异 经典蓝牙&#xff08;Bluetooth Classic&#xff09;&#xff1a;分为基本速率/增强数据速率(BR/EDR)&#xff0c; 79个信道&#xff0c;在2.4GHz的(ISM)频段。支持点对点设备通信&#xff0c;主要用于实现无线音频流传输&#xff0c;已成…

Ceph:关于Ceph 集群管理的一些笔记

写在前面 准备考试&#xff0c;整理ceph 相关笔记博文内容涉及&#xff0c;Ceph 管理工具 cephadm&#xff0c;ceph 编排器&#xff0c;Ceph CLI 和 Dashboard GUI 介绍理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守…

大数据分析平台释疑专用帖第二弹

不管是想要快速了解BI大数据分析平台&#xff0c;还是想要了解BI和自己的需求匹配度&#xff0c;都可关注我们的释疑专用贴。 1、可以分析直播数据吗&#xff1f; 严格来说&#xff0c;只要能够提供数据&#xff0c;就可以做数据可视化分析&#xff0c;直播数据也同理。 如果…

solr快速上手:整合SolrJ实现客户端操作(九)

0. 引言 我们前面学习了solr的服务端基础操作&#xff0c;实际项目中我们还需要在客户端调用solr&#xff0c;就像调用数据库一样&#xff0c;我们可以基于solrJ来实现对solr的客户端操作 1. SolrJ简介 SolrJ 是 Solr官方提供的 Java 客户端库&#xff0c;主要用于与 Solr 服…

Python 请求分页

文章目录 什么是 Python 中的分页带有下一个按钮的 Python 分页没有下一个按钮的 Python 分页无限滚动的 Python 分页带有加载更多按钮的分页 在本文中&#xff0c;我们将了解分页以及如何克服 Python 中与分页相关的问题。 读完本文后&#xff0c;我们将能够了解 Python 分页以…

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用

经典目标检测YOLO系列(1)YOLO-V1算法及其在VOC2007数据集上的应用 1 YOLO-V1的简述 1.1 目标检测概述 ​ 目标检测有非常广泛的应用&#xff0c; 例如&#xff1a;在安防监控、手机支付中的人脸检测&#xff1b;在智慧交通&#xff0c;自动驾驶中的车辆检测&#xff1b;在智…

Parallel Desktop中按照的centos在切换root用户时,密码正确,但一直切换不成功,显示su: Authentication failure

目录 一、出现问题二、分析问题三、解决问题四、参考资料 一、出现问题 我的密码明明是输入正确的&#xff0c;但又一直给我报下面的错误 二、分析问题 我怀疑是我密码记错了&#xff0c;所以我点击Log Out&#xff0c;重新去输入了一下密码&#xff0c;发现是正确的我确认…

Build your own unconditional confidence

不要活在既定的社会价值体系中 人类的偏好大多数时候都是愚昧的 I play whatever gods give me 情绪价值稳定 解决问题的能力 Dont label yourself 真正的强者不会吝啬对他人的赞美 敬畏自然&#xff0c;敬畏未知事物 核心是你对这个事情是否感兴趣&#xff0c;觉得有价…

PHP 使用html创建PDF并设置水印

使用TCPDF库给PDF文件加水印&#xff0c;需要注意无法直接使用文本&#xff0c;需要创建水印图片后&#xff0c;通过图片来设置水印效果。 目录 创建PDF 创建合同模板 创建pdf文件 简单创建 设置文档信息 去掉默认页头脚 设置间距 设置字体支持中文 设置图片比例因子 …

代理ip数据采集的优缺点

随着互联网时代的到来&#xff0c;数据已经成为企业发展和决策的关键。但是&#xff0c;不同的网站它对于数据访问的限制和反爬虫措施却是给企业的数据采集带来了挑战。针对这一问题&#xff0c;代理IP数据采集技术应运而生。但是使用代理ip来进行数据采集也有优缺点。 一、代理…

【微信小程序】wxml、wxss、js、json文件介绍

&#x1f609;博主&#xff1a;初映CY的前说(前端领域) ,&#x1f4d2;本文核心&#xff1a;微信小程序的入门介绍 【前言】书接上回&#xff0c;我们知道了一个小程序的构成结构&#xff0c;接下来我们来进一步学习小程序的目录结构中的.wxml、.wxss、.js、.json。 目录 ⭐ 一…

List容器(Java)

文章目录 1.容器介绍1.1 容器接口结构1.2 简单解析 2. List容器创建(Member functions)3. 访问操作(Element access)3.1 get()3.2 Iterator遍历3.3 增强for循环 4. 修改操作(Modifiers)4.1 add()4.2 addAll()4.3 remove()4.4 set() 5. 容量操作(Member functions)5.1 clear() …

傻白入门芯片设计,形式化验证方法学——AveMC工具学习(二十)

目录 一、形式验证方法学 &#xff08;一&#xff09;什么是形式化验证&#xff1f; &#xff08;二&#xff09;与传统验证的区别&#xff1f; 二、AveMC工具学习 &#xff08;一&#xff09;什么是AveMC&#xff1f; &#xff08;二&#xff09;AveMC的工作逻辑&#x…

Redis整合jedis 学习

前言 redis简单来讲是内存数据库&#xff0c;因为是将数据存放到内存&#xff0c;因此读写速率高快(传统数据库&#xff0c;不是先从内存转到硬存&#xff0c;慢) 1.jedis连接Redis redis是java操作redis的客户端&#xff0c;通过他我们能通过java语句操控redis。 jedis对于…

全国大数据与计算智能挑战赛:面向低资源的命名实体识别基线方案,排名13/64,组织单位:国防科技大学系统工程学院(大数据与决策实验室)

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…

一起学SF框架系列6.1-模块core-Resource

Java虽然提供了java.net.URL类和各种URL前缀处理程序来负责处理对各种资源的访问&#xff0c;但对于低级别资源的访问来说还是不够充分。例如&#xff0c;没有标准化的实现可用于访问需要从类路径中获取或者相对于一个ServletContext的资源&#xff1b;也没有检查所指向的资源是…

Linux 正则表达式

正则表达式有什么用&#xff1f;最基本的爬虫会用到&#xff0c;正则表达式简单来说就是匹配字符串的 比如&#xff1a;你匹配所有图片的链接地址 <img src"------(图片链接地址)"> 比如、abc/def URL:在WWW上&#xff0c;每一信息资源都有统一的且在网上…

(opencv)图像几何变换——缩放

图像缩放是指将图像的尺寸变小或变大的过程&#xff0c;也就是减少或增加源图像数据的像素个数。图像缩放一定程度上会造成信息的丢失&#xff0c;因此需要考虑适宜的方法进行操作。 下面介绍两种常用的图像缩放方法的原理及实现 1.基于等间隔提取图像缩放 等间隔提取图像缩…

机器视觉初步5-1:图像平滑专题

在计算机视觉领域&#xff0c;图像平滑处理是一个重要的任务&#xff0c;用于降低噪声&#xff0c;提高图像质量。常见的图像平滑算法有均值滤波、中值滤波、高斯滤波等。本文将介绍这些算法的原理&#xff0c;并分别给出使用Python与Halcon实现的代码。&#xff08;当前版本&a…