精华内容
下载资源
问答
  • dht11测量温湿度基于stc89c52

    千次阅读 2020-04-10 01:31:48
    DHT11是一款含有已校准数字信号输出的温湿度复合传感器,传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。抗干扰能力强,有超长的信号传输距离,采用单总线的串行数据进行数据传输...

    最近的毕设好难啊!
    DHT11是一款含有已校准数字信号输出的温湿度复合传感器,传感器包括一个电容式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。抗干扰能力强,有超长的信号传输距离,采用单总线的串行数据进行数据传输。
    湿度量程范围:5~95%RH
    温度量程范围:-20~60℃
    典型电路如下图:
    在这里插入图片描述
    连线长度短于5m时采用4.7K上拉电阻,大于5m时可根据实际情况降低上拉电阻的阻值。
    它的单总线格式定义为:在这里插入图片描述
    下面是最重要的程序:

    /***************************************
    	  STC89C52、DHT11、11.0592M晶振
    		共阴数码管、74hc573锁存器
    ***************************************/
    #include<reg52.h>
    #include<intrins.h>
    #define uchar unsigned char;
    #define uint unsigned int;
    sbit s_data=P3^6;
    sbit dula=P2^6;
    sbit wela=P2^7;
    uchar rshi,rge,tshi,tge,tshifen;
    uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,
                        0x6d,0x7d,0x07,0x7f,0x6f,     ///不带小数点0~9
                        0xbf,0x86,0xdb,0xcf,0xe6,
                        0xed,0xfd,0x87,0xff,0xef,     ///带小数点0~9
                        0x40};
    void delayms(uint z)
    {
    	uint x,y;
    	for(x=z;x>0;x--)
    		for(y=110;y>0;y--);
    } 
    void delayus(uchar z)
    {
    	while(z--);
    }
    /*************************************
    			主机呼叫从机
    *************************************/
    void dht_start()
    {
    	s_date=1;
    	delayms(5);			//稍微延时一下
    	s_date=0;
    	delayms(23);		//最下18ms最大30ms,这里是20ms
    	s_date=1;
    	delayus(0);			//约11us
    	_nop_():
    }
    /************************************
              读一个字节的数据
    ************************************/
    uchar read_byte()
    {
    	uchar a,i;
    	for(i=8;i>0;i--)
    	{
    		a<<=1;
    		while(!s_date);
    		delayus(3);             //延时越过低电平
    		if(s_date==1)
    		{
    			a=a|0x01;
    			while(s_date);      //延时越过高电平
    		}
    	}
    	return a;
    }
    /***********************************
    	读取并处理全部数据:5个字节
    ***********************************/
    void hole_data()
    {
    	uchar R_H,R_L,T_H,T_L,check;
    	dhtstart();
    	delayus(1);
    	if(s_data==0)
    	{
    		while(s_data==0);
    		while(s_data==1);
    		R_H=read_byte();
    		R_L=read_byte();
    		T_H=read_byte();
    		T_L=read_byte();
    		check=read_byte();
    		delayus(8);		//延时60us
    		if(R_H+R_L+T_H+T_L==check)
    		{
    			rshi=R_H/10;
    			rge=R_H%10;
    			tshi=T_H/10;
    			tge=T_H%10;
    			tshifen=T_L%10;	
    		}
    	}
    }
    /***********************************
    			数码管显示
    ***********************************/
    void display(uchar rshi,uchar rge,uchar tshi,uchar tge,uchar tshifen)
    {
    	wela=0;
    	
    	P0=0x00;
    	dula=1;
    	P0=table[rshi];
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xfe;                    ///消隐
    	wela=0;
    	delayms(1);
    	
    	P0=0x00;
    	dula=1;
    	P0=table[rge];               ///显示R个位
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xfd;
    	wela=0;
    	delayms(1);
    	
    	P0=0x00;
    	dula=1;
    	P0=table[tshi];           ///显示T十位
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xfb;
    	wela=0;
    	delayms(1);
    	
    	P0=0x00;
    	dula=1;
    	P0=table[tge+10];           ///显示T个位,带小数点
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xf7;
    	wela=0;
    	delayms(1);
    	
    	P0=0x00;
    	dula=1;
    	P0=table[tshifen];           ///显示T十分位
    	dula=0;
    	P0=0xff;
    	wela=1;
    	P0=0xef;
    	wela=0;
    	delayms(1);
    }
    
    /************************************
    				主函数
    ************************************/
    void main()
    {
    	uint i;
    	delayms(1000);		//越过1S的不稳定状态	
    	while(1)
    	{
    		hole_data();
    		for(i=900;i>0;i--)
    		{
    			display(rshi,rge,tshi,tge,tshifen);
    		}
    	}
    }
    
    
    展开全文
  • 【Arduino】DHT11温湿度测量

    千次阅读 2019-02-17 18:20:59
    通过本文,可以了解到...DHT11 是一款温湿度传感器,可以用来测试环境温湿度,该传感器的的温度测量范围为 0 ~ 50°C,误差为 2 °C;湿度测量范围为在 0°C时为30%-90%RH,环境温度为 25°C时,湿度测量范围为20%-9...

    通过本文,可以了解到以下内容:

    • DHT11 温湿度传感器接线与使用
    • DHT11 Arduino 测试程序编写
    • DHT11 温湿度转换显示

    DHT11 温湿度传感器接线与使用


    DHT11 是一款温湿度传感器,可以用来测试环境温湿度,该传感器的的温度测量范围为 0 ~ 50°C,误差为 2 °C;湿度测量范围为在 0°C时为30%-90%RH,环境温度为 25°C时,湿度测量范围为20%-90%RH,在50°C时,测量范围是20%-80%。

    DHT11 传感器接线方法并不复杂,DHT11封装有4个引脚,各个引脚说明如下:

    Pin 名称 注释
    1 VDD 供电 3-5.5 VDC
    2 DATA 串行数据,单总线
    3 NC 空脚
    4 GND 接地,电源负极

    一般从网上买的 Arduino 传感器套件版本的 DHT11,会有一个带 LED 的焊好的板,上面有三个接线引脚,分别是 VCC, GND, DATA,接线时,只要将 VCC 接到 Arduino 5V上,GND 接到 Arduino GND 上,DATA 引脚接 Arduino Pin8上即可。

     

    DHT11 Arduino 测试程序编写


    DHT11 Arduino 的测试程序也很简单,主要分几个部分: 
    - 引入 dht11 库 
    - 设置端口 
    - 检查 DHT11 是否正确连接 
    - 获取 DHT11 测量数据

    程序详细如下:

    #include <dht11.h>
    #define DHT11PIN 8
    dht11 DHT11;
    
    /*printf格式化字符串初始化*/
    int serial_putc( char c, struct __file * )
    {
      Serial.write( c );
      return c;
    }
    void printf_begin(void)
    {
      fdevopen( &serial_putc, 0 );
    }
    
    void setup() {
      pinMode(DHT11PIN,OUTPUT);
      Serial.begin(9600);
      printf_begin();
    }
    
    void loop() {
      int chk = DHT11.read(DHT11PIN);
      Serial.print("Tep: ");
      Serial.print((float)DHT11.temperature, 2);
      Serial.println("C");
      Serial.print("Hum: ");
      Serial.print((float)DHT11.humidity, 2);
      Serial.println("%");
      Serial.println();
      
      //printf("$AR,SHT%d,%d#", DHT11.temperature, DHT11.humidity);
      
      delay(1000);
    }
    
    

    程序编写完成后,上传到 Arduino,重启 Arduino ,再在 Arduino IDE 的串口监视器中可以看到测量数据。

    DHT11 温湿度测量数据单位转换

    我们习惯常用的温度单位是摄氏度,湿度单位是百分比。但实际生产中,有可能需要用到其他的单位,以下是参考 arduino.cc 上提供的温度转换函数供参考。

    //Celsius to Fahrenheit conversion
    double Fahrenheit(double celsius)
    {
        return 1.8 * celsius + 32;
    }
    
    // fast integer version with rounding
    //int Celcius2Fahrenheit(int celcius)
    //{
    //  return (celsius * 18 + 5)/10 + 32;
    //}
    
    
    //Celsius to Kelvin conversion
    double Kelvin(double celsius)
    {
        return celsius + 273.15;
    }
    
    // dewPoint function NOAA
    // reference (1) : http://wahiduddin.net/calc/density_algorithms.htm
    // reference (2) : http://www.colorado.edu/geography/weather_station/Geog_site/about.htm
    //
    double dewPoint(double celsius, double humidity)
    {
        // (1) Saturation Vapor Pressure = ESGG(T)
        double RATIO = 373.15 / (273.15 + celsius);
        double RHS = -7.90298 * (RATIO - 1);
        RHS += 5.02808 * log10(RATIO);
        RHS += -1.3816e-7 * (pow(10, (11.344 * (1 - 1/RATIO ))) - 1) ;
        RHS += 8.1328e-3 * (pow(10, (-3.49149 * (RATIO - 1))) - 1) ;
        RHS += log10(1013.246);
    
            // factor -3 is to adjust units - Vapor Pressure SVP * humidity
        double VP = pow(10, RHS - 3) * humidity;
    
            // (2) DEWPOINT = F(Vapor Pressure)
        double T = log(VP/0.61078);   // temp var
        return (241.88 * T) / (17.558 - T);
    }
    
    // delta max = 0.6544 wrt dewPoint()
    // 6.9 x faster than dewPoint()
    // reference: http://en.wikipedia.org/wiki/Dew_point
    double dewPointFast(double celsius, double humidity)
    {
        double a = 17.271;
        double b = 237.7;
        double temp = (a * celsius) / (b + celsius) + log(humidity*0.01);
        double Td = (b * temp) / (a - temp);
        return Td;
    }
    

    上面的代码可以根据实际情况,将 DHT11 的测量数据带入函数进行转换即可。

    小结

    本文介绍了如果连接、使用 DHT11 温湿度传感器,并且介绍了 DHT11 的测试程序如何编写。另外,有一点自己在实验的时候遇到的一个小问题,就是我所使用的 UNO R3 Arduino 主板的 DIGITAL 引线排从小到大分别是 RX0 TX1 PIN2 ……,我开始没有认真看清楚,以为 RX0 TX1 之后是 Pin0,我最初设置使用的引脚是 Pin 2,因此我错误的把引线接到 Pin 3上,串口监视器一直没有信息,我以为是传感器坏了,后来更换 Pin 口,才发现了这个小失误,所以希望读者在接线的时候要注意,我之前也是因为接线错误导致一个 HC05 蓝牙模块损坏。
     

    参考资料

    温湿度传感器DHT11 
    A DHT11 Class for Arduino. 
    KY-015 TEMPERATURE AND HUMIDITY SENSOR MODULE 
    数字温湿度传感器

    转自:https://blog.csdn.net/weixin_37272286/article/details/78016565

    展开全文
  • 温度、湿度传感器dht11

    千次阅读 2015-02-03 11:58:11
    一:DHT11可以用于测量温度、湿度。不过其温度测量范围和精确度...DHT11测量范围是20-90(25摄氏度时)    下图为0信号时序图: 下图为1信号时序图: 下面是程序内容: 单片机型号:STC15L408

    一:DHT11可以用于测量温度、湿度。不过其温度测量范围和精确度都劣于DS18B20;

    下图为典型电路图:



    二:DHT11在上电后要等待1S以避开不稳定状态,在此期间无需发送任何指令;

    DHT11测量范围是20-90(25摄氏度时) 

     

    下图为0信号时序图:


    下图为1信号时序图:



    下面是程序内容:

    单片机型号:STC15L408AD;

    运行程序是IRC频率:18.432MHZ;


    //*****************IO口P5的工作模式配置寄存器*************************
    sfr P5M1 = 0xC9;
    sfr P5M0 = 0XCA;


    sbit dht11_data =P5^5; //data bit of dht11;




    BYTE count = 2;


    //读取dht11数据;状态为1的次数大于三次则为1,否则数据为0;
    BYTE Read_dht11_data()
    {
    BYTE times = 0,i;
    for(i = 0;i <5;i++)
    {
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    _nop_();
    if(dht11_data)
    {
    times++;
    }
    }
    if(times > 3)
    if(dht11_data)
    return 1;
    return 0;
    }




    //p5^5为准双向口   1101
    void Init_data_port()
    {
    P5M1 &= 0XDF;   //00为标准IO口模式;
    P5M0 &= 0XDF;
    }


    void Set_prot_mode_in()
    {
    P5M1  |= 0x20;             //10仅为输入,高阻态
    P5M0  &= 0xDF;
    }


    //向DHT11发送开始命令;
    BYTE dht11_start()
    {
    dht11_data = 0;
    Delay10ms(); //主机拉低18MS;
    Delay10ms(); //主机拉低18MS;
    dht11_data = 1;
    Set_prot_mode_in(); //设置为输入模式;
    DelayUS(3); //延时26-40us后检测dth11的回复信号
    if(Read_dht11_data())
    {
    DelayUS(3); //延时26-40us后检测dth11的回复信号
    if(Read_dht11_data()) //如果从机一直没有响应信号则直接退出;
    return 1;
    }
    count = 2;

    while(!Read_dht11_data() && (count++));  //等待响应信号完毕; 80us
    if(count == 1)  //如果为1,则表示超时,此时会跳出循环;
    return 1;
    count = 2;
    while(Read_dht11_data() && (count++));  //dht11响应信号之后会拉高,需要等待; 80us
    if(count == 1)  //如果为1,则表示超时,此时会跳出循环;
    return 1;
    return 0;
    }




    BYTE Read_byte()
    {
    BYTE i,reg_data = 0;
    for(i = 0;i<8;i++)
    {
    count = 2;
    while((!Read_dht11_data())&& (count++)); //初始为低电平,等待高电平到来;
    if(count == 1)  //如果为1,则表示超时,此时会跳出循环;
    {
    SendStr("aaa\n");
    return 1;
    }
    count = 2;
    DelayUS(2);  //DELAY 26us - 28us 0;;  after 30us; if delay time bigger than 70us,data is '1',or is '0';
    reg_data <<= 1;
      if(Read_dht11_data())   //判断是否还是高电平
    {
    while((Read_dht11_data()) && (count++));  //等待电平再次变低,表明该BIT数据已经发送完毕
    reg_data |= 0x01;   //需要先等待高电平到来再做相应的处理,否则数据校验会出错;
    count = 2;
    }
    if(count == 1)  //如果为1,则表示超时,此时会跳出循环;
    {
    SendStr("bbb i =");
    printChar(i);
    SendStr("\n");
    return 1;
    }
    }
    return reg_data;
    }




    WORD Read_humidity()
    {
    BYTE i,result[5],string[6];
    WORD j = 0;
    dht11_data = 1;
    Init_data_port();
    if(dht11_start())
    {
    SendStr("START FAILED!\n");
    dht11_data = 1;
    return 1;
    }
    memset(result,0x0,5);
    for(i = 0;i < 5;i++)
    {
    result[i] = Read_byte();
    }
    dht11_data = 1; //释放总线,为下次读取做好准备
    for(i = 0;i < 4;i++)
    {
    j += result[i];
    }
    i = 0;
    i =(BYTE)(j & 0xff);
    if(i == result[4]) //校验正确,数据准确
    {
    SendStr("GET WITNESS!\n");
    string[0] = '0' + result[0]/10;
    string[1] = '0' + result[0]%10;
    string[2] = '.';
    string[3] = '0' + result[1]/10;
    string[4] = '0' + result[1]%10;
    string[5] = 0;
    SendStr(string);
    SendStr("\n");
    SendStr("\nGET TEMPERTURE!\n");
    string[0] = '0' + result[2]/10;
    string[1] = '0' + result[2]%10;
    string[2] = '.';
    string[3] = '0' + result[3]/10;
    string[4] = '0' + result[3]%10;
    string[5] = 0;
    SendStr(string);
    SendStr("\n");
    }
    else
    {
    SendStr("FAILED!\n");
    }
    return 0;
    }






     

    数据格式

    :  

    8bit

    湿度整数数据

    +8bit

    湿度小数数据

     +8bi

    温度整数数据

    +8bit

    温度小数数据

     

    +8bit

    校验和






    展开全文
  • 传感器学习——DHT11

    2021-01-06 13:08:56
     测量范围: 湿度 20~90%RH,温度 0~50℃  精度 :湿度±5%,温度±2℃  分辨率 :湿度 1%,温度 1℃ DHT11数据格式 首先主机发送开始信号,即:拉低数据线,保持 t1(至少 18ms)时间,然后拉高数据线...
  • DHT11和DHT22比较及使用方法DHT11和DHT22(AM2302)技术性能特征DHT11和DHT22介绍DHT11和DHT22使用方法分析 DHT11和DHT22(AM2302)技术性能特征 ...测量范围:湿度20–90%RH,温度0~50℃ 湿度0–99.9%RH

    DHT11和DHT22(AM2302)技术性能特征

    DHT11: DHT22:
    工作电压范围:3.3V-5.5V
    工作电流 :平均0.5mA
    输出:单总线数字信号
    测量范围:湿度20–90%RH,温度0~50℃ 湿度0–99.9%RH,温度-40-80℃
    精度 :湿度±5%,温度±2℃ 湿度±2%,温度±0.5℃
    分辨率 :湿度1%,温度1℃ 湿度:0.1%RH,温度:0.1℃

    DHT11和DHT22介绍

    DHT11数字湿温度传感器采用单总线数据格式。单个数据引脚端口完成输入输出双向传输。其数据包由5Byte(40Bit)组成。数据分小数部分和整数部分,一次完整的数据传输为40bit,高位先出。

    DHT11的数据格式为:8bit湿度整数数据+8bit湿度小数数据+8bit温度整数数据+8bit温度小数数据+8bit校验和。

    其中校验和数据为前四个字节相加。
    传感器数据输出的是未编码的二进制数据。数据(湿度、温度、整数、小数)之间应该分开处理。
    在这里插入图片描述
    由以上数据就可得到湿度和温度的值,计算方法:
    湿度= byte4 . byte3=45.0 (%RH)
    温度= byte2 . byte1=28.0 ( ℃)
    校验= byte4+ byte3+ byte2+ byte1=73(校验正确)
    DHT22与DHT11主要有以下不同:
    校验格式相同,但是温湿度取值算法不同,传感器输出的温湿度值要除以10才得到真正的温湿度值温度最高位(Bit15)等于1表示负温度,等于0表示正温度,(Bit14-Bit0)表示温度值。
    在这里插入图片描述
    DHT22还具有以下特性:
    在这里插入图片描述

    DHT11和DHT22使用方法分析

    //IO方向设置
    #define DHT11_IO_IN()  {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=8<<12;}   //上拉下拉输入模式
    #define DHT11_IO_OUT() {GPIOG->CRH&=0XFFFF0FFF;GPIOG->CRH|=3<<12;}   //推挽输出
    IO操作函数											   
    #define	DHT11_DQ_OUT PGout(11) //数据端口	PG11
    #define	DHT11_DQ_IN  PGin(11)  //数据端口	PG11
    
    

    数据发送流程是相同的,但是时间上有差异
    数据发送流程
    数据发送流程图
    DHT11:首先主机发送开始信号,即:拉低数据线,保持t1(至少18ms)时间,然后拉高数据线t2(20-40us),然后读取DHT11的响应,正常的话,DHT11会拉低数据线,保持t3(40-50us)作为响应信号,然后DHT11拉高数据线,保持t4(40~50us)时间后,开始输出数据。
    DHT22:首先主机发送开始信号,DHT22从低功耗模式转换为高速模式,保持t1(至少500us)时间,然后拉高数据线t2(20-40us),然后读取DHT11的响应,正常的话,DHT11会拉低数据线,保持t3(80us左右)作为响应信号,然后DHT11拉高数据线,保持t4(80us左右)时间后,开始输出数据。
    代码解析
    复位
    在这里插入图片描述
    拉低数据线,保持t1(至少18ms)时间,然后拉高数据线t2(20~40us)时间

    //复位DHT11
    void DHT11_Rst(void)	   
    {                 
    	DHT11_IO_OUT(); 	//SET OUTPUT
        DHT11_DQ_OUT=0; 	//拉低DQ
        delay_ms(20);    	//拉低至少18ms
        DHT11_DQ_OUT=1; 	//DQ=1 
    	delay_us(30);     	//主机拉高20~40us
    }
    
    //复位DHT22
    void DHT22_Rst(void)	   
    {                 
    	DHT22_IO_OUT(); 	//SET OUTPUT
        DHT22_DQ_OUT=0; 	//拉低DQ
        delay_ms(1);    	//拉低至少500us,此处1ms
        DHT22_DQ_OUT=1; 	//DQ=1 
    	delay_us(30);     	//主机拉高20~40us
    }
    

    等待回应
    在这里插入图片描述

    //等待DHT11的回应
    //返回1:未检测到DHT11的存在
    //返回0:存在   出现由低到高的变化即可
    u8 DHT11_Check(void) 	   
    {   
    	u8 retry=0;
    	DHT11_IO_IN();//SET INPUT	 
        while (!DHT11_DQ_IN&&retry<100)//DHT11会拉低40~80us
    	{
    		retry++;
    		delay_us(1);
    	};	 
    	if(retry>=100)return 1;
    	else retry=0;
        while (DHT11_DQ_IN&&retry<100)//DHT11拉低后会再次拉高40~80us
    	{
    		retry++;
    		delay_us(1);
    	};
    	if(retry>=100)return 1;	    
    	return 0;
    }
    

    在这里插入图片描述

    //等待DHT22的回应
    //返回1:未检测到DHT22的存在
    //返回0:存在   出现由低到高的变化即可
    u8 DHT22_Check(void) 	   
    {   
    	u8 retry=0;
    	DHT22_IO_IN();//SET INPUT	 
    	
        while (!DHT22_DQ_IN&&retry<100)//DHT22会拉低80us左右
    	{
    		retry++;
    		delay_us(1);
    	} 
    	if(retry>=100)return 1;
    	else retry=0;
        while (DHT22_DQ_IN&&retry<100)//DHT22拉低后会再次拉高80us左右
    	{
    		retry++;
    		delay_us(1);
    	}
    	if(retry>=100)return 1;	    
    	return 0;
    }
    

    读数据一个bit
    在这里插入图片描述

    //从DHT11读取一个位
    //返回值:1/0
    u8 DHT11_Read_Bit(void) 			 
    {
     	u8 retry=0;
    	while(DHT11_DQ_IN&&retry<100)//等待变为低电平
    	{
    		retry++;
    		delay_us(1);
    	}
    	retry=0;
    	while(!DHT11_DQ_IN&&retry<100)//等待变高电平
    	{
    		retry++;
    		delay_us(1);
    	}
    	delay_us(40);//等待40us
    	if(DHT11_DQ_IN)return 1;
    	else return 0;		   
    }
    

    在这里插入图片描述

    //从DHT22读取一个位
    //返回值:1/0
    u8 DHT22_Read_Bit(void) 			 
    {
     	u8 retry=0;
    	while(DHT22_DQ_IN&&retry<100)//等待变为低电平
    	{
    		retry++;
    		delay_us(1);
    	}
    	retry=0;
    	while(!DHT22_DQ_IN&&retry<100)//等待变高电平
    	{
    		retry++;
    		delay_us(1);
    	}
    	delay_us(40);//等待40us
    	if(DHT22_DQ_IN)return 1;
    	else return 0;		   
    }
    

    DHT11和DHT22读取一个字节是相同的

    //从DHT11读取一个字节
    //返回值:读到的数据
    u8 DHT11_Read_Byte(void)    
    {        
        u8 i,dat;
        dat=0;
       for (i=0;i<8;i++) 
      {
          dat<<=1; 
         dat|=DHT11_Read_Bit();
        }				    
        return dat;
    }
    

    代码解析:解析温度和湿度值

    //从DHT11读取一次数据
    //temp:温度值(范围:0~50°)
    //humi:湿度值(范围:20%~90%)
    //返回值:0,正常;1,读取失败
    u8 DHT11_Read_Data(u8 *temp,u8 *humi)    
    {        
     	u8 buf[5];
    	u8 i;
    	DHT11_Rst();
    	if(DHT11_Check()==0)
    	{
    		for(i=0;i<5;i++)//读取40位数据
    		{
    			buf[i]=DHT11_Read_Byte();
    		}
    		if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
    		{
    			*humi=buf[0];
    			*temp=buf[2];
    		}
    	}else return 1;
    	return 0;	    
    }
    
    //从DHT22读取一次数据
    //temp:温度值(范围:-40--80°)
    //humi:湿度值(范围:0%--99.9%)
    //返回值:0,正常;1,读取失败
    u8 DHT22_Read_Data(float *temp,float *humi)  
    {        
     	u8 buf[5];
    	u8 i;
    	DHT22_Rst();
    	if(DHT22_Check()==0)
    	{
    		for(i=0;i<5;i++)//读取40位数据
    		{
    			buf[i]=DHT22_Read_Byte();
    		}
    		if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
    		{
    			*humi=((float)((buf[0]<<8)+buf[1]))/10;
    			*temp=((float)((buf[2]<<8)+buf[3]))/10;
    		}
    	}else return 1;
    	return 0;	    
    }
    

    程序下载链接

    程序下载链接

    展开全文
  • 目录 DHT11: DHT21(AM2301): ...测量范围:20-90%RH 0-50℃ 测湿精度:±5% RH 测温精度:±2℃ 分辨力:1 DHT11引脚说明(正面观看,左边的为1脚): DHT21(AM2301): 测量范...
  • 单片机——DHT11 温湿度传感器

    千次阅读 2021-04-01 09:15:17
    DHT11温湿度传感器在51单片机中的应用 一、DHT11 模块参数如下: 1 可以检测周围环境的湿度和温度 2 传感器采用 DHT11 3 湿度测量范围: 20%-95%( 0 度-50 度范围)湿度测量误差: ±5% 4 温度测量范围: 0 度-50 ...
  • 在本篇文章中,我们将学习如何基于Arduino开发板使用DHT11或DHT22传感器测量温度和湿度。这两个传感器在电子爱好者...其温度测量范围为-40〜125度,精度±0.5度,而DHT11温度范围为0〜50度,精度+ -2度。 DHT22传感...
  • DHT11是单线接口数字温湿度传感器,温度测量范围是0~50℃,湿度测量范围是20%~90%RH,温度测量精度是±2℃,湿度测量精度是±5%RH。 DHT11包含一个电阻式感湿元件和一个NTC(负温度系数)测温元件,通过双向单线输出...
  • 在本篇文章中,您将学习如何设置DHT11和DHT22传感器,并测量环境温度和湿度。 DHT11和DHT22温湿度传感器 在许多项目中,由于温度和湿度等参数的重要性...温度测量范围 0 - 50摄氏度 -40 - 80摄氏度 温度测量精度 ±5%
  •  测量范围: 湿度20-90%RH, 温度0~50℃  测量精度: 湿度+-5%RH, 温度+-2℃  分 辨 率: 湿度1%RH, 温度1℃  互 换 性: 可完全互换 ,  长期稳定性: <±1%RH/年 需要安装dht11库文件 #...
  • ESP8266--驱动DHT11

    万次阅读 2019-01-15 23:07:13
    ESP8266驱动DHT11模块 1. ESP8266与DHT11的硬件连接 DHT11模块驱动引脚接的是ESP8266模块的GPIO5引脚。 2. DHT11属性 2.1 DHT11模块特点 含有校准数字信号, 可测量环境温度, 相对湿度。 具有极高的可靠性与卓越的...
  •  测量范围: 湿度20-90%RH, 温度0~50℃  测量精度: 湿度±5%RH, 温度±2℃  分 辨 率: 湿度1%RH, 温度1℃  互 换 性: 可完全互换 ,  长期稳定性: <±1%RH/年 #include <dht11.
  • DHT11温湿度传感器

    千次阅读 2018-04-11 20:16:45
    ZigBee、NBIOT等无线通信技术交流学习,可以加入QQ技术交流群:575036716本章内容的源码包可以到CSDN的下载版块进行下载:点击打开链接DHT11是一款数字温湿度传感器,有效测量范围是温度0~50℃,湿度20~95%,DHT11是...
  • 咸鱼ZTMR实例—DHT11温湿度模块 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。 主控板:ZTMR1.1开发板 DHT11温湿度模块 模块介绍: 可以检测周围环境的湿度和温度 传感器采用DHT11 ...
  • 基于51单片机+DHT11温湿度+LCD1602显示

    千次阅读 多人点赞 2021-02-18 20:44:21
    测量范围2.接口说明3.电源引脚4.串行接口 (单线双向)5.相关时序及代码6. DHT11引脚说明程序代码main.clcd1602.clcd1602.hdelay.cdelay.h项目展示 DHT11温湿度相关介绍 DHT11产品概述 DHT11数字温湿度传感器是一款...
  • Arduino使用DHT11温湿度传感器获取环境温湿度

    万次阅读 多人点赞 2017-09-18 10:36:34
    DHT11 温湿度传感器接线与使用DHT11 是一款温湿度传感器,可以用来测试环境温湿度,该传感器的的温度测量范围为 0 ~ 50°C,误差为 2 °C;湿度测量范围为在 0°C时为30%-90%RH,环境温度为 25°C时,湿度测量范围为...
  • DHT11数字温度传感器是一款含有已校准数字信号输出的温湿度复合传感器。其湿度测量范围在20-90%RH间,误差±5%RH,温度测量范围在0-50℃间,误差±2℃。
  • DHT11是一款性价比极高的温湿度传感器,其温度测量范围:0-50℃,测量误差:±2℃;湿度测量范围:20-90%RH,测量误差:±5%RH。尽管其精度不高,但是可以满足大部分应用场合。为了通过DHT11读取温湿度,我们更关心...
  • 实验21:DHT11温湿度传感器实验

    千次阅读 2020-04-22 11:15:14
    一、简介 输出:单总线数字信号。... 测量范围:湿度20~90%RH ;温度0 ~ 50°C。 精度:湿度+-5% ;温度+-2°C。 分辨率:湿度1% ;温度1°C。 DHT11图例: 数据格式: DHT11数字湿温度传感器采用单总...
  • DHT11温湿度和STM32

    2019-12-18 11:01:05
    DHT11技术性能特征: 1、工作电压范围:3.3V-5.5V 2、工作电流:平均0.5mA 3、输出:单总线数字信号; 4、测量范围:湿度20-90%RH 温度0-50°C 5、精度:湿度±5%,温度±2℃ 6、分辨率:湿度1%,温度1℃ ....
  • DHT11温湿度传感器模块 ...测量范围: 湿度: 20% ~ 9 0%(精度5.0%) 温度:0 ~ +50 ℃(精度2℃) 响应时间:<50ms 低功耗、小体积、稳定可靠 接线 DHT11模块接线示意图 DHT11 ...
  • 第二次培训任务:对dht11的基本了解

    千次阅读 2020-07-29 21:46:32
    DHT11温湿度传感器的测量范围,以及精度、分辨率如下图。如果超出了这个范围,那么DHT11就不能够使用了。 图3 参数特性 二、硬件认识 单总线结构 引脚说明:GND、VCC、空脚、数据引脚DATA(其中数据引脚既可以...
  • MSP430课程设计内容,利用单片机通过DS18B20测量水温,通过DHT11测量室内的温度和湿度,并且显示在OLED显示屏上。测到的水温超过临界值会驱动风扇转动和蜂鸣器报警,并且有指示灯来只是温度的大致范围。风扇转动有两...
  • ​STM8L_13_DHT11: 1.User:工程及main文件 2.Hardware:USART,CLK,...低功耗设计时,常用的传感器参数采集有很多,如国产的DHT11温湿度采集,单总线时序简单,测量范围-湿度20-90%RH,温度0-50℃,一般用于精度不是...
  • 传感器简介 DHT11数字温度湿度传感器是一款有已校准数字信号输出的温...测量范围:湿度20-90%RH、温度0-50℃。 DHT11.c 1 /** 2 * @file DHT11.c 3 * @brief 4 * @version 0.1 5 * @date 2019-06-28 ...

空空如也

空空如也

1 2 3 4
收藏数 64
精华内容 25
关键字:

dht11测量范围