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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3642|回復: 3
收起左側

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

[復制鏈接]
ID:303240 發表于 2018-12-24 23:53 | 顯示全部樓層 |閱讀模式
#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
回復

使用道具 舉報

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人视屏 | 中文天堂在线一区 | 久久激情网 | 午夜精品久久久 | 国产一区二区三区 | 久草精品在线 | 久久久久久免费免费 | 一级aaaaaa毛片免费同男同女 | 久一精品 | www久久久| 亚洲免费在线 | 亚洲免费毛片 | 夜夜爽夜夜操 | 淫片专区| 黄色在线免费看 | 国产精品成人国产乱 | 日韩精品视频中文字幕 | 一区影视 | 欧美精品综合在线 | 羞羞色网站 | 日韩成人在线免费视频 | 91成人在线 | 亚洲第一av| 国产日韩欧美激情 | 成人欧美日韩一区二区三区 | av黄色免费在线观看 | 国产亚洲精品成人av久久ww | 日韩国产三区 | 久久国产精品亚洲 | 国产精品视频一二三区 | 欧美激情综合五月色丁香小说 | 亚洲国产精品成人久久久 | 亚洲av毛片 | 精品视频免费 | 精品久久久网站 | 国产高清视频一区 | 欧美一区视频在线 | 亚洲视频在线一区 | 成人午夜精品 | 一级黄色毛片免费 | 久久色视频 |