迪文科技论坛

 找回密码
 立即注册
搜索
查看: 39|回复: 0

【分享】2023级 徐安东 李佳伦 智能门锁设计

[复制链接]

1

主题

0

回帖

28

积分

新手上路

Rank: 1

积分
28
发表于 4 天前 | 显示全部楼层 |阅读模式
本帖最后由 xuandong 于 2026-9-15 21:52 编辑

一、作品简介
本作品是一款以 DWIN T5L 智能屏(8051 内核 + DGUS II 图形界面)为主控、配 FPM10A 光学指纹模块 的嵌入式智能门锁系统。主控芯片同时承担控制、显示、触摸、语音与存储,实现 "双方式开锁 + 指纹全生命周期管理 + 密码掉电保存"
主要功能
· 密码开锁:数字密码,默认 123456,可修改并写入内部 NOR Flash 掉电保存
· 指纹开锁:FPM10A 模块库内匹配(范围 ID 0~999),匹配成功即开锁
· 指纹管理:录入(两次按压采样)、删除单枚、清空全部、管理员指纹验证
· 人机交互:DGUS 触摸屏多页面状态机(主页 / 指纹解锁 / 密码错误 / 开锁成功 / 设置菜单等),开锁成功进入展示页停留约 3 秒后自动回主页
· 语音反馈:WAE 音频播放触摸提示音(敲门声、提示音)
· 硬件自适应:上电自动探测指纹模块实际波特率(9600 / 57600 / 115200 / 38400)
硬件组成:T5L 主控屏(含 DGUS 触摸屏、内部 NOR Flash、WAE 音频)、FPM10A 光学指纹模块(UART2 串口,P0.4/P0.5)、软件模拟 IIC(P2.2/P2.3,预留扩展)、定时器 2 提供 1ms 时基。
工程结构USER/(主流程 main.c、系统初始化 sys.c)、HANDWARE/(FPM10A 指纹驱动、密码管理、NOR Flash 驱动、软件 IIC)、GUI_APP/(DGUS 界面工程:页面、图标、触摸配置、音频素材)。
二、工作原理
1. 上电初始化
sys_init() 配置 8051 寄存器、关闭看门狗、启动定时器 2(1ms 中断)→ 配置 DGUS 系统工作参数 → 串口初始化 → Device_Check() 自动探测 FPM10A 波特率(4 种波特率各试 5 次、连续 2 次合法应答才确认,结果写入 VP 0x3099)→ password_init() 密码置初值 123456 → 进入主页,开始主循环。
2. 主循环调度(前后台结构)
while(1) 中反复执行三件事:
· DGUS_Process():轮询 DGUS 变量区(VP)各按键标志 ——0x3020 指纹开锁、0x3100 返回主页、0x3070 菜单、0x3060/0x3080 展示页、0x30B0 错误页返回、0x4200/0x4300 语音播放,据此完成页面跳转、功能触发与语音;
· 指纹扫描分支:当 fp_scan_enable=1 时调用 FPM10A_Search_GetID() 轮询指纹;
· input_mima() 与 kaijimima_config():处理密码验证、改密与指纹管理。
3. 指纹开锁流程
触摸 "指纹开锁"→ 0x3020 置 1 → 跳转指纹解锁页(页 7)并置 fp_scan_enable=1 → 主循环反复执行:① GetImage 采集指纹图像;② Img2Tz 将图像转为特征存入 CharBuffer1;③ Search 在库内匹配。结果分三种:
· 匹配成功(返回 0)→ 跳转开锁成功页(页 13),置 judge_kaiji=1;
· 有手指但不匹配(返回 2)→ 跳转指纹错误页(页 8);
· 未按指纹 / 采图失败(返回 1)→ 累计等待计数,超过约 8~10 秒跳转指纹错误页,防止一直停留在解锁页。
4. 密码开锁流程
键盘输入密码(写入 VP 0x2000,64 位输入区取 32 位参与比对)→ 按 "确认" 后 0x3010 置 1 → input_mima() 读取输入并与 ture_mima 比较:相等 → 开锁成功页(13),置 judge_kaiji=1;不等 → 密码错误页(5)。
5. 改密与指纹管理
· 改密:0x3090 确认 → 读取 0x2100 新密码 → 更新 ture_mima → norflash_write() 写入内部 NOR Flash(经 0xFF00 缓存区中转、轮询完成标志),实现掉电保存;
· 指纹管理(0x3000 功能码):1= 管理员验证(约 10 秒超时);2= 录入(两次按压、每次需连续 2 次成功采图 → 特征分别入 CharBuffer1/2 → RegModel 合成模板 → SaveFinger 入库,finger_id 自增);3= 清空全部;4= 删除单枚(先验证指纹搜出 ID 再 DeletChar 删除)。
6. 结果反馈
开锁成功后经功能菜单进入展示页停留约 3 秒(标称)自动回主页;失败 / 超时进入对应错误页;触摸按键经 VP 0x00A0 的 WAE 指令播放提示音。
三、设计思路
1. 一体化硬件选型,降低系统复杂度
选用 T5L 智能屏把控制(8051)、显示(DGUS)、存储(NOR Flash)、语音(WAE)集成于一颗芯片,减少外围电路;指纹识别交给带内置算法的 FPM10A 模组,主控只发串口指令,无需自行实现图像处理与特征比对。
2. 分层模块化架构
HANDWARE/ 底层驱动(FPM10A、密码、NOR Flash、IIC)与 USER/ 应用层(主流程)分离,GUI 界面独立于固件(DGUS 工程),各模块可独立调试、替换和复用。
3. 前后台轮询 + 标志位状态机
不依赖操作系统:主循环轮询 VP 按键标志完成页面跳转与功能分发;用 fp_scan_enable(是否扫描)、judge_kaiji(是否已开锁)、fp_unlock_tick(超时计数)等标志位管理状态,返回主页时统一复位,避免上一次成功开锁状态被误复用。
4. 针对实际问题的可靠性加固
· 自动波特率探测:4 种波特率各试 5 次、连续 2 次合法应答才确认,解决模块出厂波特率未知、换模块即失效的问题;
· 串口带超时接收(Uart_Receive_Byte_TO):模块掉线时不会在 while(!RI0) 死等卡死系统;
· 应答校验 + 发命令前清空接收缓冲:防止上一次应答残留导致数据错位;
· 录入防误触:"先确认无手指、再连续 2 次成功采图" 才记为一次有效按压,防止模块 0 码误判造成无效录入;
· 密码掉电保存:改密后立即写 NOR Flash,断电不丢失。
5. 交互与可调试设计
多页面状态机配合语音、结果展示页(约 3 秒自动回主页),错误与超时均有明确页面反馈;预留 VP 0x30A0~0x30B5 调试变量区,实时记录指纹模块各步骤应答状态码,可在 DGUS 调试界面直接观测通信过程,便于排查问题。
四、演示视频
【智能门锁设计-哔哩哔哩】 https://b23.tv/tJLAPlU

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-9-18 13:38 , Processed in 0.033776 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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