【单片机毕业设计】【hj-006-7】CO、有害混合气体检测 | 空气质量检测 | 有害气体检测
一、基本介绍
项目名:
基于单片机的CO、有害混合气体检测系统设计
基于单片机的空气质量检测系统设计
基于单片机的有害气体检测系统设计
项目编号:mcuclub-hj-006-7
单片机类型:STC89C52
具体功能:
1、通过MQ-7检测CO值,超过设置最大值进行声光报警,并开启风扇和净化器
2、通过MQ-135检测有害混合气体值,超过设置最大值进行声光报警,并开启风扇和净化器
3、通过按键设置上限值,可以手动控制风扇和净化器、切换模式
4、通过显示屏显示数据
扩展功能:通过蓝牙模块将测量数据发送到手机端,并可以控制风扇和净化器、切换模式
二、资料总览
实物资料

仿真资料

三、51单片机部分资料展示
1、实物图展示
单片机型号:STC89C52
供电接口:TYPE-C
板子类型:PCB集成板,厚度1.2,两层板(上下层覆铜接地)
器件类型:元器件基本上为插针式,个别降压芯片会使用贴片式。

2、仿真图展示
仿真软件版本:proteus8.9
电路连线方式:网络标号连线方式
注意:部分实物元器件仿真中没有,仿真中会用其他工作原理相似的元件代替,这样可能导致实物程序和仿真程序不一样

3、原理图展示
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构图

4、PCB图展示
由原理图导出,中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。

四、32单片机部分资料展示
1、实物图展示
单片机型号:STM32F103C8T6
供电接口:TYPE-C
板子类型:PCB集成板,厚度1.2,两层板(上下层覆铜接地)
器件类型:元器件基本上为插针式,个别降压芯片会使用贴片式。

2、原理图展示
软件版本:AD2013
电路连线方式:网络标号连线方式
注意:原理图只是画出了模块的引脚图,而并不是模块的内部结构原理图

3、PCB图展示
由原理图导出,中间有一个项目编号,隐藏在单片机底座下,插入单片机后不会看到。
两层板,上下覆铜接地。

五、系统框图
绘制软件:VISIO
本设计以单片机为核心控制器,加上其他模块一起组成此次设计的整个系统,其中包括中控部分、输入部分和输出部分。中控部分采用了单片机控制器,其主要作用是获取输入部分的数据,经过内部处理,逻辑判断,最终控制输出部分。输入由三部分组成,第一部分是气体检测模块,通过该模块检测当前环境的有害气体和一氧化碳;第二部分是按键模块,通过该模块可以切换界面、设置阈值、切换模式等;第三部分是供电模块,通过该模块可给整个系统进行供电。输出由三部分组成,第一部分是显示模块,通过该模块可以显示监测的数据以及设置的阈值;第二部分是继电器模块,通过两个继电器分别控制通风和净化;第三部分是声光报警模块,当监测值不在设置的阈值内时进行声光报警。除此之外,蓝牙模块既作为输入又作为输出,蓝牙模块和手机进行连接,可以将监测的数据传输到用户手机端,用户也可以通过手机端发送指令控制继电器的工作及其模式的切换。具体系统框图如图3.1所示。

六、部分程序展示
软件版本:keil5
注意:逻辑程序和驱动程序分开,分布于main.c和其他.c文件
*******监测函数
*****/
void Monitor_function(void)
{char fasong[256]; if(flag_display == 0) //测量界面{if(time_num % 10 == 0) //约2s检测一次{if(DO1 == 0) co_value = 60*(Get_Adc_Average(1,1)*3.3/4096.0); //获取一氧化碳浓度else co_value = 0;if(DO2 == 0 )hgas_value = 60*(Get_Adc_Average(5,1)*3.3/4096.0); //获取有害气体浓度elsehgas_value = 0;}}if(time_num % 20 == 0) //约4s发送一次{sprintf(fasong,"一氧化碳浓度:%dppm\r\n",co_value);UsartPrintf(USART1,fasong);sprintf(fasong,"有害气体浓度:%dppm\r\n",hgas_value);UsartPrintf(USART1,fasong); } if(USART1_WaitRecive() == 0){if(strstr((char*)usart1_buf,"A") != NULL) //切换自动模式{flag_mode = 0; }else if(strstr((char*)usart1_buf,"B") != NULL)//通风关,净化关 {flag_relay = 0;flag_mode = 1; }else if(strstr((char*)usart1_buf,"C") != NULL)//通风开,净化开 {flag_relay = 1;flag_mode = 1; }USART1_Clear();}
}/****
*******显示函数
*****/
void Display_function(void)
{switch(flag_display) //根据不同的显示模式标志位,显示不同的界面{case 0: //界面0:测量界面,显示一氧化碳、有害气体浓度,模式Oled_ShowCHinese(1, 0, "一氧化碳:");sprintf(display_buf,"%dPPM ",co_value);Oled_ShowString(1, 10, display_buf);Oled_ShowCHinese(2, 0, "有害气体:");sprintf(display_buf,"%dPPM ",hgas_value);Oled_ShowString(2, 10, display_buf);Oled_ShowCHinese(3, 0, "模式:");if(flag_mode == 0)Oled_ShowCHinese(3,3,"自动");elseOled_ShowCHinese(3,3,"手动");break;case 1: //界面1:显示设置一氧化碳最大值Oled_ShowCHinese(1,2,"设置");Oled_ShowCHinese(2,0,"一氧化碳最大值");if(time_num % 5 == 0){sprintf(display_buf,"%d ",co_max);Oled_ShowString(3, 7, display_buf);}if(time_num % 10 == 0){Oled_ShowString(3, 7, " ");}break;case 2: //界面2:显示设置有害气体最大值Oled_ShowCHinese(1,2,"设置"); Oled_ShowCHinese(2,0,"有害气体最大值");if(time_num % 5 == 0){sprintf(display_buf,"%d ",hgas_max);Oled_ShowString(3, 7, display_buf);}if(time_num % 10 == 0){Oled_ShowString(3, 7, " ");}break;default:break;}
}/****
*******处理函数
*****/
void Manage_function(void)
{if(flag_display == 0) //测量界面{if(flag_mode == 0) //如果处于自动模式{if(co_value > co_max || hgas_value > hgas_max) //一氧化碳值或有害气体值大于设置的最大值{RELAY_TF = 1;RELAY_JH = 1;flag_alarm = 1;}else //如果在设置的上下限之间,关闭两个继电器{RELAY_TF = 0;RELAY_JH = 0;flag_alarm = 0;}}else //手动模式根据按键按下控制继电器{flag_alarm = 0;LED = 1;BEEP = 0; switch(flag_relay){case 0: //通风关,净化关 RELAY_TF = 0;RELAY_JH = 0;break;case 1: //通风开,净化开RELAY_TF = 1;RELAY_JH = 1;break; default:break;} }if(flag_alarm == 1 && time_num %2 == 0) //如果有异常,声光报警{LED = ~LED;BEEP = ~BEEP;}else if(flag_alarm == 0){LED = 1;BEEP = 0;}}else //设置界面,关闭两个继电器{RELAY_TF = 0;RELAY_JH = 0; LED = 1;BEEP = 0;}
}相关文章:
【单片机毕业设计】【hj-006-7】CO、有害混合气体检测 | 空气质量检测 | 有害气体检测
一、基本介绍 项目名: 基于单片机的CO、有害混合气体检测系统设计 基于单片机的空气质量检测系统设计 基于单片机的有害气体检测系统设计 项目编号:mcuclub-hj-006-7 单片机类型:STC89C52 具体功能: 1、通过MQ-7检测CO值&#x…...
wpf主页面解析
1、 开头的网址作用 1和2都是引入命名空间的,每一个字符串代表一系列的命名空间,这样就可以不用一个一个引用了。wpf中规定有一个名称空间是可以不加名字的,xmlns不加名字是默认命名空间。 "http://schemas.microsoft.com/winfx/2006/x…...
三相交错LLC软启动控制程序算法实现---充电桩电源设计实战细节
简介 充电桩充电终端是一款单枪最大功率达到600kW的充电桩。它具有以下特点: 充电枪线长3.5米,重量小于90kg,额定电压1000V,最大电流600A,最大功率600kW。 高宽深为1700340295mm。 该充电桩采用模块化设计,具有较高的可靠性和可维护性。 充电时间大约在30分钟左右,…...
Chrome 115之后的版本,安装和使用chromedriver
在Python中使用selenium 时报如下错误: 1. 老版本chrome对应的chromedriver 下载地址:CNPM Binaries Mirror 2. 新版本chrome对应的chromedriver 下载地址:Chrome for Testing availability...
潮玩宇宙:收藏、交流与竞技的数字乐园
最近爆火的新项目潮玩宇宙,想必有很多人入场了,代理商宣传投资147一个月回本,确实是现在做到了,现在平台一颗宝石的价格已经超过美金了,还有一大部分人在等待进场,潮玩宇宙旗下奖券世界和养猪农场已经做了有…...
企拓客app骗局为不实信息,企拓客保持正常经营状态
网络运营软件盛行,带来了一些混乱的现状,造成企业不同程度的损失,也让运营单位在选择软件时心有余悸。真真假假的信息,扰乱了运营软件的市场环境,热门的拓客软件不慎躺枪。企拓客就是其中之一。 笔者通过网上检索的方式,最终查证企拓客软件官方保持着正常运营,企拓客app骗局不攻…...
【性能】JDK和Jmeter的安装与配置
一、JDK环境配置 1. 下载JDK 官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html 选择对应系统的安装包,下载后安装,安装中记录JDK安装的地址,之后一直点击下一…...
02_单片机及开发板介绍
单片机简介 单片机,又称为微控制器(Microcontroller),是一种集成了微处理器核心、存储器、输入/输出接口及各种功能模块的集成电路芯片。它通常由中央处理器(CPU)、存储器、输入/输出接口以及各种外设组成&…...
华测监测预警系统 2.2---任意文件读取漏洞
目录 1. 资产搜集 2. 漏洞复现 3. 实战总结 1. 资产搜集 直接上fofa 和 hunter 个人推荐hunter可以看到icp备案公司直接提交盒子就行了 FOFA语法 app”华测监测预警系统2.2” Hunter语法 web.body”华测监测预警系统2.2” 2. 漏洞复现 这里手动复现的,目录是/…...
新版多功能去水印工具微信小程序源码下载+带流量主功能
新版多功能去水印工具微信小程序源码下载,带流量主功能。自带去水印接口的多功能小程序,支持各大平台短视频去水印。 支持保存封面、图集、标题等等;支持本地图片去水印;支持图片拼接;支持九宫格切图;支持修…...
文章必备| 叶绿体基因组高级分析内容汇总
叶绿体普遍存在于植物体中,叶绿体基因组是一个典型的双链环状DNA分子,一个植物当中含有多个叶绿体,一个叶绿体中含有12个cpDNA分子。 常见的植物叶绿体基因组大小一般在150-160 kb左右,藻类会略小一些,在80-100 kb左右…...
阿里实习JAVA后端面经总结
暑期实习面试阿里Java后端岗位的一面的面经。 主要拷打了项目+Java 集合+Java并发+网络+mysql,一场面试大概问了 20 个题目,问的还是比较基础,不算太难。 问题记录 简历上有两个项目,选一个你比较熟悉的介绍 (略) 项目用到了哪个线程实现类? 用了ScheduledThreadP…...
利用 NLP 超能力:一步步介绍Hugging Face微调教程
导入必要的库 导入必要的库类似于为特定编程和数据分析活动构建工具包。这些库通常是预先编写的代码集合,提供广泛的功能和工具,有助于加快开发速度。开发人员和数据科学家可以通过导入适当的库来访问新功能、提高生产力并使用现有解决方案。 import pandas as pd import n…...
凝聚技术力量 共建测试生态 ——集成电路测试技术交流日成功举办
10月18日下午,凝聚技术力量,共建测试生态 ——集成电路测试技术交流会在上海成功举办。来自全国各地知名专家学者、技术大咖及企业代表齐聚一堂,共同探讨封装测试技术的发展方向,共话产业未来,共促产业发展。 本次活动…...
机器学习-ROC曲线:技术解析与实战应用
目录 一、引言ROC曲线简介 二、ROC曲线的历史背景二战雷达信号检测在医学和机器学习中的应用横跨多个领域的普及 三、数学基础True Positive Rate(TPR)与False Positive Rate(FPR)True Positive Rate(TPR)F…...
macos平台好用的FTP客户端 Transmit 5最新中文
Transmit 5是一款Mac平台上的FTP(文件传输协议)客户端软件,它可以让用户方便地在不同的计算机之间传输文件,例如从本地计算机上传或下载文件到远程服务器。以下是Transmit 5的一些主要功能和特点: 用户友好的界面:Transmit 5具有…...
用JavaScript输出0-9的两种方法、以及setTimeout的三个参数的意义
方法一: for (let i 0; i < 10; i) {setTimeout(() > {console.log(i);}, 1000) } 方法二:利用 setTimeout 函数的第三个参数,会作为回调函数的第一个参数传入 for (var i 0; i < 10; i) {setTimeout(i > {console.log(i);…...
酷鸟云近期主要新功能合集
近期,根据用户需求,酷鸟云上线了一系列新功能,让大家在使用过程中,更加灵活和高效。 1、仿真指纹功能优化 酷鸟云内置的专业防关联浏览器的仿真指纹功能,可以解决注册谷歌账号/谷歌邮箱(Gmail)…...
【大数据开发技术】实验06-SequenceFile、元数据操作与MapReduce单词计数
文章目录 SequenceFile、元数据操作与MapReduce单词计数一、实验目标二、实验要求三、实验内容四、实验步骤附:系列文章 SequenceFile、元数据操作与MapReduce单词计数 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS SequenceFile读写操作掌握Map…...
【C语言】输入一个正整数,判断其是否为素数
1、素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”。 2、素数也可以被等价表述成:“在正整数范围内,大于1并且只有1和自身两个约数的数”。 #include<stdio.h>int main() {int i,m;printf("…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
