十一、DHT11 温湿度检测(OLED显示)

这篇具有很好参考价值的文章主要介绍了十一、DHT11 温湿度检测(OLED显示)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、固件库模板

见博客:stm32f103c8t6新建固件库模板(可自取)

二、准备资料

  1. 固件库模板

  2. MDK5开发环境

  3. stm32参考手册

  4. 利用固件库模板点灯工程(下面第三行,手动狗头)

  5. OLED模块资料

  6. DHT11数据手册

  7. 利用固件库模板点灯工程(下面第三行,手动狗头)

  8. CH340 USB→TTL模块

实验程序已经发布到百度网盘,本文末有链接可以自取

stm32参考手册

串口协议查看这篇博客USART串口协议

stm32中断概念STM32中断应用概括

DHT11模块资料:DHT11

IIC协议查看这篇博客IIC协议

OLED数据手册查看SSD1306Z

字模链接 链接:https://pan.baidu.com/s/1k_ay03xnAdGChirlTpTIVA
提取码:OLED

串口调试工具 :https://pan.baidu.com/s/1V-jRJzb0INDXDLo9I4CJ6A 提取码:0000

三、DHT11 简介

DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度5~95%RH, 温度-20~+60℃

查看数据手册在这:DHT11
下面的解释也都是引用数据手册内容,大家可以试着自己来阅读手册,当然想快速上手看下文即可,

1. 引脚定义

标号 PIN 引脚说明
1 GND 模块电源地
2 VCC 模块电源正
3 DATA 数据引脚

2. DHT11 数据结构

DHT11数字湿温度传感器采用单总线数据格式。即,单个数据引脚端口完成输入输出双向传输。其数据包由5Byte( 40Bit)组成。数据分小数部分和整数部分,具体格式在下面说明。
一次完整的数据传输为40bit,高位先出
数据格式:
8bit湿度整数数据+8bit湿度小数数据
+8bit温度整数数据+8bit温度小数数据
+8bit校验和
校验和数据为前四个字节相加。
传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。如果,某次从传感器中读取如下5Byte数据:
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
由以上数据就可得到湿度和温度的值,计算方法:
humi (湿度)= byte4. byte3=45.0 (%RH)
temp (温度)= byte2. byte1=28.0 (℃ )
jiaoyan(校验)= byte4+ byte3+ byte2+ byte1=73(=humi+temp)(校验正确)
注意: DHT11一次通讯时间最大3ms,主机连续采样间隔建议不小于100ms。

3. DHT11的传输时序

3.1 DHT11 开始发送数据流程

dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
通讯过程
用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主 机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集, 用户可选择读取部分数据.从模式下,DHT11接收到开始信号触发一次温湿度采集, 如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集.

主机发送开始信号后,延时等待 20us-40us 后读取 DHT11 的回应信号,读取总线为低电平,说明 DHT11 发送响应信号, DHT11 发送响应信号后,再把总线拉高,准备发送数据,每一 bit 数据都以低电平开始,格式见下面图示。如果读取响应信号为高电平,则 DHT11 没有响应,请检查线路是否连接正常。

3.2 主机复位信号和 DHT11 响应信号

dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

3.3 数字‘ 0’信号表示方法

dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

3.4 数字‘ 1’信号表示方法

dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

四、OLED显示温湿度实验

1.硬件设计

GND接GND
VCC接3.3
OLED的SCL接stm32的B6(模拟IIC)
OLED的SDA接stm32的B7(模拟IIC)
DHT11的DATA接stm32的A11(普通GPIO口即可)

切记尽量避免使用PB3、PB4,具体看stm32f103c8t6使用PB3和PB4做普通GPIO使用时发现异常

硬件IIC请查看IIC协议

2.软件设计

  1. 使能 I2C 外设和A11的时钟;

  2. 配置 I2C 外设的参数并使能 I2C 外设,使能A11;

  3. 编写OLED初始化指令

  4. 编写DHT11获取数据函数

  5. 初始化SysTick系统定时器

2.1 复制工程 固件库模板

六、stm32-OLED
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

五、stm32-SysTick(系统定时器)
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
复制上面两个文件夹,不知道的同学可以去博客查阅

2.2 新建DHT11文件(打开工程)

dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

2.3 编写代码

oled.c(模拟IIC)

OLED和SysTick的代码这里就不说了,相信关注我的都会手动狗头

oledfont.h

这里把使用到的中文字库也发一下吧

{0x10,0x60,0x02,0x8C,0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00},
{0x04,0x04,0x7E,0x01,0x40,0x7E,0x42,0x42,0x7E,0x42,0x7E,0x42,0x42,0x7E,0x40,0x00},/*"温",0*/

{0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00},
{0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00},/*"度",1*/

{0x10,0x60,0x02,0x8C,0x00,0xFE,0x92,0x92,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00},
{0x04,0x04,0x7E,0x01,0x44,0x48,0x50,0x7F,0x40,0x40,0x7F,0x50,0x48,0x44,0x40,0x00},/*"湿",2*/

{0x00,0x00,0xFC,0x24,0x24,0x24,0xFC,0x25,0x26,0x24,0xFC,0x24,0x24,0x24,0x04,0x00},
{0x40,0x30,0x8F,0x80,0x84,0x4C,0x55,0x25,0x25,0x25,0x55,0x4C,0x80,0x80,0x80,0x00},/*"度",3*/

{0x00,0x00,0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},/*"°",4*/



dht11.c

#include "dht11.h"
#include "delay.h"

static void                           DHT11_GPIO_Config                       ( void );
static void                           DHT11_Mode_IPU                          ( void );
static void                           DHT11_Mode_Out_PP                       ( void );
static uint8_t                        DHT11_ReadByte                          ( void );

/**
 * @brief  DHT11 初始化函数
 * @param  无
 * @retval 无
 */
void DHT11_Init ( void )
{
    DHT11_GPIO_Config ();

    DHT11_Dout_1;               // 拉高GPIOA11
}


/*
 * 函数名:DHT11_GPIO_Config
 * 描述  :配置DHT11用到的I/O口
 * 输入  :无
 * 输出  :无
 */
static void DHT11_GPIO_Config ( void )
{
    /*定义一个GPIO_InitTypeDef类型的结构体*/
    GPIO_InitTypeDef GPIO_InitStructure;


    /*开启DHT11_Dout_GPIO_PORT的外设时钟*/
    DHT11_Dout_SCK_APBxClock_FUN (  DHT11_Dout_GPIO_CLK, ENABLE );

    /*选择要控制的DHT11_Dout_GPIO_PORT引脚*/
    GPIO_InitStructure.GPIO_Pin =  DHT11_Dout_GPIO_PIN;

    /*设置引脚模式为通用推挽输出*/
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

    /*设置引脚速率为50MHz */
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    /*调用库函数,初始化DHT11_Dout_GPIO_PORT*/
    GPIO_Init ( DHT11_Dout_GPIO_PORT, &GPIO_InitStructure );

}


/*
 * 函数名:DHT11_Mode_IPU
 * 描述  :使DHT11-DATA引脚变为上拉输入模式
 * 输入  :无
 * 输出  :无
 */
static void DHT11_Mode_IPU(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    /*选择要控制的DHT11_Dout_GPIO_PORT引脚*/
    GPIO_InitStructure.GPIO_Pin =  DHT11_Dout_GPIO_PIN;

    /*设置引脚模式为浮空输入模式*/
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;

    /*调用库函数,初始化DHT11_Dout_GPIO_PORT*/
    GPIO_Init(DHT11_Dout_GPIO_PORT, &GPIO_InitStructure);

}


/*
 * 函数名:DHT11_Mode_Out_PP
 * 描述  :使DHT11-DATA引脚变为推挽输出模式
 * 输入  :无
 * 输出  :无
 */
static void DHT11_Mode_Out_PP(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    /*选择要控制的DHT11_Dout_GPIO_PORT引脚*/
    GPIO_InitStructure.GPIO_Pin = DHT11_Dout_GPIO_PIN;

    /*设置引脚模式为通用推挽输出*/
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

    /*设置引脚速率为50MHz */
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    /*调用库函数,初始化DHT11_Dout_GPIO_PORT*/
    GPIO_Init(DHT11_Dout_GPIO_PORT, &GPIO_InitStructure);

}



static uint8_t DHT11_ReadByte(void)
{

    uint8_t i, temp = 0;
    for(i = 0; i < 8; i++)
    {
        /*每bit以50us低电平标置开始,轮询直到从机发出 的50us 低电平 结束*/
        while(DHT11_Dout_IN() == Bit_RESET);

        /*DHT11 会持续26~28us的高电平表示“0”,持续70us高电平表示“1”,
         *通过检测 x us后的电平即可区别这两个状 ,x 即下面的延时
         */
        Delay_us(40);
        //如果40us后持续高电平
        if(DHT11_Dout_IN() == Bit_SET)
        {
            //将高电平持续结束
            while(DHT11_Dout_IN() == Bit_SET);
            temp |= 0x01 << (7 - i); //把第7-i位置1,MSB先行
        }
        else     // x us后为低电平表示数据“0”,将第7-i位置0
        {
            temp &= ~0x01 << (7 - i); //把第7-i位置0,MSB先行
        }
    }
    return temp;
}

/*

* 函数名:DHT11_Read_TempAndHumidity
* 描述  :DTH11读取温湿度
* 一次完整的数据传输为40bit,高位先出
* 8bit 湿度整数 + 8bit 湿度小数 + 8bit 温度整数 + 8bit 温度小数 + 8bit 校验和
* 输入  :DHT11_Data
* 返回  :状态值
* 调用  :调用
*/
uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef *DHT11_Data)
{
    /********************************************************************************
    *   先主机为输出模式,拉低至少18ms的信号
    *   然后主机拉高20~40us的信号
    *   再主机(DHT11)转为输入模式,等待响应
    *   先将响应低电平通过while过滤
    *   再将响应高电平通过while过滤
    *   最后通过DHT11_ReadByte函数读取数据
    ********************************************************************************/
    //输出模式
    DHT11_Mode_Out_PP();

    //主机拉低
    DHT11_Dout_0;

    //延时18MS
    Delay_ms(20);

    //拉高
    DHT11_Dout_1;

    //延时30us
    Delay_us(30);

    /*主机设为输入 判断从机响应信号*/
    DHT11_Mode_IPU();
    /*判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行*/
    if(DHT11_Dout_IN() == Bit_RESET)
    {

        /*轮询直到从机发出 的80us 低电平 响应信号结束*/
        while(DHT11_Dout_IN() == Bit_RESET);
        /*轮询直到从机发出的 80us 高电平 标置信号结束*/
        while(DHT11_Dout_IN() == Bit_SET);
        //8bit 湿度整数 + 8bit 湿度小数 + 8bit 温度整数 + 8bit 温度小数 + 8bit 校验和
        DHT11_Data->humi_int = DHT11_ReadByte();
        DHT11_Data->humi_deci = DHT11_ReadByte();
        DHT11_Data->temp_int = DHT11_ReadByte();
        DHT11_Data->temp_deci = DHT11_ReadByte();

        DHT11_Data->check_sum = DHT11_ReadByte();

        //读取结束将引脚改为输出模式
        DHT11_Mode_Out_PP();

        DHT11_Dout_1;

        if(DHT11_Data->check_sum == DHT11_Data->humi_int + DHT11_Data->humi_deci + DHT11_Data->temp_int + DHT11_Data->temp_deci)
            return SUCCESS;
        else
            return ERROR;
    }
    else
        return ERROR;
}

dht11.h


/* Define to prevent recursive inclusion -------------------------------------*/

#ifndef __DHT11_H_
#define __DHT11_H_

#include "stm32f10x.h"
#include "sys.h"

/************************** DHT11 数据类型定义********************************/
typedef struct
{
    uint8_t  humi_int;		//湿度的整数部分
    uint8_t  humi_deci;	 	//湿度的小数部分
    uint8_t  temp_int;	 	//温度的整数部分
    uint8_t  temp_deci;	 	//温度的小数部分
    uint8_t  check_sum;	 	//校验和
} DHT11_Data_TypeDef;


#define      DHT11_Dout_SCK_APBxClock_FUN              RCC_APB2PeriphClockCmd
#define      DHT11_Dout_GPIO_CLK                       RCC_APB2Periph_GPIOA

#define      DHT11_Dout_GPIO_PORT                      GPIOA
#define      DHT11_Dout_GPIO_PIN                       GPIO_Pin_11

/************************** DHT11 函数宏定义********************************/
#define      DHT11_Dout_0	                            GPIO_ResetBits ( DHT11_Dout_GPIO_PORT, DHT11_Dout_GPIO_PIN )

#define      DHT11_Dout_1	                            GPIO_SetBits ( DHT11_Dout_GPIO_PORT, DHT11_Dout_GPIO_PIN )
//读取io引脚电平
#define      DHT11_Dout_IN()	                        GPIO_ReadInputDataBit ( DHT11_Dout_GPIO_PORT, DHT11_Dout_GPIO_PIN )


/************************** DHT11 函数声明 ********************************/
void                     DHT11_Init                      ( void );
uint8_t                  DHT11_Read_TempAndHumidity      ( DHT11_Data_TypeDef *DHT11_Data );

#endif


/******************************** END OF FILE *********************************/

main.c

#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "stm32f10x.h"
#include "dht11.h"
#include "oled.h"
#include "sysTick.h"


extern int read_dht11_finish;
DHT11_Data_TypeDef DHT11_Data;

int humi_int, humi_deci, temp_int, temp_deci;										//时间变量

int main()
{
    /********************************************************************************
    *    Delay_init();				  //本实验使用的是SysTick时钟
    *    CPU_TS_TmrInit();      //已经使能宏,不需要初始化
    *    uart1_init(115200);	 	//串口初始化为115200,需要在usart.h中使能
    *    uart3_init(115200);	 	//串口初始化为115200
    ********************************************************************************/
    char cStr [ 100 ] = { 0 };

    /* 初始化 */
    uart1_init(115200);
    DHT11_Init();
    OLED_Init();
    OLED_Clear();
    OLED_ShowString(30,  0, "DHT11 ", 16);   //输出字符
    OLED_ShowCHinese(0,  4, 0);	//
    OLED_ShowCHinese(16, 4, 1);	//
	OLED_ShowString (32, 4, ":", 16);							//显示温度
	OLED_ShowString(48, 4, "--", 16);
	OLED_ShowString (64, 4, ".", 16);
    OLED_ShowCHinese(87, 4, 4);	//
	OLED_ShowString (93, 4, "C", 16);
		
    OLED_ShowCHinese(0,  6, 2);	//
    OLED_ShowCHinese(16, 6, 3);	//
	OLED_ShowString (32, 6, ":", 16);							//显示湿度
	OLED_ShowString(48, 6, "--", 16);
	OLED_ShowString(64, 6, ".", 16);
    OLED_ShowString(87, 6, "%", 16);
    SysTick_Init();

    while(1)
    {
        //先去中断判断read_dht11_finish
        if( read_dht11_finish ) // read_dht11_finish == 1 or read_dht11_finish == -1
        {
            sprintf ( cStr, "\r\n\r\n读取DHT11成功!\r\n 温度为%d.%d %,温度为 %d.%d℃ \r\n",
                      DHT11_Data.humi_int, DHT11_Data.humi_deci, DHT11_Data.temp_int, DHT11_Data.temp_deci );
            printf ( "%s", cStr );                                             //打印读取 DHT11 温湿度信息
			humi_int=DHT11_Data.humi_int;
			humi_deci=DHT11_Data.humi_deci;
			temp_int=DHT11_Data.temp_int;
			temp_deci=DHT11_Data.temp_deci;
				
			OLED_ShowNum   (48, 4, temp_int, 2, 16);							//显示温度
            OLED_ShowNum   (66, 4, temp_deci, 2, 16);
					
            OLED_ShowNum   (48, 6, humi_int, 2, 16);
			OLED_ShowNum   (66, 6, humi_deci, 2, 16);							//显示湿度
					
            read_dht11_finish = 0;       // 清零标志位
        }
    }
}

3. 编译

编译成功
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

4. 选择烧录工具并配置MDK

本文选择的是ST_Link烧录工具
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
如果没有ID号看博客:ST-Link V2烧录问题(已解决)
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件
dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

5. 成品

dht11数据手册,# stm32f103c8t6与小芯片的爱恨情仇,单片机,stm32,嵌入式硬件

工程链接

链接:https://pan.baidu.com/s/1FfgYGIyLy51hpx2BfJrg3g 提取码:0000文章来源地址https://www.toymoban.com/news/detail-789567.html

到了这里,关于十一、DHT11 温湿度检测(OLED显示)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32项目之DHT11温湿度显示(LCD1602)

    掌握LCD1602的使用 掌握DHT11的原理及使用 看懂LCD1602和DHT11时序图 看懂DHT11的原理 掌握LCD1602的显示 编写程序用LCD1602显示温湿度 DHT11部分: DATA 用于微处理器与 DHT11之间的通讯和同步,采用单总线数据格式,一次 通讯时间4ms左右,数据分小数部分和整数部分,具体格式在下面说明,当

    2024年02月02日
    浏览(55)
  • Arduino用DHT11模块与LCD1602实现温湿度测量及显示

    本文主要利用Arduino开发板实现温湿度测量及显示 废话不多说。先上实物图: 主要使用到的模块包括 Arduino开发板、1602液晶显示屏、DHT11温湿度模块、两个10k电阻、5V电源 电路图 代码 关于DHT.h以及LiquidCrystal.h模块的导入 在Arduino IDE界面选择 管理库 搜索想要的库安装即可

    2024年02月06日
    浏览(35)
  • STM32+ESP8266+QT客户端上位机显示DHT11温湿度与点灯

    目录 1、简介 2、硬件连接 3、上位机源码 3.1 widget.h 3.2 widget.c  3.3 显示图  4、下位机源码 4.1 cubemax配置  4.2 keil源码 本文使用STM32F103C8T6单片机使用单片机通过ESP8266WIFI模块与QT设计的上位机进行通讯,ESP8266设置AP模式。实现DHT11传感器温湿度的显示与远程控制LED小灯的亮灭

    2024年02月06日
    浏览(55)
  • 基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

    ## **基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块(阿里云 或ONENET或局域网)+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+手机APP)** 本文采用LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可

    2024年02月04日
    浏览(78)
  • 【022】基于51单片机的RS-485无线DHT11温湿度检测系统Proteus仿真设计

    (1)、基于51单片机的RS-485无线DHT11温湿度检测系统proteus仿真设计一份; (2)、基于51单片机的RS-485无线DHT11温湿度检测系统proteus仿真设计keli源代码一份; (3)、基于51单片机的RS-485无线DHT11温湿度检测系统proteus仿真设计视频讲解一份; (1)、要求以51系列单片机为核心,

    2024年02月06日
    浏览(59)
  • 使用arduino IDE开发ESP8266NodeMCU连接DHT11实现温湿度检测并上传onenet官网

            本篇博客记录一下以arduino IDE来开发一下ESP8266NodeMCU,实现用DHT11进行温湿度检测,并且上传新版的onenet官网;我在实现这个小项目的时候,发现网上资料有关onenet的资料都是旧版的,这就有点难受了,本着开源的精神,这篇博客就来弥补一下这方面资料的缺失。  

    2024年02月09日
    浏览(66)
  • 温湿度传感器DHT11介绍

    温湿度传感器DHT11简介       DHT11数字温湿度传感器是一种出厂时经过校准的数字信号输出的温湿度数字温湿度传感器 。DHT11 数字温湿度传感器应用温湿度传感技术和数字采集技术,确保其具有极高的可靠性和卓越的长期稳定性。       DHT11 数字温湿度传感器内置一个电阻式

    2023年04月22日
    浏览(58)
  • DHT11温湿度传感器学习

     DHT11温湿度传感器共有四个引脚 1个VCC高电平,1个GND接地低电平,1个数据输出引脚,一个空引脚 工作时候,通过out引脚可以向传感器传递应答信号并返回40位的温湿度数据,也就是5个字节 前2个字节表示温度的整数位和小数位,后面两个字节是湿度的整数位和小数位,最后

    2024年02月07日
    浏览(69)
  • 51单片机——DHT11温湿度模块

    一.DHT11介绍 型号 测量范围 测湿精度 测温精度 DHT11 20-90%RH  0-50摄氏度°C 士5%RH   士2℃ 二.DHT11接口说明 1.建议连接线长度短于20米时用5K上拉电阻,大于20米时根据实际情况使用合适的上拉电阻。 2.VCC接单片机的5v,GND接GND,DAT接单片机的IO口。 三.电源引脚 DHT11的供电电压为

    2024年02月14日
    浏览(59)
  • 【mcuclub】温湿度传感器DHT11

    为什么接上拉电阻: 因为DHT11的数据口是漏极开路,如果不接上拉电阻,则只能输出低电平和高阻态,不能输出高电平,因此需要外接上拉电阻,否则无法输出1。DHT11的工作电流约为1mA,VCC一般为5V,则电阻R=5V/1mA=5KΩ。一般3.3k~10k都可以。 DHT11 数字温湿度传感器是一款含有已

    2024年02月06日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包