找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1837|回复: 0
打印 上一主题 下一主题
收起左侧

CC2530驱动DHT11读出来的值是0怎么办

[复制链接]
跳转到指定楼层
楼主
ID:365360 发表于 2019-4-8 16:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
代码如下,用串口工具一看出来的值全是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]="当前温度和湿度:";

void initUART(void)
{
  CLKCONCMD &= ~0x40;      // 设置系统时钟源为 32MHZ晶振
    while(CLKCONSTA & 0x40); // 等待晶振稳定
    CLKCONCMD &= ~0x47;      // 设置系统主时钟频率为 32MHZ
   
    PERCFG = 0x00;           //位置1 P0口
    P0SEL = 0x0c;            //P0_2,P0_3用作串口,第二功能
    P2DIR &= ~0xC0;          //P0 优先作为UART0 ,优先级
   
    U0CSR |= 0x80;           //UART 方式
    U0GCR |= 9;             //U0GCR与U0BAUD配合     
    U0BAUD |= 59;           // 波特率设为115200‘
    UTX0IF = 0;              //UART0 TX 中断标志初始置位0
}
void UartTX_Send_String(char *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF=*Data++;
    while(UTX0IF==0);
    UTX0IF=0;
  }
}

//延时函数
void Delay_us() //1 us延时
{
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");
    asm("nop");   
    asm("nop");
    asm("nop");
    asm("nop");   
    asm("nop");
}
void Delay_10us() //10 us延时
{
  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延时
{
    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)   //温湿传感启动
{
    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空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表