打印
[AVR单片机]

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

[复制链接]
1226|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
我有调试成功的程序,要是想参考的话晚上找我要

多谢,如何联系你

使用特权

评论回复
5
qin552011373| | 2013-12-10 22:47 | 只看该作者
zqdl8 发表于 2013-12-10 18:50
多谢,如何联系你

之前我貌似用DS18B20调出来的,源文件没有找到

使用特权

评论回复
6
qin552011373| | 2013-12-11 19:18 | 只看该作者
yisoft.rar (127.53 KB)


使用特权

评论回复
7
qin552011373| | 2013-12-11 19:19 | 只看该作者
文件已上传,我也是改的别人的,仅供参考

使用特权

评论回复
8
qin552011373| | 2013-12-11 19:19 | 只看该作者
开发环境是ICC  7,.22 ,不懂再来吧

使用特权

评论回复
9
巨坑无比货| | 2015-4-19 10:11 | 只看该作者
你好  请问你的dht11 这部分的软件编码还在吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝