找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2169|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

CC2530驅(qū)動(dòng)DHT11讀出來的值是0怎么辦

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:365360 發(fā)表于 2019-4-8 16:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
代碼如下,用串口工具一看出來的值全是0
#include <ioCC2530.h>

//溫濕度定義
char charFLAG,chartemp,charcount;
char charT_data_H,charT_data_L,charRH_data_H,charRH_data_L,charcheckdata;
char charT_data_H_temp,charT_data_L_temp,charRH_data_H_temp,charRH_data_L_temp,charcheckdata_temp;
char charcomdata;
char str[5];
char Txdata[25]="當(dāng)前溫度和濕度:";

void initUART(void)
{
  CLKCONCMD &= ~0x40;      // 設(shè)置系統(tǒng)時(shí)鐘源為 32MHZ晶振
    while(CLKCONSTA & 0x40); // 等待晶振穩(wěn)定
    CLKCONCMD &= ~0x47;      // 設(shè)置系統(tǒng)主時(shí)鐘頻率為 32MHZ
   
    PERCFG = 0x00;           //位置1 P0口
    P0SEL = 0x0c;            //P0_2,P0_3用作串口,第二功能
    P2DIR &= ~0xC0;          //P0 優(yōu)先作為UART0 ,優(yōu)先級
   
    U0CSR |= 0x80;           //UART 方式
    U0GCR |= 9;             //U0GCR與U0BAUD配合     
    U0BAUD |= 59;           // 波特率設(shè)為115200‘
    UTX0IF = 0;              //UART0 TX 中斷標(biāo)志初始置位0
}
void UartTX_Send_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF=*Data++;
    while(UTX0IF==0);
    UTX0IF=0;
  }
}

//延時(shí)函數(shù)
void Delay_us() //1 us延時(shí)
{
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");   
    asm("nop");
    asm("nop");
    asm("nop");   
    asm("nop");
}
void Delay_10us() //10 us延時(shí)
{
  Delay_us();
  Delay_us();
  Delay_us();
  Delay_us();
  Delay_us();
  Delay_us();
  Delay_us();
  Delay_us();
  Delay_us();
  Delay_us();   
}
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++)   
    {
        charFLAG=2;
        while((!P0_7)&&charFLAG++);
        Delay_10us();
        Delay_10us();
        Delay_10us();
        chartemp=0;
        if(P0_7)chartemp=1;
        charFLAG=2;
        while((P0_7)&&charFLAG++);   
        if(charFLAG==1)break;   
        charcomdata<<=1;
        charcomdata|=chartemp;
    }   
}
void DHT11(void)   //溫濕傳感啟動(dòng)
{
    P0DIR |=0x80;
    P0_7=0;
    Delay_ms(18);  //18MS
    P0_7=1;
    Delay_10us();
    Delay_10us();                        
    Delay_10us();
    Delay_10us();  
    P0_7=1;
    P0DIR &= ~0x80; //重新配置IO口方向
    if(!P0_7)
    {
        charFLAG=2;
        while((!P0_7)&&charFLAG++);
        charFLAG=2;
        while((P0_7)&&charFLAG++);
        COM();
        charRH_data_H_temp=charcomdata;
        COM();
        charRH_data_L_temp=charcomdata;
        COM();
        charT_data_H_temp=charcomdata;
        COM();
        charT_data_L_temp=charcomdata;
        COM();
        charcheckdata_temp=charcomdata;
         P0DIR |=0x80;
        P0_7=1;
      
        chartemp=(charT_data_H_temp+charT_data_L_temp+charRH_data_H_temp+charRH_data_L_temp);
        
      
        if(chartemp==charcheckdata_temp)
        {
            charRH_data_H=charRH_data_H_temp;
            charRH_data_L=charRH_data_L_temp;
            charT_data_H=charT_data_H_temp;
            charT_data_L=charT_data_L_temp;
            charcheckdata=charcheckdata_temp;
        }
        
      
   
    }
}
void main()
{
  initUART();
  Delay_ms(1);
  while(1)
  {
    UartTX_Send_String(Txdata,25);
    DHT11();
    str[0]=charT_data_H/10+0x30;
    str[1]=charT_data_H%10+0x30;
    str[2]=charRH_data_H/10+0x30;
    str[3]=charRH_data_H%10+0x30;
    str[4]='\t';
    UartTX_Send_String(str,5);
    Delay_ms(2000);
  }
  
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表