一、作品功能介绍 本作品利用 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 设计围绕清晰展示有人 / 无人状态展开,有一个固定区域用于实时显示当前区域的人员状态,当程序判定为有人时,在此区域显示绿色小人图案,并以微笑来表示有人,吸引使用者注意;反之则显示当程序判定无人时。区域内显示一个黑色小人,同时会显示×号便于分辨。体界面简洁明了,仅聚焦于关键信息呈现,确保使用者能在第一时间掌握人体感应监测结果。
|