武汉绘芯科技有限公司欢迎您!
10余年经验沉淀展览展示运动控制的专家
全国咨询热线:027-87052087
联系我们
武汉绘芯科技有限公司
电话:027-87052087
手机:13329706647
邮箱:956693667@qq.com
地址:武汉市江夏区藏龙岛谭湖一路8号
联系人:黄先生
您的位置: 滑轨屏|绘芯科技 > 知识库 >
知识库

DHT11 驱动程序

日期:2016-07-30 15:11:11 来源:未知 点击

DHT11 驱动程序,调试成功了,如果用在不是52单片机的,只需修改时间就可以了。

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

//----------------------------------------------//

//----------------IO口定义区--------------------//

//----------------------------------------------//

sbit  DHT = P1^3 ;

//----------------------------------------------//

//----------------定义区--------------------//

//----------------------------------------------//

uchar DATARHT[5],RTflag=0,tm[6];

uchar  FLAG;

void Delay_t(uint j)

{      uchar i;

       for(;j>0;j--)

     {

     for(i=0;i<27;i++);

     }

}

void  Delay_10us(void)

{

        uchar i;

        i--;

        i--;

        i--;

        i--;

        i--;

        i--;

}

  

uchar  COM()

{

      uchar i,comdata,temp1;

       for(i=0;i<8;i++)   

       {

            FLAG=2; 

        while((!DHT)&&FLAG++);

        Delay_10us();

         Delay_10us();

        Delay_10us();

        temp1=0;

        if(DHT)temp1=1;

         FLAG=2;

      while((DHT)&&FLAG++);

        //超时则跳出for循环     

         if(FLAG==1)break;

        //判断数据位是0还是

           

     // 如果高电平高过预定0高电平值则数据位为 1

        comdata<<=1;

           comdata|=temp1;

        }

      return (comdata); 

}

void RH(void)

{

     uchar i,temp;

     //主机拉低18ms

       DHT=0;

      Delay_t(180);

      DHT=1;

    //总线由上拉电阻拉高 主机延时20us

      Delay_10us();

      Delay_10us();

      Delay_10us();

      Delay_10us();

    //主机设为输入 判断从机响应信号

      DHT=1;

    //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行   

      if(!DHT)     //T !   

      {

        FLAG=2;

        //判断从机是否发出 80us 的低电平响应信号是否结束 

        while((!DHT)&&FLAG++);

        FLAG=2;

        //判断从机是否发出 80us 的高电平,如发出则进入数据接收状态

        while((DHT)&&FLAG++); //数据接收状态

        for(i=0;i<5;i++)

        {

          DATARHT[i]=COM();

        }   

        DHT=1;

        //数据校验    

        temp=(DATARHT[0]+DATARHT[1]+DATARHT[2]+DATARHT[3]);

        if(temp==DATARHT[4])

        {           

          RTflag=1;     

        }

        if(RTflag==1)

        {        

          RTflag=0;

          tm[0]=DATARHT[0]/10;

          tm[1]=DATARHT[0]%10;

          tm[2]=DATARHT[1]/10; //湿度

  

          tm[3]=DATARHT[2]/10;

          tm[4]=DATARHT[2]%10;

          tm[5]=DATARHT[3]/10; //温度                  

        }

 

     }

 

}

 


在线客服
联系方式

热线电话

13329706647

上班时间

周一到周五

公司电话

027-87052087

二维码
线