news 2026/6/10 18:57:26

探索STM32单片机仿真温湿度采集控制系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
探索STM32单片机仿真温湿度采集控制系统

stm32单片机仿真温湿度采集控制系统 有报告 演示视频 proteus仿真 keil 代码 以stm32为最小系统电路进行连接,用液晶显示屏显示温度、湿度数据。 通过按键可以设置阈值。 当温度达到报警的阈值时散热继电器开始工作,带动发动机进行转动,由此来达到散热的目的。 当湿度达到一定的阈值时,洒水继电器开始工作,这里以LED灯亮代表工作。

最近捣鼓了一个挺有意思的项目——STM32单片机仿真温湿度采集控制系统,跟大家分享分享其中的乐趣与门道。

系统构成与工具

这个系统基于STM32最小系统电路搭建,配合Proteus进行电路仿真,用Keil来编写代码,最后还有报告和演示视频记录整个过程。

硬件连接与功能实现

数据显示

用液晶显示屏来实时显示采集到的温度和湿度数据。硬件连接上,将STM32与液晶显示屏对应的引脚相连,比如数据引脚、控制引脚等,这样STM32就能把采集到的数据传递给显示屏进行展示。

阈值设置

通过按键可以灵活设置温度和湿度的阈值。在硬件连接中,按键一端接地,另一端连接到STM32的GPIO口。当按键按下,GPIO口电平发生变化,STM32就能检测到这个信号,进而进入设置阈值的程序流程。

报警与控制

当温度达到报警阈值时,散热继电器开始工作,带动发动机转动实现散热。湿度达到阈值时,洒水继电器工作,这里用LED灯亮来模拟。对于继电器和LED灯,一端连接电源,另一端连接到STM32的GPIO口,通过控制GPIO口的电平高低来控制继电器和LED灯的通断。

代码实现(部分关键代码展示)

// 初始化按键的GPIO口 void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; // 假设按键连接在PA0和PA1 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入 GPIO_Init(GPIOA, &GPIO_InitStructure); } // 读取按键状态 u8 KEY_Scan(u8 mode) { static u8 key_up = 1; // 按键松开标志 if (mode) key_up = 1; // 支持连按 if (key_up && (KEY0 == 0 || KEY1 == 0)) { delay_ms(10); // 消抖 key_up = 0; if (KEY0 == 0) return KEY0_PRES; else if (KEY1 == 0) return KEY1_PRES; } else if (KEY0 == 1 && KEY1 == 1) key_up = 1; return 0; // 无按键按下 } // 初始化液晶显示屏的GPIO口 void LCD_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE); // 配置数据端口 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); // 配置控制端口 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; GPIO_Init(GPIOD, &GPIO_InitStructure); LCD_WriteCom(0x38); // 8位模式,2行显示,5x7字体 delay_ms(5); // 其他初始化指令 } // 主函数 int main(void) { float temperature, humidity; u16 temp_threshold = 30, humi_threshold = 60; // 默认阈值 KEY_Init(); LCD_Init(); while (1) { u8 key_value = KEY_Scan(0); if (key_value == KEY0_PRES) { // 进入设置温度阈值流程 // 代码略 } else if (key_value == KEY1_PRES) { // 进入设置湿度阈值流程 // 代码略 } // 读取温湿度传感器数据(假设这里有一个函数Read_DHT11来读取数据) Read_DHT11(&temperature, &humidity); // 在液晶显示屏上显示温度和湿度 LCD_ShowNum(3, 0, temperature, 4, 16); LCD_ShowNum(3, 6, humidity, 4, 16); if (temperature >= temp_threshold) { GPIO_SetBits(GPIOA, GPIO_Pin_2); // 假设散热继电器连接在PA2 } else { GPIO_ResetBits(GPIOA, GPIO_Pin_2); } if (humidity >= humi_threshold) { GPIO_SetBits(GPIOA, GPIO_Pin_3); // 假设洒水继电器(LED灯)连接在PA3 } else { GPIO_ResetBits(GPIOA, GPIO_Pin_3); } delay_ms(1000); } }

代码分析

KEY_Init函数用于初始化按键的GPIO口,将其设置为上拉输入模式,这样按键按下时GPIO口电平会被拉低,STM32就能检测到按键动作。

KEYScan函数实现了按键的扫描功能,包含消抖处理,并且支持连续按键。keyup变量用于标记按键是否松开,避免一次按下多次触发。

LCD_Init函数负责初始化液晶显示屏的GPIO口,配置数据端口为推挽输出模式,控制端口也进行相应配置,并向液晶显示屏发送初始化指令,使其能够正常工作。

main函数中,首先初始化按键和液晶显示屏。通过KEY_Scan函数检测按键动作,进入相应的阈值设置流程。接着读取温湿度传感器数据,在液晶显示屏上显示,并根据当前温湿度和设定阈值来控制散热继电器和洒水继电器(LED灯)的工作状态,通过不断循环实现系统的持续运行。

这个STM32单片机仿真温湿度采集控制系统,从硬件连接到代码实现,一步步搭建起来,不仅实现了温湿度的采集与显示,还具备灵活的阈值设置和报警控制功能,是一个很有趣且实用的小项目,希望大家喜欢!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 23:49:38

河北省企业营销策划实战经验

河北省企业营销策划实战经验在当前竞争激烈的市场环境中,河北省的企业要想脱颖而出,必须具备高效的营销策划能力。本文将结合快印客众合青阳广告传媒(码客汀大城旗舰店)的实战经验,探讨如何在河北省进行有效的营销策划…

作者头像 李华
网站建设 2026/6/10 17:03:36

Docker与Vercel AI SDK集成实战(从零到上线仅需3小时)

第一章:Docker与Vercel AI SDK集成概述将 Docker 容器化技术与 Vercel AI SDK 相结合,为构建可扩展、高性能的 AI 驱动应用提供了强大支持。通过容器化部署 AI 应用,开发者能够在一致的运行环境中实现快速迭代、无缝迁移和高效协作。Vercel A…

作者头像 李华
网站建设 2026/6/10 17:14:35

Visual Studio Markdown编辑器终极指南:5分钟快速提升文档编写效率

Visual Studio Markdown编辑器终极指南:5分钟快速提升文档编写效率 【免费下载链接】MarkdownEditor2022 A Visual Studio extension 项目地址: https://gitcode.com/gh_mirrors/ma/MarkdownEditor2022 你是否曾经在编写技术文档时,不得不在源码编…

作者头像 李华
网站建设 2026/6/10 17:04:25

Wan2.2-T2V-A14B在游戏过场动画预制作中的高效应用

Wan2.2-T2V-A14B在游戏过场动画预制作中的高效应用 你有没有经历过这样的场景?策划写完一段史诗级的剧情:“主角孤身跃下千丈悬崖,身后爆炸火光冲天,滑翔伞在狂风中剧烈抖动——”然后美术团队一脸懵:“……这画面感在…

作者头像 李华
网站建设 2026/6/10 12:11:18

网页在线访问全攻略:5 步实现网站上线

网页在线访问全攻略:5步实现网站上线 要让搭建的网页在线访问,需完成以下核心步骤:准备服务器 → 注册域名并解析 → 上传网站文件 → 配置服务器和防火墙 → (可选)备案和HTTPS。下面是详细操作指南: 一、准备服务器:…

作者头像 李华
网站建设 2026/6/10 15:15:09

Wan2.2-T2V-A14B能否生成宠物行为模拟视频?

Wan2.2-T2V-A14B能否生成宠物行为模拟视频? 在智能内容创作的浪潮中,一个看似“无厘头”却极具代表性的挑战正在浮现:能不能让AI模型准确理解并生成“一只布偶猫打滚撒娇”的全过程? 这可不是简单的图像叠加或动作拼接——它要求模…

作者头像 李华