找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4826|回復(fù): 14
收起左側(cè)

最近弄了DHT11,做好了,分享下

  [復(fù)制鏈接]
ID:81678 發(fā)表于 2015-6-4 19:25 | 顯示全部樓層 |閱讀模式
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>

typedef unsigned char  U8;
typedef unsigned int   U16;   

sbit  DataPort= P2^0 ;
U8    U8FLAG;
U8    U8temp;
U16         U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U16   U8comdata;  
U8  count;

void Delay(int j)
{      
        U8 i;
        for(;j>0;j--)
        {        
                for(i=0;i<27;i++);
        }
}
       

void  Delay_10us(void)
{
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        _nop_();
}
       

                         
void  dht11_init(void)
{
        U8 i;
        for(i=0;i<8;i++)          
        {
                U8FLAG=2;       
          while((!DataPort)&&U8FLAG++);
                Delay_10us();
                Delay_10us();
                Delay_10us();
          U8temp=0;
          if(DataPort)
                U8temp=1;
                U8FLAG=2;
                while((DataPort)&&U8FLAG++);                  
          if(U8FLAG==1)break;
           U8comdata<<=1;
          U8comdata|=U8temp;        
         }
          
        }

        void RH(void)
        {
          //Ö÷»úà-μí18ms
       DataPort=0;
           Delay(180);
           DataPort=1;
           Delay_10us();
           Delay_10us();
           Delay_10us();
           Delay_10us();

           DataPort=1;          
           if(!DataPort)                 //T !          
           {
           U8FLAG=2;
           while((!DataPort)&&U8FLAG++);
           U8FLAG=2;

           while((DataPort)&&U8FLAG++);         
           dht11_init();
           U8RH_data_H=U8comdata;
           dht11_init();
           U8RH_data_L=U8comdata;
           dht11_init();
           U8T_data_H=U8comdata;
           dht11_init();
           U8T_data_L=U8comdata;
           dht11_init();
           U8checkdata=U8comdata;
           DataPort=1;
           }

        }
void uart_init()
{
        TMOD = 0x20;
        TH1 = 0xfd;   
        TL1 = 0xfd;
        TR1 = 1;  
        SCON = 0x50;
        ES = 1;
        EA = 1;  
        TI = 0;
        RI = 0;
}


void main()
{
        uart_init();
        Delay(1);
        while(1)
        {  
          RH();
                U8RH_data_L=U8RH_data_L>>8;
                TI=1;
                ES=0;
                printf("目前溫度是:");
                printf("%d",U8T_data_H);
                printf("攝氏度");
                printf(" \r\n");
                printf(“目前的濕度是");
                printf("%d",U8RH_data_L);
                printf("%%");
                printf("\r\n");
          Delay(20000);
        }
       
}

好東西就要分享

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的積分獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:1 發(fā)表于 2015-6-4 20:40 | 顯示全部樓層
分享萬歲,這個應(yīng)該是串口顯示的吧!!
回復(fù)

使用道具 舉報

ID:110866 發(fā)表于 2016-4-16 11:05 | 顯示全部樓層
看了,不錯,真好
回復(fù)

使用道具 舉報

ID:63317 發(fā)表于 2016-11-19 18:11 | 顯示全部樓層
謝謝分享資料
回復(fù)

使用道具 舉報

ID:105355 發(fā)表于 2017-4-12 18:06 | 顯示全部樓層
謝謝分享,串口輸出一切正常
回復(fù)

使用道具 舉報

ID:189699 發(fā)表于 2017-4-16 14:01 | 顯示全部樓層
這個怎么和別的不一樣?這里邊U8、U6的是什么啊
回復(fù)

使用道具 舉報

ID:229113 發(fā)表于 2017-8-24 13:46 | 顯示全部樓層
沒有顯示啊
回復(fù)

使用道具 舉報

ID:130345 發(fā)表于 2017-9-2 22:15 | 顯示全部樓層
一方大佬 發(fā)表于 2017-4-16 14:01
這個怎么和別的不一樣啊?這里邊U8、U6的是什么啊

是位數(shù)長度
回復(fù)

使用道具 舉報

ID:130345 發(fā)表于 2017-9-2 22:16 | 顯示全部樓層
串口顯示
回復(fù)

使用道具 舉報

ID:137005 發(fā)表于 2018-11-22 12:25 | 顯示全部樓層
謝謝分享!
回復(fù)

使用道具 舉報

ID:116029 發(fā)表于 2018-12-4 20:37 | 顯示全部樓層
剛好需要,感謝感謝
回復(fù)

使用道具 舉報

ID:359667 發(fā)表于 2018-12-5 14:44 | 顯示全部樓層
E4 1B D0 2E DE AE E3 98 CB 99 BA EA 66 23 90 A3 A8 E0 1B D0 99 65 23 E2 6C EB 9C A3 2A 8D E1 這個是在hex模式下顯示的。??蕻銟訍宏f#悾ㄠ袡e#鈒霚R*嶀??蕻鐪藱宏f#悾ㄠ袡e#阬霕V6咇??蕻銟脨衡n#悾犱袡e#鈒霚R:嶑這個是在文本模式下顯示的。在串口助手上面調(diào)試結(jié)果是這樣子的。求幫助
回復(fù)

使用道具 舉報

ID:411171 發(fā)表于 2018-12-10 15:05 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報

ID:137005 發(fā)表于 2018-12-18 16:25 | 顯示全部樓層
void Delay(int j)
{      
        U8 i;
        for(;j>0;j--)
        {         
                for(i=0;i<27;i++);
        }
}
這個延時是多少呢?
回復(fù)

使用道具 舉報

ID:137005 發(fā)表于 2018-12-18 17:14 | 顯示全部樓層
查看了一下,應(yīng)該是100us.對吧?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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