【Proteus仿真】【STM32单片机】粮仓温湿度控制系统设计
文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用Proteus8仿真STM32单片机控制器,使用声光报警模块、LCD1602显示模块、DHT11温湿度模块、继电器模块、加热加湿除湿风扇等。
主要功能:
系统运行后,LCD1602显示传感器检测的温湿度值;
默认以自动模式运行,若按下K4键切换为手动模式,此时可以
通过K1和K2控制加湿/除湿和加热/散热开关。当再次按下K4键切换为自动模式;自动模式下,实时检测温度及湿度值,
如果温度高于上限,声光报警,打开散热;
如果温度低于下限,声光报警,打开加热;
温度正常,声光报警取消,关闭加热/散热;
如果湿度高于上限,声光报警,打开除湿;
如果湿度低于下限,声光报警,打开加湿;
如果湿度正常,声光报警关闭,关闭加湿除湿;
可通过K3键进入阈值设置,K1和K2调节,设置好后可按下K4键返回主界面。
设定好的阈值可存入存储器中掉电不丢失。
二、软件设计
/*
作者:嗨小易(QQ:3443792007)
*///系统数据获取
void sys_data_get(void)
{static u8 i=0;while(1){//读取DHT11温湿度值i++;if(i%10==0)DHT11_Read_Data(&sys_ctrl.temp,&sys_ctrl.humi); break;}
}//系统数据显示
void sys_data_show(void)
{while(1){ //温度显示lcd1602_show_nums(3,0,sys_ctrl.temp,2,0);//湿度显示lcd1602_show_nums(3,1,sys_ctrl.humi,2,0);//温度阈值显示lcd1602_show_nums(7,0,sys_ctrl.templ,2,0);lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);//湿度阈值显示lcd1602_show_nums(7,1,sys_ctrl.humil,2,0);lcd1602_show_nums(10,1,sys_ctrl.humih,2,0); //阈值设置位置闪烁switch(sys_ctrl.mode){case 1://温度下限lcd1602_show_string(7,0," ");delay_ms(100);lcd1602_show_nums(7,0,sys_ctrl.templ,2,0);break;case 2://温度上限lcd1602_show_string(10,0," ");delay_ms(100);lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);break;case 3://湿度下限lcd1602_show_string(7,1," ");delay_ms(100);lcd1602_show_nums(7,1,sys_ctrl.humil,2,0);break;case 4://湿度上限lcd1602_show_string(10,1," ");delay_ms(100);lcd1602_show_nums(10,1,sys_ctrl.humih,2,0);break;}//手动状态显示if(sys_ctrl.auto_flag)lcd1602_show_string(14,1,"SD");else lcd1602_show_string(14,1,"Au");break; }
}//系统数据设置
void sys_data_set(void)
{u8 key=0;static u8 jcs_flag=0;//加湿除湿标记static u8 jsr_flag=0;//加散热标记key=KEY_Scan(0);//模式设置if(key==KEY3_PRESS){//自动模式下,模式设置if(sys_ctrl.auto_flag==0){sys_ctrl.mode++;if(sys_ctrl.mode>=5)sys_ctrl.mode=1;}//手动模式下,停止开关else{JS_PIN=1;CS_PIN=1;JR_PIN=1;SR_PIN=1; }}//在设置模式下,加else if(key==KEY1_PRESS){switch(sys_ctrl.mode){case 1://温度下限 sys_ctrl.templ++;if(sys_ctrl.templ>99)sys_ctrl.templ=0;break;case 2://温度上限 sys_ctrl.temph++;if(sys_ctrl.temph>99)sys_ctrl.temph=0;break;case 3://湿度下限 sys_ctrl.humil++;if(sys_ctrl.humil>99)sys_ctrl.humil=0;break;case 4://湿度上限 sys_ctrl.humih++;if(sys_ctrl.humih>99)sys_ctrl.humih=0;break;}//手动模式,加湿/除湿控制if(sys_ctrl.auto_flag==1){jcs_flag=!jcs_flag;//加湿if(jcs_flag==1){JS_PIN=0;CS_PIN=1; }//除湿else{JS_PIN=1;CS_PIN=0; }} }//在设置模式下,减else if(key==KEY2_PRESS){switch(sys_ctrl.mode){case 1://温度下限 sys_ctrl.templ--;if(sys_ctrl.templ<0)sys_ctrl.templ=99;break;case 2://温度上限 sys_ctrl.temph--;if(sys_ctrl.temph<0)sys_ctrl.temph=99;break;case 3://湿度下限 sys_ctrl.humil--;if(sys_ctrl.humil<0)sys_ctrl.humil=99;break;case 4://湿度上限 sys_ctrl.humih--;if(sys_ctrl.humih<0)sys_ctrl.humih=99;break;}//手动模式,加热/散热控制if(sys_ctrl.auto_flag==1){jsr_flag=!jsr_flag;//加热if(jsr_flag==1){JR_PIN=0;SR_PIN=1;}//散热else{JR_PIN=1;SR_PIN=0;} } }else if(key==KEY4_PRESS){if(sys_ctrl.mode!=0)//确定{sys_ctrl.mode=0;//将设定好的阈值写入到存储器中AT24CXX_WriteOneByte(0,sys_ctrl.templ);AT24CXX_WriteOneByte(1,sys_ctrl.temph);AT24CXX_WriteOneByte(2,sys_ctrl.humil);AT24CXX_WriteOneByte(3,sys_ctrl.humih); } else//自动/手动切换{sys_ctrl.auto_flag=!sys_ctrl.auto_flag;//自动模式下,关闭加湿/除湿/加热/散热if(sys_ctrl.auto_flag==0){JS_PIN=1;CS_PIN=1;JR_PIN=1;SR_PIN=1; } } }
}//应用控制系统
void appdemo_show(void)
{u8 i=5;KEY_Init();BEEP_Init();DHT11_Init();ctrl_pin_init();AT24CXX_Init();lcd1602_init();//LCD1602初始化sys_parm_init();//系统参数初始化//读取温度数据,等待稳定while(i--){DHT11_Read_Data(&sys_ctrl.temp,&sys_ctrl.humi);delay_ms(100); }sys_open_show();//系统初始界面显示while(1){sys_data_get();//系统数据获取sys_data_show();//系统数据显示sys_data_set();//系统数据设置sys_fun_ctrl();//系统功能控制 }
}
三、实验现象




联系作者
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。
相关文章:
【Proteus仿真】【STM32单片机】粮仓温湿度控制系统设计
文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真STM32单片机控制器,使用声光报警模块、LCD1602显示模块、DHT11温湿度模块、继电器模块、加热加湿除湿风扇等。 主要功能: 系统运行后,LCD1602显示…...
九年时间,倾情投入,JumpServer开源堡垒机v3.0正式发布
2023年2月27日,JumpServer开源堡垒机正式发布v3.0版本。在JumpServer开源堡垒机v3.0版本的设计过程中,我们始终秉持着“内外兼修”的原则,旨在进一步提升用户的使用体验,真正用心做好一款开源堡垒机。 在JumpServer v3.0版本中&…...
【ROS学习笔记5】服务通信
【ROS学习笔记5】服务通信 文章目录【ROS学习笔记5】服务通信前言一、服务通信的理论模型二、服务通信自定义srv三、服务通信自定义srv的Cpp实现四、服务通信自定义srv的Python实现五、Reference写在前面,本系列笔记参考的是AutoLabor的教程,具体项目地址…...
“华为杯”研究生数学建模竞赛2006年-【华为杯】A题:Ad Hoc 网络中的区域划分和资源分配问题(附获奖论文)
赛题描述 Ad Hoc网络是当前网络和通信技术研究的热点之一,对于诸如军队和在野外作业的大型公司和集团来说,Ad Hoc网络有着无需基站、无需特定交换和路由节点、随机组建、灵活接入、移动方便等特点,因而具有极大的吸引力。 在Ad Hoc网络中,节点之间的通信均通过无线传输来完…...
编写第一个JAVA程序,常见踩坑记录
编写第一个JAVA程序 预备环境 电脑需要安装JDK 及 配置环境变量打开cmd 输入java -version 能运行在说 创建工程 创建文件夹javaCode(随意叫…) 创建文件Hello.java 编写代码 public class Hello{public static void main(String[] args){System.out.print("hello wo…...
求职陷阱:Lazarus组织以日本瑞穗銀行等招聘信息为诱饵的攻击活动分析
概述 Lazarus组织是疑似具有东北亚背景的APT组织,奇安信威胁情报中心内部追踪编号为APT-Q-1,因2014年攻击索尼影业开始受到广泛关注,其攻击活动最早可追溯到2007年。该组织早期主要针对其他国家政府机构,以窃取敏感情报为目的&am…...
【C语言每日一题】判断字符串旋转结果(附加字符串左旋详解)
【C语言每日一题】—— 判断字符串旋转结果😎😎😎 目录 💡前言🌞: 💛字符串左旋题目💛 💪 解题思路的分享💪 😊题目源码的分享…...
SpringSecurity+JWT+Redis进行用户鉴权和接口权限的控制
系统的登录,都做些什么?用户访问登录页时:会发起一个获取图片验证码的请求,后端先生成一个uuid代表此次的验证码,接着生成 "ab?答案" 的表达式,将前面的内容转换成流生成图片,后面的答案则存储到…...
七大排序(Java)
目录 一、插入排序 1. 直接插入排序 2. 希尔排序 二、选择排序 1. 直接选择排序 2. 堆排序 三、交换排序 1. 冒泡排序 2. 快速排序 四、归并排序 五、总结 一、插入排序 1. 直接插入排序 抓一张牌,在有序的牌中,找到合适的位置并且插入。 时间…...
分享一些可以快速掌握python语法的小技巧
下面是我总结的一些有助于快速掌握 Python 语法的小技巧,欢迎一起交流。 注释:在代码中添加注释可以帮助你和其他人理解代码的目的和功能。在 Python 中,使用 # 符号来添加单行注释,使用三引号 """ 或 来添加多行…...
1.FFmpeg-音视频基础
专栏介绍基于最新的FFmpeg5.1.2版本讲解学习, 跟随博主一起学习ffmpeg: 本专栏学习流程为: FFmpeg安装、...
Parasoft的自动化测试平台到底强在哪?
在如今产品迭代如此之快的大背景下,软件测试这项工作越来越被大家所重视,但是通常情况下大家都是选择在产品上线前再去做测试,这个时候就会面临很多麻烦和挑战。首先,产品已经开发好之后,体量比较大,要从哪…...
FastDDS-0.简介
FastDDS简介 eProsima Fast DDS 是 DDS (Data Distribution Service) 协议的一个C语言实现版本,该协议由 Object Management Group (OMG) 组织定义。 eProsima Fast DDS 库既提供了一个应用编程接口(API),又提供了一种通信协议&a…...
Flutter入门进阶之旅 -开源Flutter项目
开源Flutter项目 该项目为纯flutter端项目,采用aar方式寄生在原生APP中,作为APP中的一个独立模块 在业务逻辑上做到与原生APP完全隔离,Flutter端开发者,可完全不用关注原生端的业务模块 两端开发彼此业务隔离,缩小了对…...
Opencv项目实战:21 美国ASL手势识别
0、项目介绍 首先,我可以保证在这里,你并不需要多么了解深的机器学习算法,我的初衷是通过本项目,激发大家学习机器学习的动力。选择这种手势原因是因为只有24个字母,你的电脑足以带的动,虽然我只训练A、B、…...
强化学习RL 01: Reinforcement Learning 基础
目录 RL理解要点 1. RL数学基础 1.1 Random Variable 随机变量 1.2 概率密度函数 Probability Density Function(PDF) 1.3 期望 Expectation 1.4 随机抽样 Random Sampling 2. RL术语 Terminologies 2.1 agent、state 和 action 2.2 策略 policy π 2.3 奖励 reward …...
C语言之练习题合集
💗 💗 博客:小怡同学 💗 💗 个人简介:编程小萌新 💗 💗 如果博客对大家有用的话,请点赞关注再收藏 🌞 文章目录leetcode 题号:728. 自除数leetcode 题号:238.…...
sublimeText3新建文件自动添加注释头
参考: https://github.com/shiyanhui/FileHeader/blob/master/README.rst https://packagecontrol.io/packages/FileHeader https://github.com/shiyanhui/FileHeader fileheader:https://codeload.github.com/shiyanhui/FileHeader/zip/refs/heads/m…...
AndroidStudio打包HBuilderX的H5+项目为安卓App【一次过,无任何异常报错】
目录 1.查看HBuilderX的版本号 2.下载Dcloud上对应的安卓SDK 3.下载完安卓SDK后,我们解压它,注意不要放在任何有中文组成的文件夹中【是否有中文决定于你鼠标单击上面路径后,第一张图还没鼠标单击,第二张已鼠标单击,…...
【Linux】进程概念
目录 一、基本概念 二、查看进程 三、系统调用获取进程标示符 1、获取自己的PID 2、获取父进程的PID 四、创建进程 1、初识fork 2、使用fork的方式 五、进程状态 1、阻塞 2、挂起 3、R状态 4、S状态 5、D状态 6、T状态 6.1、kill指令 6.2、暂停进程与继续进程 …...
深度解析ConcurrentHashMap设计演进:从分段锁到无锁化的并发之路
在Java并发编程领域,ConcurrentHashMap绝对是“并发容器扛鼎之作”——它既解决了HashMap并发环境下的数据不一致(死循环、数据丢失)问题,又突破了Hashtable全表锁的性能瓶颈,成为高并发场景下K-V存储的首选。自JDK1.5…...
编写程序让智能洗手液机检测手部靠近,自动出液,无需按压。
🧼 项目实战:基于红外测距的智能洗手液机控制系统一、实际应用场景描述 (Scenario)在机场、医院、办公楼等公共场所,传统的按压式洗手液机存在卫生隐患——每个人都需要接触同一个泵头,容易造成细菌交叉感染。目标:通过…...
别再傻傻用软件SPI了!STM32F407驱动ST7789屏,用HAL库+DMA2_Stream3实现丝滑刷屏
STM32F407硬件SPIDMA驱动ST7789屏幕的极致性能优化实战 如果你正在使用STM32F407驱动ST7789屏幕,并且对刷新率不满意,这篇文章将带你从"能用"到"高效"的蜕变。我们将深入探讨三种驱动方案的性能差异,并重点解析如何通过D…...
FGF-21蛋白的代谢调控机制与临床转化前景
一、引言成纤维细胞生长因子21(FGF-21)是成纤维细胞生长因子家族中的一种内分泌代谢调节因子。自其被发现以来,该蛋白因其在糖脂代谢、能量稳态调控及胰岛素敏感性改善等方面的独特作用,逐渐成为代谢性疾病研究领域的前沿热点。与…...
WPF图片处理避坑指南:Image控件Stretch属性的4种模式详解(含效果对比图)
WPF图片处理避坑指南:Image控件Stretch属性的4种模式详解 刚接触WPF开发的工程师们,是否经常遇到图片显示变形、比例失调的困扰?Image控件的Stretch属性看似简单,却藏着不少设计哲学。今天我们就来彻底拆解这个影响图片显示效果的…...
LIN总线测试避坑指南:为什么你的校验和测试总通不过?从经典型到增强型的实战解析
LIN总线校验和测试全攻略:从算法原理到故障排查的深度实践 在汽车电子系统的开发与测试中,LIN总线作为CAN总线的补充,广泛应用于车门模块、座椅控制、空调系统等对带宽要求不高的场景。而校验和作为LIN报文数据完整性的重要保障,其…...
社交媒体机器人检测的终极对决:TwiBot-22基准测试深度解析
社交媒体机器人检测的终极对决:TwiBot-22基准测试深度解析 【免费下载链接】TwiBot-22 项目地址: https://gitcode.com/gh_mirrors/tw/TwiBot-22 在数字时代,社交媒体上的机器人账号已成为信息传播的重要参与者。它们既能推动正面信息传播&#…...
具身智能:千亿赛道崛起、多元场景落地与数据标注协同发展
2025被称为“具身智能元年”! “具身智能” 也首次被写入中国《政府工作报告》,纳入国家战略规划,各地密集出台专项政策布局赛道。 数据标注作为具身智能涌现的核心基石,也同步完成了从劳动密集型向高技术专业化的范式升级。 具…...
老王-十条江湖铁律:比读百本厚黑书更管用
十条江湖铁律 ——比读百本厚黑书更管用“人若不想被算计, 就必须记住这10条—— 不是教你变坏, 而是—— 让你在复杂世界里,活得清醒且安全。”🏙️ 1. 小地方发达,速换圈子“庙小妖风大,池浅王八多。”小…...
Umi-OCR插件技术深度解析:如何构建高效的文字识别工作流
Umi-OCR插件技术深度解析:如何构建高效的文字识别工作流 【免费下载链接】Umi-OCR_plugins Umi-OCR 插件库 项目地址: https://gitcode.com/gh_mirrors/um/Umi-OCR_plugins Umi-OCR插件库为文字识别任务提供了多样化的解决方案,涵盖了从本地CPU加…...
