標(biāo)題: zigbee溫濕度DHT11代碼 [打印本頁]

作者: 馬小    時(shí)間: 2022-1-1 21:19
標(biāo)題: zigbee溫濕度DHT11代碼
#include <ioCC2530.h>
#include "OnBoard.h"

#define uint unsigned int
#define uchar unsigned char

#define wenshi P0_6

/*******函數(shù)聲明*********/
void Delay_us(void); //1 us延時(shí)
void Delay_10us(void); //10 us延時(shí)
void Delay_ms(uint Time);//n ms延時(shí)
void COM(void);        // 溫濕寫入
void DHT11(void) ;  //溫濕傳感啟動(dòng)


//溫濕度定義
uchar ucharFLAG,uchartemp;
uchar shidu_shi,shidu_ge,wendu_shi,wendu_ge=4;
uchar ucharT_data_H,ucharT_data_L,ucharRH_data_H,ucharRH_data_L,ucharcheckdata;
uchar ucharT_data_H_temp,ucharT_data_L_temp,ucharRH_data_H_temp,ucharRH_data_L_temp,ucharcheckdata_temp;
uchar ucharcomdata;

uchar temp[2]={0,0};
uchar temp1[5]="temp=";
uchar humidity[2]={0,0};
uchar humidity1[9]="humidity=";

/****************************
        延時(shí)函數(shù)
*****************************/
void Delay_us() //1 us延時(shí)
{
   MicroWait(1);   
}

void Delay_10us() //10 us延時(shí)
{
  MicroWait(10);
}

void Delay_ms(uint Time)//n ms延時(shí)
{
  unsigned char i;
  while(Time--)
  {
    for(i=0;i<100;i++)
     Delay_10us();
  }
}


/***********************
   溫濕度傳感
***********************/
void COM(void)        // 溫濕寫入
{     
    uchar i;         
    for(i=0;i<8;i++)   
    {
     ucharFLAG=2;
     while((!wenshi)&&ucharFLAG++);
     Delay_10us();
     Delay_10us();
     Delay_10us();
     uchartemp=0;
     if(wenshi)uchartemp=1;
     ucharFLAG=2;
     while((wenshi)&&ucharFLAG++);   
     if(ucharFLAG==1)break;   
     ucharcomdata<<=1;
     ucharcomdata|=uchartemp;
     }   
}

void DHT11(void)   //溫濕傳感啟動(dòng)
{
    wenshi=0;
    Delay_ms(19);  //>18MS
    wenshi=1;
    P0DIR &= ~0x40; //重新配置IO口方向
    Delay_10us();
    Delay_10us();                                               
    Delay_10us();
    Delay_10us();  
     if(!wenshi)
     {
      ucharFLAG=2;
      while((!wenshi)&&ucharFLAG++);
      ucharFLAG=2;
      while((wenshi)&&ucharFLAG++);
      COM();
      ucharRH_data_H_temp=ucharcomdata;
      COM();
      ucharRH_data_L_temp=ucharcomdata;
      COM();
      ucharT_data_H_temp=ucharcomdata;
      COM();
      ucharT_data_L_temp=ucharcomdata;
      COM();
      ucharcheckdata_temp=ucharcomdata;
      wenshi=1;
      uchartemp=(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_data_L_temp);
       if(uchartemp==ucharcheckdata_temp)
      {
          ucharRH_data_H=ucharRH_data_H_temp;
          ucharRH_data_L=ucharRH_data_L_temp;
          ucharT_data_H=ucharT_data_H_temp;
          ucharT_data_L=ucharT_data_L_temp;
          ucharcheckdata=ucharcheckdata_temp;
       }
         wendu_shi=ucharT_data_H/10;
         wendu_ge=ucharT_data_H%10;
         
         shidu_shi=ucharRH_data_H/10;
         shidu_ge=ucharRH_data_H%10;        
    }
    else //沒用成功讀取,返回0
    {
         wendu_shi=0;
         wendu_ge=0;
         
         shidu_shi=0;
         shidu_ge=0;  
    }
   P0DIR |= 0x40; //IO口需要重新配置
}







歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1