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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

DHT11為什么仿真出不來,一直卡在接收一個字節數據的那部分,一直沒搞清原因啊

[復制鏈接]
跳轉到指定樓層
樓主
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char

uchar code seg[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38};

sbit date=P3^7;
sbit lcd_rs=P1^0;
sbit lcd_rw=P1^1;
sbit lcd_en=P1^2;
sbit led=P1^4;

uchar RH,RL,TH,TL,check;

void delayms(uint m)                //@12.000MHz
{
        unsigned char i, j;
while(m--)
{
        i = 2;
        j = 239;
        do
        {
                while (--j);
        } while (--i);
}
}

void delayus(uint n)                //@12.000MHz
{
        while(n--)
                _nop_();
       
}

void write_com(uint com)//lcd1602寫命令函數
{
        lcd_rs=0;
        P2=com;
        delayms(2);
        lcd_en=1;
        delayms(2);
        lcd_en=0;
}

void write_date(uint date)//lcd1602寫數據函數
{

        lcd_rs=1;
        P2=date;
        delayms(2);
        lcd_en=1;
        delayms(2);
        lcd_en=0;

}
void init()//lcd1602初始化,設置顯示方式
{

        lcd_rw=0;
        lcd_en=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);


}
uchar recive_byte(void)//一個字節接受函數
{
       
        uchar i,dat;
        dat=0;
        for(i=0;i<8;i++)
                {
                        //while(date);//等待DHT11拉低.輸出的數據總是從低電平開始的
                        while(date==0);//等待DHT11拉高
                        delayus(40);
                        dat=dat<<1;
                        if(date==1)
                        {       
                                dat=dat+1;
                        }
                        while(date);//等待高電平結束
                        led=0;
                }
                //led=0;
                return dat;        //將接受到的數據返回       
       
}

void read_DHT11()
{
       
        delayms(5000);//調試用,將此函數放入主循環,實現5S執行一次
       
        //發送起始信號
        date= 0;
        delayms(20);
        date= 1;
        while(date);//這里是等待DHT11將總線拉低
        while(date==0);//等待DHT11拉高總線
        while(date);//等待數據拉低,然后可以接受數據
        //開始接收數據
        RH= recive_byte();
        RL= recive_byte();
        TH= recive_byte();
        TL= recive_byte();
        check= recive_byte();
        //接收 DHT11 輸出的結束信號
        delayus(54);//延遲后,總線會是高電平。實際上這個高電平是由DHT11輸出的
}

void main()
{
        init();
        //delayms(1000)        ;//開機等待1秒
        while(1)
{
        read_DHT11();
        write_com(0x80);       
        write_date('T');
        write_date('E');
        write_date('M');
        write_date('P');
        write_com(0x80+0x05);
        write_date(seg[RH/10]);
        write_date(seg[RH%10]);
        write_date('.');
        write_date(seg[RL%10]);
}
       
}

捕獲.PNG (87.43 KB, 下載次數: 28)

捕獲.PNG
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:303240 發表于 2018-12-24 23:56 | 只看該作者
不用的代碼已經被我注釋掉了
回復

使用道具 舉報

板凳
ID:164602 發表于 2018-12-25 08:28 | 只看該作者
賣蘋果的喬布斯 發表于 2018-12-24 23:56
不用的代碼已經被我注釋掉了

好像程序有問題,沒細看,給一個我一直用到的程序你試試。
單片機STC89C52RC ,晶振12M,P2.0口為通訊口連接DHT11

        //----溫度高8位== U8T_data_H------
        //----溫度低8位== U8T_data_L------
        //----濕度高8位== U8RH_data_H-----
        //----濕度低8位== U8RH_data_L-----
        //----校驗 8位 == U8checkdata-----


unsigned char  U8FLAG;
unsigned char  U8temp;
unsigned char  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
unsigned char  U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
unsigned char  U8comdata;

void Delay(unsigned int j)//延時888.1725us
{
        unsigned char i;
        for(;j>0;j--)
        {        
                for(i=0;i<27;i++);
        }
}

void delay(void)//延時35.5us
{               
        unsigned char i=10;
        while(i--);
}

void  Delay_10us(void)
{
        unsigned char i;
        i--;
        i--;
        i--;
        i--;
        i--;
        i--;
}

void COM (void)//讀數據
{
        unsigned char i;
        for(i=0;i<8;i++)          
        {
                U8FLAG=2;       
                while((!P2_0)&&U8FLAG++);
                Delay_10us();
                Delay_10us();                               
                Delay_10us();
                U8temp=0;
                if(P2_0)U8temp=1;
                U8FLAG=2;
                while((P2_0)&&U8FLAG++);
                if(U8FLAG==1)break;
                U8comdata<<=1;
                U8comdata|=U8temp;        //0
        }//rof
}

void RH (void)
{       
        P2_0=0;
        Delay(180);
        P2_0=1;
        Delay_10us();
        Delay_10us();
        Delay_10us();
        Delay_10us();            
        P2_0=1;
        if(!P2_0)                 //T !          
        {
                U8FLAG=2;
                while((!P2_0)&&U8FLAG++);
                U8FLAG=2;
                while((P2_0)&&U8FLAG++);
                COM();
                U8RH_data_H_temp=U8comdata;
                COM();
                U8RH_data_L_temp=U8comdata;
                COM();
                U8T_data_H_temp=U8comdata;
                COM();
                U8T_data_L_temp=U8comdata;
                COM();
                U8checkdata_temp=U8comdata;
                P2_0=1;
                U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
                if(U8temp==U8checkdata_temp)
                {
                        U8RH_data_H=U8RH_data_H_temp;
                        U8RH_data_L=U8RH_data_L_temp;
                        U8T_data_H=U8T_data_H_temp;
                        U8T_data_L=U8T_data_L_temp;
                        U8checkdata=U8checkdata_temp;
                }//fi
        }//fi
}
回復

使用道具 舉報

地板
ID:303240 發表于 2018-12-25 12:09 來自手機 | 只看該作者
HC6800-ES-V2.0 發表于 2018-12-25 08:28
好像程序有問題,沒細看,給一個我一直用到的程序你試試。
單片機STC89C52RC ,晶振12M,P2.0口為通訊口 ...

能幫我看下我的是哪里出問題嗎

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品免费国产一区二区三区四区 | 国产一区二区三区视频免费观看 | 国产视频线观看永久免费 | 一区二区在线不卡 | 天天干天天插天天 | 久久久xxx | 精品在线播放 | a级黄色片在线观看 | 亚洲三区在线观看 | 羞羞视频在线网站观看 | 可以在线看的黄色网址 | 亚洲高清一区二区三区 | www.一级毛片 | 日本不卡视频在线播放 | 亚洲欧美中文日韩在线v日本 | 91精品国产综合久久婷婷香蕉 | 精品日韩 | 欧美精品中文字幕久久二区 | aaaaaa大片免费看最大的 | 久草免费在线视频 | 免费观看一级毛片 | 国产乱肥老妇国产一区二 | 亚洲一二三区在线观看 | 永久网站 | 9999久久| 精品免费在线 | 精品欧美一区二区三区久久久 | 岛国二区 | 欧美日韩中文字幕在线 | 欧美精品日韩 | 亚洲一区二区三区在线播放 | 天堂中文在线播放 | 免费看的av | 91精品久久久久久久久久 | 国产精品福利网 | 亚洲国产精品一区二区第一页 | 日韩一二区 | 拍真实国产伦偷精品 | 久久久www成人免费精品 | 久久午夜视频 | 伊人网伊人|