基于单片机指纹识别的电子密码锁设计 - 图文 联系客服

发布时间 : 星期日 文章基于单片机指纹识别的电子密码锁设计 - 图文更新完毕开始阅读8574f0e35f0e7cd18525365c

河南工学院毕业论文

第4章 系统软件设计

系统软件设计主要以硬件电路设计为基础,以实现系统功能为导向,主要包括指纹识别程序设计、ADC键盘程序设计、DS1302程序设计、液晶RX12864ZW程序设计几部分。

4.1 整体程序流程图

基于指纹识别的电子锁系统围绕指纹图像采集、识别主要实现三种功能,指纹登陆、验证指纹、记录查询。指纹登陆主要是为用户在指纹锁中存入指纹模板,验证指纹主要是对待验证的指纹进行识别并判断是否和以存储的指纹模版相同,并对电子锁做出相应的控制,记录查询主要是针对验证指纹的记录进行的历史查询。

因此系统的整体程序设计就围绕系统的三种功能,用ADC键盘输入密码来实现对于三种功能的选择,因此系统程序设计的主要内容就是对三种功能的设计。系统的整体流程图如图4-1所示:

16

河南工学院毕业论文

开始 模块初始化 否 是 按键1 按键2 按键3 判断键值 扫描是否有键按下 是 否 采集指纹两次 显示结果 是否搜索到 搜索指纹库 合成模版 采集指纹图像 扫描是否有手指 显示记录 是 否

图4-1 整体程序流程图

17

开 锁 显示结果 河南工学院毕业论文

4.2 指纹识别程序设计

4.2.1 指纹模块通讯协议说明

指纹模块采用UART与单片机通讯,对命令、数据、结果的接收和发送,都采用数据包的形式。对于多字节的,高字节在前低字节在后。

数据包格式: 包头 地址 包标识 包长度 包内容(指令/数据/参数/确认校验和 码) 包头固定为0xef01, 传送时高字节在前。

地址默认值为0xffffffff, 用户可通过指令生成新地址,模块会拒绝地址错误的数据包。传送时高字节在前。

包标识,0x01表示是命令包,0x02表示是数据包(Data packet),且有后续包。数据包不能单独进入执行流程,必须跟在指令包或应答包后面。0x07表示是应答包,可以跟后续包。0x08表示是最后一个数据包,即结束包。

包长度指的是包内容(指令/数据)的长度加上效验和的长度(即包内容长度+2)。 长度以字节为单位(即字节数),传送时高字节在前。

包内容可以是指令、数据、指令的参数、应答结果等。(指纹特征值、指纹模板都是数据)。

校验和是包标示、包长度和包内容的所有字节的算术累计和,超过2 字节的进位忽略。

指令只能由上位机下发给模块,模块向上位机应答。模块收到指令后,会通过应答包,将有关命令执行情况与结果上报给上位机。应答包含有参数,并可跟后续数据包。上位机只有在收到模块的应答包后才能确认模块的收包情况与指令执行情况。应答包的内容包括一个字节的确认码(必须有)和可能有的返回参数。

模块在上电完成初始化工作以后,等待接收上位机命令。在收到正确命令后,迅速执行相应的, 操作,在操作完成后返回对应的信息。在模块执行命令的过程中,模块不会响应上位机发出的其他命令。

指纹模块的命令如下表格所示:

18

河南工学院毕业论文

表4-1 指纹模块命令表

类型 系 统 类 指 纹 处 理 类 序号 1 2 3 4 5 6 7 8 9 10 11 12 代码 0x13 0x12 0x15 0x0e 0x0f 0x1f 0x1d 0x01 0x0a 0x0b 0x02 0x05 功能说明 校验口令 设置口令 设置地址 设置系统参数 读系统参数 读指纹模板索引表 读指纹模板数 录指纹图像 上传图像 下载图像 图像转特征 特征合成模板 类型 指 纹 处 理 其 他 类 序号 13 14 15 16 17 18 19 20 21 22 23 代码 0x08 0x09 0x06 0x07 0x0c 0x0d 0x03 0x04 0x14 0x18 0x19 功能说明 上传特征 下载特征 存储模版 下载模版 删除模版 清空指纹库 比对特征 搜索指纹 采样随机数 写记事本 读记事本

4.2.2 指纹模版的采集存储

指纹模版的采集与存储主要是单片机控制指纹模块对用户的同一枚指纹连续取两次,存储在图像缓冲区Image Buffer,然后分别将指纹图像转化为指纹特征,存储在特征文件缓冲区CharBuffer1或CharBuffer2,然后将两个指纹特征文件合成一个模版放在指纹库中,每一个指纹模板对应一个ID号,指纹库中的模版是断电保存的。

指纹模块在FLASH中开辟了一段存储区域作为指纹模板存放区,即指纹库。存储容量为1000枚,指纹库中的数据是断电保护的。指纹模板按照序号存放,若指纹库容量为N,则指纹模板在指纹库中的序号定义为:0、1、2??N-2、N-1。用户只能根据序号访问指纹库内容,相应的存储和搜索功能对应的都是针对指纹序号的操作。

19