已解决:HCSR501连接单片机,LED灯时亮时灭怎么回事?

问题原因及解决办法在文末,
首先介绍一下什么是HCSR501。

一、HC-SR501 小型人体感应模块说明书(来源于HCSR501官方说明文档)
1、产品概述
HC-SR505 小型人体感应模块是基于红外线技术的自动控制产品,
灵敏度高,可靠性强,超小体积,超低电压工作模式。广泛应用于各
类自动感应电器设备,尤其是干电池供电的自动控制产品。
在这里插入图片描述
2、电气参数
在这里插入图片描述
3、功能特点
■全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。■ 可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。■ 超小体积。■ 工作电压范围宽:默认工作电压 DC**4.5V-20V**。■ 微功耗:静态电流<50 微安,特别适合干电池供电的自动控制产品。■输出高电平信号:可方便与各类电路实现对接。应用范围■ 人体感应灯具 ■ 人体感应玩具■ 安防产品 ■ 工业自动化控制■自动感应电器设备 ■电池供电自动控制等
4.使用说明
在这里插入图片描述
5.感应范围
在这里插入图片描述
6.外形调节
在这里插入图片描述
7.应用范围及电路说明
在这里插入图片描述
二、HCSR501连接单片机后,程序如下:

#include <STC8.H>
#include<intrins.h>
sbit HCR501=P3^2;	 //HCSR501的电平输出端接入单片机P3^2口
void main(void)
{  
	P6=0XFF;
	while(1)
	{
		if(HCR501 == 1)	  //有人时,输出高电平	   
			P6 = 0X00;	  //此单片机的LED灯为共阳极,使P6口为低电平,LED灯全亮
		else if(HCR501 == 0)
			P6 = 0XFF;	  //P6口为高电平,LED灯全灭
	}
}

三、出现问题

LED灯在HCSR501模块不管在有人还是没人时一直时亮时灭。

四、检查解决

问题原因: 仔细检查程序没问题,检查HCSR501接线发现HCSR501所接正极电源为3.3V,而HCSR501说明书里明确指出工作电压为4.5V-20V,于是把HCSR501的正极输入端接到单片机的5V输出端。再次测试成功。

五、效果图
在这里插入图片描述

发布了14 篇原创文章 · 获赞 7 · 访问量 3295

猜你喜欢

转载自blog.csdn.net/weixin_44135826/article/details/105661725