久久久久久久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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品一区在线 | 一区二区久久精品 | 欧美一区二区三区视频在线播放 | 草草视频在线观看 | 久草在线青青草 | 在线播放一区二区三区 | 福利社午夜影院 | 99re热精品视频 | 国产午夜精品一区二区三区四区 | 国产亚洲成av人片在线观看桃 | 日韩h | 二区不卡 | a级黄色网 | www国产精| 激情国产视频 | 中国大陆高清aⅴ毛片 | 亚洲天堂成人在线视频 | 人人干人人干人人干 | 久久精品国产一区二区电影 | 无人区国产成人久久三区 | 亚洲a在线视频 | 亚洲精品自在在线观看 | 精品视频一区二区 | 欧美成人一级视频 | www.788.com色淫免费 | 韩国精品在线 | 人人干人人艹 | 99只有精品 | 一区二区三区四区在线视频 | 99爱在线视频 | 欧美精品网站 | 欧美亚洲国产一区二区三区 | 91精品久久久久久久久 | 成人在线不卡 | 国产日韩欧美另类 | 一级黄色片免费在线观看 | 日韩在线免费视频 | 在线成人免费视频 | 成人小视频在线观看 | 欧美电影一区 | 亚洲精品久久久一区二区三区 |