Keil5 实现 STM32F103C8T6 连接 DHT11 温湿度检测,OLED 显示+红灯报警代码示例
以下是一个使用 Keil5 编写基于 STM32F103C8T6 的 DHT11 温湿度检测系统,并通过 OLED 屏幕显示以及红灯报警的示例代码: ```c #include "stm32f10x.h" #include "dht11.h" #include "oled.h" #define RED_LED_PIN GPIO_Pin_13 #define RED_LED_GPIO_PORT GPIOC void GPIO_Configuration(void); void Delay_ms(uint16_t ms); void DHT11_Init(void); void OLED_Init(void); int main(void) { GPIO_Configuration(); DHT11_Init(); OLED_Init(); while (1) { // 读取 DHT11 数据 uint8_t data[5]; if (DHT11_Read_Data(data) == 0) { // 计算温度和湿度 float temperature = ((data[2] << 8) | data[3]) / 10.0; float humidity = ((data[0] << 8) | data[1]) / 10.0; // 在 OLED 上显示 OLED_ShowString(0, 0, "Temp:"); OLED_ShowFloat(50, 0, temperature, 1); OLED_ShowString(0, 2, "Hum:"); OLED_ShowFloat(50, 2, humidity, 1); // 判断温度是否过高或湿度过低进行报警 if (temperature > 30 || humidity < 40) { GPIO_SetBits(RED_LED_GPIO_PORT, RED_LED_PIN); } else { GPIO_ResetBits(RED_LED_GPIO_PORT, RED_LED_PIN); } } Delay_ms(2000); } } void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = RED_LED_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(RED_LED_GPIO_PORT, &GPIO_InitStructure); } void Delay_ms(uint16_t ms) { uint32_t i, j; for (i = 0; i < ms; i++) { for (j = 0; j < 535; j++) ; } } // 以下是额外需要注意的逻辑点: // 1. 确保 DHT11 传感器的连接正确,并检查其通信时序。 // 2. 优化延时函数,以提高系统的实时性。 // 3. 对温度和湿度的阈值判断可以根据实际需求进行调整。 ``` 这只是一个简单的示例代码,您可能需要根据实际硬件连接和需求进行修改和完善。还需要实现 `dht11.h` 和 `oled.h` 中的相关函数。 ######[AI写代码神器 | 734点数解答 | 2025-04-01 15:16:55]
- STM32F10x代码解析:多模块引用与变量定义及功能探讨(字节豆包 | 25点数解答 | 2025-05-06 01:13:43)200
- Keil编译报错:找不到core_cm3.h文件的原因及解决办法(字节豆包 | 666点数解答 | 2025-11-12 18:26:21)241
- Keil MDK编译报错“无法打开 core_cm3.h”,解决办法及注意事项全揭秘!(字节豆包 | 560点数解答 | 2025-11-12 18:31:47)93
- Java 继承实现:重温经典剪刀石头布游戏(字节豆包 | 451点数解答 | 2024-10-20 19:57:58)478
- Java实现链表反转:迭代与递归双解法详解及开发实战指南(DeepSeek | 1409点数解答 | 2026-03-15 15:09:29)53
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)369
- Python 实现课程信息输入存储:含输入检测与字典构建全流程 (GPT | 448点数解答 | 2024-05-30 15:08:47)239
- 51 单片机+Keil5:YL - 69 土壤湿度采集并在 LCD1602 显示的示例代码及注意事项(字节豆包 | 1239点数解答 | 2025-11-02 17:53:34)68
- 探寻数组中最长摆动子序列长度:思路剖析与代码优化(GPT | 758点数解答 | 2024-12-23 23:18:29)285
- 独家剖析:求解数组最长摆动子序列长度的代码实现与改进建议(GPT | 350点数解答 | 2024-12-23 23:20:54)282
- Three.js 示例代码解析:优化场景渲染与注意要点(字节豆包 | 164点数解答 | 2025-02-27 23:30:20)283
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)341