51单片机 人体红外感应模块 检测高电平不好使。高悬赏,大神呀,可追加

模块是好的,在硬件上设置为持续检测信号。

检测到人体,模块输出3.3v电压,检测不到,输出0v。
把模块输出引脚和单片机相连,检测单片机引脚,0v。单独测试模块引脚输出3.3v(模块和人位置不变)。。将电源上3.3v和单片机上引脚相连接,led亮。
程序如下
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit renti=P2^0; // 人体引脚
sbit led=P1^0;
void delay(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}

void main()
{
renti=1; //在初始化里 令renti=0和renti=1,都尝试过,不好使
led=1;
while(1)
{

if(renti==1) //检测有火焰
{ delay(5);
if(renti==1)
{ led=0;
delay(5000);

}
else
{
led=1;
}
}

}

}

我有过类似的情况,你的程序没问题,问题是在硬件的接口上,可能是你的传感器输出接口需要上拉什么的,导致单片机高地电平不能正常读取,楼主可以试下在单片机IO口对应接口处加上一个二极管再与传感器连接。追问

什么二极管呀??

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答