
专业版
基于51单片机的智能门禁系统
862
0
0
0
简介
基于STC89C52单片机的智能门锁系统,集成多个模块。支持授权卡管理,具有开具有开锁后10秒自动关闭、防 重复读卡、完整边界判定等特性。适用于课程设计和学习参考。
简介:基于STC89C52单片机的智能门锁系统,集成多个模块。支持授权卡管理,具有开具有开锁后10秒自动关闭、防 重复读卡、完整边界判定等特性。适用于课程设计和学习参考。开源协议
:MIT License
创建时间:2025-11-26 15:40:54更新时间:2026-01-07 10:32:24
描述
RFID智能门禁系统
项目简介
这是一个基于 STC89C52RC 单片机的 RFID 智能门禁控制系统,实现了完整的门禁管理功能。系统采用 RC522 RFID 读卡器识别 13.56MHz Mifare 卡片,支持最多 50 张授权卡的存储,并配备 OLED 显示屏、语音提示、门磁传感器等多种人机交互方式。
核心特性
- RFID识别:采用 RC522 模块,支持 Mifare S50 卡片
- 卡片管理:基于 AT24C02 EEPROM,可存储最多 50 张授权卡
- 可视化显示:0.96 寸 OLED 显示屏实时显示系统状态
- 语音反馈:DFPlayer Mini 模块提供语音提示
- 智能门控:LED 指示灯模拟门锁,开锁后 10 秒自动关闭
- 门磁检测:MC-38 门磁传感器检测门的开关状态
- 灵活操作:支持添加卡、删除卡、清空所有卡等管理功能
功能模块
1. 运行模式
- 刷授权卡开门,LED 点亮表示开锁
- 10 秒后自动关锁(门磁检测门已关闭时)
- 未授权卡拒绝访问,语音提示
2. 设置模式
- 添加卡:按 KEY_ADD 进入添加模式,刷卡即可添加
- 删除卡:按 KEY_DEL 进入删除模式,刷卡即可删除
- 清空所有卡:同时长按 KEY_ADD + KEY_DEL 3 秒,确认后清空
3. 按键定义
- KEY_MODE (P3.2):切换运行模式/设置模式
- KEY_ADD (P3.3):添加授权卡 / 确认清空
- KEY_DEL (P1.5):删除授权卡 / 取消清空
硬件配置
主控芯片
- 型号:STC89C52RC
- 主频:12MHz
- 工作电压:5V
外设模块
| 模块名称 | 型号 | 通信方式 | 引脚连接 | 功能说明 |
|---|---|---|---|---|
| RFID读卡器 | RC522 | SPI | RST(P2.3), MISO(P2.4), MOSI(P2.5), SCK(P2.6), SDA(P2.7) | 读取 13.56MHz Mifare 卡片 |
| EEPROM | AT24C02 | I²C | SCL(P2.1), SDA(P2.0) | 存储最多 50 张授权卡 UID |
| OLED显示屏 | SSD1306 | I²C | SCL(P2.1), SDA(P2.0) | 0.96寸 128×64 单色显示 |
| 语音模块 | DFPlayer Mini | UART | RX(P3.0), TX(P3.1), BUSY(P1.7) | MP3 语音播放 |
| 门锁LED | - | GPIO | P1.4 | 模拟门锁开关状态 |
| 门磁传感器 | MC-38 | GPIO | P3.4 | 检测门的开关状态 |
电路说明
- I²C总线共享:AT24C02 和 SSD1306 共用 I²C 总线,需外接 4.7kΩ 上拉电阻
- 门锁控制逻辑:低电平 LED 亮(门开),高电平 LED 灭(门关)
- 门磁传感器:常闭型,门关闭时低电平,门打开时高电平
- DFPlayer 接线:单片机 TX → DFPlayer RX,单片机 RX → DFPlayer TX
软件架构
项目结构
SmartLock/
├── Driver/ # 驱动层
│ ├── RC522.c/h # RFID读卡器驱动
│ ├── AT24C02.c/h # EEPROM存储驱动
│ ├── Display.c/h # OLED显示驱动
│ ├── Voice.c/h # 语音模块驱动
│ ├── DoorLock.c/h # 门锁控制驱动
│ ├── DoorSensor.c/h # 门磁传感器驱动
│ ├── I2C.c/h # I²C通信协议
│ ├── OLEDFont.h # OLED字体库
│ └── config.h # 硬件引脚配置
└── User/
└── main.c # 主程序
核心功能模块
1. RFID读卡模块 (RC522.c)
- 软件模拟 SPI 通信
- 支持 Mifare S50 卡片识别
- 防冲突算法,支持多卡环境
- 函数:
RFID_ReadCard()- 读取卡片 UID
2. EEPROM存储模块 (AT24C02.c)
- 基于 I²C 通信
- 存储格式:前 2 字节存储卡片数量,后续每 4 字节存储一张卡的 UID
- 核心函数:
AddCardUID()- 添加授权卡DeleteCardUID()- 删除授权卡CheckCardUID()- 验证卡片权限ClearAllCards()- 清空所有卡
3. OLED显示模块 (Display.c)
- I²C 接口,地址 0x78
- 显示布局:顶部显示模式,中部显示消息
- 核心函数:
Display_ShowMode()- 显示系统模式Display_ShowMessage()- 显示操作反馈
4. 语音提示模块 (Voice.c)
- UART 通信,波特率 9600
- 支持 15 种语音提示(开机、开门、添加卡等)
- 核心函数:
Voice_Play()- 播放指定音频
5. 门锁控制模块 (DoorLock.c)
- 定时器控制,开锁后 10 秒自动关闭
- 配合门磁传感器,只有门关闭时才上锁
- 核心函数:
DoorLock_Open()- 开锁DoorLock_TimerHandler()- 定时器处理
操作指南
首次使用(添加第一张卡)
- 按
KEY_MODE进入设置模式 - 按
KEY_ADD进入添加卡模式 - 刷卡添加授权卡
- 按
KEY_MODE返回运行模式
添加更多授权卡
- 设置模式 → 按
KEY_ADD→ 刷卡
删除授权卡
- 设置模式 → 按
KEY_DEL→ 刷需要删除的卡
清空所有授权卡
- 设置模式 → 同时长按
KEY_ADD+KEY_DEL3 秒 → 按KEY_ADD确认
OLED显示说明
| 显示内容 | 含义 |
|---|---|
| Run Mode - Ready | 运行模式,等待刷卡 |
| Run Mode - Open OK | 开门成功 |
| Run Mode - Denied | 拒绝访问(未授权卡) |
| Set Mode - Add/Del | 设置模式,选择操作 |
| Add Card - Swipe... | 添加卡模式,等待刷卡 |
| Del Card - Swipe... | 删除卡模式,等待刷卡 |
| Clear All? - ADD=Y DEL=N | 清空确认界面 |
语音文件准备
将以下音频文件复制到 DFPlayer 的 TF 卡 /mp3 文件夹:
| 文件名 | 提示内容 |
|---|---|
| 0001.mp3 | 开机成功提示 |
| 0002.mp3 | 进入运行模式 |
| 0003.mp3 | 请刷卡 |
| 0004.mp3 | 进入设置模式 |
| 0005.mp3 | 添加卡片模式 |
| 0006.mp3 | 删除卡片模式 |
| 0007.mp3 | 开门成功 |
| 0008.mp3 | 拒绝访问 |
| 0009.mp3 | 添加成功 |
| 0010.mp3 | 卡片已存在 |
| 0011.mp3 | 存储已满 |
| 0012.mp3 | 删除成功 |
| 0013.mp3 | 卡片不存在 |
| 0014.mp3 | 确认清空所有卡 |
| 0015.mp3 | 清空成功 |
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。










