51单片机使用HC-SR501人体红外感应器C语言

51单片机使用HC-SR501人体红外感应器C语言

前言

买到该产品后问客服和面向百度编程,发现在51单片机上 使用的教程不多,且不够细致,使用存在困难,烦躁了很久,为了不让后来者跟我一样,写一篇 文章,第一次写,排版和言语照顾不周,见谅

HC-SR501介绍

HC-SR501 是一款基于热释电效应的人体热释运动传感器,能检测到人体或者动物上发出的红外线。这个传感器模块可以通过两个旋钮调节检测 3 ~ 7 米的范围,5秒至5分钟的延迟时间,还可以通过跳线来选择单次触发以及重复触发模式。
下图为大概功能描述:
51单片机使用HC-SR501人体红外感应器C语言_第1张图片
图来自(https://blog.csdn.net/weixin_41939983/article/details/106418835?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-17.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-17.nonecase)该网站还有更较详细的简介
51单片机使用HC-SR501人体红外感应器C语言_第2张图片
(图来自http://www.51hei.com/bbs/dpj-106474-1.html)

C代码

与单片机连线为左接5V,右接GND,中间接P33(透镜朝下,引脚面向自己)
效果为:检测到人以后,p3^3输出高电平,使得灯灭,否则灯亮

#include
sbit dat=P3^3;		 //	   接传感器out


	  void delayx(unsigned int x)
	   {
	   unsigned int i,j;
	   for(i=x;i>0;i--)
	   for(j=112;j>0;j--)
	   ;
	   }	   

void main() {
	//dat=0;		//51默认高电平,先置0
	 
P2=0xFF;
	while(1){
	delayx(50);//延时50ms
		
		if(dat==1)			   //1高电平,人进入范围感应器输出1 -> dat
		P2=0xFF;			 //灯全灭
		else
		P2=0x00;		//灯全亮
	}
}
	

爬过的坑

1、给的资料所描述默认是可重复触发不是真实的,我在两家淘宝店买到的默认都不是可重复触发状态,需要把跳线帽取下来装到H,具体看第一张图
2、该传感器必须在检测范围内活动才可以检测到,静止不行
3、检测不是很高效,所以用起来和想要的效果有点不够

你可能感兴趣的:(单片机,传感器)