基于单片机的指纹密码锁

embedded/2025/1/12 15:59:20/
【摘要】 本设计是一款基于单片机的指纹识别电子密码锁系统。该系统以STC89C52单片机作为模块核心同时结合ZFM-60指纹模块实现录取指纹并存储指纹数据的功能,并且通过HS12864-15C液晶显示比对流程及比对结果,该指纹电子密码锁通过直流继电器与发光二极管来模拟开锁的动作。本系统有小体积、高性价比、高传输速度的特点,适合家庭及单位使用。
【关键词】 单片机;指纹比对;电子密码锁;液晶屏

1 引言

我们现在市场上的主流密码锁一般都是电子设计的,但是这种密码锁的设计有很多缺陷比如他容易被人窃取密码同时主人也很容易忘记密码,由于这类情况的发生大大增加了安全隐患。因此人们开始转而探索生物识别技术,希望可以利用此技术来应付现在系统安全所面临的挑战。据研究结果表明,人类身体的很多部位具有不可复制的特点,比如人类的声音、视网膜、指纹等等都是我们人体
独有的特征。这些外部条件让我们的身份认证更加安全方便,其中近年来发展成熟的指纹识别技术成为生物识别技术中的热点。

2 系统硬件设计

基于单片机的指纹电子密码锁硬件模块主要有指纹传感器,电源,单片机,继电器,液晶显示屏,按键等构成。在系统工作时硬件中的指纹模块可以对外来指纹进行录入和清除工作,这一硬件部分的工作是采用C 语言构建系统程序,单片机通过对不同的按键执行操作后向模块发送相应指令,完成对应功能。在硬件与软件完成匹配调试后,整体可构成一个独立的指纹识别系统。

2.1 按键模块

矩阵式键盘由行线和列线构成,其中按键的位置位于行和列的交叉点上。当键被按下时,其交点处的行线和列线接通,随即对应的行线或列线上的电平会产生变化。通过检测行或列线上的电平变化,单片机可以确定哪个按键被按下。
在本设计中我们采用了逐行扫描法来实现按键检测的功能,识别的具体过程如下:
判断键盘中是否有键按下。本设计中将行线设置为输出口,并且输出低电平;同时将列线设置为输入口,输出为高电平。我们在读取的时候只需查看列线上的电平状态,如果有一列的电平为低电平,就表示此时有按键按下。
判断被按下按键所在的位置。在确认有键按按下后依次将每根行线设置为输出口,并输出低电平然后逐列检查每根列线的电平状态,若某列为低电平,则该列线与行线交叉处的按键就是被按下的按键。按键位置确定后,我们采用计算法编码的方法给矩阵键盘中的每个按键进行编号。

2.2 指纹模块

本设计我们所选择的是型号为 ZFM60 的指纹模块,该指纹模块里面主要是型号为 AS606 DSP 芯片,其中芯片外面装载有 CMOS 芯片,当我们录入两次这样的指纹特征时就能生成一个指纹模板。当指纹模板处于工作状态时,模块会将第一次录入的指纹信息进行模糊处理并且生成“0 ”和“ 1 ”两种不同的信息同时模块会把生成的信息存入到FLASH 芯片里面。当使用到指纹模块的识别模式时, CMOS 芯片将采集到的指纹和之前存储在FLASH 芯片里的数据库进行对比,并且从N 个录入的指纹数据里面找出与之对应的指纹。单片机会对识别结果进行判断,如果存在的话就会显示对应的指纹标号。

2.3 液晶显示器

在本设计中采用了 12864 液晶显示器,显示器主要完成数据的显示功能。本设计一开始必须对用户所编的显示程序进行初始化,否则该指纹模块会出现无法正常显示的问题,在模块接收到其他指令前,单片机必须确认模块内部处于非忙碌的工作状态,然后显示器会接收到指令,并且根据相应的指令将需要显示的内容放在显示屏上。

2.4 记忆存储设计

本设计中将 AT24C02 作为记忆存储装置, AT24C02 是美国Atmel公司一款低功耗的的 CMOS E2PROM ,它的工作电压范围为2.5V-5V。 AT24C02 内部含有 256*8 位存储空间以及一个 16 字节页写缓冲器。该器件通过I2C 总线接口进行操作并且有一个专门的写保护功能。AT24C02 有良好的资料保存功能,在断电的情况下芯片里面的资料能保存几十年。

3 软件设计部分

本设计采用 keil 进行 C 源码编程, keil 软件可以提供丰富的库函数和功能强大的集成开发调试工具,能够连接和重定位目标文件和库文件,创建HEX 文件,调试目标程序。

4 系统调试

keil 编写的程序分别对矩阵键盘,显示屏以及指纹模块进行调试,同时检验蜂鸣器、继电器、LED 灯是否正常工作。通过软件硬件的调试,判断基于单片机的指纹密码锁能不能实现正常采集、录入、存储指纹的功能。

5 结束语

本文提出的指纹密码锁将单片机和指纹模块结合在一起,通过人体指纹独有特性提高了电子锁的安全性能。同时本设计的软件和硬件还有很大的扩展性可以增加其他功能,有一定推广性。

http://www.ppmy.cn/embedded/153321.html

相关文章

金山WPS Android面试题及参考答案

说说你所知道的所有集合?并阐述其内部实现。 在 Android 开发(Java 语言基础上)中有多种集合。 首先是 List 集合,主要包括 ArrayList 和 LinkedList。 ArrayList 是基于数组实现的动态数组。它的内部有一个数组来存储元素,当添加元素时,如果数组容量不够,会进行扩容操作…

英文字体:复古八十年代优雅品牌邀请函电影标题设计衬线字体 Eighties Nostalgia Font

嘿,大家好,我希望你们一切顺利,考虑到现在世界上发生的一切,你们在生活的各个方面都取得了进步。过去 3 年对我们所有人来说都是过山车,我一直非常怀念美好的时光。怀旧之情将我带到了 Pinterest,自然而然地…

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection)

【Web安全】SQL 注入攻击技巧详解:UNION 注入(UNION SQL Injection) 引言 UNION注入是一种利用SQL的UNION操作符进行注入攻击的技术。攻击者通过合并两个或多个SELECT语句的结果集,可以获取数据库中未授权的数据。这种注入技术要…

磁盘满造成业务异常问题排查

最近遇到一个因为磁盘满导致的问题,分享一下,希望能够帮助到以后遇到同样问题的朋友。 早上突然收到业务老师反馈说:上传文件不能正常上传了。 想想之前都好好的,最近又没有更新,为什么突然不能使用了呢?…

STM32U575按键转换及设备驱动

要求通过单片机实现以下功能: 1.单片机有三种工作模式(定义全局变量MM表示模式,MM1,2,3表示三种不同的模式) LED控制模式风扇控制模式蜂鸣器控制模式 2.可以在某一个模式下通过拓展板KEY1按键控制设备 按键按下一次,设备打开&…

【CSS】HTML页面定位CSS - position 属性 relative 、absolute、fixed 、sticky

目录 relative 相对定位 absolute 绝对定位 fixed 固定定位 sticky 粘性定位 position:relative 、absolute、fixed 、sticky (四选一) top:距离上面的像素 bottom:距离底部的像素 left:距离左边的像素…

【Git】问题汇总

在push的时候显示 protocol error: bad line length 8192 我在本地创建了一个gogs服务器,现在正在上传代码,但是出现了上述的这个问题。 解决方法 设置本地http.postBuffer(待验证) 方法一:全局配置 git config --g…

python+fpdf:创建pdf并实现表格数据写入

目录 创建pdf文件对象 新增页 添加自定义字体 设置字体 设置文字颜色和背景色 插入内容 换行 插入图片 保存pdf 完整代码 安装:pip install fpdf 创建pdf文件对象 from fpdf import FPDF, Alignpdf FPDF() # 创建pdf文件对象 获取边距 print(pdf.l_…