找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1519|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)+DHT11溫濕度個(gè)位數(shù)據(jù)不正確

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:884998 發(fā)表于 2021-3-20 11:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
程序如下:
這是DHT11的讀取程序,顯示程序在main文件中,用LCD1602顯示,LCD1602的程序絕對(duì)是正確的,因?yàn)槲覄e的程序也用了,現(xiàn)在的問題是溫濕度十位數(shù)據(jù)正確,個(gè)位數(shù)據(jù)錯(cuò)誤,能過校驗(yàn)

#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';
    }
   
   
}


















分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表