迪文科技论坛

 找回密码
 立即注册
搜索
查看: 51|回复: 1

【分享】2021级高宇廷HC-SR501 人体红外传感器

[复制链接]

1

主题

0

回帖

24

积分

新手上路

Rank: 1

积分
24
发表于 2025-1-8 15:11:15 | 显示全部楼层 |阅读模式
一、作品功能介绍
本作品利用 HC-SR501 人体红外传感器与 EKT 评估板,搭配线材搭建硬件平台,通过 C51 编写的数据解析程序,实现对人体接近状态的检测与显示功能。在 UI 界面上,能够直观地向用户展示当前区域 “有人” 或 “无人” 的状态,
二、工作原理
HC-SR501 人体红外传感器基于人体能发射特定波长红外线的特性进行工作。其内部含有热释电元件,在人体进入感应区域时,人体辐射出的红外线能量变化被热释电元件接收,元件表面电荷发生变化,进而产生电信号。该电信号通过连接的线材传输至 EKT 评估板,评估板上运行的 C51 程序不断轮询传感器所连接引脚的电平状态。当引脚变为高电平,意味着检测到人体,程序即刻执行后续操作,包括更新显示标志、向屏幕特定地址写入显示数据以呈现有人状态反之,引脚保持低电平则判定为无人
三、设计思路
硬件连接:选用 HC-SR501 传感器,明确其与 EKT 评估板的连接引脚,定义传感器接口地址(如代码中 sbit KEY = P2^2),同时准备好 5V 供电、GND 接地以及数据传输所需的 IO 线材,确保传感器正常工作并能稳定传输信号至评估板。
初始化设置:在程序启动的 io_init 函数中,对相关 IO 口进行初始化操作,一方面模拟传感器所需的电平条件(如前期测试用 P2MDOUT 相关位操作),另一方面配置端口驱动模式(如 PORTDRV = 0X01),为后续准确读取传感器信号奠定基础。
主程序逻辑:在 main 函数中,先完成系统初始化 sys_init IO 初始化 io_init,之后进入主循环。循环内持续监测传感器引脚电平,一旦检测到高电平(即有人),立刻设置显示标志 key_sta 1,并通过 sys_write_vp 函数将此状态数据写入屏幕对应地址显示 有人,同时对计数变量 num 进行累加并更新显示数值,为避免重复计数,等待人离开监测范围(通过 while(KEY == 1) 阻塞)后再继续下一轮监测,若未检测到人体则更新显示标志为 0 并显示 无人
四、GUI 的设计
GUI 设计围绕清晰展示有人 / 无人状态展开,一个固定区域用于实时显示当前区域的人员状态,当程序判定为有人时,在此区域显示绿色小人图案,并以微笑来表示有人,吸引使用者注意;反之则显示当程序判定无人区域内显示一个黑色小人,同时会显示×号便于分辨。体界面简洁明了,仅聚焦于关键信息呈现,确保使用者能在第一时间掌握人体感应监测结果。
【人体红外感应:HC-SR501人体红外传感器测试视频】https://www.bilibili.com/video/B ... 790c9100f39b07ef535

回复

使用道具 举报

39

主题

50

回帖

1250

积分

金牌会员

Rank: 6Rank: 6

积分
1250
发表于 2025-1-20 14:41:26 | 显示全部楼层
源文件如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2025-4-2 14:05 , Processed in 0.037511 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表