单片机交流
直播中

刘丽

7年用户 1217经验值
私信 关注
[问答]

小白求助,求51单片机使用HC-SR501写的人体红外感应器C语言程序

小白求助,求51单片机使用HC-SR501写的人体红外感应器C语言程序

回帖(1)

康沧鹤

2021-10-15 17:08:38
前言

  买到该产品后问客服和面向百度编程,发现在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
***it 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、检测不是很高效,所以用起来和想要的效果有点不够
举报

更多回帖

发帖
×
20
完善资料,
赚取积分