news 2026/2/3 5:08:28

探索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/1/31 2:02:27

从“接得住”到“出得快”,CAXA成为制造一线的交付保障

制造企业的设计部门,其核心价值在于能否快速、准确地将客户需求转化为可指导生产的标准化数据包(图纸、BOM等)。这个流程可以分解为两个关键环节:“接得住”外来数据和“出得快”内部交付物。CAXA CAD的价值正是在于打通了这两个环…

作者头像 李华
网站建设 2026/1/31 18:08:58

Wan2.2-T2V-A14B模型安全性评估:是否存在偏见或有害输出?

Wan2.2-T2V-A14B模型安全性评估:是否存在偏见或有害输出? 在影视、广告和数字内容创作的前沿战场上,AI生成视频正从“能用”迈向“可信”。 而真正决定它能否被大规模商用的关键,并不在于画面多逼真、动作多流畅——而是&#xff…

作者头像 李华
网站建设 2026/1/31 8:44:20

嵌入式RTOS性能深度解析:创新评估框架与实战指南

嵌入式RTOS性能深度解析:创新评估框架与实战指南 【免费下载链接】zephyr Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures. 项目地址: https://gitcode.com…

作者头像 李华
网站建设 2026/1/27 23:31:10

17、深入理解字符串处理:从表示到指令应用

深入理解字符串处理:从表示到指令应用 1. 引言 字符串操作在编程任务中占据着重要地位,不同的字符串表示方式和处理指令为编程提供了丰富的选择。本文将详细介绍字符串的表示方法、相关处理指令,以及如何使用这些指令进行字符串操作和测试。 2. 字符串表示 字符串可以采…

作者头像 李华
网站建设 2026/2/2 16:23:56

jQuery Mobile滑块组件5分钟快速上手:打造完美移动端滑动体验

jQuery Mobile滑块组件5分钟快速上手:打造完美移动端滑动体验 【免费下载链接】jquery-mobile jquery-archive/jquery-mobile: jQuery Mobile 是 jQuery 团队开发的一个移动 web 应用框架,旨在为跨平台的移动设备提供一致的 UI 组件和触屏优化体验。不过…

作者头像 李华
网站建设 2026/1/26 12:56:21

专业的河北省企业营销策划公司

专业的河北省企业营销策划公司在当前竞争激烈的市场环境中,选择一家专业的营销策划公司对于企业的成功至关重要。河北省作为中国北方重要的经济区域之一,拥有众多优秀的企业营销策划公司。本文将重点介绍其中一家杰出的代表——快印客众合青阳广告传媒&a…

作者头像 李华