精华内容
下载资源
问答
  • DHT11模块.pdf

    2019-05-12 19:37:51
    关于温湿度传感器DHT11模块的原理图,可以通过原理图来进行DHT11传感器的分析。
  • ZIGBEE————DHT11模块驱动ZIGBEE————DHT11模块驱动ZIGBEE————DHT11模块驱动
  • DHT11 模块的使用

    2021-01-29 18:26:12
    这里写目录标题DHT11模块DHT11模块介绍 DHT11模块 DHT11模块介绍 DHT11模块 数据线是单线双向 一次完整的数据传输为40bit 高位先出 数据格式:8bit湿度整数数据+8bit湿度小数数据 +8bi温度整数数据+8bit温度小数数据 ...

    DHT11模块

    DHT11模块介绍

    DHT11模块  数据线是单线双向
    一次完整的数据传输为40bit 高位先出
    数据格式:8bit湿度整数数据+8bit湿度小数数据
    +8bi温度整数数据+8bit温度小数数据
    +8bit校验和
    数据传送正确时校验和数据等于“8bit湿度整数数据+8bit湿度小数数据
    +8bi温度整数数据+8bit温度小数数据”所得结果的末8位。
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

        1.使用推挽模式进行总线的输出
        使用stm32将总线拉低等待DHT11响应,拉低时间大于18ms
        保证检测到起始信号
        2.使用stm32将总线拉高  延时20us~40us  这里选择30us
          读取DHT11的响应信号
       3.切换到输入模式
          3.0 检测DHT11产生低电平
                即使用读取DHT11的输入引脚,当读取到低电平的时候进入
          3.1 DHT11等待主机STM32的开始信号结束完成后发送一个80us的低电平信号
               while(macDHT11_Dout_IN() ==RESET);
               检测引脚的输入信号,当输入信号不是低电平的时候,即响应信号结束的时候,跳出while
          3.2 DHT11发送响应信号后,把总线拉高80us,准备发送数据
          while(macDHT11_Dout_IN() == SET);
          检测引脚的输入信号,当输入信号不是高电平的时候,即标志信号结束的时候,跳出while循环,准备发送数据
    

    进行发送数据,STM32接收发送过来的数据

    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;
    

    DHT11的数据是MSB先行 高位先行

    static uint8_t DHT11_ReadByte ( void )
    {
      uint8_t temp;
      
      for(i=0;i<8;i++){
         //等待输入的电平不是低电平 表示开始进行传输数据
         while(macDHT11_Dout_IN()==Bit_RESET);
         /*通过延时40us 进行判断当前是高电平还是低电平
    当读取到高电平延时40us后,读取到的还是高电平则表示1,否则表示0并进
    入下次循环,再次等待起使电平低电平的时间。*/
         Delay(40);
         //判断当前是低电平还是高电平
         if(macDHT11_Dout_IN()==SET){
             while(macDHT11_Dout_IN()==SET);//等待高电平结束
             temp | =(uint8_t)(0x01<<(7-i));
         }else{
             temp &=(uint8_t)(0x00<<(7-i));
         }
      }
      return temp;
    }
    
     1.使用上面的函数读取5次将DHT11里面的内容读取出来
     2.转换成输出模式,将总线拉高
     3.检查读取到的信息是不是正确信息
     if(DHT11_Data->check_sum == DHT11_Data->humi_int + DHT11_Data->humi_deci + DHT11_Data->temp_int+ DHT11_Data->temp_deci)
     加入校验和等于温度的整数小数和湿度的整数和小数的和则返回success
    
    uint8_t DHT11_Read_TempAndHumidity(DHT11_Data_TypeDef *DHT11_Data)
    {  
    	/*输出模式*/
    	DHT11_Mode_Out_PP();
    	/*主机拉低*/
    	macDHT11_Dout_0;
    	/*延时18ms*/
    	Delay_ms(18);
    
    	/*总线拉高 主机延时30us*/
    	macDHT11_Dout_1; 
    
    	Delay_us(30);   //延时30us
    
    	/*主机设为输入 判断从机响应信号*/ 
    	DHT11_Mode_IPU();
    
    	/*判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行*/   
    	if(macDHT11_Dout_IN()==Bit_RESET)     
    	{
    		/*轮询直到从机发出 的80us 低电平 响应信号结束*/  
    		while(macDHT11_Dout_IN()==Bit_RESET);
    
    		/*轮询直到从机发出的 80us 高电平 标置信号结束*/
    		while(macDHT11_Dout_IN()==Bit_SET);
    
    		/*开始接收数据*/   
    		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();
    		/*主机拉高*/
    		macDHT11_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模块资料---

    2018-11-19 19:54:06
    DHT11模块电路图,模块说明,以及模块资料,51和32单片机的驱动。
  • DHT11模块化程序

    2014-07-29 17:27:45
    自己写的DHT11模块化程序,可以直接用
  • 本文主要讲一个很简单的温湿度传感器dht11模块的使用,如果你是喜欢搞硬件,可以顺便学学,当做入门资料也好。 引脚设置: 可以从下面代码中看到 DATA引脚连接arduino UNO 的2 vcc引脚连接的是arduino的5v引脚 GND...

    本文主要讲一个很简单的温湿度传感器dht11模块的使用,如果你是喜欢搞硬件,可以顺便学学,当做入门资料也好。
    需要下载该模块的库文件,就可以在我的资源里面下载,我设置的粉丝可下载,欢迎大家下载!
    在这里插入图片描述
    引脚设置:
    在这里插入图片描述
    可以从下面代码中看到

    DATA引脚连接arduino UNO 的2
    vcc引脚连接的是arduino的5v引脚
    GND 连接的也是arduino UNO 的GND
    

    连接好之后还需要dht11模块的库。
    在这里插入图片描述
    在这里插入图片描述
    DHT文件我会存到我的资源里面,大家可以下载,或者网上资源很多,或者有的大神当然可以自己编写,这么方便怎么来。
    在这里插入图片描述

    arduino代码:

    #include "DHT.h"
    #include <Wire.h>                                              //引用dht11库文件,使得下面可以调用相关参数
    #define DHTPIN 2
    #define DHTTYPE DHT11
    
    DHT dht(DHTPIN, DHTTYPE);
    void setup() {                                                       //设置
    
      Serial.begin(9600);                                            //设置波特率参数                    //定义输出口
    }
    
    void loop() {   //循环
      float h = dht.readHumidity();
      float t = dht.readTemperature();                //将湿度值赋给hum
      Serial.print("Tempeature:");                        //打印出Tempeature:
      Serial.println(t);                                     //打印温度结果
    
      Serial.print("Humidity:");                            //打印出Humidity:
      Serial.print(h);                                     //打印出湿度结果
      Serial.println("%");                                  //打印出
      delay(1000);                                          //延时一段时间
    
    }
    

    代码编写成功,库导入以后,就先编译,在上传,然后在端口监视器里面查看温湿度信息。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这里显示温湿度数据。
    在这里插入图片描述

    展开全文
  • 空气表制作,第二次! 让我们看一下使用DHT 11模块的温度和湿度。
  • DHT11模块资料

    2016-02-29 22:40:02
    含有 DHT11原理图,DHT11规格书,使用说明
  • stm32获取DHT11模块温湿度数值原理解析 stm32单片机如何从DHT11获取到温湿度的呢? 首先可以通过DHT11手册了解一下DHT11模块,掌握该温湿度模块的通讯过程 ...

    stm32获取DHT11模块温湿度数据原理解析

    stm32单片机如何从DHT11获取到温湿度的呢?
    首先可以通过DHT11手册了解一下DHT11模块,掌握该温湿度模块的通讯过程在这里插入图片描述
    简单分析stm32与模块建立通讯的过程:通过高低电平的持续时间和切换来控制模块开始采集和传输数据。
    首先了解如何控制该模块,分析时序图:
    在这里插入图片描述
    假设连接该模块的引脚为A,那么与模块建立通讯需按照一下步骤:
    1.A为输出模式并且输出低电平持续大于等于18ms(根据图中主机至少拉低18ms)
    2.A输出高电平持续20-40μs(图示主机拉高20-40μs)
    3.A改变为输入模式并且接收到DHT响应信号80μs(图中DHT响应信号80μs)
    4.A接收到高电平持续80μs,为DHT11发送的响应信号(图中DHT拉高80μs)

    与DHT11模块建立通讯完成。


    接下来主要解析如何接收DHT11温湿度模块返回的温湿度数据
    阅读DTH11手册得知,该模块温湿度数据传输为40bit,高位先出,传输格式如下:

    8bit湿度整数数据+8bit湿度小数数据
    +8bi温度整数数据+8bit温度小数数据
    +8bit校验和

    那么如何传输这40bit的数据呢?

    建立通讯后,模块进入高速模式,并且触发一次数据采集,送出40bit的数据

    40bit数据以二进制的形式通过波形传播

    该模块会返回两种波形,一种波形代表数字 0 ,另一种代表数字 1 ,一共返回 40 个波形,每个波形代表一位二进制数( 0 或 1 ),每 8 个波形为一组,一共五组,每一组组成一个 8 位的二进制数分别代表湿度整数部分、小数部分 和 温度整数部分、小数部分,最后是校验和

    接下来看下返回的两种波形
    图一,表示数字 0,图二表示数字 1 ,如下图所示


    图一:
    在这里插入图片描述


    图二:在这里插入图片描述


    对原理有一定的了解之后
    就可以根据温湿度模块输出的波形进行解码得到温湿度数据
    初始化配置代码就不一一列出了

    主要编写的是如何对模块返回的波形进行解码,最后得到温湿度数据

    经过引脚的高低电平和输入输出模式转换后

    模块返回波形,以下为解码波形的核心代码(仅适用于理解)

    假设PG9引脚与该模块连接,完成通讯后处于输入模式

    
    uint8_t p[5]//定义一个数组用于存储温湿度数据
    uint32_t t=0;		//定义变量t用于超时处理的时间计算
    int32_t i=0,j=0;	//定义变量 i j 用于逻辑预算
    uint8_t d=0;		//定义变量 d 用于波形转二进制数的解码运算
    uint8_t check_sum=0;//用于数据检验
    
    
    //接收五个字节
    for(j=0; j<5; j++)
    {
    	d=0;
    	//每个字节由八位二进制数字组成
    	for(i=7; i>=0; i--)
    	{
    		//测量低电平持续的时间,添加超时处理
    		t=0;
    		while(PGin(9)==0)
    		{
    			t++;
    			delay_us(1);	
    			//需编写延时函数,延时100μs			
    			if(t >=100)  
    			{
    				return -1;
    			}			   
    		}	
    					
    		//延时40us
    		delay_us(40);
    		
    		//判断是否由高电平产生
    		if(PGin(9))
    		{
    			d|=1<<i;			
    			//测量高电平持续的时间,添加超时处理
    			t=0;
    			while(PGin(9))
    			{
    				t++;
    				delay_us(1);	
    				if(t >=100)
    				{
    					return -2;
    				}		   
    			}		
    		}		
    	}
    	p[j]=d;
    }
    
    //延时100us,通信结束
    delay_us(100);
    
    //进行数据校验
    check_sum=p[0]+p[1]+p[2]+p[3];
    
    
    展开全文
  • 温湿度传感器DHT11模块模块软硬件技术资料+STM32单片机软件工程源码: 1-i_MX_RT系列配套程序 1-STM32系列配套程序 2-参考资料_数据手册 DHT11与各开发板引脚连接说明 DHT11引脚说明.png
  • 【单片机】DHT11模块温湿度检测

    千次阅读 2019-03-31 16:13:05
    不知不觉断断续续学习51单片机3个月了,这次在了解学习了DHT11模块后,决定做一个用DHT11模块检测温湿度的系统出来练手,编写代码在开发板上测试成功之后,在万能板上做出了实物。 项目细节描述: 使用9v电池+AMS...

    一、心得概述

    不知不觉断断续续学习51单片机3个月了,这次在了解学习了DHT11模块后,决定做一个用DHT11模块检测温湿度的系统出来练手,编写代码在开发板上测试成功之后,在万能板上做出了实物。

    项目细节描述: 

    使用9v电池+AMS1117-5v降压模块供电,另外预留了micro usb接口可接线供电。

    使用LCD1602显示屏显示测量数据。

    使用DHT11模块检测温湿度。

    使用STC89C52芯片。

    二、主要模块资料

    DHT11使用单总线双向通信,时序图如下:

    三、核心程序

    1.DHT11的驱动程序

    (1).dht.h

    #ifndef __DHT11_H__
    #define __DHT11_H__

    /*
    **********************************************************************
    *                         头文件包含
    **********************************************************************
    */
    #include "common.h"

    /*
    **********************************************************************
    *                         本地宏定义
    **********************************************************************
    */

    /*
    **********************************************************************
    *                         外部函数原型声明
    **********************************************************************
    */
    void read_DHT11(u16 *temp,u16 *humi);

    #endif

    (2).dht.c

    /*
    **********************************************************************
    *                         头文件包含
    **********************************************************************
    */
    #include "dht11.h"

    /*
    **********************************************************************
    *                         本地全局变量
    **********************************************************************
    */
    sbit da = P2^0;
    u16 number = 50000;

    /*
    **********************************************************************
    *                         内部函数原型声明
    **********************************************************************
    */
    void read_DHT11(u16 *temp,u16 *humi);

    /*
    **********************************************************************
    *                             工具函数
    **********************************************************************
    */
    void delay19ms(void)   //误差 0us
    {
        unsigned char a,b;
        for(b=157;b>0;b--)
            for(a=59;a>0;a--);
    }
    void delay10us(void)   //误差 0us
    {
        unsigned char a,b;
        for(b=1;b>0;b--)
            for(a=2;a>0;a--);
    }

    /*********************************************************************
    * 函 数 名       : read_DHT11
    * 函数功能         : 激活并读取湿度温度测量模块的数据
    * 参数列表       : 无
    * 函数输出         : 无
    *********************************************************************/
    void read_DHT11(u16 *temp,u16 *humi)
    {
        u16 cp=0;
        u16 i=0;
        u16 j=0;
        u16 dat[5] = {0x00,0x00,0x00,0x00,0x00};
        da = 0;
        delay19ms();
        da = 1;
        delay10us();
        delay10us();
        delay10us();
        if(da!=0) return;
        cp = 0;
        while(da==0&&cp++<number);
        //if(cp>=number)return;
        da = 1;
        while(da==1&&cp++<number);
        //if(cp>=number)return;
        for(i=0;i<5;i++)
        {
            for(j=0;j<8;j++)
            {
                cp = 0;
                dat[i]=dat[i]<<1;
                while(da==0&&cp++<number);
                //if(cp>=number)return;
                delay10us();
                delay10us();
                delay10us();
                if(da==1)
                {
                    dat[i] = dat[i]|0x01;
                    cp = 0;
                    while(da==1&&cp++<number);
                    //if(cp>=number)return;
                }
            }
        }
        if(dat[4]!=(dat[0]+dat[1]+dat[2]+dat[3]))return;
        *humi = dat[0];
        *temp = dat[2];
    }

    四、成果实物图

    展开全文
  • arduino资料,dht11的库文件,这是在做arduino温湿度传感器那个模块的时候大家用到的,欢迎大家下载。
  • 目录前言代码下载:功能介绍:接线效果图普通环境哈热气搓手捂热核心代码main.cbsp_dht11.hbsp_dht11.c ...DHT11模块–.pdf     DHT11模块使用说明书 源码参考:野火dht11温湿度传感器测试实验,
  • STM32F407学习笔记——DHT11模块(温湿度传感器) 一、基本原理: 通过控制DHT11模块时序来对DHT11传感器进行控制和数据的读取,总线空闲状态为高电平,单片机把总线拉低等待DHT11响应,拉低时间大于18ms,保证DHT11能...
  • 利用 DHT11 模块完成湿度与温度的采集 资料 dht11 模块 bpibit 板子 dht11 库 主要函数 void cjt_DHT11_Init() 对 DHT11 进行初始化 unsigned char cjt_DHT11_Read_Bit() 读取一个 bit 数据 void cjt_DHT11_Read...
  • 【STM32随记】---DHT11模块使用

    千次阅读 2019-04-29 16:13:44
    【STM32随记】—DHT11模块使用 DHT11 开始发送数据流程 设置IO口为输出,使用MCU向DHT11发送开始信号(拉低总线),主机至少延时等待18ms 延时完毕后拉高总线,主机至少延时等待20~40us 延时完毕后读取DHT11的回应...
  • DHT11模块.rar

    2019-05-14 21:20:14
    内含有51程序原理图
  • 数字温湿度传感器DHT11模块

    千次阅读 多人点赞 2020-11-30 12:14:23
    DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传 感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高 的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测...
  • 一、DHT11模块介绍 1.产品概述: DHT11 数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有枀高的可靠性与卓越的
  • 下面我将介绍DHT11模块的相关用法 DHT11数字传感器概述:是一款含有已校准数字信号输出的温湿度复合传感器 。它应用专用的数字模块采集技术和温湿度传感技术 ,确保产品具有极 高的可靠性与卓越的长期稳定性。 ...
  • 基于树莓派的空气监测系统(4)DHT11模块程序硬件模块说明 器件(奥松 dht11) DC:3.3-5.5v 温度:0 - 50°C (±2°C) 湿度:20 - 95 %RH(±5%) 工作时序图 初始化时序 读取数据0时序 读取数据1时序 DHT11...
  • 网上有很多DHT11的测试,试了N个程序,总是不得要领,各种报错,最后终于找到一套可用的库。首先是DHT11.h文件,其次是DHT11.cpp文件,最后是主程序文件,三个文件保存在同一个文件夹即可。
  • dht11模块的学习

    千次阅读 2016-11-05 19:44:51
    dht11传感器是用来测温湿度的传感器。dht模块价格相对便宜(一般在4、5元左右),所以测温湿精度性不高,温度精度大概在+-4之间,湿度精度大概在+-1之间,如果这是学习之用还是可以的。  我看过dth11的中文资料,...
  • 树莓派驱动DHT11模块

    千次阅读 2015-12-16 16:51:49
    touch dht11.c sudo vim dht11.c 2.编写驱动程序 以下是我在其他博客上看到的一份代码,借鉴的国外程序员编写的驱动程序 #include #include #include #include #define MAX_TIME 85 #define DHT11PIN 7 #...
  • Qt实现天气预报与PM2.5监测系统(4)DHT11模块驱动硬件模块说明 器件(奥松 dht11) DC:3.3-5.5v 温度:0 - 50°C (±2°C) 湿度:20 - 95 %RH(±5%) DHT11应用电路 在使用时应在数据端加一个5K的上拉...
  • DHT11模块编程一般流程

    万次阅读 2018-01-12 09:59:43
    DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。 一、引脚说明:   pin 名称 注释 1 VCC 供电3-5.5V 2 DATA 串行数据...
  • while(DHT11_Init()) //DHT11初始化 { LCD_ShowString(30,130,200,16,16,"DHT11 Error"); delay_ms(200); LCD_Fill(30,130,239,130+16,WHITE); delay_ms(200); } while(1) { DHT11_Read_Data(&...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 871
精华内容 348
关键字:

dht11模块