首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]揭秘C语言读取DHT传感器:轻松实现精准温湿度监测

发布于 2025-07-13 06:20:19
0
296

引言DHT传感器是一种常用的温湿度检测设备,因其高精度、低功耗、易用性等特点,在智能家居、环境监测等领域得到了广泛应用。本文将详细介绍如何使用C语言读取DHT传感器,实现精准的温湿度监测。DHT传感器...

引言

DHT传感器是一种常用的温湿度检测设备,因其高精度、低功耗、易用性等特点,在智能家居、环境监测等领域得到了广泛应用。本文将详细介绍如何使用C语言读取DHT传感器,实现精准的温湿度监测。

DHT传感器简介

DHT传感器包括DHT11、DHT22等多种型号,其中DHT11具有3个引脚,DHT22具有4个引脚。本文以DHT11为例进行讲解。

硬件连接

  1. DHT11引脚说明

    • VCC:接3.3V或5V电源。
    • GND:接地。
    • DATA:数据输出,用于读取温湿度数据。
  2. 连接方法

    • 将DHT11的VCC引脚连接到单片机的3.3V或5V电源。
    • 将DHT11的GND引脚连接到单片机的GND。
    • 将DHT11的DATA引脚连接到单片机的数字引脚,例如GPIO2。

软件实现

  1. 初始化串口

    void USART_Init(void)
    { USART_InitTypeDef USART_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE);
    }
  2. 读取DHT11数据

    float Read_DHT11(void)
    { unsigned char i, j; unsigned char buf[5] = {0}; float temp, hum; unsigned char laststate = 1; unsigned char currentstate; for (i = 0; i < 5; i++) { buf[i] = 0; for (j = 0; j < 8; j++) { currentstate = digitalRead(GPIO2); if (currentstate != laststate) { unsigned long t = micros(); while (digitalRead(GPIO2) != laststate) { if ((micros() - t) > 20000) return -1; } if ((micros() - t) > 40) { buf[i] |= (1 << j); } } laststate = currentstate; } } if (buf[0] + buf[1] + buf[2] + buf[3] + buf[4] == 0xAA) { temp = (buf[2] * 256 + buf[3]) / 10; hum = (buf[0] * 256 + buf[1]) / 10; } else { temp = -1; hum = -1; } return temp;
    }
  3. 主函数

    int main(void)
    { USART_Init(); while (1) { float temp = Read_DHT11(); if (temp != -1) { printf("Temperature: %.2f C\n", temp); printf("Humidity: %.2f %%\n", temp); } else { printf("Error: Read DHT11 failed!\n"); } delay_ms(1000); }
    }

总结

通过以上步骤,您可以使用C语言轻松实现DHT11传感器的读取,从而实现精准的温湿度监测。在实际应用中,可以根据需要进行修改和扩展,例如使用串口通信、网络通信等方式将数据传输到其他设备或平台。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流