3133|7

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

毫无反映的DHT11代码,是不是我理解的太简单了,请大神看看 [复制链接]

  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. }  
复制代码

最新回复

AVR我也没用过,简单的高低电平检测,你得先设置端口的方向吧  详情 回复 发表于 2013-12-11 13:01

点评

建议你分块写,先写初始化的看能不能成功初始化,再写读数据的部分,一点一点排除错误  详情 回复 发表于 2013-12-10 09:38
点赞 关注
 

回复
举报

1万

帖子

16

TA的资源

版主

沙发
 

楼主的程序不全吧?

#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  详情 回复 发表于 2013-12-9 12:35
 
个人签名http://shop34182318.taobao.com/
https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
原帖由 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< #define DHT_L_0 PORTD&=~(1< #define DHT_Out_1 DDRD|=(1< #define DHT_in_0 DDRD&=~(1<
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

4
 
刚学,现在还不会
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

5
 
顶上去不要沉啦
 
 
 

回复

577

帖子

9

TA的资源

纯净的硅(中级)

6
 

回复 楼主zqdl8 的帖子

建议你分块写,先写初始化的看能不能成功初始化,再写读数据的部分,一点一点排除错误

点评

小弟也是刚学AVR,不知道里面的有些语法对不对,用的环境是as6.0,比如说if(PIND7==0)//这样的语法来检查pin7的电平高低是否正确。  详情 回复 发表于 2013-12-11 12:59
 
个人签名哈喽,我是卡索KaSuo~~
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

7
 
原帖由 季夏木槿 于 2013-12-10 09:38 发表
建议你分块写,先写初始化的看能不能成功初始化,再写读数据的部分,一点一点排除错误

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

点评

AVR我也没用过,简单的高低电平检测,你得先设置端口的方向吧  详情 回复 发表于 2013-12-11 13:01
 
 
 

回复

577

帖子

9

TA的资源

纯净的硅(中级)

8
 

回复 7楼zqdl8 的帖子

AVR我也没用过,简单的高低电平检测,你得先设置端口的方向吧
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表