久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3278|回復: 0
收起左側

51單片機DHT11溫濕度傳感器程序

[復制鏈接]
ID:969817 發表于 2021-10-7 08:51 | 顯示全部樓層 |閱讀模式
DHT11是一款有已校準數字信號輸出的溫濕度傳感器。 精度濕度+-5%RH, 溫度+-2℃,量程濕度20-90%RH, 溫度0~50℃。

DHT11 器件采用簡化的單總線通信。單總線即只有一根數據線,系統中的數據交換、控制均由單總線完成。單總線通常要求外接一個約 5.1kΩ 的上拉電阻,這樣,當總線閑置時,其狀態為高電平。由于它們是主從結極,只有主機呼叫從機時,從機才能應答,因此主機訪問器件都必須嚴格遵循單總線序列,如果出現序列混亂,器件將不響應主機。

二.數據采集分析
1.數據總時序

用戶主機(MCU)發送一次開始信號后,DHT11 從低功耗模式轉換到高速模式,待主機開始信號結束后,DHT11 發送響應信號,送出 40bit 的數據,幵觸發一次信采集

2.主機發送起始信號

單片機連接DHT11的DATA引腳的I/O口輸出低電平,且低電平保持時間不能小于 18ms,然后等待 DHT11 作出應答信號。

3.檢測從機應答信號

DHT11 的 DATA 引腳檢測到外部信號有低電平時, 等待外部信號低電平結束, 延遲后 DHT11 的 DATA引腳處于輸出狀態,輸出 80 微秒的低電平作為應答信號,緊接著輸出 80 微秒的高電平通知外設準備接收數據。

4.接收數據
(1)數據判定規則
位數據“0”的格式為: 50 微秒的低電平和 26-28 微秒的高電平,位數據“1”的格式為: 50 微秒的低電平加 70微秒的高電平。

接收數據時可以先等待低電平過去,即等待數據線拉高,再延時60us,因為60us大于28us且小于70us,再檢測此時數據線是否為高,如果為高,則數據判定為1,否則為0。

(2)數據格式

一次傳送 40 位數據,高位先出

8bit 濕度整數數據 + 8bit 濕度小數數據+8bit 溫度整數數據 + 8bit 溫度小數數據+8bit 校驗位。

(3)數據校正
判斷“8bit 濕度整數數據 + 8bit 濕度小數數據+8bit 溫度整數數據 + 8bit 溫度小數數據”的結果是否等于8bit 校驗位。如果等于則數據接收正確,否則應該放棄這一次的數據,重新接收。
————————————————
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit Data=P3^6;   //定義數據線
uchar rec_dat[9];   //用于顯示的接收數據數組

void DHT11_delay_us(uchar n)
{
    while(--n);
}

void DHT11_delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}

void DHT11_start()
{
   Data=1;
   DHT11_delay_us(2);
   Data=0;
   DHT11_delay_ms(20);   //延時18ms以上
   Data=1;
   DHT11_delay_us(30);
}

uchar DHT11_rec_byte()      //接收一個字節
{
   uchar i,dat=0;
  for(i=0;i<8;i++)    //從高到低依次接收8位數據
   {         
      while(!Data);   等待50us低電平過去
      DHT11_delay_us(8);     //延時60us,如果還為高則數據為1,否則為0
      dat<<=1;           //移位使正確接收8位數據,數據為0時直接移位
      if(Data==1)    //數據為1時,使dat加1來接收數據1
         dat+=1;
      while(Data);  //等待數據線拉低   
    }  
    return 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;
        }
        /*數據處理,方便顯示*/
        rec_dat[0]='0'+(RH/10);
        rec_dat[1]='0'+(RH%10);
        rec_dat[2]='R';
        rec_dat[3]='H';
        rec_dat[4]=' ';
        rec_dat[5]=' ';
        rec_dat[6]='0'+(TH/10);
        rec_dat[7]='0'+(TH%10);
        rec_dat[8]='C';
    }
}

/*這里使用lcd1602來顯示采集到的數據,lcd1602驅動程序在博主的51單片機系列博文中有詳細講解*/
void main()
{
   uchar i;   
   lcd_init();   //lcd1602初始化
   while(1)
   {   
       DHT11_delay_ms(1500);    //DHT11上電后要等待1S以越過不穩定狀態在此期間不能發送任何指令
       DHT11_receive();
       lcd_write_command(0x80);   //從lcd1602第一行第一個位置開始顯示
       for(i=0;i<9;i++)
       lcd_write_data(rec_dat[ i]);   //顯示數據                     
   }
}

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天操天天干天天爽 | 国产精品久久777777 | 亚洲日日夜夜 | 91免费在线 | 人人九九精| 黄色片视频网站 | 不卡av电影在线播放 | 国产精品久久久久久52avav | 国产精品99久久免费观看 | 精品国产一级 | 色频| 久久久久久成人 | 亚洲黄色一级 | 欧美成人在线网站 | av在线免费观看网址 | 午夜爱爱毛片xxxx视频免费看 | 久久精品久久久久久 | 国产高清免费 | 91久久| 中文字幕精品视频在线观看 | 国产黄色小视频在线观看 | 91欧美精品成人综合在线观看 | 日韩精品在线观看网站 | 91中文在线观看 | 国产一区| 日日骚网| 久久久久久久久中文字幕 | 一区二区三区四区不卡 | 国产精品大片在线观看 | 一级黄色片在线免费观看 | 96av麻豆蜜桃一区二区 | 亚洲麻豆 | 婷婷激情在线 | 97精品超碰一区二区三区 | 国产精品久久久久久久久久三级 | 五月婷亚洲 | 精品久久久久久久人人人人传媒 | 91综合网 | 91在线视频免费观看 | 国内精品久久精品 | 91精品久久久久久久久中文字幕 |