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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3521|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久国产电影 | 国内精品视频在线观看 | 国产精品99久久久久久动医院 | www.亚洲一区 | 久久久久久久一区 | 欧美午夜激情在线 | 成人欧美一区二区三区黑人孕妇 | 久久久美女| 久久久久久国产精品久久 | 天天久久| 91精品国产91久久久久游泳池 | 久久久久久91 | 另类专区亚洲 | 午夜精品一区二区三区在线播放 | 亚洲精品久久视频 | 日韩中文字幕av | 中文字幕乱码一区二区三区 | 97在线观看 | 97国产精品视频人人做人人爱 | 色综合成人网 | av男人的天堂av | 精品国产乱码久久久久久牛牛 | 伊人久久综合 | 亚洲444eee在线观看 | 亚洲国产高清在线观看 | 久久精品视频12 | 嫩草91在线| 欧美一级在线观看 | 99九九久久 | 亚洲欧洲一区二区 | 欧美一级电影免费 | 精精国产xxxx视频在线野外 | 成人免费影院 | 亚洲人va欧美va人人爽 | 欧美一级大黄 | 一区二区三区在线免费 | 日韩欧美高清 | 国产高清在线观看 | 中文字幕免费视频 | 国产麻豆一区二区三区 | 国产综合视频 |