赵建康—毕业论文 三稿1

更新时间:2024-04-29 13:23:02 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

分类号 UDC 单位代码 10644 密 级 公 开 学 号 2009050217

学士学位论文

基于单片机的指纹识别系统设计

The Design of fingerprint identification System Based on

Single Chip

论文作者: 赵建康

指导教师: 易 鸿 系 别: 物理与工程技术系 专 业: 电子科学与技术 提交论文日期: 2013年 5 月 日 论文答辩日期: 2013年 5 月 日 学位授予单位: 四川文理学院

中 国 ? 达 州

摘 要

随着信息时代的发展, 自动指纹识别技术已经广泛地应用于公安、海关、银行、网络安全等需要进行身份识别领域。本文概述了自动指纹识别系统的研究现状和发展状况,介绍了指纹识别系统的算法流程,以及在此基础上的指纹图像的分割算法和指纹图像细化算法。并完成基于单片机的指纹识别系统硬件电路设计。

本文应用ZMF-206指纹识别模块,设计基于单片机的指纹识别硬件电路系统,形成一个独立的指纹识别控制系统。该系统能够实现单片机和指纹模块之间的串口通信,通过操作独立式键盘按键,向指纹模块的DSP芯片发送相应指令,从而执行录入用户、添加用户、认证用户、删除指定用户、删除全部用户、用户匹配等功能,适用于需要进行身份识别的领域。

关键词:控制系统;指纹识别;单片机;串口通信

Abstract

With the development of the information age, automatic fingerprint identification technology has been widely used in public security, customs, bank, network security, and other areas of the identification is required. This paper summarizes the research status and development status of automatic fingerprint identification system, the algorithm flow of the fingerprint identification system are introduced, and on the basis of the fingerprint image segmentation algorithm, and fingerprint image thinning algorithm. And finish the fingerprint identification system based on single chip microcomputer hardware circuit design.

ZMF-206 fingerprint identification module is applied in this article, the design for fingerprint recognition based on single chip microcomputer hardware circuit system, fingerprint identification control system to form an independent. The system can realize serial communication between SCM and fingerprint module, by manipulating the independent type keyboard key, to the fingerprint module of DSP chip to send corresponding instructions, to perform input user, add users, authenticate the user, delete to specify user, delete all user, user matching, and other functions, applicable to the need for identification of areas.

Key words: control system; Fingerprint identification; Serial Communications; MCU (Microcontroller Unit)

目录

第一章 绪论 ..................................................................................................................................... 1

1.1研究的背景及意义 ............................................................................................................ 1 1.2指纹识别技术 .................................................................................................................... 1

1.2.1指纹识别技术发展现状 ........................................................................................ 1 1.2.2指纹识别技术的特点 ............................................................................................ 2 1.3本课题的内容 .................................................................................................................... 3 第二章 指纹识别系统实现原理 ..................................................................................................... 3

2.1人类指纹特征 .................................................................................................................... 3

2.1.1 指纹的总体特征 ................................................................................................... 3 2.1.2指纹的局部特征 .................................................................................................... 5 2.2指纹图像的分割 ................................................................................................................ 5

2.2.1指纹图像分割概述 ................................................................................................ 5 2.2.2均值方差法 ............................................................................................................ 7 2.3指纹图像的细化 ................................................................................................................ 8

2.3.1指纹图像细化的预处理 ........................................................................................ 8 2.3.2指纹图像细化方法计算 ........................................................................................ 9 2.4指纹图像的匹配 .............................................................................................................. 10 第三章 指纹识别系统硬件设计 ................................................................................................... 11

3.1系统总体设计 .................................................................................................................. 11

3.1.1指纹识别系统功能简述 ...................................................................................... 11 3.1.2系统核心部件单片机 .......................................................................................... 11 3.2指纹识别系统电路设计 .................................................................................................. 12 3.3硬件系统组成模块电路 .................................................................................................. 12

3.3.1下载口模块 .......................................................................................................... 12 3.3.2显示模块 .............................................................................................................. 13 3.3.3电源模块 .............................................................................................................. 13 3.3.4时钟模块 .............................................................................................................. 14 3.3.5复位模块 .............................................................................................................. 14 3.4指纹模块 .......................................................................................................................... 15

3.4.1ZMF-206指纹识别模块 ........................................................................................ 15

第四章 软件系统设计 ................................................................................................................... 17

4.ZFM-206指纹识别模块指令系统 ...................................................................................... 17

4.1.1通信方式 .............................................................................................................. 17 4.1.2主要通讯协议命令说明 ...................................................................................... 18 4.2单片机的程序设计流程图 .............................................................................................. 21 第五章 实物的制作与系统调试 ................................................................................................... 22

5.1 硬件材料 ......................................................................................................................... 22 5.2 硬件的焊接与组装 ......................................................................................................... 22

I

5.3 系统的调试 ..................................................................................................................... 23

5.3.1单片机的程序下载 ................................................................................................ 23 5.3.2串口调试 .............................................................................................................. 23 5.3.3液晶显示器调试 .................................................................................................. 24

第六章 总结和展望 ....................................................................................................................... 25 参考文献......................................................................................................................................... 26 附 录 .............................................................................................................................................. 28

附录A 1602显示器子程序 ................................................................................................. 28

II

第一章 绪论

1.1研究的背景及意义

科学技术的迅猛发展为人类的生产生活带来了极大的便利,大大地推动了现在社会的进步和发展。在网络化时代的今天,我们每个人都拥有大量的认证密码,比如开机密码、邮箱密码、银行密码、论坛登陆密码等等;并配备了各种钥匙,如门锁钥匙,汽车钥匙,保险柜钥匙等。这些都是传统的安全系统所采用的方式,随着社会的发展,其安全性越来越脆弱。而我们的生活随时都需要进行个人身份的确认和权限的认定。

指纹特征是人终生不变的特征之一,而且不同人的指纹特征相同的可能性几乎为零。人体指纹含有天然的密码信息,其具有作为密码信息必须具备的三个重要性质[1]:

①广泛性,指每一个正常人都有指纹。 ②唯一性, 指每一个人的指纹都不同。 ③终生不变性, 指非意外事故指纹终身不变。

因此,指纹识别技术,作为一种可靠的生物识别技术[1],受到了人们的重视。尽管人们已经对自动指纹识别技术作了深入广泛的研究,指纹识别技术也获得了不少应用,但是指纹识别的应用在目前并没有获得普及,这主要是因为指纹识别在识别准确性和识别速度方面还远远不能满足很多实际应用的要求。

这就要求研究指纹识别环节中若干问题,这对于问题的解决很有意义。

1.2指纹识别技术

1.2.1指纹识别技术发展现状

指纹识别算法的研究方向主要分为:基于图像的识别算法和基于特征的识别算法[2]。

基于图像的识别算法认为,指纹图像的频域和空域信息可以用来唯一表示并识别不同的指纹[2]。它是一种使用全局信息进行识别的方法,例如使用指纹图像的Fourier频谱来表示和识别指纹。这类算法的问题在于图像特征难以定义和匹配,因此算法的拒识率和误识率较高。

基于特征的指纹识别算法是找到并比对指纹的特征[2]。指纹特征的复杂度足以提供用于鉴别的足够特征。目前大多数的自动指纹识别系统使用的都是这类算

1

四川文理学院学位论文

法。指纹特征多种多样,有特征点、奇异点、域方向图、脊线数目,甚至脊线线型等。对应的匹配方法可以分为:基于点模式的匹配,基于脊线的匹配,基于纹理的匹配以及多种细节特征混合的匹配方法。

大多数基于特征的识别算法专注于脊线上的末梢点和分叉点,该方法根据各个特征点的位置和方向来表示和区分指纹,从而使指纹识别问题转化为判断两个特征点集间的最大相似度(最大重合度)的问题。提取该细节特征有多种方法:基于灰度指纹图像直接提取,基于二值图像的特征提取,基于细化图像的特征提取。

目前许多公司和研究视梅在指纹识别技术领域都取得了突破性的进展,推出许多指纹识别与传统IT技术完美结合的应用产品,这些产品已经被越来越多的用户所认可。中科院自动化所智能生物信怠系统研究组和北京数字指通软件技术有限公司对自动指纹识别技术进行了长期的理论研究和应用系统开发,指纹图像的识别准确率和识别速度已达到国际先进水平。另外,一些公司和机构结合社会应用的实际需求,开发了各种类型的具有独立知识产权的嵌入式指纹识别模块、指纹应用系统软件等,用户反映良好。指纹识别技术多用于对安全性要求比较高的领域,丽在商务移动办公领域颇其建树的富圭通、三星及等国际知名品牌都拥有技术与应用较为成熟的指纹识别系统[4]。

与国外相比,我国在自动指纹识别技术的研究水平上还存在一定的差距。主要表现在:(1)指纹录入设备的质量还不太过关:(2)自动指纹识别算法研究水平还有待提高,在应用上的表现为产品适应性和易用性较差,对干、湿一些的指纹往往不能正确区别,对指纹录入时的旋转、平移比较敏感。 1.2.2指纹识别技术的特点

指纹特征是人终生不变的特征之一,而且不同人的指纹特征相同的可能性几乎为零。人体指纹含有天然的密码信息,其具有作为密码信息必须具备的四个重要性质:

①广泛性,指每一个正常的人都有指纹。

②唯一性,指每一个人的指纹都不同。指纹的细节由细微纹点和纹线的起点、终点、分叉等组成。正是这些无穷无尽的细节特征组合构成了指纹的唯一性.事实上,甚至包括双胞胎,世界上两个指纹相同的概率小于1/109,几乎为零,这就构成了指纹的第一大特点。

③终生不变性,指纹终身不变即指纹的图案永远不会改变,从人的出现到死后的分解为止(除非指纹受到伤害)。

④指纹与主体的不可分离性:即指纹不存在丢失、遗忘、被窃取的可能。 指纹的使用比起其它证卡来说更快捷、安全、准确、无干扰,可实现快速登

2

录注册,系统兼容性好,也就是说可以独立或者通过联网构成系统并且很容易并入各类证卡和定义识别系统中。因此,指纹识别技术的应用范围极广。

指纹识别系统主要包括四部分:指纹图像采集,指纹图像预处理,指纹特征提取和指纹特征匹配。论文涉及指纹的图像分割、细化和匹配。就现有文献和产品来看,对低质量的指纹图像的处理效果还远不能令人满意。要想使设计的细节特征提取算法能够对低质量指纹图像也能可靠工作。

指纹匹配算法的性能主要决定于所提取到的特征点的数目、位置和相互关系的可靠性。要想设计一个对较多真正特征点缺失、较多伪特征点出现和较大形变均不敏感的指纹匹配算法,也是一件十分困难的事。

计算复杂性是自动指纹识别技术中一个重要的研究课题。实际应用要求最好自动指纹识别系统能对识别任务实时做出响应,而让指纹匹配算法同时达到高速度和高准确率也是一个难题。

1.3本课题的内容

以MCS-51系列单片机作为控制核心,设计并制作指纹识别控制系统。本系统采用模块化的总体结构设计,依据实现的各种功能,把整个系统分成几个功能模块,使得系统简洁明了。同时使得系统程序可读性加强,方便程序的完善和修改。各模块之间联系紧密,共同构成完整的系统。控制器设计首先要了解指纹识别系统的理论要求,再通过软硬件实现整个指纹识别的模拟过程。

该系统能够实现单片机和指纹模块之间的串口通信,通过操作独立式键盘按键,向指纹模块的DSP芯片发送相应指令,从而执行录入用户、添加用户、认证用户、删除指定用户、删除全部用户、以及管理个人身份信息等功能。

第二章 指纹识别系统实现原理

2.1人类指纹特征

我们定义了指纹的两类特征来进行指纹的验证:总体特征和局部特征。 2.1.1 指纹的总体特征

总体特征是指那些用人眼直接就可以观察到的特征,包括基本纹路图案[5]:环型(loop),弓型(arch),螺旋型(whorl)。其他的指纹图案都基于这三种基本图案。

3

四川文理学院学位论文

指纹的脊纹形式是适应之间的球状表面和半圆形顶端以及横行的指间屈基线生长的,除少数弓形纹之外,绝大多数是箕、斗型纹(约占95%),(三种纹形的大致分布概率如表2.1)

基本纹型 分布概率 弓型 5% 箕型 60% 斗型 35% 表2.1 纹形的大致分布概率

纹型是指纹的基本分类,是按中心花纹和三角的基本形态划分的。中心线的按我国是指纹分析法,指纹分三大类型(如图2.1),三大种形态。

箕型 斗型 弓型

图2.1 指纹的纹形

(1) 箕形纹(Loop):有一条以上完整的基性线组成中心花纹。箕形线的对侧有一个三角的上下之线包围着中心花纹。按箕技的流向分为桡侧箕形纹(反箕)和尺侧箕形纹(正箕)两种。按中心花纹的结构形态又可分为普通箕、闭口箕、叶形箕、横箕和类似斗的箕。箕形纹中心和三角之间的距离和纹线数量多少不一,有的只有1-2条线,多数为十条线左右,个别的可达30余条。

(2)斗型纹(Whorl):中心花纹呈环、螺、曲状,由内向外扩展与上下包围线汇合形成两个以上的三角的纹线,称为斗型纹。分为环形、螺形、囊形、双箕形、杂形五种。斗型纹的中心花纹,在由一条环、螺、曲等纹线构成时,与两侧三角相对的弧形线凸面,必须是不折、不断的,并且不与来自从三角中的其它纹线相接。

(3)弓型纹(Arch): 由弓形线和横直线层叠而成,中心花纹与上下包围线无明显界限,因此也没有真正的三角区。分弧形和帐形纹两种。

(4)弧形纹:是由平缓的或略微突起的弧形线组成的一种结构简单的花纹形式。

(5)帐形纹:由平行的和突起的弧形线组成。花纹中部有直立的或倾斜的纹

4

线,将弧形线撑起呈帐蓬状。

指纹类型的三类九种,是按我国现行的十指指纹分析法划分的。这是一种基本分类,也叫两极分类法。实际上指纹种类远不只这些。 2.1.2指纹的局部特征

局部特征是指指纹上的节点的特征,这些具有某种特征的节点称为特征点。两枚指纹经常会具有相同的总体特征,但它们的局部特征—特征点,却不可能完全相同。

指纹纹路并不是连续的、平滑笔直的,而是经常出现中断、分叉或打折。这些断点、分叉点和转折点就称为\特征点\。就是这些特征点提供了指纹唯一性的确认信息。特征点的分类有以下几种(如图2.2),最典型的是端点和分叉点。

图2.2 指纹特征示意图

很多研究者试图解决指纹分类问题,但至今分类算法的误识率仍较高。如何提高指纹分类的准确率在自动指纹识别研究中是一个较关键的问题。

2.2指纹图像的分割

2.2.1指纹图像分割概述

在指纹识别系统中,指纹图像分割是图像预处理的一部分。指纹分割的最基本的依据是图像某些特征和特征集合。图像特征是指纹图像的固有属性,如灰度值,邻域关系,纹线的扭曲程度等。特征集合则是几种的结合。通过提取图像特征,可将原始图像映射到特征空间,使图像特征在特征空间中呈现一定的分布。因此根据以上的的灰度值[6]领域关系,纹线的扭曲程度,指纹图像分割[6]大致分为三

5

四川文理学院学位论文

类:基于像素的图像分割,基于块特征的图像分割以及基于全局的图像分割。

基于像素的指纹图像分割中目前流行多尺度小波变换和阈值法[6]。小波变换和傅里叶变换的出发点都是将信号表示成基函数的线性组合。所不同的是傅里叶变换采用时间属于(一∞,+∞)的谐波函数exp(inx)作为基函数,而小波变换的基函数是具有紧支集的母函数?(t),通过对母函数?(t)进行伸缩和平移得到一个小波序列:?a,b?t??1a???t?b?? a,b?R;a?0 式中a为伸缩因?a?子,b为平移因子。对于任意函数f?t??L2?R?的连续小波变换[6]:公式(2.1)为变换公式,公式(2.2)为重构公式。

Wf?a,b??f,?a,b?a1C???-???-??12?R?t?b? f?t??*??dt (2.1)

a??

??1?t?b?W(a,b)? ??dadb (2.2)f2a?a?计算机中的图像信息是以离散信号形式存放的,在信号处理中,特别是在数字信号处理和数值计算等方面,为了计算机实现的方便,连续小波必须进行离散化,而最基本的离散化方法就是二进制离散,一般将这种经过离散化的小波及其变换叫做二进小波和二进变换。

小波变换的特点是压缩比高,压缩速度快,压缩后能保持信号与图象的特征不变,且在传递中可以抗干扰。在指纹识别识别中使用小波变换有助于噪声的滤除以及有利于检测奇异点。但是小波变换的明显缺点是它计算复杂,计算效果也取决于函数的选择。

另一种阈值分割就是简单地用一个或几个阈值将图像的灰度直方图分成几个类,认为图像中灰度在同一个灰度类内的像素属同一物体。它是图像分割中最基本的方法。其原理是先定一个阈值,大于此值为1,小于则认为为0;多阀值则可以利用多维函数。此原理在匹配中也可以运用。其优点是计算简单,仅需比较灰度值即可;运算效率较高,速度快;它的缺陷在于仅考虑图像的灰度信息,而忽略了图像的空间信息,对于图像中不存在明显灰度差异或各物体的灰度值范围有较大熏叠的图像分割问题难以得到准确的结果[7]。

代表块特征的指纹图像分割目前研究趋势为多种块基本特征如灰度均值、块灰度方差[8]、块方向图等综合运用和重新定义块特征。其中块指的是将图像分个成一个个小的图像块。图像均值就是对每一个单位块的灰度值取均值,方差则反

6

映该块中各点与均值的偏差性,方向这可以很好的反映纹理的变化趋势。一般来说,常见的方向场的计算分为掩模法和公式法两大类。LinHong等人开发的基于最小均方估计算法,即公式法。

?x?i,j??G?i?1,j?1??2G?i,j?1??G?i?1,j?1??G?i?1,j?1??2G(i,j?1)?G(i?1,j?1)?y?i,j??G?i?1,j?1??2G?i,j?1??G?i?1,j?1??G?i?1,j?1??2G(i?1,j)?G(i?1,j?1)i?w/2j?w/2

rx(i,j)?i?w/2j?w/2??2??u,v??(u,v) (2.3) ????u,v???(u,v)2 (2.4)

2i?w/2j?w/2ry(i,j)?i?w/2j?w/2它是利用正交坐标系下,原点到它们组成的坐标点的有向线段与X的正半轴的夹角可来表示该子块的块方向。这种方法最大的优点是易实现,很好体现出纹理,但缺点是对于变化太快的部分出错。此方法的实现是利用方向滤波器。

基于全局的图像分割则是根据情况特别是某些特殊场合的利用,如残缺指纹。全局的图像分割可以是人工选定几个特定点后再根据全局的特点来处理,此法也可运用于匹配。基于全局的指纹识别仍处于实验室探索阶段,应用领域中尚不广泛。

2.2.2均值方差法

在图像分割概述中,已经提到基于块特征的指纹图像分割。在这部分将重点介绍均值法差法的计算方法和在仿真中的运用。

该算法基于背景区灰度方差小,而指纹区方差大的思想,将指纹图像分成块,计算每一块的方差,如果该块的方差小于阈值为背景,否则为前景。具体步骤分以下三步[10]:

(1)将低频图分成M×M大小的无重叠方块,方块的大小以一谷一脊为宜。 (2)计算出每一块的均值和方差。

设指纹图像I的大小为H×L,I(i,j)为像素点(i,j)的灰度,AVE和VAR分别为原指纹图像的均值和方差,AVE和VAR可以通过公式(2.5)和(2.6)计算得到。

1H-1L?1AVE?I(i,j) (2.5) ??H?Li?0j?01H-1L?12 (2.6) VAR?( I(i,j)-AVE)??H?Li?0j?0(3)如果计算得到的方差几乎接近于0就认为是背景,对于方差不为零的区

7

四川文理学院学位论文

域在进行阈值分割算法,这种算法主要是根据计算得到的方差来决定其是否为背景区。

在使用方差均值法之前还要使用归一法将图变为低频图。归一化[11]的目的是把不同原图像的对比度和灰度调整到一个固定的级别上,为后续处理提供一个较为统一的图像规格。指纹图像的归一化公式如式(2.6)所示,当大于平均值时为加。

?VAR0(I(x,y)?AVE)2?AVE0?VAR? (2.6) I(x,y)??2VAR0(I(x,y)?AVE)?AVE?0?VAR?其中AVE0和VAR0为期望的灰度均值和方差。

2.3指纹图像的细化

2.3.1指纹图像细化的预处理

这部分预处理主要为二值化。由于指纹图像脊、谷相间,因此指纹图像的处理常是将指纹图像二值化。灰度图像二值化是将灰度图变换为只有黑和白两种灰度的图像。这样不仅可以压缩原指纹图像的数据量,而且也方便后面的细节特征的提取。灰度图二值化的基本思想是选取适当的灰度阂值,将灰度图像转化为二值图像,阈值的选择是关键,对于阈值的选择,有多种方法,如熵法,Ostu法等。根据是否将图像分块处理,又分全局阈值算法和局部阈值算法两种,全局阈值算法是将整幅图像以一个阈值处理,而局部阈值算法则把原图分成若干个子图,在每个子图中确定闽值,在进行二值化,由于指纹图像在不同区域的亮度和对比度是有差别的,因而全局阈值算法不适用。

灰度图二值化的基本思路是选取适当的灰度阈值,将灰度图像转化为二值图像。一般的图像处理中的二值化算法主要是计算整幅图像的灰度平均值,然后将该值作为门限,高于该门限的像素点就置1,反之置0。我们通过研究发现,这种方法虽然简单,但是对噪声较大,图像质量不好的指纹会产生较大的二值化噪声。所以最好选用局部阈值法作为二值化算法。

论文中采用了一种动态局部阈值,满足这种条件下的灰度值为128,不满足则灰度值为255。再根据前面判断的是否为背景即Icc值的来修正Icc值:灰度值为128且Icc为1时(非背景指纹纹线时),Icc值为0,像素值置为0。背景和灰度值为255的纹线像素置为1,这做法的目的是去除不确切的点。此时背景为白,纹线为黑。

8

二值化后的图像中的点还要进行修改,修改条件为:当像素为1时,它周围点不大于3个为像素1点则修改为0;当像素为0时,它周围不小于7个点为像素1的点,则修改为1。这种修改是为了使图像连续圆滑。

2.3.2指纹图像细化方法计算

由于灰度过渡区[12]的存在,指纹细化是指纹图像预处理中的一个重要环节,因为一般的特征提取都是在细化的基础上进行的,如果细化不好,将无法使用常规的特征提取算法提取细节特征信息[13]。细化可以便我们得到绞线的单像素的骨架。所谓“骨架”,是指图像中央的骨骼部分,是描述图像几何及拓扑性质的重要方法之一。获取一个图像骨架的过程通常称为对图像“细化”的过程。在文字识别、地质构造识别、工业零件形状识别或图像理解中,先对被处理图像进行细化有助于突出形状特点和减少冗余信息。

细化处理是指在指纹图像二值化以后,在不影响纹线连通性的基础上,删除纹线的边缘像素,直到纹线为单像素宽为止。理想细化后的纹线骨架应该是原始纹线的中间位置,并保持纹线的连通性、拓扑结构和细节特征。一种好的细化算法应该满足下列条件[13]:

(1)收敛性:迭代必须是收敛的。 (2)连通性;不破坏纹线的连接性。

(3)拓扑性:不引起纹线的逐步吞食,保持原图像的基本结构特性。 (4)保持性:保护指纹的细节特征。

(5)细化性:骨架纹线的宽度为1个像素,即单像素宽。 (6)中轴性:骨架尽可能接近条纹中心线。 (7)快速性:算法简单,速度快。

已有的算法迭代按迭代方式的不同分为串行算法和并行算法。在串行细化算法中,当前迭代的结果不仅取决于前一次的迭代迭代图像,而且与当前处理情况有关;而在并行方式中,当前迭代仅仅是由前一次的迭代情况决定,串行细化算法的处理结果依赖于对像素处理的先后顺序,因而像素点的消除或保留不可预测。并行细化算法对图像进行细化时利用相同的条件同时检测所有像素点,其结果具有各向同性,因此从算法原理上并行算法优于串行算法。由于并行细化算法具有快速而准确的特性,因此他一直是人们研究的热点,并且相应的提出了许多并行细化算法,如OPTA细化算法[15],R.W.Hall细化算法,Rosenfeld细化算法,Zhang & Suen 细化算以及ZR细化算法等等。性能上这些算法各有所长。

不同的文献上有不同的关于细化方法,如王家隆[16]等以及王业琳[17]等的细化模板。制约细化的直观表现在计算速度、毛刺和断点上。因而细化中选择一个好

9

四川文理学院学位论文

的模板很关键。模板分为保留模板和消除模板,消除模板就是根据条件判定这点去除作为背景的模板;保留模板则是根据条件判定这点保留作为前景的模板。这样就可以将较粗的图像曲线细化成很细的以像素为单位的线,大大减少了图像的信息量,有利于匹配的高效进行。

本论文中采用了细化方法步骤如下:

(1)建立3维数组,第一组数据为预处理后的图像信息,定义每一个像素点它周围点像素参数。

(2)对于满足6种情况的模板,赋值为2 ,其实为像素1情况。对于满足后六种情况的模板赋值为3,别的情况点值不做改变。

(3)16种消去模板是在不满足上述情况下衍生的模板,对于满足这些模板的点像素全为0,以上都未涉及的点不做改变。

(4) 循环进行上述过程,到所有点值不改变为止,最多进行20次细化。

2.4指纹图像的匹配

指纹匹配要解决的是对两幅给定指纹图像的特征模式进行比对,判断这两幅图像是否来自同一个人的同一手指。指纹匹配是自动指纹识别的最后一步,也是非常关键的一步。

指纹图像匹配方面,主要有基于图像,脊线结构和特征点的方法。基于特征点的匹配算法具有简单、快速、鲁棒性等优点。目前最为常用的方法是FBI提出的细节点坐标模型来做细节匹配。它利用脊线上的端点和分叉点这两种关键点来鉴定指纹。通过将细节点表示为点模式,一个指纹识别问题可以转化为一个点模式匹配问题。点匹配算法是通过某些变换,如平移变换、旋转变化、伸缩变换,可以把两个点集中的对应点匹配起来。对于基于细节点的匹配思路大体分两种:基于直角坐标系的特征识别和基于极坐标系的特征识别。

10

第三章 指纹识别系统硬件设计

3.1系统总体设计

3.1.1指纹识别系统功能简述

本系统是针对指纹采集、识别模块开发出的指纹识别系统。该系统使用指纹模块搜索手指,一旦搜索到手指,立即采集指纹图像,并将采集到的图像转化成数据的形式发送出去。它利用人体指纹各异性和不变性,为用户提供加密手段,使用时只需将手指平放在指纹采集仪的采集窗口上,即可完成采集任务,并将显示出指纹模块采集指纹图像各个流程及比对的结果。简单的描述本次设计的功能即使用指纹模块检测、录入指纹,将比对结果显示。

该系统的主要功能有以下几个方面:

(1) 指纹录入。能进行指纹的录入,二次录入无误后,记录该指纹数据。指纹图像通过专门的指纹采集仪采集。

(2) 指纹识别。能进行指纹的识别,指纹识别出错时,报警提示。图像采集完成后,与库中已存在指纹进行对比,与所有有权限用户信息对比后,若无相符信息即提示报警。

(3) 指纹管理。能进行指纹数据的管理,添加和删除指纹数据。对添加到库中的用户指纹进行权限管理,设置最高权限用户,并能够对其进行添加和删除管理。

(4) 操作显示。通过按键进行指纹系统的功能选择,采用数码管与LED(Light Emitting Diode,发光二极管)指示灯综合提示操作内容。若信息经核对相符,即提示该用户拥有权限,若不相符,即提示非法操作。 3.1.2系统核心部件单片机

AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K系统可编程Flash 存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

11

四川文理学院学位论文

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

3.2指纹识别系统电路设计

系统电路框架是根据设计任务要求,对系统所需元件、设备参数进行必要的计算,通过认真研究、分析、比较选定设备型号,再将设备、元件通过可靠的接口电路联系起来构成的一个完整的系统。综合考虑系统的性能和稳定性要求,以保证所设计的系统达到预期的要求。主控芯片选用AT89S52单片机。系统总体框图如图3.1所示:

AT89S52 单片机 数码 显示管 指纹模块 电源、时钟电路 蜂鸣器 独立按键 指示灯 图3.1系统总体框图

系统主要由MCU(Microcontroller Unit,微程序控制器)、LED屏(Large Electronic Display,大型电子展示)、指纹模块组成。系统的工作过程主要是当检测到有按键按下时先由MCU通过串口通信控制指纹模块对指纹进行采集、录入、存储、比对。然后,根据所得的数据对其它接口器件,如显示屏、蜂鸣器、指示灯进行响应操作。

3.3硬件系统组成模块电路

3.3.1下载口模块

采用RS-232接口,从PC机将程序下载至单片机芯片当中,实现编程实际

12

应用。本次设计采用9芯针接口,其主要包括DCD(Data Carrier Detect)载波检测引脚,RXD(Received Data)接收数据引脚,TXD(Transmit Data)发送数据引脚,DTR(Data Terminal Ready)数据终端准备就绪引脚,SGND(Signal Ground)信号地引脚,DSR(Data Set Ready)数据准备就绪引脚,RTS(Request To Send)请求发送引脚,CTS(Clear To Send)清除发送引脚,RI(Ring Indicator)振铃提示引脚。在RS-232标准中,字符以一串行的比特串来一个接一个的串行方式传输,优点是传输线少,配线简单,传送距离可以较远。最常用的编码格式是异步起停格式,它使用一个起始比特后面紧跟7或8 个数据比特,然后是可选的奇偶校验比特,最后是一或两个停止比特。

如图3.2所示:

图 3.2 下载口模块

3.3.2显示模块

采用1602字符型液晶。1602电路如图3.3所示:

图 3.3 显示及驱动电路

3.3.3电源模块

整个模块采用USB供电,以按键式开关启动或关闭电源。当按下电源键时,电源开启,电源指示灯点亮。如图3.4所示:

13

四川文理学院学位论文

图 3.4 电源模块电路

3.3.4时钟模块

时钟电路用来产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。通过在芯片的外部XTAL1和XTAL2两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡电路。时钟电路为单片机产生时钟脉冲序列,本设计中采用的晶振频率为11.0592MHz,电容为33pF。如图3.5所示:

11.0592

图 3.5 时钟模块电路

3.3.5复位模块

复位电路用于产生复位信号,通过RST引脚送入单片机,复位是单片机的初始操作,其主要功能是:为一些专用寄存器设置初始状态、程序状态字PSW清0、程序计数器PC被赋值为0000H等,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需安装复位键以重新启动。RST引脚是复位信号的输入端,复位信号是高电平有效,完成复位操作共需要24个状态周期,本设计使用频率为11.0592MHz的晶振,所以复位信号持续时间应大致超过2μs才能完成复位操作。本设计采用按键复位。

14

如图3.6所示:

图3.6 复位模块电路

3.4指纹模块

3.4.1ZMF-206指纹识别模块

ZMF-206 指纹开发模块是深圳市十指科技有限公司最新推出的,以 TI 公司的 TMS320VC5501 高速 DSP 处理器为核心,结合具有公司自主知识产权的商用指纹算法,光学指纹传感器,具有指纹录入、图像处理、特征值提取、模板生成、模板储存、指纹比对和搜索等功能的智能型模块,并提供UART 接口和通讯协议,方便进行二次开发应用。

其具有如下特点:

(1) 体积小巧、成像清晰、手指感应灵敏、识别速度快、干/湿手指适应性强,二次开发简单、应用方便,适用面广;

(2) 稳定:工作稳定,可应用于各种类型单片机;

(3) 方便:串口UART操作(直接接任何带串口单片机),操作简单; (4) 开放:可以自由输入、输出指纹图片、指纹特征值文件及各种指纹操作; (5) 高性能:采用商业算法,识别速度快,手指感应灵敏,手指只要轻轻地触碰采集窗就能快速识别,不需要用力按压。

15

四川文理学院学位论文

指纹模块与单片机接口框架如图3.7所示:

AT89S52 指纹模块 RXD TXD GND TX RX GND 图 3.7 指纹芯片与AT89S52单片机接口框图

16

第四章 软件系统设计

4.ZFM-206指纹识别模块指令系统

4.1.1通信方式

DSP 模块作为从设备,由主设备发送相关命令对其进行控制。 命令接口:19200bps 1 起始位 1 停止位 (无校验位)

主设备发送的命令及 DSP 模块的应答按数据长度可分为两类: (1) = 8 字节,数据格式如下:

表4.1 8字节数据格式

字节 命令 应答

1 0xF5 0xF5 2 CMD CMD 3 P1 Q1 4 P2 Q2 5 P3 Q3 6 0 0 7 CHK CHK 8 0xF5 0xF5 说明:

CMD:命令/应答类型 P1,P2,P3:命令参数 Q1,Q2,Q3:应答参数,

Q3 多用于返回操作的有效性信息,此时可有如下取值: #define ACK_SUCCESS 0x00 //操作成功 #define ACK_FAIL 0x01 //操作失败 #define ACK_FULL 0x04 //指纹数据库已满 #define ACK_NOUSER 0x05 //无此用户 #define ACK_USER_EXIST 0x07 //用户已存在 #define ACK_TIMEOUT 0x08 //采集超时

CHK:校验和,为第 2 字节到第 6 字节的异或值

17

四川文理学院学位论文

(2) > 8 字节,数据由两部分组成:数据头+数据包,格式如下:

表4.2 大于8字节数据头格式

字节 命令 应答

1 0xF5 0xF5 2 3 4 5 0 Q3 6 0 0 7 CHK CHK 8 0xF5 0xF5 CMD Hi(Len) Low(Len) CMD Hi(Len) Low(Len) 说明:CMD,Q3 的定义同上

Len:数据包内有效数据长度,16 位,由两字节组成 Hi(Len):数据包长度高 8 位 Low(Len):数据包长度低 8 位

CHK:校验和,为第 2 字节到第 6 字节的异或值

表4.3 大于8字节数据包格式

字节 命令 应答 1 0xF5 0xF5 2?Len+1 Data Data Len+2 Len+3 CHK CHK 0xF5 0xF5 4.1.2主要通讯协议命令说明

(1) 添加指纹(命令/应答均为 8 字节)

为确保有效性,用户必须录入 3 次指纹,主机须向 DSP 模块发送 3 次命令。(这里仅列出第一次)

表4.4 添加指纹(第一次)指令格式

字节 1 2 3 用户号 4 用户号 5 0 ACK_SUCCESS 6 7 8 命令 0xF5 0x01 (高8位) (低8位) 0 CHK 0xF5 应答 0xF5 0x01 0 0 ACK_FAIL ACK_FULL ACK_TIMEOUT 0 CHK 0xF5

(2) 删除指定用户(命令/应答均为 8 字节)

18

表4.5 删除指定用户指令格式

字节 1 2 3 用户号 4 用户号 5 0 ACK_SUCCESS ACK_FAIL 6 7 8 命令 0xF5 0x04 应答 0xF5 0x04

(高8位) (低8位) 0 0 0 CHK 0xF5 0 CHK 0xF5 (3) 删除所有用户(命令/应答均为 8 字节)

表4.6 删除所有用户指令格式

字节 1 2 3 0 0 4 0 0 5 0 ACK_SUCCESS ACK_FAIL 6 7 8 命令 0xF5 0x05 应答 0xF5 0x05

0 CHK 0xF5 0 CHK 0xF5 (4) 比对 1:1(命令/应答均为 8 字节)

表4.7 比对1:1指令格式

字节 1 2 3 用户号4 用户号5 0 ACK_SUCCESS 6 7 8 命令 0xF5 0x0B (高8位) (低8位) 0 0 0 CHK 0xF5 应答 0xF5 0x0B

ACK_FAIL ACK_TIMEOUT 0 CHK 0xF5 (5) 比对 1:N(命令/应答均为 8 字节)

表4.8 比对1:N指令格式

字节 1 2 3 0 用户号4 0 用户号5 0 ACK_SUCCESS ACK_FAIL ACK_TIMEOUT 6 7 8 命令 0xF5 0x0C 应答

0xF5 0 CHK 0xF5 0 CHK 0xF5 0x0C (高8位) (低8位) (6) 取用户权限(命令/应答均为 8 字节)

19

四川文理学院学位论文 表4.9 取用户权限指令格式

字节 1 2 3 用户号4 用户号5 0 用户权限1/2/3 ACK_NOUSER 6 7 8 命令 0xF5 0x0A 应答 0xF5 0x0A

(高8位) (低8位) 0 0 0 CHK 0xF5 0 CHK 0xF5 (7) 设置/读取比对等级(命令/应答均为 8 字节)

表4.10 设置/读取比对等级指令格式

字节 1 2 3 命令 0xF5 0x28 0 5 0:设置新的比对Byte=0:新比对等级 等级 1:读取当前比对Byte=1:0 等级 当前对比等级 ACK_SUCCESS ACK_FAIL 4 6 7 8 0 CHK 0xF5 应答 0xF5 0x28 0 0 CHK 0xF5 说明:比对等级取值为 0-9,取值越大比对越严格,默认值为 5。 (8) 设置/读取指纹采集等待超时(命令/应答均为 8 字节)

表4.11 设置/读取指纹采集等待超时指令格式

字节 1 2 3 4 Byte=0:新超时5 0:设置新的超时时间 1:读取当前超时时间 ACK_SUCCESS ACK_FAIL 6 7 8 命令 0xF5 0x2E 0 时间 Byte=1:0 0 CHK 0xF5 应答

0xF5 0x2E 0 当前超时时间 0 CHK 0xF5 说明:指纹等待超时时间(tout)范围为 0-255。若此值为 0,若无指纹按压则指纹采集过程将一直持续;若此值非 0,在 tout*T0 时间内若无指纹按压则系统将超时退出。

注:T0 为采集/处理一幅图像所需的时间,一般为 0.2-0.3s。

20

4.2单片机的程序设计流程图

图4.1 程序流程图

21

四川文理学院学位论文

第五章 实物的制作与系统调试

5.1 硬件材料

本次指纹识别系统实物制作所涉及的硬件: 电阻器、电容器、二极管、三极管、集成电路、大功率管。

5.2 硬件的焊接与组装

1.制作前期的准备

首先要熟悉所焊印制电路板的装配图,并按图纸配料,检查元器件型号、规格及数量是否符合图纸要求,并做好装配前元器件引线成型等准备工作。

2.焊接元器件的顺序

元器件装焊顺序依次为:电阻器、电容器、二极管、三极管、集成电路、大功率管,其它元器件为先小后大。

3.对元器件焊接要求 (1)电阻器焊接

按图将电阻器准确装人规定位置。要求标记向上,字向一致。装完同一种规格后再装另一种规格,尽量使电阻器的高低一致。焊完后将露在印制电路板表面多余引脚齐根剪去。

(2)电容器焊接

将电容器按图装人规定位置,并注意有极性电容器其 “ + ” 与 “ - ” 极不能接错,电容器上的标记方向要易看可见。先装玻璃釉电容器、有机介质电容器、瓷介质电容器,最后装电解电容器。

(3)二极管的焊接

二极管焊接要注意以下几点:第一,注意阳极阴极的极性,不能装错;第二,型号标记要易看可见;第三,焊接立式二极管时,对最短引线焊接时间不能超过 2S 。

(4)三极管焊接

注意 e 、 b 、 c 三引线位置插接正确;焊接时间尽可能短,焊接时用镊子夹住引线脚,以利散热。焊接大功率三极管时,若需加装散热片,应将接触面平整、打磨光滑后再紧固,若要求加垫绝缘薄膜时,切勿忘记加薄膜。管脚与电路板上需连接时,要用塑料导线。

(5)集成电路

22

焊接首先按图纸要求,检查型号、引脚位置是否符合要求。焊接时先焊边沿的二只引脚,以使其定位,然后再从左到右自上而下逐个焊接。对于电容器、二极管、三极管露在印制电路板面上多余引脚均需齐根剪去。

5.3 系统的调试

5.3.1单片机的程序下载

程序存储器的更新以页的方式进行。在用临时页缓冲器存储的数据对一页存储器进行编程时,首先要将这一页擦除。SPM指令以一次一个字的方式将数据写入临时页缓冲器。临时页缓冲器的写入可以在页擦除命令之前完成,也可以在页擦除和页写操作之间完成。通过电脑上的下载软件将HEX文件传输到USB下载线板上的ATmega8芯片里,程序代码在这里经过处理后从固定的I/O管脚中输出烧写到单片机的Flash存储器中。此外单片机一般采用5V以下的电源供电,USB接口也采用5V电源,所以,该下载线还可以通过电脑向单片机提供工作电源。该下载线采用先进的USB2.0接口技术解决了笔记本不带并口的遗憾,还有它小巧精致,携带方便,下载程序速度快等优点得到了众多编程爱好者的青睐而被广泛的使用着。 5.3.2串口调试

使用串口调试助手进行测试 测试结果如图5.1所示:

5.1 串口通信测试结果图

23

四川文理学院学位论文

5.3.3液晶显示器调试 液晶显示器测试程序见附录A: 液晶显示器试程序结果如图 5.2所示:

图 5.2液晶显示器测试结果

24

第六章 总结和展望

作为一种可靠的生物识别技术,指纹识别技术受到了广泛关注,高效可靠的指纹图像识别算法技术在实际生活中具有很高的实用价值。本文针对以TI公司TMS320VC5501 高速 DSP 处理器为核心的TFS-M51 指纹开发模块,设计了基于AT89S52单片机的指纹识别系统。主要研究内容如下:

指纹识别原理。分析如何对采集到的图像进行预处理,包括图像的规格化,图像分割,图像二值化,图像增强,图像细化以及特征值的提取。

指纹识别模块工作流程。包括添加用户,删除指定用户,删除所有用户,认证用户,管理用户权限等功能的工作原理。

单片机与DSP的通信。如何实现串口通信,以及怎样运用软件进行仿真。掌握指纹识别模块的与单片机的通信机制,运用通信协议实现各功能控制。

本文由于时间上的限制,在指纹识别系统的用户管理功能上没有进行更深入的开发,是一个缺憾。如何有效提高指纹识别可靠度,更安全地管理用户控制权限,以及寻求更为简洁可靠的指纹图像识别算法,应该是今后开展工作的方向。

25

四川文理学院学位论文

参考文献

[1] 杨强,谭礼俊. 生物识别技术对比浅析[J].大众科技.2005年02期。 [2]王崇文,李见为,周宏文.指纹识别系统的设计与实现[J].计算机应 用.2001,21(12):23— 25。

[3]B Moayer and K S Fu. An application of stochastic languages to finger pattern recognition[J]. Pattern recognition.1976,12:173-179。

[4]谢立锋,陈灵枭.浅谈指纹识别基本原理[J].技术与市场.2008.1:44-45。 [5]耿德英,陈志敏,陈梅琴.图像处理在指纹识别中实践[J].西昌学院 报.2009.32(4):72-74。

[6]刘明生,吴小培,项明.一种基于指纹图像特征的图像分割算法[J].电子测 技术第32卷.2009.8:92-94。

[7]郭文鹃,杨公平,董晋利.指纹图像分割方法综述[J]. 山东大学学 报.2010.45(7):94-100。

[8]高月红.灰度图像分割算法的研究[J].科技信息.2009年27期:17-18。 [9]郭丹颖,吴成东,曲道奎.小波变换理论应用进展[J]. 信息与控 制.2004.33(1):67-71。

[10]李晨丹,徐进.指纹图像预处理和特征提取算法的Matlab实现[J].计算机工 程与科学.2009.31(7):61-64。

[11] 温苗利,梁彦等.基于GaborN数的小波域指纹图像增强算法[J].计算 机应用.2006,20(9):68-74。

[12]Gerbrands J J.Segmengtation of Noisy Images[D].Delft University of Technology.1988。

[13]张亮. 指纹图像传感器技术关键及发展趋势[J] . 传感器技术 .2005.09。 [14] 田野. 用你的手指“说话”——指纹识别器[J]. 大众硬件. 2005.06。

[15]王业琳,宁新宝,尹义龙.指纹图像细化算法的研究[J].南京大学学报:自然科学版,2003,39(4):469-475

[16] 詹伟林. 马芳. 邹进和红外线技术在公安工作中的应用[J].森林公安。 2005.01。

26

致 谢

这次毕业设计得到了很多老师、同学的帮助,在此我要感谢曾经教导过我的老师,和帮助过我的同学、老师们。其中我的指导老师易鸿老师对我的关心和支持尤为重要,每次遇到难题,我首先做的就是向易老师寻求帮助,而易老师每次不管忙或闲,总会抽空来给我指导,然后一起商量解决的办法。

另外,感谢学院给予我这样一次机会,让我能够独立地完成一个课题,并在这个过程当中,给予我们各种方便,使我们在即将离校的最后一段时间里,能够更多地学习一些实践应用知识,不断增强我们实践操作能力和动手应用能力,提高了我们独立思考的能力。再一次对我的母校表示感谢。

感谢在整个毕业设计期间和我密切合作的同学,和曾经在各个方面给予过我帮助的伙伴们,在大学生活即将结束的最后的日子里,我们再一次演绎了团结合作的童话,把一个庞大的,从来没有上手的课题,圆满地完成了。正是因为有了你们的帮助,才让我不仅学到了本次课题所涉及的新知识,更让我感觉到了知识以外的东西,那就是团结的力量。通过这次毕业设计,使我得到了一次用专业知识、专业技能分析和解决问题的能力。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都向前迈了一大步,为日后成为合格的应用型人才打下坚实的基础。

最后,感谢所有在这次毕业设计中给予过我帮助的人,感谢你们为我的本次设计所付出的努力与帮助,再一次真诚地感谢你们。

27

四川文理学院学位论文

附 录

附录A 1602显示器子程序

#include #include

#include\

/***********1602液晶显示部分子程序****************/ void lcddelay(unsigned int z) { }

void LCD_Write(bit style, unsigned char input) { }

void LCD_SetDisplay(unsigned char DisplayMode) {

unsigned int x,y; for(x=z;x>0;x--)

for(y=110;y>0;y--);

LcdRs=style; P0=input; lcddelay(5); LcdEn=1; lcddelay(5); LcdEn=0;

LCD_Write(LCD_COMMAND, 0x08|DisplayMode);

28

}

void LCD_SetInput(unsigned char InputMode) { } //

void LCD_Initial() { 光标

不动

}

//液晶字符输入的位置************************ void GotoXY(unsigned char x, unsigned char y) { }

//将字符输出到液晶显示

if(y==0)

LCD_Write(LCD_COMMAND,0x80|x); LCD_Write(LCD_COMMAND,0x80|(x-0x40)); if(y==1)

LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面LcdEn=0;

LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显LCD_Write(LCD_COMMAND,0x38);

LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无

LCD************************************************************

LCD_Write(LCD_COMMAND, 0x04|InputMode);

示,5*7点阵

29

四川文理学院学位论文

void Print(unsigned char *str) { }

附录B 单片机程序清单

#include #include #include\

sbit buzzer=P2^0; //蜂鸣器 低电平打开蜂鸣器

sbit red= P1^0; //红色灯 表示 录入 模式 sbit green= P1^1; //绿色灯 表示 识别 模式

sbit k1=P3^2; //清除所有指纹(10个指纹清除) sbit k2=P3^3; //模式识别转换 sbit k3=P3^4; //录入一次指纹

#define Max_User 10 #define error 2

unsigned char SaveNumber=0,searchnum=0; unsigned int SearchNumber=0; unsigned int

unsigned char str[6]={0,0,0,0,0,'\\0'};

unsigned char code Identify[16]=\ Idenfity%unsigned char code Input[16] =\ Input \

clk0=0;

while(*str!='\\0') { }

LCD_Write(LCD_DATA,*str); str++;

30

bit modeflag=0,clearallflag=0,changeflag=0;

// modeflag=0 为识别模式 modeflag=1为录入指纹模式 //每成功录入一次指纹 SaveNumber++

//////////////////////////////////////常用指令定义/////////////////////////////

//Verify Password :验证设备握手口令 unsigned

//设置设备握手口令 unsigned

//GetImage :探测手指并从传感器上读入图像

unsigned char code GIMG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05};

//Gen Templet1 :根据原始图像生成指纹特征1 unsigned

//Gen Templet2 :根据原始图像生成指纹特征2 unsigned

//Search Finger :以CharBufferA或CharBufferB中的特征文件搜索整个或部分指纹库

unsigned char code SEAT[18]={17, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,8, 4,1,0,0, 0,0x65, 0x00,0x73};

//回送16个

char

code

GENT2[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09}; //回送12个

char

code

GENT1[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08}; //回送12个

//回送12个 char

code

STWD[16]={16,0X01

,0Xff,0xff,0xff,0xff,

0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a}; //回送12个

char

code

VPWD[16]={16,0X01

,0Xff,0xff,0xff,0xff,

0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b}; //回送12个

31

四川文理学院学位论文

//Merge Templet ;将CharBufferA与CharBufferB中的特征文件合并生成模板,结果存于ModelBuffer。

unsigned char code MERG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,5 , 0x00,0x09};//回送12个

//Store Templet :将ModelBuffer中的文件储存到flash指纹库中

unsigned char code STOR[16]={15, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,6,6,2, 0x00,0x00, 0x00,0x0f}; //回送12个

//Read Note

unsigned char code RDNT[14]={13,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,4,0x19, 0, 0x00,0x1e};

//Clear Note

unsigned char code DENT[46]={45,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,36,0x18,0,0,0,

0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x00,0x3d};

//DEL one templet

unsigned char code DELE_one[16]={16, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,7, 0x0c, 0x00,0x00, 0,1, 0x00,0x15};

//DEL templet ;清空指纹库

unsigned char code DELE_all[12]={12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3, 0x0d,0x00,0x11};

//////////////////////////////////////

//////////////////////////////////////#define FALSE 0

////////////////////////////////////////////////////////////////////////

-------结

///////////////////////////////////////////////////////////////////////////////////////

32

#define TURE 1 #define ERROR 255

//状态定义表 #define on 1 #define off 0

#define MAX_NUMBER 63 #define _Nop() _nop_()

//////////////////////////////////////

unsigned char

/*********1毫秒延时程序**********/ void delay1ms(unsigned int t) { }

void TxdByte(unsigned char dat)//串口发送信息,通过查询方式发送一个字符 {

TI = 0;

//让TI=0

//读入数据

SBUF = dat; TI = 0; }

unsigned int i,j; for(i=0;i

FifoNumber=0;

xdata unsigned char FIFO[MAX_NUMBER+1]={0};

------------结

////////////////////////////////////////////////////////

while(!TI); //等待发送完毕

//清零

33

四川文理学院学位论文

bit Command(unsigned char *p,unsigned char MaxTime) //命令解析,给模块发送一个命令

{

unsigned

count=0,tmpdat=0,temp=0,i=0,package=0,flag=0,checksum=0;

TxdByte(0xef);//数据包包头识别码

TxdByte(0x01);//数据包包头识别码

i=*p; //数组的第“0”个元素、里面存放了本数组的长度,把这个长度给变量i,方便进行操作

p++;

p++; {

}

temp=*p++;//取第个“1”个元素的内容,然后发送 TxdByte(temp);//将数据发送出去

for (count=i-1; count!=1;count--) //Sent command String

bit result=0, start=0,stop=0;

char

result=TURE;//发送完成,结果为真 (真为1) FifoNumber=0;

for (count=MAX_NUMBER+1; count!=0; count--)//清空所有FIFO[]数组里面的内容,写入0X00

{

FIFO[count-1]=0x00;

if (result)

result=FALSE; start =FALSE;

stop =FALSE; count=0;

clk0=0; //清零CL0计数

34

本文来源:https://www.bwwdw.com/article/rfsg.html

Top