毫无反映的DHT11代码,是不是我理解的太简单了,请大神看看

2019-03-24 20:35发布

  1. #define DHT_H_1 PORTD|=(1<<PD7)
  2. #define DHT_L_0 PORTD&=~(1<<PD7)
  3. #define DHT_Out_1 DDRD|=(1<<PD7)
  4. #define DHT_in_0 DDRD&=~(1<<PD7)
  5. uchar DHT_Read()
  6. {
  7. uchar i,Data1=0;
  8. for (i=0;i<8;i++)
  9. {
  10.   while(PIND7==0);//等待数据开始的低电平结束
  11.   _delay_us(28); //等待28us
  12.   Data1<<=1;
  13.   
  14.   if (PD7==1)//如果等待28us后 pin7为高电平该信号为1
  15.   {
  16.    Data1|=0x01;
  17.   }
  18.   else
  19.   {
  20.    Data1|=0x00;
  21.   }
  22.   while(PIND7==0);//等待结束低电平结束,以便开始下一个数据的接收
  23. }
  24. return Data1;
  25. }
  26. void DHT_Data()
  27. {
  28.   uchar i;
  29.   DHT_Out_1;//DDR pin7输出
  30.   DHT_L_0; // 把pin7高电平拉低
  31.   _delay_ms(18);//拉低持续2ms,资料上说是拉低大于1ms
  32.   DHT_H_1;//释放pin7
  33.   DHT_in_0;//设置pin7为输入
  34.   DHT_H_1;
  35.   _delay_us(25);//总线由上拉电阻拉高主机延时 >20us等待25us以便DHT应答
  36.   if(PIND7==0)//检测pin7状态。DHT是否拉低PIN7响应
  37.   {  
  38.    while(PIND7==0)//等待DHT拉低PIN7 80us
  39.    while(PIND7==1)//等待DHT释放PIN7 80us
  40.    for (i=0;i<5;i++)//开始数据传输
  41.    {
  42.     TempData[i]=DHT_Read();
  43.    }   
  44.   }
  45. }  
复制代码 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
ddllxxrr
1楼-- · 2019-03-24 22:29
#define DHT_H_1 PORTD|=(1<
#define DHT_L_0 PORTD&=~(1<
#define DHT_Out_1 DDRD|=(1<
#define DHT_in_0 DDRD&=~(1<

啥意思啊????
zqdl8
2楼-- · 2019-03-25 00:06
原帖由 ddllxxrr 于 2013-12-9 09:04 发表
#define DHT_H_1 PORTD|=(1<
#define DHT_L_0 PORTD&=~(1<
#define DHT_Out_1 DDRD|=(1<
#define DHT_in_0 DDRD&=~(1<

啥意思啊????

呵呵,不好意思,复制的时候粘掉了
应该是
#define DHT_H_1 PORTD|=(1<<PD7)
#define DHT_L_0 PORTD&=~(1<<PD7)
#define DHT_Out_1 DDRD|=(1<<PD7)
#define DHT_in_0 DDRD&=~(1<<PD7)
wanghuailin
3楼-- · 2019-03-25 02:58
刚学,现在还不会
zqdl8
4楼-- · 2019-03-25 08:16
 精彩回答 2  元偷偷看……
季夏木槿
5楼-- · 2019-03-25 11:04
建议你分块写,先写初始化的看能不能成功初始化,再写读数据的部分,一点一点排除错误
zqdl8
6楼-- · 2019-03-25 13:56
原帖由 季夏木槿 于 2013-12-10 09:38 发表
建议你分块写,先写初始化的看能不能成功初始化,再写读数据的部分,一点一点排除错误

小弟也是刚学AVR,不知道里面的有些语法对不对,用的环境是as6.0,比如说if(PIND7==0)//这样的语法来检查pin7的电平高低是否正确。

一周热门 更多>