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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1221|回復: 0
打印 上一主題 下一主題
收起左側

仿真時LCD一直顯示DHT11采集的數據為0,求大神解決一下

[復制鏈接]
跳轉到指定樓層
樓主
請問是因為沒采集到數據嗎,還是時序問題呀  純小白QAQ

DHT11代碼:
#include"reg52.h"
#include"DHT11.h"
#include"delay.h"
#include <intrins.h>
sbit  DHT11_DQ=P3^7;

bit status;  

void delay_10us(unsigned int nus)
{
        unsigned char i;

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

void DHT11_Rst(void)  
{
        DHT11_DQ=0;      
        delay_ms(20);   
        DHT11_DQ=1;      
        delay_10us(4);  
}

bit DHT11_Check(void)
{
        unsigned char retry=0;

        while(DHT11_DQ&&retry<100)
        {
                retry++;
                delay_10us(1);
        };
        if(retry>=100)return 1;   
        else retry=0;              
        while(!DHT11_DQ&&retry<100)
        {
                retry++;
                delay_10us(1);
        };
        if(retry>=100)return 1;
                 return 0;
        
}

bit DHT11_Init(void)  
{
        DHT11_Rst() ;         
        return DHT11_Check();
}

static unsigned char DHT11_Read_Byte(void)
{
        unsigned char retry, dat = 0, i;
        status = OK;  
        for(i = 8; i > 0; i--)
        {
        
                dat <<= 1;
                retry = 0;
        
                whileT11_DQ == 0 && retry++ < NUMBER);
                if(retry >= NUMBER)
                {
                        status = ERROR;  
                        return 0;   
                }

                delay_10us(2);
        
                if(DHT11_DQ != 0)
                {
               
                        dat++;
               
                        while(DHT11_DQ != 0 && retry++ < NUMBER)
                        {
                                DHT11_DQ = 1;
                        }
                        if(retry >= NUMBER)
                        {
                                status = ERROR;  
                                return 0;
                        }  
                }
        }  
        return (dat);

bit DHT11_Read_Date(unsigned char *temp,unsigned char *humi)
{  
        unsigned char i = 0,retry = 0;
        unsigned char buf[SIZE];
        DHT11_DQ = 0;      
        delay_ms(30);
        DHT11_DQ = 1;   

        delay_10us(3);
        if(DHT11_DQ != 0)  
        {
                //??ó|′eD?o?  
                return ERROR;
        }
        else
        {
        
                while(DHT11_DQ == 0 && retry++ < NUMBER);  
                if(retry >= NUMBER)
                {
                        DHT11_DQ = 1;
                        return ERROR;  
                }
                retry = 0;
                DHT11_DQ = 1;        
        
                while(DHT11_DQ != 0 && retry++ < NUMBER);
                if(retry >= NUMBER)
                {
                        DHT11_DQ = 1;
                        return ERROR;
                }
        

            for(i = 0; i < SIZE; i++)  
                {
                        buf[ i] = DHT11_Read_Byte();
                        if(status == ERROR)        
                        {
                                DHT11_DQ = 1;   
                                return ERROR;  
                        }  
                }
                if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
                {
                        *humi = buf[0];
                        *temp = buf[2];
                        DHT11_DQ = 1;
                        return OK;                                                   
                }
                else                        
                {
                        
                        return ERROR;
                }
        }         
}



主函數
void main()
{
        unsigned char temperature;              
        unsigned char humidity;
        Time0_Time1_init();
        lcd1602_init();
        led= 1;
        delay_ms(1000);
        L1602_string(1,1,"WD:");
        L1602_string(1,8,"SD:");
        L1602_string(1,6,"C");
        L1602_string(1,13,"%");
        L1602_string(2,3,":");
        L1602_string(2,6,":");
        L1602_string(2,12,":");
        while(1)
        {
                DHT11_Read_Date(&temperature,&humidity);
                delay_ms(50);
               
                L1602_int(1,4,temperature);
                L1602_int(1,11,humidity);
               
                if(key1==0
                {
                        buf++;
                        if(buf>1) buf=0;
                }
               
                if(buf==0
                {
                        L1602_string(1,15,"SD");
                        if(key2==0) led=~led;
                        if(key3==0) q1=~q1;
                        if(key4==0) q2=~q2;
                        if(temperature>40) q2=1;
                }
               
               
                if(buf==1
                {
                        L1602_string(1,15,"ZD");
                        if(key4==0) miao++;
                        if(key5==0) fen++;
                        if(key6==0) shi++;
                        if(key3==0) shi1++;  if(shi1>23) shi1=0;
                        if(key2==0) fen1++;  if(fen1>59) fen1=0;
                        
                        if((shi==shi1)&(fen==fen1)
                        {
                                if(humidity>70) led=q1=q2=0;  
                        
                        }
                        if(temperature>40|humidity<35
                        led=q1=q2=1;        
                }
                L1602_int(2,1,shi);
                L1602_int(2,4,fen);
                L1602_int(2,7,miao);
               
                L1602_int(2,10,shi1);
                L1602_int(2,13,fen1);
               
                delay_ms(150);
        }        
}

void Timer0() interrupt 1
{
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   count++;
   if(count==20
        {
    count=0
                miao++;
                if(miao>59)
                {
                        miao=0;
                        fen++;
                }
                if(fen>59)
                {
                        fen=0;
                        shi++;
                }
                if(shi>23) shi=0;
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品一区二区 | 欧洲视频一区 | 成人av一区二区亚洲精 | 中文字幕一区二区三区在线观看 | 久久国产精品免费一区二区三区 | 成人免费大片黄在线播放 | 神马久久春色视频 | 欧美视频在线免费 | 伦理片97 | 成人超碰 | 国产精品视频在线播放 | 免费国产成人av | 精品日韩一区二区三区av动图 | 99九九视频 | 精品国产精品一区二区夜夜嗨 | 国产一区二区三区在线免费 | 亚洲成人在线视频播放 | 精品一区二区在线观看 | 天天干com | 久国产| 日本三级日产三级国产三级 | 久久亚洲精品国产精品紫薇 | 在线国产一区二区三区 | 国产色| 羞羞视频网站免费看 | 精品欧美色视频网站在线观看 | 中国毛片免费 | 99精品视频免费在线观看 | 欧美日韩久久 | 国产福利在线 | 免费看国产一级特黄aaaa大片 | 人人操日日干 | 伊人在线| 九九热精品视频 | 免费在线一区二区 | 91久久夜色| 久久99网站 | 国产精品一区二区在线 | 成人免费观看视频 | 久久免费观看一级毛片 | 欧美 视频 |