当前位置: 首页 > news >正文

基于51单片机RFID智能门禁系统红外人流量计数统计

1 系统功能介绍

本设计基于STC89C52单片机,集成RFID读卡器、红外避障传感器、继电器、LCD1602液晶显示和蜂鸣器,实现智能门禁与人流量统计功能。系统能够识别合法的RFID卡开门,并实时统计通过人数,具有安全报警和直观显示功能。具体功能包括:

  1. 合法RFID卡刷卡成功后,继电器闭合控制门禁开门,LCD显示“通过”,3秒后自动断开继电器关闭门。
  2. 非法或未注册RFID卡刷卡时,继电器不动作,蜂鸣器报警,LCD显示“不通过”。
  3. 通过红外避障传感器检测人员通过,LCD显示人数计数累加。
  4. 系统稳定运行,适用于门禁管理、人流监控等场景。

2 系统电路设计

2.1 STC89C52单片机核心电路

STC89C52单片机为系统核心,负责管理各模块数据交互、处理逻辑控制及输出。

  • 时钟电路:采用12MHz晶振,确保单片机工作稳定。
  • 复位电路:上电自动复位及手动复位功能,保证系统可靠启动。
  • 供电电路:5V稳压电源,满足单片机及外围模块的电压需求。
  • I/O口连接:分配专用端口连接RFID模块、继电器驱动、红外传感器、LCD1602显示和蜂鸣器。

通过合理的引脚分配和滤波处理,确保信号传输稳定、抗干扰能力强。

2.2 RFID读卡器模块电路

RFID模块负责识别刷卡用户身份。

  • 模块类型:常用MFRC522或类似低频/高频读卡模块。
  • 接口方式:采用SPI或串口与单片机通信,传输卡片UID数据。
  • 信号处理:模块输出卡号数据,经单片机比对数据库判断合法性。
  • 供电:5V电源,配备滤波电容保证模块稳定工作。

该模块能快速读取卡号,延迟低,适合门禁应用。

2.3 继电器驱动电路

继电器用于控制门禁的机械开关动作。

  • 驱动方式:单片机IO口通过三极管或驱动芯片控制继电器线圈通断。
  • 继电器参数:通常为5V继电器,线圈电流匹配驱动能力。
  • 保护电路:继电器线圈并联反向二极管,防止反向电压冲击单片机。

继电器闭合时门禁打开,3秒后断开自动复位。

2.4 LCD1602液晶显示电路

LCD1602液晶用于显示系统状态和人数统计信息。

  • 接口:采用并行接口(通常4或8位),连接单片机对应端口。
  • 显示内容:第一行显示“通过”或“不通过”提示,第二行显示累计人数。
  • 背光:配备背光灯,便于弱光环境观察。

显示内容实时更新,方便用户直观了解门禁情况。

2.5 红外避障传感器电路

红外避障传感器用于检测人员通过,实现人数计数。

  • 传感器类型:红外反射式或对射式传感器,灵敏度可调。
  • 接口连接:传感器输出数字信号,连接单片机输入端口。
  • 计数逻辑:检测到信号变化即有人通过,触发计数器加1。

该模块配合继电器门控,形成完整的人员出入监控。

2.6 蜂鸣器报警电路

蜂鸣器用于非法刷卡报警提示。

  • 驱动方式:单片机IO口直接驱动有源蜂鸣器或通过晶体管驱动无源蜂鸣器。
  • 报警逻辑:刷卡失败即蜂鸣器发声,提示非法访问。

蜂鸣器声音清晰,警示效果明显。


3 程序设计

3.1 系统初始化模块

负责单片机各模块初始化设置。

void System_Init(void) {// 初始化时钟、IO口CLK_Init();GPIO_Init();// 初始化串口/SPI用于RFID模块通信RFID_Init();// 初始化LCD1602显示模块LCD_Init();// 初始化蜂鸣器IO口Buzzer_Init();// 初始化红外传感器IO口Infrared_Init();// 初始化继电器控制端口Relay_Init();
}

3.2 RFID卡片识别处理模块

读取RFID模块数据,判断卡片合法性并控制继电器。

#define MAX_CARD_NUM 3unsigned char authorized_cards[MAX_CARD_NUM][5] = {{0xDE, 0xAD, 0xBE, 0xEF, 0x01}, // 张三卡号示例{0xDE, 0xAD, 0xBE, 0xEF, 0x02}, // 李四卡号示例{0xDE, 0xAD, 0xBE, 0xEF, 0x03}  // 王二卡号示例
};bit Is_Card_Authorized(unsigned char *card_id) {for (int i = 0; i < MAX_CARD_NUM; i++) {if (memcmp(card_id, authorized_cards[i], 5) == 0)return 1;}return 0;
}void RFID_Process(void) {unsigned char card_id[5];if (RFID_ReadCard(card_id)) {  // 读取卡号函数,返回1成功if (Is_Card_Authorized(card_id)) {Relay_Control(1);        // 继电器闭合,开门LCD_DisplayString(0, 0, "通过");Delay_ms(3000);Relay_Control(0);        // 继电器断开,关门} else {Buzzer_On();LCD_DisplayString(0, 0, "不通过");Delay_ms(3000);Buzzer_Off();}}
}

3.3 红外避障计数模块

检测红外传感器信号变化,实现人员计数。

unsigned int people_count = 0;void Infrared_Process(void) {static bit last_state = 1;  // 传感器常态高电平bit current_state = Infrared_Read();if (last_state == 1 && current_state == 0) {// 检测到有人通过people_count++;LCD_DisplayNumber(1, 0, people_count);}last_state = current_state;
}

3.4 主程序循环

整体逻辑主循环,轮询处理刷卡和人员计数。

void main(void) {System_Init();LCD_Clear();LCD_DisplayString(1, 0, "人数: 0");people_count = 0;while (1) {RFID_Process();Infrared_Process();Delay_ms(100);}
}

4 总结

本系统基于STC89C52单片机,成功实现了RFID智能门禁和红外人流量计数功能。系统设计涵盖核心单片机电路、RFID读卡模块、继电器驱动、LCD1602显示、红外避障传感器及蜂鸣器报警等关键模块,保证了系统的稳定性和实用性。程序设计采用模块化结构,方便维护和扩展。系统具备实时响应能力和用户友好的交互界面,适合实际门禁管理及人员统计应用。未来可增加网络通信模块,实现远程监控和数据上传,提升智能化水平。

http://www.dtcms.com/a/328590.html

相关文章:

  • -bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
  • MySQL 从入门到精通:基础概念与操作指南
  • Sklearn 机器学习 异常值检测 局部异常因子算法LOF
  • SQL连接操作全解析:从入门到精通
  • 某跨国金融机构法律法规自动文本摘要(ATS/文本大意提取)功能规划
  • 嵌入式第二十六天(文件IO相关操作)
  • [Robotics_py] docs | 机器人状态/位姿 | 环境表示_栅格地图
  • 准则 :用“检测到什么”的方式来编写需求条件
  • Python 异常捕获
  • 为什么我换了项目管理软件?
  • 如何在 Odoo 18 管理产品文档手册
  • Redis面试题及详细答案100道(16-32) --- 数据类型事务管道篇
  • 第23章,景深:技术综述
  • 软件测试之功能测试
  • 嵌入式系统学习Day17(文件编程)
  • (树形 dp、数学)AT_dp_v Subtree 题解
  • 架构设计:设计原则
  • 第十一节:加载外部模型:GLTF/OBJ格式解析
  • [MySQL数据库] 数据库简介
  • 【虚拟机】VMwareWorkstation17Pro安装步骤
  • Tricentis Tosca 2025.1 LTS 系统要求
  • 华为OD最新机试真题-国际移动用户识别码(IMSI)匹配-(C卷)
  • Terminal Security: Risks, Detection, and Defense Strategies
  • [激光原理与应用-255]:理论 - 几何光学 - CCD成像过程
  • 维文识别技术:将印刷体或手写体的维文文本转化为计算机可处理的数字信息
  • 网络协议组成要素
  • 网络协议——HTTP协议
  • Java锁机制全景解析:从基础到高级的并发控制艺术
  • Navicat更改MySql表名后IDEA项目启动会找原来的表
  • 树结构无感更新及地图大批量点位上图Ui卡顿优化