欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機+DHT11溫濕度個位數據不正確 [打印本頁]

作者: MirrAKe    時間: 2021-3-20 11:06
標題: 51單片機+DHT11溫濕度個位數據不正確
程序如下:
這是DHT11的讀取程序,顯示程序在main文件中,用LCD1602顯示,LCD1602的程序絕對是正確的,因為我別的程序也用了,現在的問題是溫濕度十位數據正確,個位數據錯誤,能過校驗

#include <reg52.h>

typedef unsigned char uchar;

sbit DATA = P1^6;

void Delay18ms()        //@11.0592MHz
{
    unsigned char i, j;

    i = 33;
    j = 66;
    do
    {
        while (--j);
    } while (--i);
}

void Delay10us()        //@11.0592MHz
{
    unsigned char i;

    i = 2;
    while (--i);
}


void DHT11Start()
{
    DATA = 0;
    Delay18ms();
    DATA = 1;
    Delay10us();
    Delay10us();
    Delay10us();
    DATA = 1;
}

uchar GetByte()
{
    uchar i,b=0;
    for(i=0;i<8;i++)
    {
        while(!DATA);
    Delay10us();
    Delay10us();
    Delay10us();
        b <<= 1;
      if(DATA == 1)b += 1;
                    while(DATA);
  }
    return b;
}

void DHT11GetData(uchar *dat)
{
    uchar datacheck,RH,RL,TH,TL;

    DHT11Start();
    if(!DATA)
    {
        while(!DATA);
        while(DATA);
        RH = GetByte();
        RL = GetByte();
        TH = GetByte();
        TL = GetByte();
        datacheck = GetByte();
        DATA = 1;
    }
   
if(datacheck == (RH+RL+TH+TL))
{
        dat[0] = (RH/10) +'0';
        dat[1] = (RL%10) +'0';
        dat[2] = (TH/10) +'0';
        dat[3] = (TL%10) +'0';
    }
    else
    {
        dat[0] = '0';
        dat[1] = '0';
        dat[2] = '0';
        dat[3] = '0';
    }
   
   
}























歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1