【Proteus仿真】【STM32单片机】井盖安全检测装置设计

文章目录

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


一、功能简介

本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602液晶显示模块、WIFI模块、蜂鸣器、LED按键、ADC PCF8591、角度/可燃气检测传感器等。

主要功能:
系统运行后,LCD1602显示井盖切斜角和阈值、可燃气浓度和阈值、井盖和可燃气状态;如果井盖正常,WIFI传输井盖角度、可燃气浓度及状态信息到终端;如果井盖正常,可燃气超限,蜂鸣器报警,指示灯亮,同时WIFI传输报警信息到终端;如果井盖未断裂和丢失,井盖倾斜角大于阈值,蜂鸣器报警,同时WIFI传输报警信息;如果井盖断裂或丢失,蜂鸣器报警,报警指示灯亮,WIFI传输报警信息;可通过按键K1和K2修改井盖角度阈值,K3和K4键修改可燃气浓度阈值;


二、软件设计

/*
作者:嗨小易(QQ技术交流群:570487280)*///系统数据显示
void sys_data_show(void)
{while(1){//角度显示lcd1602_show_nums(3,0,sys_ctrl.angle,3,0);//燃气浓度显示lcd1602_show_nums(3,1,sys_ctrl.gas,2,0);//角度阈值显示lcd1602_show_nums(8,0,sys_ctrl.angleh,3,0);//燃气浓度阈值显示lcd1602_show_nums(7,1,sys_ctrl.gash,2,0);//井盖状态显示if(sys_ctrl.sta==0)lcd1602_show_string(14,0,"OK");else if(sys_ctrl.sta==1)lcd1602_show_string(14,0,"DL");else if(sys_ctrl.sta==2)lcd1602_show_string(14,0,"DS");	//燃气状态显示if(sys_ctrl.gassta==0)lcd1602_show_string(12,1,"    ");else lcd1602_show_string(12,1,"Gash");break;			}
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);//角度+if(key==KEY1_PRESS){sys_ctrl.angleh++;if(sys_ctrl.angleh>180)sys_ctrl.angleh=0;}//角度-else if(key==KEY2_PRESS){	sys_ctrl.angleh--;if(sys_ctrl.angleh<0)sys_ctrl.angleh=180;			}//燃气+else if(key==KEY3_PRESS){sys_ctrl.gash++;if(sys_ctrl.gash>99)sys_ctrl.gash=0;}//燃气-else if(key==KEY4_PRESS){	sys_ctrl.gash--;if(sys_ctrl.gash<0)sys_ctrl.gash=99;			}
}//系统功能控制
void sys_fun_ctrl(void)
{static u8 cnt[3];u8 buf[4];//如果井盖正常if(sys_ctrl.sta==0){//如果井盖角度倾斜高于阈值和可燃气超限,报警if(sys_ctrl.angle>sys_ctrl.angleh || sys_ctrl.gassta==1)beep_alarm(1,1000);	//如果井盖角度倾斜高于阈值,报警if(sys_ctrl.angle>sys_ctrl.angleh){cnt[0]++;if(cnt[0]%SPEED==0){UART_SendString("\r\n井盖倾斜\r\n");	}}else{LED_DL=1;LED_DS=1;cnt[0]++;if(cnt[0]%SPEED==0){UART_SendString("\r\n井盖OK\r\n");	}	}//如果可燃气超限if(sys_ctrl.gas>sys_ctrl.gash)sys_ctrl.gassta=1;else sys_ctrl.gassta=0;if(sys_ctrl.gassta==1){LED_KRQ=0;cnt[1]++;if(cnt[1]%SPEED==0){UART_SendString("\r\n可燃气超限...\r\n");	}				}//如果天然气正常else{LED_KRQ=1;cnt[1]++;if(cnt[1]%SPEED==0){UART_SendString("\r\n可燃气OK\r\n");	}			}//WIFI传输数据,角度、可燃气cnt[2]++;if(cnt[2]%SPEED==0){UART_SendString("\r\n井盖角度:");buf[0]=sys_ctrl.angle/100+0x30;buf[1]=sys_ctrl.angle%100/10+0x30;buf[2]=sys_ctrl.angle%100%10+0x30;buf[3]='\0';UART_SendString(buf);UART_SendString("\r\n");UART_SendString("可燃气浓度:");buf[0]=sys_ctrl.gas/10+0x30;buf[1]=sys_ctrl.gas%10+0x30;buf[2]='\0';UART_SendString(buf);UART_SendString("\r\n");		}}//如果井盖不正常正常,断裂或丢失else{beep_alarm(1,1000);//如果井盖断裂,指示灯报警if(sys_ctrl.sta==1){LED_DL=0;LED_DS=1;cnt[0]++;if(cnt[0]%SPEED==0){UART_SendString("\r\n井盖断裂...\r\n");	}	}//如果井盖丢失,指示灯报警if(sys_ctrl.sta==2)	{LED_DL=1;LED_DS=0;cnt[0]++;if(cnt[0]%SPEED==0){UART_SendString("\r\n井盖丢失...\r\n");	}			}}	
}

三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

联系作者

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

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

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

相关文章

如何制作一份精美的数据分析可视化报告?详细教程

在数据可视化分析的最后阶段&#xff0c;所有的分析、研究、推导以及得出的结论&#xff0c;都汇总成了一份详实的报告。这份报告不仅是对整个数据分析旅程的总结&#xff0c;更是向读者展示这段旅程所取得的成果。 那么&#xff0c;数据分析报告该如何制作呢&#xff1f;不用…

python--宣传篇--personal-qrcode个性二维码

文章目录 准备代码效果 准备 代码 from MyQR import myqr import osdef get_img_qrcode(words, save_name, picture, colorizedTrue):if save_name[-3:] in ["jpg", "png", "gif"]:if picture[-3:] in ["png", "jpg", &qu…

nicegui学习使用

https://www.douyin.com/shipin/7283814177230178363 python轻量级高自由度web框架 - NiceGUI (6) - 知乎 python做界面&#xff0c;为什么我会强烈推荐nicegui 秒杀官方实现&#xff0c;python界面库&#xff0c;去掉90%事件代码的nicegui python web GUI框架-NiceGUI 教程…

Day2 DOM元素的操作

2.1 操作元素样式属性 1.通过 JS 设置/修改标签元素的样式属性 比如通过轮播图小圆点自动更换颜色样式 点击按钮可以滚动图片这是移动的图片的位置 left 等等 2.通过 style 属性操作 CSS 1.语法&#xff1a; <!DOCTYPE html> <html lang"en"> ​ <…

Java实战:Spring Boot整合Canal与RabbitMQ实时监听数据库变更并高效处理

引言 在现代微服务架构中&#xff0c;数据的变化往往需要及时地传播给各个相关服务&#xff0c;以便于同步更新状态或触发业务逻辑。Canal作为一个开源的MySQL binlog订阅和消费组件&#xff0c;能够帮助我们实时捕获数据库的增删改操作。而RabbitMQ作为一款消息中间件&#x…

C# 用 System.Xml 读 Freeplane.mm文件,生成测试用例.csv文件

Freeplane 是一款基于 Java 的开源软件&#xff0c;继承 Freemind 的思维导图工具软件&#xff0c;它扩展了知识管理功能&#xff0c;在 Freemind 上增加了一些额外的功能&#xff0c;比如数学公式、节点属性面板等。 编写 read_Xml.cs 如下 using System; using System.IO…

kmc密钥管理的基本功能是什么

KMC(密钥管理中心)在公钥基础设施中占据着举足轻重的地位&#xff0c;它是专门负责为CA(证书授权)系统提供一系列密钥服务的核心组件。这些服务包括但不限于密钥的生成、保存、备份、更新、恢复以及查询等&#xff0c;旨在解决分布式企业应用环境中大规模密码技术应用所带来的密…

Docker从0到1的开始【入门篇】

Docker是一种流行的容器化平台&#xff0c;它允许开发人员将应用程序及其所有依赖项打包到一个标准化的单元中&#xff0c;从而实现快速部署和可移植性。在本文中&#xff0c;我们将列出一些常用的Docker命令&#xff0c;以帮助您更好地了解和使用Docker。 1. 安装Docker 要安…

R语言:多值提取到点

ArcGIS中有相关工具实现多值提取到点的功能&#xff0c;在这里&#xff0c;我将使用R语言进行操作&#xff1a; library(dplyr) library(readxl) library(sf) library(raster)setwd("D:/Datasets") Bio <- stack(paste0("D:/Datasets/Data/worldclim2_1km/…

DEYO: DETR with YOLO for End-to-End Object Detection论文翻译

DEYO&#xff1a;DETR与YOLO用于端到端目标检测 摘要 DETR的训练范式在很大程度上取决于在ImageNet数据集上预训练其骨干。然而&#xff0c;由图像分类任务和一对一匹配策略提供的有限监督信号导致DETR的预训练不充分的颈部。此外&#xff0c;在训练的早期阶段匹配的不稳定性会…

web接入海康相机视屏流 注意事项 - 编码H264

视屏编码&#xff08;主码流和子码流都改&#xff09;必须是H264&#xff0c;H265编码webrtc解析不了编码修改后&#xff0c;先使用vlc播放器&#xff0c;播放视屏编码修改后&#xff0c;重启相机&#xff0c;重启视屏录像机&#xff08;如果相机是挂在视屏录像机上的&#xff…

3.7 FreeRTOS day2

思维导图&#xff1a; 1.使用ADC采样光敏电阻数值&#xff0c;如何根据这个数值调节LED灯亮度。 配置ADC以读取光敏电阻的电压值&#xff0c;配置PWM以控制LED的亮度。使用ADC读取光敏电阻的电压值。这个值将随着环境光线的变化而变化。将ADC读取的原始值映射到一个更易于处理…

Django高级之-缓存

Django高级之-缓存 一 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务…

.Net6使用JWT认证和授权

文章目录 目的实现案例一.项目所需包&#xff1a;二.配置项目 appsettings.json 文件&#xff1a;三.创建Model文件夹&#xff0c;添加AppConfig类和UserRole类1.AppConfig类获取appsettings.json文件中的值2.UserRole类用于区分用户信息和权限 四.主体代码案例&#xff1a;1.L…

第十三届“中关村青联杯”全国研究生数学建模竞赛-A题:多无人机协同任务规划(续)(附matlab代码实现)

目录 5.3 问题 3 的求解 5.3.1 问题 3 的分析 5.3.2 无人机任务规划问题的求解 5.3.3 结论与分析

centos离线安装 k8s (实操可用)

全部安装包rpm下载&#xff08;已整理好k8s和docker&#xff09;&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1ATv8BPijhvIKWz4hMnkx6Q?pwdt5db 提取码&#xff1a;t5db 将文件下载以后&#xff0c;解压到服务器 #执行所有docker-rpm包 yum -y localinstall *.rpm…

centos安装mqtt

mqtt如何在centos7.x中安装 1、下载 wget https://www.emqx.com/zh/downloads/broker/5.0.20/emqx-5.0.20-el7-amd64.rpm 2、安装 rpm -ivh emqx-5.0.20-el7-amd64.rpm 也可以 yum install emqx-5.0.20-el7-amd64.rpm -y 3、启动 systemctl start emqx 4、查…

OpenCV开发笔记(七十六):相机标定(一):识别棋盘并绘制角点

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://blog.csdn.net/qq21497936/article/details/136535848 各位读者&#xff0c;知识无穷而人力有穷&#xff0c;要么改需求&#xff0c;要么找专业人士&#xff0c;要么自己研究 红胖子(红模仿…

阿珊比较Vue和React:两大前端框架的较量

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【你也能从零基础学会网站开发】Web建站之HTML+CSS入门篇 常用HTML标签(3)

&#x1f680; 个人主页 极客小俊 ✍&#x1f3fb; 作者简介&#xff1a;web开发者、设计师、技术分享 &#x1f40b; 希望大家多多支持, 我们一起学习和进步&#xff01; &#x1f3c5; 欢迎评论 ❤️点赞&#x1f4ac;评论 &#x1f4c2;收藏 &#x1f4c2;加关注 HTML框架集…