Arduino和C51开发DHT11温湿度传感器

技术:51单片机、Arduino、DHT11、温湿度传感器、传感器

概述

学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产品的思维有很大的帮助

详细

代码下载:http://www.demodashi.com/demo/14729.html

一、DHT11温度传感器

DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。

技术参数:

  • 供电电压: 3.3~5.5V DC
  • 输 出: 单总线数字信号
  • 测量范围: 湿度20-90%RH, 温度0~50℃
  • 测量精度: 湿度+-5%RH, 温度+-2℃
  • 分 辨 率: 湿度1%RH, 温度1℃
  • 互 换 性: 可完全互换 ,
  • 长期稳定性: <±1%RH/年

二、51单片机串口显示时钟

硬件连接:

DHT11进行初始化,接着接收数据位发送过来的数据,并将他保存到my_dat数组中:

void DHT11_receive()      //接收40位的数据
{
    uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
    DHT11_start();
    if(Data==0)
    {
        while(Data==0);   //等待拉高
        DHT11_delay_us(40);  //拉高后延时80us
        R_H=DHT11_rec_byte();    //接收湿度高八位
        R_L=DHT11_rec_byte();    //接收湿度低八位
        T_H=DHT11_rec_byte();    //接收温度高八位
        T_L=DHT11_rec_byte();    //接收温度低八位
        revise=DHT11_rec_byte(); //接收校正位

        DHT11_delay_us(25);    //结束

        if((R_H+R_L+T_H+T_L)==revise)      //校正
        {
            RH=R_H;
            RL=R_L;
            TH=T_H;
            TL=T_L;
        }
        /*将数据存储到my_dat中*/
        my_dat[0]=‘0‘+(RH/10);
        my_dat[1]=‘0‘+(RH%10);
        my_dat[2]=‘%‘;
        my_dat[3]=‘ ‘;
        my_dat[4]=‘ ‘;
        my_dat[5]=‘0‘+(TH/10);
        my_dat[6]=‘0‘+(TH%10);
        my_dat[7]=‘C‘;
    }
}

main函数中进行串口初始话、接收温湿度和发送温湿度到串口:

void main()
{
   UsartInit();
   DHT11_delay_ms(1000);    //DHT11上电后要等待1S以越过不稳定状态
   while(1)
   {
       DHT11_receive();
       printf("%c",my_dat[0]);
   printf("%c",my_dat[1]);
   printf("%c",my_dat[2]);
   printf("%c",my_dat[3]);
   printf("%c",my_dat[4]);
   printf("%c",my_dat[5]);
   printf("%c",my_dat[6]);
   printf("%c",my_dat[7]);
   printf("\n");
   DHT11_delay_ms(1000);
   }
}

最后串口打印情况如下:

三、Arduino串口显示时钟

硬件连接:

编译烧写前,你还需要:

  1. 右击Arduino软件->打开文件所在的位置
  2. 将本项目代码文件夹中的DHT11文件夹复制到libraries文件夹中

这样我们代码中才能使用DHT11这个头文件,代码如下:

#include <dht11.h>            //定义头文件dht11.h
#define DHT11PIN 2            //定义Data引脚为D2
dht11 DHT11;                  //实例化DHT11对象
int chk,tem,hum;

void setup() {
  Serial.begin(9600);              //串口初始化
  pinMode(DHT11PIN,OUTPUT);
}

void loop() {
  chk = DHT11.read(DHT11PIN);     //读取D2引脚电平值
  tem=(float)DHT11.temperature;  //将温度值赋值给tem
  hum=(float)DHT11.humidity;  //将湿度值赋给hum
  Serial.print("Tempeature:");   //打印出Tempeature:
  Serial.println(tem);        //打印温度结果

  Serial.print("Humidity:"); //打印出Humidity:
  Serial.print(hum);         //打印出湿度结果
  Serial.println("%");       //打印出%

  delay(1000);
}

温湿度显示功能如下:

四、总结

本文实现51单片机和Arduino串口显示温湿度功能,让读者对DHT11能够更好的理解,如果想深入了解DHT11具体实现和其他的功能,大家可以自行上网搜索资料,后面也会教大家在LCD和OLED显示屏上显示温湿度值,感谢你的支持!!!

五、项目结构图

代码下载:http://www.demodashi.com/demo/14729.html

注:本文著作权归作者,由demo大师发表,拒绝转载,转载需要作者授权

原文地址:https://www.cnblogs.com/demodashi/p/10503372.html

时间: 2024-10-12 03:54:37

Arduino和C51开发DHT11温湿度传感器的相关文章

张高兴的 Windows 10 IoT 开发笔记:DHT11 温湿度传感器

原文:张高兴的 Windows 10 IoT 开发笔记:DHT11 温湿度传感器 GitHub : https://github.com/ZhangGaoxing/windows-iot-demo/tree/master/DHT11Demo

【雕爷学编程】Arduino动手做(55)--DHT11温湿度传感器

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备逐一做做实验,不管能否成功,都会记录下来---小小的进步或是搞不掂的问题,希望能够抛砖引玉. [Arduino]168种传感器模块系列实验(资料+代码+图形+仿真) 实验五十五:DHT11 温湿度复合传感器模块(数字型单总线通信) 温度 度量物体冷热的物理量,是国际单位制中7个基本物理量之一.温度是

Arduino和C51开发光敏传感器

技术:51单片机.Arduino.光敏传感器.PCF8591.AD/DA转换 概述 本文介绍了如何接收传感器的模拟信号和如何使用PCF8591 AD/DA转换模块对光敏传感器的模拟信号进行转换.讲述了51单片机和Arduino如何读取模拟信号,并通过串口实时显示出来. 详细 代码下载:http://www.demodashi.com/demo/14737.html 一.光敏传感器 光敏传感器是利用光敏元件将光信号转换为电信号的传感器,它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长.光传

Arduino和C51开发OLED显示屏

技术:51单片机.Arduino.OLED显示屏.U8glib 概述 OLED显示屏常常用作为智能产品的显示设备,本文简单介绍OLED显示屏的使用方法. 详细 代码下载:http://www.demodashi.com/demo/14753.html 一.OLED显示屏 OLED显示屏是利用有机电自发光二极管制成的显示屏.由于同时具备自发光有机电激发光二极管,不需背光源.对比度高.厚度薄.视角广.反应速度快.可用于挠曲性面板.使用温度范围广.构造及制程较简单等优异之特性,被认为是下一代的平面显示

树莓派连接DHT11温湿度传感器(python)

介绍 DHT11作为一个廉价配件,同时包含了温度.湿度传感器,而且,编码使用也非常简单. 本文介绍如果在树莓派中使用 DHT11,代码是Python.如果有任何疑问,欢迎在下面留言. 接线 VCC接5V或者3.3V DATA接GPIO(我接的是BCM的16号针脚,物理针脚是36) GND接GND 代码 [codesyntax lang="python"] [python] view plain copy #!/usr/bin/python import RPi.GPIO as GPIO

树莓派3b驱动dht11温湿度传感器

新建并打开C文件 touch dht11.c sudo vim dht11.c 编写驱动程序 1 #include<wiringPi.h> 2 #include<stdio.h> 3 #include<stdlib.h> 4 #include<stdint.h> 5 #define MAX_TIME 85 6 #define DHT11PIN 7 7 #define ATTEMPTS 5 //retry 5 times when no response 8

树莓派使用DHT11温湿度传感器(C语言程序)

pi4j是基于wiringpi开发的通过java来控制树莓派GPIO口的库文件.在java程序中引入相关类就可以使用已经封装好的方法控制树莓派GPIO口. pi4j官网:http://pi4j.com/ pi4j下载:http://pi4j.com/download.html pi4j安装:http://pi4j.com/install.html pi4j文档:http://pi4j.com/apidocs/index.html 编译和运行: 使用了pi4j后,编译.java文件和运行.clas

Arduino和C51开发LCD1602显示屏

技术:51单片机.Arduino.LCD1602 概述 本文介绍了LCD1602显示屏,并在LCD1602上显示字符串,对LCD1602常见的问题的解决和开发方法也做了简单介绍. 详细 代码下载:http://www.demodashi.com/demo/14741.html 一.LCD1602 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符,1602液晶也叫1602字符型液晶,它是一种专门用来显示字母.数字.符号的点阵型液晶模块.它是由若干个5x7或者5x10的点阵字符

DHT11温湿度传感器

一.硬件介绍 RH是相对湿度,是用零点温度来定义的,一般,RH在45%~65%之间最为合适. 注:NTC为热敏电阻,输出为:单总线数字信号,单线双向串行通讯. 注:上拉电阻情况下,配置为开漏输出,可以增加驱动能力,减小CPU功耗. 二.程序关键点:1)引脚输入与输出的准确切换,2)输出电平的准确延迟,3)输入电平的等待与延迟读取以及等待的时间限制. 1.MCU如何设置开始信号? /*由MCU向DHT11发送一次开始信号,总线空闲状态为高电平,MCU把总线拉低至少18ms,保证DHT11能检测到开