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

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

概述

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

详细

一、DHT11温度传感器

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

 

技术参数:

  • 供电电压: 3.3~5.5V DC

  • 输 出: 单总线数字信号

  • 测量范围: 湿度20-90%RH, 温度0~50℃

  • 测量精度: 湿度+-5%RH, 温度+-2℃

  • 分 辨 率: 湿度1%RH, 温度1℃

  • 互 换 性: 可完全互换 ,

  • 长期稳定性: <±1%RH/年

     

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

硬件连接:

图片1.png

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);        
   }
}

最后串口打印情况如下:

1545370700037004584.png

三、Arduino串口显示时钟

硬件连接:

图片3.png

编译烧写前,你还需要:

  1. 右击Arduino软件->打开文件所在的位置

  2. 将本项目代码文件夹中的DHT11文件夹复制到libraries文件夹中

图片4.png

这样我们代码中才能使用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);     
}

温湿度显示功能如下:

1545370771125065177.png

四、总结

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

 

五、项目结构图

 

图片6.png

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

转载于:https://www.cnblogs.com/demodashi/p/10503372.html

Arduino智能小车和C51是两种不同的微控制器开发平台。 Arduino智能小车是基于Arduino开发板的智能车辆。Arduino开发板是一款简单易用的开发平台,它使用C/C++语言进行编程,具有丰富的库函数和简洁的语法。Arduino智能小车可以通过各种传感器来感知和收集环境信息,通过控制电机和舵机来实现运动和转向。它还具备连接性能强大的扩展模块,如无线通信模块、蓝牙模块、摄像头等,使其具备更多的功能扩展和应用潜力。Arduino智能小车适合于初学者和爱好者,可以用于学习机器人控制和自动化技术。 C51是一款MCS-51微控制器的集成开发环境。MCS-51系列微控制器由英特尔(Intel)公司开发,广泛应用于嵌入式系统和单片机领域。C51提供了开发环境、编译器和调试工具,可以使用汇编语言或C语言进行程序开发C51开发平台适用于对硬件和底层编程有一定了解的开发者,其灵活性和高效性使它成为一种强大的工具。C51可以使用各种外设和接口进行系统扩展,如LED显示、键盘输入、LCD显示、串口通信等,非常适合开发低成本、低功耗的嵌入式系统。 在实际应用中,选择Arduino智能小车还是C51开发平台,取决于项目的需求和开发者的技术水平。Arduino智能小车适用于入门级学习和个人爱好项目,它有大量的教程和资源可供参考;而C51开发平台适用于更复杂的嵌入式系统开发,可以提供更高的灵活性和控制能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值