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

[复制链接]
1709|8
 楼主| zqdl8 发表于 2013-12-8 22:46 | 显示全部楼层 |阅读模式
#define DHT_H_1 PORTD|=(1<
#define DHT_L_0 PORTD&=~(1<
#define DHT_Out_1 DDRD|=(1<
#define DHT_in_0 DDRD&=~(1<
uchar DHT_Read()
{
uchar i,Data1=0;
for (i=0;i<8;i++)
{
  while(PIND7==0);//等待数据开始的低电平结束
  _delay_us(28); //等待28us
  Data1<<=1;
  
  if (PD7==1)//如果等待28us后 pin7为高电平该信号为1
  {
   Data1|=0x01;
  }
  else
  {
   Data1|=0x00;
  }
  while(PIND7==0);//等待结束低电平结束,以便开始下一个数据的接收
}
return Data1;
}
void DHT_Data()
{
  uchar i;
  DHT_Out_1;//DDR pin7输出
  DHT_L_0; // 把pin7高电平拉低
  _delay_ms(18);//拉低持续2ms,资料上说是拉低大于1ms
  DHT_H_1;//释放pin7
  DHT_in_0;//设置pin7为输入
  DHT_H_1;
  _delay_us(25);//总线由上拉电阻拉高主机延时 >20us等待25us以便DHT应答
  if(PIND7==0)//检测pin7状态。DHT是否拉低PIN7响应
  {  
   while(PIND7==0)//等待DHT拉低PIN7 80us
   while(PIND7==1)//等待DHT释放PIN7 80us
   for (i=0;i<5;i++)//开始数据传输
   {
    TempData[i]=DHT_Read();
   }   
  }
}  
 楼主| zqdl8 发表于 2013-12-9 12:36 | 显示全部楼层

才发现开始的定义没发全
#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)
qin552011373 发表于 2013-12-10 08:21 | 显示全部楼层
我有调试成功的程序,要是想参考的话晚上找我要
 楼主| zqdl8 发表于 2013-12-10 18:50 | 显示全部楼层
qin552011373 发表于 2013-12-10 08:21
我有调试成功的程序,要是想参考的话晚上找我要

多谢,如何联系你
qin552011373 发表于 2013-12-10 22:47 | 显示全部楼层
zqdl8 发表于 2013-12-10 18:50
多谢,如何联系你

之前我貌似用DS18B20调出来的,源文件没有找到
qin552011373 发表于 2013-12-11 19:18 | 显示全部楼层



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
qin552011373 发表于 2013-12-11 19:19 | 显示全部楼层
文件已上传,我也是改的别人的,仅供参考
qin552011373 发表于 2013-12-11 19:19 | 显示全部楼层
开发环境是ICC  7,.22 ,不懂再来吧
巨坑无比货 发表于 2015-4-19 10:11 | 显示全部楼层
你好  请问你的dht11 这部分的软件编码还在吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部