基于STM32的天然气煤气检测报警仿真设计(仿真+程序+讲解)

news2024/11/16 22:35:21

基于STM32的天然气煤气检测报警仿真设计

  • 演示视频
  • 1.主要功能
  • 2.仿真
  • 3. 程序
  • 4. 资料清单&下载链接

仿真图proteus 8.9

程序编译器:keil 5

编程语言:C语言

设计编号:C0081

演示视频

基于STM32的天然气煤气可燃气体检测报警仿真设计

1.主要功能

功能说明:

1、以STM32单片机为控制核心设计可燃气体(天然气 煤气)检测报警设计;

2、通过液晶屏LCD1602显示气体浓度;

3、可以通过拨动开关设置自动或者手动开启风扇,手动模式指示灯亮,自动模式下模式指示灯灭。

4、手动模式通过按键控制风扇开关。自动模式下检测到气体浓度高于2.0mg/L风扇自动启动。

5、监测到气体浓度高于2.0mg/L蜂鸣器报警。

主要硬件设备:STM32F103单片机

以下为本设计资料展示:

2.仿真

整体设计方案

本实验的目的是利用STM32单片机的先进数字模拟转换器(ADC)、通用输入输出(GPIO)和定时器等资源,将软件和硬件有效地结合在一起,以实现对输入模拟天然气煤气传感器的AD值的准确识别,并通过1602液晶显示屏(LCD1602)正确显示相关数据。此外,我们还希望系统能够根据预设的报警值,通过蜂鸣器和风扇等外设进行气体浓度的报警。

在这个实验中,值得注意的是,Proteus软件并没有内置的天然气煤气等有害气体的浓度传感器。因此,为了模拟可燃气体浓度的变化,我们使用了滑动变阻器。虽然这种方式不能直接应用于实际硬件设计,但是对于理解和测试算法的基本行为是非常有用的。对于需要进行实物设计的用户,建议根据实际传感器进行相应的调试和修改。

总的来说,这个实验提供了一个基础的框架,展示了如何利用STM32单片机结合ADC、GPIO和定时器等资源,实现对模拟天然气煤气传感器信号的采集和处理,并通过LCD1602显示和报警装置进行展示和报警。虽然不能直接用于实物设计,但对于理解和掌握相关技术的基本原理和应用,具有很大的价值。

本测试如下所示:

仿真运行情况:

开始仿真后LCD1602实时显示检测到的气体浓度,可以通过滑动变阻器改变测量值。可通过开关选择风扇的运行模式。如果开关闭合,风扇是自动模式工作,气体浓度高于报警值时,风扇启动,低于报警值的时候,风扇不转动。如果风扇是手动模式,通过按键控制风扇的开关。蜂鸣器报警电路在气体浓度高于报警值时启动,有嘟嘟报警声,低于不启动。

下图检测到气体浓度是1.5mg/L,低于报警值2.0mg/L,风扇和蜂鸣器电路不工作。

img

下图检测到气体浓度是2.0mg/L,大于等于报警值,蜂鸣器报警,风扇转动模拟排气通风。

img

3. 程序

程序是用keil5 mdk版本打开的,如果打开有问题,核实下keil的版本。程序是固件库版本编写的,有注释可以结合讲解理解。
mian.c代码

#include "stm32f10x.h"
#include "bsp-lcd1602.h"
#include "delay.h"
#include "sys.h"
#include "adc.h"
#define LED PAout(3)
#define BEEP PAout(4)
#define KEY1 PAin(8)
#define KEY2 PAin(9)
#define KEY3 PAin(10)
void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //使能P端口时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4;				 //LED0 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 GPIO_SetBits(GPIOA,GPIO_Pin_3);						 //输出高
 GPIO_SetBits(GPIOA,GPIO_Pin_4);						 //输出高

}
void KEY_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;	//上拉输入
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
}
int main(void)
{
int a,b,c,d;
	float temp;
	int count;
	delay_init();	    	 //延时函数初始化	  	
	LCD1602_Init();
  ADC1_GPIO_Config();		
  ADC_Config();  
	LCD1602_ShowStr(2,0,"Qiti=0.0mg/L",13);
	LED_Init();		//风扇控制引脚
	KEY_Init();		//按键初始化
	while(1)
	{
		count++;
		if(count>5000){//用于计数,防止系统执行转换太频繁
			count = 0;
			b=ADC_GetConversionValue(ADC1);//获取ADC的值
			temp=(float)b*(3.4/4096);//换算ADC的值
			a=temp/1;
			c=temp*10;
			d=c%10;
			LCD_ShowNum(7,0,a);
			LCD_ShowNum(9,0,d);//显示检测到的AD值

				if(KEY3==0){//按键控制
					if(temp>2) LED=1;//LED1是风扇控制引脚,1打开 0关闭
					else LED=0;
				}	else{
					if(KEY1==0) LED=1;
					if(KEY2==0) LED=0;
				}	
			if(temp>2) BEEP=0;//蜂鸣器报警值判断,BEEP==0蜂鸣器报警 1蜂鸣器关闭
				else BEEP=1;	
				delay_ms(10);
		}



	}
}




img

4. 资料清单&下载链接

0、常见使用问题及解决方法–必读!!!!

1、源程序

2、仿真图

3、功能要求

4、讲解视频

Altium Designer 软件资料

KEIL软件资料

Proteus软件资料

单片机学习资料

答辩技巧

设计报告常用描述

鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

img

资料下载链接(可点击):

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

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

相关文章

python: pywin32 + cef 模仿 mdict 界面

pip install pywin32 ; pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl (69.0 MB) Successfully installed cefpython3-66.1 cd \Python37\Lib\site-packages\cefpython3\examples copy pywin32.py win_cef.py 用的图片在 \Python37\Lib\site-packages…

R语言如果列表中有列表,且每个子列表有一个向量:如何转变为仅仅一个列表里面含有向量

引言 有些时候,比如批量读取表格中的某一列的时候,最终你会得到列表里面装列表,且每个列表里面只有一个向量的情况。我们的目标是不要中间这一层列表,而是直接变成列表-向量这种简单的结构,如何完成呢。我觉得有很多方…

深度解析:Stable Diffusion中negative prompt是如何作用的?

Diffusion Models专栏文章汇总:入门与实战 前言:stable diffusion推理的时候可以用negative prompt(负面提示词)去除我们不想出现的元素,这种方法的背后原理是什么?如何用代码实现呢?这篇博客就深入探讨这个问题。 目录 从分类器引导技术开始说起

参考测试信号:吉布斯效应

吉布斯效应是一种信号处理中常见的现象,特别在信号的突变或跃变时会显现出来。它在信号的瞬时过渡中可能引起频谱中的振铃或震荡,从而导致频谱图中出现不期望的高频成分。这种现象主要发生在信号经过截断或窗口函数等非平滑操作时,例如信号的…

TouchGFX之移植

在前面篇幅的基础上移植TouchGFX 1.配置FreeRTOS 2.使用touchgfx需要打开CRC 3.配置TouchGFX 4.生成代码,工程目录下多了TouchGFX文件夹 5.打开TouchGFX Designer工程 6.放置box控件,将颜色设置为红色 7.运行模拟器,生成代码 8.打开keil工程&…

GPU版本pytorch(Cuda12.1)安装教程

我们通过Pytorch官网安装torch的时候,会发现常常由于网速问题安装不成功,下面提供一种简单的方法可以成功安装Cuda12.1,亲测有效。 目录 一、常规方法 二、有效方法 2.1 创建并激活虚拟环境 2.2 添加清华源 2.3 安装torch 一、常规方法…

adb使用总结

adb连接到模拟器 adb devices 打开模拟器,找到设置。 多次点击版本号,切换到开发者模式 搜索进入开发者选项 开启USB调试 此时在终端输入adb devices就连接上了 使用adb查看安卓手机架构 adb shell getprop ro.product.cpu.abi 进入安卓手机的shell …

Vue快速入门以及基础标签使用

目录 开始示例el挂载点data数据对象 vue基本标签v-textv-htmlv-on计数器示例实现v-showv-ifv-bind图片切换示例v-forv-on补充v-model axios网络请求axios基本使用vue中使用axios 开始示例 1.首先在html页面中引入vue的生产环境&#xff0c;在body标签中粘上下面代码 <scrip…

wordpress搭建博客教程总结_01主题配置

目前搭建效果站 薪火相传 (yuetan.wang) 日间 月间 爱心 页面、 爱心冲击波! (yuetan.wang) 好看的主题分享 个人博客主题分享(WordPress) – Echo小窝 博客主要效果 1. Argon

Meta 推出 SeamlessM4T,无缝翻译和转录语音和文本

SeamlessM4T允许跨语音和文本单元进行评估的 BLASER 2.0 进行测试时&#xff0c;与目前最先进的语音到文本任务模型相比&#xff0c;SeamlessM4T 模型在语音到文本任务中对抗背景噪声和说话者变化的表现更好 Meta 宣布推出 SeamlessM4T&#xff0c;一种基础的多语言和多任务模…

网络编程——套接字和字节序

目录 一、BSD套接字接口1.1 套接字类型1.2 套接字的位置 二、字节序2.1 大小端2.2 大小端判断2.3 主机字节序和网络字节序2.4 字节序转换函数 一、BSD套接字接口 BSD套接字接口是BSD的进程间通信的方式&#xff0c;它不仅支持各种形式的网络应用而且它还是一种进程间通信的机制…

如何撰写具有传播力的品牌软文?

企业为了能将自己的品牌宣传推广出去&#xff0c;不论是在品牌初创还是成熟阶段都会撰写很多的新闻软文稿件发布在各大媒体平台上&#xff0c;为的就是能起到持续宣传和影响的效果&#xff01; 软文不但要求短小精悍&#xff0c;更注重内容的精准。不管是什么类型的文章&#…

[当前就业]2023年8月25日-计算机视觉就业现状分析

计算机视觉就业现状分析 前言&#xff1a;超越YOLO&#xff1a;计算机视觉市场蓬勃发展 如今&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;新版本的发布周期很快&#xff0c;每次迭代的性能都优于其前身。每 3 到 4 个月就会推出一个升级版 YOLO 变体&#xf…

计网第四章(网络层)(三)

IPV4地址的应用规划&#xff1a; 定长的子网掩码FLSM&#xff1a; 使用同一个子网掩码划分子网&#xff0c;每个子网所分配的IP地址数量相同&#xff0c;造成IP地址的浪费。 变长的子网掩码VLSM&#xff1a; 使用不同的子网掩码划分子网&#xff0c;每个子网所分配的IP地址…

ensp-Ipv6配置配置

ensp-Ipv6配置配置 &#x1f4ce;ipv6.zip&#x1f4ce;Ipv6 网络.docx

n-皇后问题(DFS)

n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上&#xff0c;使得皇后不能相互攻击到&#xff0c;即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n&#xff0c;请你输出所有的满足条件的棋子摆法。 输入格式 共一行&#xff0c;包含整数 n。 输出…

神经网络架构:最新进展和未来挑战

文章目录 1. 神经网络架构的演化历程1.1 感知机&#xff08;Perceptron&#xff09;1.2 多层感知机&#xff08;Multi-layer Perceptron&#xff0c;MLP&#xff09;1.3 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;1.4 循环神经网络&…

pwn学习(1)攻防世界-hello_pwn

下载链接&#xff1a; https://adworld.xctf.org.cn/challenges/list 主函数分析&#xff1a; 查看读入数据和比较数据的位置&#xff0c;会发现问题&#xff0c;他们是挨着的&#xff0c;且相差4个字节&#xff0c; 根据main()函数可以知道&#xff0c;dword_60106C是‘nua…

win10系统marven的安装与配置

一、安装jdk-8u191-windows-x64.exe 新建系统环境变量JAVA_HOME并配置Java搜索路径位置 二、下载apache-maven-3.9.4解压到C盘 https://dlcdn.apache.org/maven/maven-3/3.9.4/binaries/apache-maven-3.9.4-bin.zip 三、新建环境变量MARVEN_HOME和添加搜索路径 四、查看版本…

十六、软连接?

1、软连接&#xff1a; 在Ubuntu中&#xff0c;可以使用“ln”命令来创建软链接。软链接&#xff08;symbolic link&#xff09;也叫软连接&#xff0c;类似于windows中的快捷方式&#xff0c;它是一个指向另一个文件或目录的符号链接。 2、基础语法&#xff1a; ln -s 被软…