51单片机使用HC-SR501人体红外感应器C语言
前言
买到该产品后问客服和面向百度编程,发现在51单片机上 使用的教程不多,且不够细致,使用存在困难,烦躁了很久,为了不让后来者跟我一样,写一篇 文章,第一次写,排版和言语照顾不周,见谅
HC-SR501介绍
HC-SR501 是一款基于热释电效应的人体热释运动传感器,能检测到人体或者动物上发出的红外线。这个传感器模块可以通过两个旋钮调节检测 3 ~ 7 米的范围,5秒至5分钟的延迟时间,还可以通过跳线来选择单次触发以及重复触发模式。
下图为大概功能描述:
图来自(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)该网站还有更较详细的简介
(图来自http://www.51hei.com/bbs/dpj-106474-1.html)
C代码
与单片机连线为左接5V,右接GND,中间接P33(透镜朝下,引脚面向自己)
效果为:检测到人以后,p3^3输出高电平,使得灯灭,否则灯亮
#include<reg52.h>
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、检测不是很高效,所以用起来和想要的效果有点不够