【STC8A8K64D4开发板】第3-5讲:人体红外感应传感器

第3-5讲:人体红外感应传感器

    1. 学习目的
  1. 了解人体红外感应传感器的功能。
  2. 掌握单片机编程读取人体红外感应传感器数字输出状态,从而判断有没有人。
    1. 人体红外感应传感器简介

HC-SR501是基于红外线技术的自动控制模块,采用LHl788探头设计,灵敏度高,可靠性强,低电压工作模式,广泛应用于各类自动感应电器设备,尤其是干电池供电的自动控制产品。

HC-SR501能检测到人体身上发出的红外线,并根据检测结果输出高低电平,由此我们可以使用HC-SR501人体红外检测模块来检测是否有人。当有人进入感应范围时,HC-SR501模块输出高电平,人不离开感应范围,将持续输出高电平,人离开后,HC-SR501模块关闭高电平,输出低电平。

图1:人体红外感应传感器

  1. 选择触发(通过跳线选择)
  1. L:不可重复,默认为L(图1中跳线连接的方式即为L)。感应输出高电平后,延时时间一结束,输出将自动从高电平变为低电平。
  2. H:可重复。感应输出高电平后,在延时时间段内,如果有人体在其感应范围内活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平。
  1. 调节灵敏度和感应延时
  1. 调节灵敏度电位器顺时针旋转,灵敏度增加,反之,灵敏度降低。
  2. 调节延时电位器顺时针旋转,感应延时加长,反之,感应延时减短。
  1. HC-SR501人体感应模块参数
  1. 工作电压范围:直流电压(4.5-20)V。
  2. 静态电流:<50uA。
  3. 电平输出:高电平3.3 V ,低电平0V。
  4. 触发方式:L不可重复触发,H重复触发(默认不可重复触发)。
  5. 延时时间:0.5-200S(可调)可制作范围零点几秒-几十分钟。
  6. 封锁时间:2.5S(默认)可制作范围零点几秒-几十秒。
  7. 感应角度:<100度锥角。
  8. 工作温度:-15~+70度。
  9. 感应透镜尺寸:直径:23mm。
  10. 电路板外形尺寸:32mm*24mm
  1. 传感器应用范围

人体感应灯具 ,人体感应玩具,安防产品,工业自动化控制,自动感应电器设备,电池供电自动控制等。

  1. 引脚说明

HC-SR501人体红外检测模块的引脚如下图所示。

图2:人体红外感应传感器引脚

    1. 软件设计
      1. 雨滴传感器实验
  • 注:本节的实验是在“实验2-6-1:串口1数据收发实验”的基础上修改,本节对应的实验源码是:“实验3-5-1:HC-SR501人体红外感应实验”。
        1. 实验内容

单片机实时读取HC-SR501人体红外感应模块输出引脚的状态,以此判断有没有人经过,并通过串口输出检测结果。

  1. 高电平:检测到有人经过,指示灯D1点亮,串口输出提示信息。
  2. 低电平:没有检测到有人经过,指示灯D1熄灭。
        1. 代码编写

本节的代码比较简单,我们直接在“main.c”文件中编写相关的代码。

  1. 定义引脚

首先,定义连接HC-SR501人体红外感应模块输出的引脚,本例中,我们用P5.1连接雨滴传感器的数字输出引脚,定义如下。

代码清单:引用头文件

  1. sbit sensor_in = P5^1;     //用于读取HC-SR501人体红外感应模块输出引脚状态
  1. 读取引脚状态

程序初始化时将P5.1引脚配置为准双向,主循环中不断读取该引脚状态,如为高电平,则认为有人经过,代码清单如下。

代码清单:主函数

  1. /************************************************************************** 
  2. 功能描述:主函数 
  3. 入口参数:无 
  4. 返 回 值:int类型 
  5. **************************************************************************/  
  6. int main(void)  
  7. {  
  8.     P2M1 &= 0xBF;   P2M0 &= 0xBF;     //设置P2.6为准双向口(LED1)  
  9.     P3M1 &= 0xFE;   P3M0 &= 0xFE;     //设置P3.0为准双向口(串口1的RxD)  
  10.     P3M1 &= 0xFD;   P3M0 |= 0x02;     //设置P3.1为推挽输出(串口1的TxD)  
  11.     P5M1 &= 0xFD;   P5M0 &= 0xFD;     //设置P5.1为准双向口 (HC-SR501人体红外感应模块输出)  
  12.     uart1_init();                     //串口1初始化  
  13.     while(1)  
  14.     {  
  15.         if(sensor_in == 1)            //感应到有人经过,HC-SR501数据引脚输出高电平
  16.         {  
  17.             led_on(LED_1);                               //点亮用户指示灯D1  
  18.             printf("Detected someone passing by \r\n");  //串口输出提示信息  
  19.         }  
  20.         else                       
  21.         {  
  22.             led_off(LED_1);               //熄灭用户指示灯D1
  23.         }  
  24.         delay_ms(100);                    //延时100ms,方便在串口调试助手中观察实验数据  
  25.     }  
  26. }  
        1. 硬件连接

如下图所示,用杜邦线将HC-SR501人体红外感应模块的VCC和GND分别连接到开发板J19端子的3V3和GND上,输出引脚连接到J14端子的P51上。

图3:硬件连接

        1. 实验步骤
  1. 解压“…\第3部分:配套例程源码”目录下的压缩文件“实验3-5-1:HC-SR501人体红外感应实验”,将解压后得到的文件夹拷贝到合适的目录,如“D\STC8”(这样做的目的是为了防止中文路径或者工程存放的路径过深导致打开工程出现问题)。
  2. 双击“…\HC-SR501\project”目录下的工程文件“HC-SR501.uvproj”。
  3. 点击编译按钮编译工程,编译成功后生成的HEX文件“HC-SR501.hex”位于工程的“…\HC-SR501\Project\Object”目录下。
  4. 打开STC-ISP软件下载程序,下载使用内部IRC时钟,IRC频率选择:24MHz。
  5. 电脑上打开串口调试助手,选择开发板对应的串口号,将波特率设置为9600bps。
  6. 程序运行后,当HC-SR501人体红外感应模块检测到有人经过时,指示灯D1点亮,并通过串口输出提示信息。

### HCSR501红外传感器与AT89C52单片机的相关技术资料 #### 背景介绍 HC-SR501 是一种基于红外线技术的自动感应模块,广泛应用于人体移动检测场景。它能够感知到一定范围内的热源运动并触发信号输出。而 AT89C52 单片机是一种经典的 8051 架构微控制器,具有高性能、低功耗的特点,在嵌入式系统开发中被广泛应用。 两者结合可用于实现多种应用场景,例如防盗报警系统、智能家居控制等。以下是 HC-SR501 和 AT89C52 的具体用法和技术要点: --- #### 技术参数与工作原理 HC-SR501 模块的主要特性如下: - **供电电压**:DC 4.5V 至 20V[^3]。 - **静态电流**:< 60μA。 - **感应角度**:约 110°。 - **感应距离**:可达 7 米。 - **延时时间可调**:通过电位器调节延迟时间(几秒至几分钟不等)。 - **灵敏度可调**:支持环境光过滤功能,减少误报率。 该模块的工作流程分为三部分: 1. 红外接收单元捕获外界热量变化; 2. 数字信号处理电路分析数据; 3. 输出高电平或低电平作为状态指示。 对于 AT89C52 来说,其 I/O 口可以直接连接 HC-SR501 的 OUT 引脚来读取检测结果,并据此执行相应操作。 --- #### 连接方式与硬件配置 为了使 HC-SR501 正常运行并与 AT89C52 配合使用,需要完成以下硬件设置: - 将 HC-SR501 的 VCC 接到电源正极(通常为 5V),GND 接地。 - 将 HC-SR501 的 OUT 引脚接到 AT89C52 的某个 GPIO 引脚上(如 P1.0 或其他可用端口)。 - 如果需要调试,则可以通过串口或其他通信接口将结果显示出来。 示例代码展示了如何初始化以及响应中断输入的情况。 ```c #include <reg52.h> sbit SENSOR_PIN = P1^0; // 定义P1.0为传感器输入引脚 void delay(unsigned int time) { unsigned int i, j; for (i = 0; i < time; i++) for (j = 0; j < 120; j++); } void main() { while (1) { if (SENSOR_PIN == 0) { // 当检测到有人经过时 // 执行动作,比如点亮LED灯或者发出警报声 P2 = 0xFF; // 假设P2控制外部设备 delay(1000); // 延迟一段时间再关闭 P2 = 0x00; } } } ``` 上述代码片段实现了基本的人体存在判断逻辑,并利用 LED 显示反馈信息[^4]。 --- #### 应用实例——防盗报警系统 在实际项目中,可以构建一个简单的防盗报警装置。当 HC-SR501 发现目标进入监测区域后,立即通知主控芯片启动蜂鸣器发声警告;同时还可以记录事件发生的时间戳以便后续查询统计用途。 需要注意的是,由于不同品牌生产的 HC-SR501 参数可能存在差异,因此建议查阅官方发布的最新版《HC-SR501 Datasheet》获取更精确的信息[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电子友人张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值