lzh电子论坛

欢迎来到lzh电子论坛:
如果您对电子技术感兴趣就加入我们吧!在这里互相交流互相学习!主要讨论的方向有:单片机,ARM,PCB板设计,FPGA,汇编,C/C++等方面。
-----lzh电子论坛
lzhbbs.forumotion.com
lzh电子论坛

电子的道路是孤独的,要懂得左手温暖右手,要懂得把debug当作快乐去欣赏,去享受,那样你才会成功...

欢迎访问lzh电子论坛。可通过【谷歌,SOSO,搜狗】搜索“lzh电子论坛”直接进入论坛。点击了解论坛详细制度


    DH11源代码

    分享
    avatar
    WhyCWen
    论坛版主
    论坛版主

    帖子数 : 19
    威望 : 0
    注册日期 : 13-04-19

    DH11源代码

    帖子 由 WhyCWen 于 2013-09-10, 9:52 pm

    //DH11头文件
    #ifndef __temp_hum_H__
    #define __temp_hum_H__
    #include
    #define  uchar unsigned char

    sbit          TRH_DATA_PORT=P1^0;

    extern uchar  TH_data,TL_data,RH_data,RL_data,CK_data;
    void DHT_Dat_packed();
    char receive();
    #endif



    //调用函数DHT_Dat_Packed()输出温度数值 TH_data湿度数值(TH_data)
    http://DH11.c文件

    #include"temp_hum.h"


    /*******************************************************************************/


    /********************************************************************************/
    uchar  TH_data,TL_data,RH_data,RL_data,CK_data;
     
    /****************************************************************************/

    /****************************************************************************/

     void delay_xus (unsigned char t)
    {   
      while(--t);
    }



    void delay_xms(unsigned int x) 

    unsigned int y,z; 

        for(y=x;y>0;y--) 

        for(z=110;z>0;z--); 


    char receive()
    {      
             
       uchar i,respond=0;
       uchar com_data,temp=0;
       for(i=0;i<=7;i++)    
       {
          respond=0;
          while((!TRH_DATA_PORT)&&respond++<50);
          delay_xus(20);
          if(TRH_DATA_PORT)
          {
            temp=1;
            respond=0;
            while((TRH_DATA_PORT)&&respond++<40); 
          } 
          else
           temp=0;
           com_data<<=1;
           com_data|=temp;    
        }
        return(com_data);  
    }
    /****************************************************************************/


    /****************************************************************************/


    /***************************************************************************/

    void DHT_Dat_packed()
    {
       uchar t=0;
     
    uchar  TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;
       uchar  respond = 0,EF_CY = 0; 
       TRH_DATA_PORT=0;
       delay_xms(18);
       TRH_DATA_PORT=1;
       delay_xus(40);
       TRH_DATA_PORT=1;
       if(!TRH_DATA_PORT)   
       {
        respond=0; 
        while((!TRH_DATA_PORT)&& respond++<80);
        respond=0;
     
        while(TRH_DATA_PORT && respond++<80);
        RH_temp = receive(); 
        RL_temp = receive(); 
        TH_temp = receive(); 
        TL_temp = receive(); 
        CK_temp = receive();
        TRH_DATA_PORT=1;     
        EF_CY = (RH_temp+RL_temp+TH_temp+TL_temp);
        if(EF_CY == CK_temp)
         {
          RH_data = RH_temp;
          RL_data = RL_temp;
          TH_data = TH_temp; 
          TL_data = TL_temp;
          CK_data = CK_temp;
        }
      }

    }
    avatar
    iiimini
    中级会员
    中级会员

    帖子数 : 34
    威望 : 0
    注册日期 : 13-05-30

    回复: DH11源代码

    帖子 由 iiimini 于 2013-09-11, 2:18 pm

    楼主可以使用结构体来存温度和湿度。就不用定义那么多变量.一点小建议。感觉程序很规范啊,标准模块化
    avatar
    WhyCWen
    论坛版主
    论坛版主

    帖子数 : 19
    威望 : 0
    注册日期 : 13-04-19

    回复: DH11源代码

    帖子 由 WhyCWen 于 2013-09-11, 10:42 pm

    Smile 谢谢  我多定义几个变量是为了 那些初学者而考虑的。我用数组就可以了

      目前的日期/时间是2018-11-20, 1:28 am