【Proteus仿真】【51单片机】厨房天然气泄漏检测报警系统

news2024/11/18 19:28:16

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用LCD1602、按键、天然气、烟雾传感器、ADC,报警模块等。

系统运行后,LCD1602显示传感器检测的天然气浓度和烟雾浓度值。
可通过按键K3进入阈值设置界面,K3每按一次切换天然气浓度、
烟雾浓度阈值设置界面。通过K1/K2键进行加减数据,设置好后可按K4键保存并
返回主菜单。系统不断检测比较当前传感器采集值与阈值,从而控制蜂鸣器报警。
通过蜂鸣器报警频率不同,区分不同采集值超限。
最终可实现:
1、实时检测天然气浓度、烟雾浓度
2、阈值参数设置,超限报警
3、报警音调区分不同阈值


二、软件设计

/*
作者:嗨小易(QQ:3443792007)
*/


//系统参数设定
void sys_parm_set(void)
{
	u8 key=0;

	key=key_scan(0);
	//模式设置
	if(key==KEY3_PRESS)
	{
		sys_ctrl.mode++;
		if(sys_ctrl.mode>=3)sys_ctrl.mode=1;
		lcd1602_clear();
		switch(sys_ctrl.mode)
		{
			case 1://温度上限设置显示界面 
				lcd1602_show_string(0,0,"TRGasH Set:");
				break;
			case 2://温度下限设置显示界面 
				lcd1602_show_string(0,0,"SmokeH Set:");
				break;
		}			
	}
	//确定
	else if(key==KEY4_PRESS)
	{
		sys_ctrl.mode=0;
		sys_open_show();	
	}
	//天然气浓度阈值设置
	while(sys_ctrl.mode==1)
	{  	
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.gash+=THRESHOLD_STEP;
			if(sys_ctrl.gash>100)sys_ctrl.gash=0;		
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.gash-=THRESHOLD_STEP;
			if(sys_ctrl.gash<1)sys_ctrl.gash=100;				
		}
		
		break;				
	}
	//烟雾浓度阈值设置
	while(sys_ctrl.mode==2)
	{  	
		if(key==KEY1_PRESS)//加
		{
			sys_ctrl.smokeh+=THRESHOLD_STEP;
			if(sys_ctrl.smokeh>100)sys_ctrl.smokeh=0;			
		}
		else if(key==KEY2_PRESS)//减
		{
			sys_ctrl.smokeh-=THRESHOLD_STEP;
			if(sys_ctrl.smokeh<1)sys_ctrl.smokeh=100;				
		}
		
		break;			
	}
}

//系统数据采集
void sys_data_get(void)
{
	while(sys_ctrl.mode==0)
	{
		//读取天然气浓度值
		sys_ctrl.gas=pcf8591_read_adcvalue(2);
		sys_ctrl.gas=cal_map(sys_ctrl.gas,0,255,0,100);	
		//读取烟雾浓度值
		sys_ctrl.smoke=pcf8591_read_adcvalue(0);
		sys_ctrl.smoke=cal_map(sys_ctrl.smoke,0,255,0,100);						
		
		break;			
	}			
}

//系统数据显示
void sys_data_show(void)
{
	//正常模式显示
	while(sys_ctrl.mode==0)
	{
		lcd1602_show_nums(6,0,sys_ctrl.gas,3,0);
		lcd1602_show_nums(6,1,sys_ctrl.smoke,3,0);
		break;				
	}
	//天然气浓度设置显示
	while(sys_ctrl.mode==1)
	{
		lcd1602_show_nums(11,0,sys_ctrl.gash,3,0);
		break;
	}
	//烟雾浓度设置显示
	while(sys_ctrl.mode==2)
	{
		lcd1602_show_nums(11,0,sys_ctrl.smokeh,3,0);
		break;
	}
}

//系统参数控制
void sys_parm_ctrl(void)
{
	//正常模式下参数比对
	while(sys_ctrl.mode==0)	
	{
		//如果天然气浓度及烟雾浓度超限,蜂鸣器报警1
		if(sys_ctrl.gas>sys_ctrl.gash && sys_ctrl.smoke>sys_ctrl.smokeh)
		{
			beep_alarm(200,10);
		}
		//如果天然气浓度超限,蜂鸣器报警2
		else if(sys_ctrl.gas>sys_ctrl.gash)
		{
			beep_alarm(200,30);	
		}
		//如果烟雾浓度超限,蜂鸣器报警3
		else if(sys_ctrl.smoke>sys_ctrl.smokeh)
		{
			beep_alarm(200,50);	
		}
		break;
	}
}

//应用控制系统
void sys_appdemo(void)
{
	sys_parm_init();//系统参数初始化
	lcd1602_init();
	sys_open_show();//初始界面

	while(1)
	{
		sys_data_get();//数据采集
		sys_data_show();//采集数据显示
		sys_parm_set();//阈值设定
		sys_parm_ctrl();//系统参数控制	
	}
}


三、实验现象

B站演示视频:https://space.bilibili.com/444388619

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


联系作者

B站演示视频:https://space.bilibili.com/444388619
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中国土地交易数据库:300w数据中国土地高频交易数据2000-2022

土地交易是土地在流通过程中多方发生的经济关系&#xff0c;土地交易的行为主要是交换的土地所有权、使用权、租赁权、抵押权等。在我国&#xff0c;土地作为一种重要资源&#xff0c;其收购储备和交易行为都由国家进行统一管理。经过改革开放几十年的探索和实践&#xff0c;土…

手机投影到电脑显示 此设备不支持miracast,因此不能以无线投影到它

在家里使用手机的体感游戏,发现手机屏幕比较小,想要将其投影到自己的笔记本电脑上,这样看得就比较大了。然后我就打开笔记本电脑,操作如下: 如下图: 原文地址:手机投影到电脑显示 此设备不支持miracast&#xff0c;因此不能以无线投影到它 - 廖强的博客 但是结果我们就看到了…

Mysql安装配置和Mysql使用六千字详解!!

目录 课前导读 一、Mysql的安装和配置 二、数据库简介&#xff1a; 1、数据库中典型代表&#xff1a; 2、数据库类型&#xff1a; 3、Mysql简介&#xff1a; 4、客户端和服务器简介&#xff1a; 三、初始MySQL 四、数据库操作 五、表的基本操作 六、表的基础增删查改…

虚拟主机、WordPress 主机和云主机之间的区别

&#x1f482; 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 想寻找共同学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】&#x1f4ac; 免费且…

[附源码]JAVA毕业设计校园失物招领管理系统(系统+LW)

[附源码]JAVA毕业设计校园失物招领管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目…

港科夜闻|罗康锦教授获委任为香港科大工学院院长

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、罗康锦教授获委任为香港科大工学院院长。该委任任期由2023年1月1日开始。罗康锦教授服务香港科大多年&#xff0c;是智慧交通系统、智慧城市和可持续发展的杰出学者&#xff0c;在学术研究方面屡获殊荣。罗教授拥有丰富的学…

阿里巴巴内部最新发布SpringCloud ALiBaBa全彩版

就在昨天&#xff0c;阿里巴巴发布了最新的SpringCloud ALiBaBa全解第三版同时也是全彩版&#xff0c;话不多说我们直接来看干货&#xff01; 由于文章的篇幅有限&#xff0c;下面只能为大家展示目录内容&#xff0c;需要领取完整版可以文末免费获取章节目录 微服务介绍 微服务…

Go 实现插入排序算法及优化

Go 实现插入排序算法及优化插入排序算法实现算法优化小结耐心和持久胜过激烈和狂热。 哈喽大家好&#xff0c;我是陈明勇&#xff0c;今天分享的内容是使用 Go 实现插入排序算法。如果本文对你有帮助&#xff0c;不妨点个赞&#xff0c;如果你是 Go 语言初学者&#xff0c;不妨…

python基于SVM的疫情评论情感数据分析

1、构建SVM情感分析模型 读取数据 使用pandas的库读取微薄数据读取并使进行数据打乱操作 import pandas as pd test pd.read_csv(".\\weibo.csv") test_data pd.DataFrame(test)[:1000] test_data 打乱数据 re_test_data test_data.sample(frac1).reset_index(…

代码随想录训练营第44天|完全背包、LeetCode 518. 零钱兑换 II、 377. 组合总和 Ⅳ

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i]&#xff0c;得到的价值是value[i] 。每件物品都有无限个&#xff08;也就是可以放入背包多次&#xff09;&#xff0c;求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

前端工程化实践——快速入门treeshaking

treeshaking treeshaking本质是去除多余代码算法。在前端的性能优化中&#xff0c;es6 推出了tree shaking机制&#xff0c;tree shaking就是当我们在项目中引入其他模块时&#xff0c;他会自动将我们用不到的代码&#xff0c;或者永远不会执行的代码摇掉&#xff0c;在…

【Java设计模式】用盖房子案例讲解建造者模式(生成器模式)

一、前言 今天学习了Java设计模式中的建造者模式&#xff0c;细心整理了学习笔记以及对这个模式的自我理解&#xff0c;希望大家喜欢&#xff01; 二、需求介绍 现在我们需要建房子&#xff0c;过程为打桩、砌墙、封顶。房子有各种各样的&#xff0c;比如普通房&#xff0c;…

【Java开发】 Spring 10 :Spring Boot 自动配置(Auto Configuration)原理及手动实现

用了这么久的 SpringBoot &#xff0c;我们再来回顾一下它&#xff0c;本文介绍 Spring Boot 的自动配置&#xff0c;这是它区别于 Spring 的最大的点&#xff0c;本文的自动配置项目包含三个项目&#xff0c;建议拉取仓库里的代码进行实践&#xff1a;尹煜 / AutoConfigDemo …

SOFA Weekly|MOSN v1.3.0 版本发布、公众号半自助投稿、本周 Contributor QA

SOFA WEEKLY | 每周精选 筛选每周精华问答&#xff0c;同步开源进展欢迎留言互动&#xff5e;SOFAStack&#xff08;Scalable Open Financial Architecture Stack&#xff09;是蚂蚁集团自主研发的金融级云原生架构&#xff0c;包含了构建金融级云原生架构所需的各个组件&#…

不接受反驳,性能最强,功能最强的Java日志框架

Logback 算是JAVA 里一个老牌的日志框架&#xff0c;从06年开始第一个版本&#xff0c;迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年&#xff0c;好几年都没有更新&#xff1b;logback的兄弟 slf4j 最近一个稳定版也是2017年&#xff0c;有点凉凉的意思。…

tep支持pytest-xdist分布式执行用例及合并Allure报告

tep近期更新频率较快&#xff0c;一方面是作者在积极投入到tep工具开发中&#xff1b;另一方面是我们聚集了20位小伙伴&#xff0c;一起合力打造EasyPytest测试平台&#xff0c;teprunner的FastAPI升级版本&#xff0c;依托于tep&#xff0c;帮你高效管理pytest测试用例。陆续也…

使用OpenGPT(ChatGPT)搭建 QQ 机器人

本教程来自&#xff1a;OpenGPT搭建QQ机器人-憨憨博客 有问题可来我博客询问&#xff1a;我的博客 准备 一个服务器&#xff1a;Windos&#xff0c;Centos&#xff0c;Ubuntu 环境&#xff1a;Python 一个 QQ 号用作机器人 一个 OpenAI 账号 (注册教程自行搜索) 搭建 这里我用…

Java最流行的Spring框架该怎么学?阿里、腾讯、字节跳动等大厂面试中关于Spring都会问什么?

Spring作为现在最流行Java 开发技术&#xff0c;其内部源码设计非常优秀。如果你不会Spring&#xff0c;那么很可能面试官会让你回家等通知。 Spring是什么&#xff1f; 有一个工地&#xff0c;几百号人在用铁锹铲子挖坑。 如果开一辆挖掘机来&#xff0c;用一天时间干的活就…

【数据结构与算法】图

目录 一、图的基本概念 二、图的存储结构 1、邻接矩阵 2、邻接表 三、图的遍历 1、DFS 2、BFS 四、最小生成树 1、Kruskal算法 2、Prim算法 五、最短路径问题 1、Dijkstra 2、Bellman-Ford 3、Floyd-Warshall 总结 一、图的基本概念 图是由顶点集合及顶点间的关…

tslearn学习:快速入门

文章目录前言一、安装二、时间序列格式2.1 格式化时间序列2.2 读取标准数据集三、机器学习算法3.1 分类3.2 回归3.3 最近邻搜索3.4 聚类前言 tslearn快速入门学习。官网&#xff1a;tslearn quick-start 一、安装 采用pip install安装tslearn库 pip install tslearn二、时间…