标题:
为什么我的DHT11不能对单片机的信号做出回应?
[打印本页]
作者:
dwx31
时间:
2023-6-7 22:56
标题:
为什么我的DHT11不能对单片机的信号做出回应?
这是我想用来验证DHT11的反应的,理论上来说只要while(LCD_T);能出来就会熄灭led灯,但是实际情况是一直卡在while里面不出来
单片机源程序如下:
#include<reg52.h>
#include<intrins.h>
#define u8 unsigned char
#define u16 unsigned int
sbit GREEN =P2^3;
sbit YELLOW =P2^4;
sbit RED =P2^5;
sbit LCD_T =P2^6;
void delay_us(u8 us) {
while (us--);
}
void delayms(u8 t)//延时
{
u8 i;
u8 j;
for(i=0;i<t;i++)
for(j=0;j<124;j++);
}
// 发送起始信号
void DHT_Start()
{
LCD_T=1;
LCD_T = 0; // 拉低引脚电平18ms以上
delayms(30);
LCD_T = 1; // 拉高电平20~40us
delay_us(30);
while(LCD_T);
GREEN=0;
RED=0;
}
void main()
{
delayms(200);
while(1)
{
DHT_Start();
}
}
作者:
yzwzfyz
时间:
2023-6-8 08:25
这么简单,走单步调式一下,一看就明白了。
作者:
munuc_w
时间:
2023-6-8 15:38
DHT11是单总线,仔细看看单总线协议,再写代码。
作者:
BG6BXN
时间:
2023-6-8 17:06
前面LCD_T = 1; 后面while(LCD_T);咋还能出来
作者:
RianYu
时间:
2023-6-9 00:01
请问楼主后来解决了吗,我也遇到一样的问题
作者:
heitudi
时间:
2023-6-9 00:43
检查数据线上的上拉电阻
作者:
dwx31
时间:
2023-6-14 19:44
RianYu 发表于 2023-6-9 00:01
请问楼主后来解决了吗,我也遇到一样的问题
算解决了,延时的问题,那个延时和单片机的hz不统一,改成11.0592MHz后就行了
作者:
dwx31
时间:
2023-6-14 19:45
找到了,单片机内设改成了11.0592MHz就可以接收了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1