当前位置: 首页 > 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.lryc.cn/news/619026.html

相关文章:

  • 【K8s】K8s控制器——Deamonset、Statefulset、Job与CronJob
  • 下一代防火墙部署
  • 树结构无感更新及地图大批量点位上图Ui卡顿优化
  • C#对接Ollama,调用大模型禁用思考模式
  • JMeter并发测试与多进程测试
  • pcl 按比例去除点云的噪点
  • 编程模型设计空间的决策思路
  • QT第四讲-QString和QT数据类型之间转换
  • 当多模态大语言模型遇上视觉难题!AI视觉探索之旅
  • NLP基础
  • CASS11计算斜面面积
  • sqli-libs通关教程(41-50)
  • 【leetcode】45. 跳跃游戏2
  • cuda排序算法--双调排序(Bitonic_Sort)
  • __base__属性
  • 【动态规划】leecode 198的打家劫舍2:dp集合有两种写法对比
  • 关系型数据库中,如果某一列的选项只有几种(比如性别、状态等低基数枚举值),添加索引的效果如何?
  • day26-IO(2)
  • 学习笔记《区块链技术与应用》ETH 第二天 状态树
  • 数据分析—双十一
  • B.10.02.3-分布式一致性:电商业务场景下的理论与工程实践
  • IDEA插件开发实践
  • 从阶段演进到智能跃迁:企业合同管理的发展与趋势
  • SynAdapt:通过合成连续思维链实现大语言模型的自适应推理
  • @Rancher简介部署使用 - Docker Compose
  • Spring MVC 处理请求的完整流程详解
  • 【Unity】Spine重新播放动画时会闪烁上次动画的残影
  • 秋招笔记-8.12
  • Tauri Qt孰优孰劣
  • 【Unity】Unity中ContentSizeFitter有时无法及时自适应大小问题解决