基于单片机的指纹识别系统设计_第1页
基于单片机的指纹识别系统设计_第2页
基于单片机的指纹识别系统设计_第3页
基于单片机的指纹识别系统设计_第4页
基于单片机的指纹识别系统设计_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、可修编-摘要随着科学技术的发展,人们的安全意识也越来越强,因为指纹具有唯一性和终生不变性,所以指纹识别成为代替传统身份识别最安全、可靠的方法之一。本设计基于飞思卡尔KinetisK60N512系列单片机,指纹识别模块选择的是城章科技的R305F模块,该模块带有高性能的DSP芯片,该DSP芯片嵌完整的指纹识别算法和协议,具有指纹采集,指纹比对,指纹搜索和存储等功能。模块与单片机通过串口进行通讯。指纹识别系统通过CH340G芯片实现TTL电平向RS-232电平的转换,进而实现与PC机的交互,PC机端经上位机显示指纹识别的结果。论文中介绍了基本算法的实现流程,同时介绍了K60N512芯片看门狗模块的

2、基本原理以及启动流程等。结果表明,该套指纹识别系统算法性能可靠,指纹识别率高,可以实现预先制定的目标,完成指纹识别的功能。关键词:指纹识别;飞思卡尔单片机;串口AbstractWiththedevelopmentofscienceandtechnology,peoplessafetyconsciousnessisbeingmoreandmorestrong,thefingerprinthastheuniquenessandinvarianceforlife,sothefingerprintidentificationisinsteadofthetraditionalidentification

3、isoneofthemostsafeandreliablemethods.ThisdesignisbasedonFreescaleKinetisK60N512seriesmicrocontroller,fingerprintidentificationmoduleistheproductofGrowuppany,themodulewithhighperformanceDSPchip,andtheDSPchipwithpletefingerprintidentificationalgorithmandprotocol,fingerprintsacquisition,fingerprintssea

4、rchandstorage,andotherfunctions.Moduleandmicrocontrollermunicationthroughtheserialport.FingerprintidentificationsystemuseCH340GchipchangeTTLleveltoRS-232level,andthenrealizetheinteractionwithaPC,thePCshowstheresultoffingerprintidentification.Thethesisintroducesthebasicalgorithmimplementationprocess,

5、atthesametime,thisarticleintroducesthebasicprincipleofthewatchdogmoduleinsideK60N512chipandthestartprocess.Resultsshowthatthealgorithmoffingerprintidentificationsystemisreliable,fingerprintrecognitionrateishigh,andcanachievetargetoffingerprintidentification.KeyWords:Fingerprintidentification,Freesca

6、leKinetis,UART目录摘要IAbstractI绪论1选题背景和研究意义1国外研究现状1指纹识别的基本原理1指纹图像的采集1指纹图像预处理2指纹图像特征点的提取4指纹图像伪细节点的处理5指纹特征匹配5评价指纹识别系统算法性能的指标5课题的容和目标7指纹识别系统的硬件设计7本设计所使用单片机简介7本设计所使用的指纹模块简介8主程序分析8Cotex-M4核寄存器简介9Cotex-M4中断机制9K60N512启动代码分析10K60N512看门狗程序分析12Flash软件构件简介13Kinetis的FlexBus模块简介13K60N512异步接收器/发送器(UART)简介14指纹模块指令介绍1

7、4指纹图像获取15生成特征17生成模板18储存模板19高速搜索19补充说明20结论18致18参考文献18绪论选题背景和研究意义随着我国经济的迅速发展,人民的生活水平得到了显著的提高,人们对于自己的隐私也愈发重视。传统的电子密码锁等设备在高速发展的科学技术的冲击下显得力不从心,用户隐私很大程度上存在泄露的风险。由于每个人的遗传基因不同,指纹也不相同,指纹识别技术的作用也因此越来越受到人们的重视。指纹是人身体上的一部分,是人所固有的生理特征,不用记忆,也不存在忘带的风险,而且每个人的指纹形状终身不变。所以指纹作为个人身份的标记是再合适不过的了。1.2国外研究现状早期的指纹识别是以人工的方式进行的,

8、由于指纹结构的复杂性以及对指纹识别要求的严格性,导致人工识别指纹工作难度大、速度慢和识别准确率受到制约,远远不能适应实际工作的需要。计算机技术的诞生与发展,为复杂的科学计算和指纹自动识别提供了可能,20世纪70年代,美、日等发达国家开始先后研究指纹识别系统。我国自动指纹识别系统的研究开发始于20世纪80年代,大学信息中心、清华大学自动化系、邮电大学、中科院以及光机所等都在此领域做了一定的工作,且取得了一定的成果,其中较为突出的是清华大学自动化系和大学信息中心两家1。当然,与国外发达国家相比,我国在自动指纹识别技术的研究上还与之存在很大的差距。指纹录入设备的质量不够高,自动指纹识别算法的性能还不

9、够好。加强这方面的研究还是很有必要的。指纹识别的基本原理2.1指纹图像的采集人的皮肤由表皮、真皮和皮下组织三部分组成。指纹指的是表皮上突起的纹线,有斗型、弓型和箕型三种基本类型。获得良好的指纹图像是进行指纹识别的前提,目前光获取指纹图像的方法主要有光学技术、硅技术(CMOS技术)和超声波技术。本设计中使用的指纹传感器基于硅技术,硅技术的优点是可以在较小的面积上获得较好的指纹图像(相对于光学技术),缺点是容易受到外部条件的干扰,可靠性相对较差。2.2指纹图像预处理图像预处理阶段是指纹识别的第一个阶段,图像预处理阶段比较典型的过程主要有图像质量评估、分割、增强、二值化和细化。指纹图像预处理的流程图

10、如图2.1所示。二值化1r细化、图2.1指纹图像预处理的流程图开始f原始指纹图像图像质量评估图像质量评估的目的主要是完成对传感器采集到的指纹图像的总体质量评价,对于低质量的指纹图像直接拒绝。对于质量达到要求的指纹图像才送给之后的处理环节,从而避免了不必要的运算。分割的目的是将前景与背景分割开来。分割操作中应该尽可能去除无效区域,保留有效区域。有了分割操作,指纹图像预处理的时间可以大大缩短。增强的目的主要是为了消除噪声的干扰,提高指纹图像纹线结构的清晰度。Gabor滤波的方法是一种比较理想的指纹图像增强算法,Gabor滤波器可以同时在空间域和频率域上获得最佳的分辨率,具有良好的方向选择性和带通性

11、。二值化是将原来的灰度图变换为黑白两种灰阶的图像,二值化阶段阈值的选择相当重要,阈值的选择有双峰法、P参数法、大津法(Otsu法或最大类间方差法)、最大熵阈值法和迭代法(最佳阈值法)等。细化阶段主要是将二值化之后指纹图像的脊线宽度降低为单个像素宽度,从而得到细化了的指纹图像。细化算法按迭代方式的不同可以分为串行算法和并行算法。预处理阶段的每个环节是紧密相关的,各个环节相互配合才可能获得高质量的指纹图像,从而方便之后特征点的提取,为之后指纹匹配奠定良好的基础。正常的指纹图像如图2.2所示,二值化之后的指纹图像如图2.3所示,细化之后的指纹图像如图2.4所示。图2.2正常的指纹图像图2.3二值化之

12、后的指纹图像图2.4细化之后的指纹图像2.3指纹图像特征点的提取特征点提取的目的在于通过预先制定的算法检测指纹图像中奇异点和细节点这两类特征点的数量以及每个特征点的类型、位置和所在区域的纹线方向。奇异点指的是指纹图像的中心点和三角点。细节点指的是端点(Endpoint)、叉点(Bifurcation)、孤点(Dot)、环点(Loop)、短纹(shortRidge)等。一般的指纹图像提取的特征在10-100个之间,多数文献认为至少应该有12个特征点才可以进行匹配。8邻域编码纹线跟踪算法是一种常用的特征点提取算法。指纹图像伪细节点的处理伪细节点的处理一般分为两类:一种在特征点提取之前,对预处理之后

13、的指纹图像进行平滑、去除毛刺连接断纹等操作,之后提取特征作为真正的特征;另一种是特征提取之后,根据特征之间的相互关系,尽可能的识别伪特征点并滤除它们。应用以下两条真伪细节点的量化判断准则判断真伪细节点:端点不应该与其它细节点相连;分叉点不应该与其他的端点和分叉点相连。指纹特征匹配目前,指纹匹配的相关方法主要有图像相关匹配、纹理特征匹配、纹线匹配以及细节点匹配等。前两者匹配速度快,但由于忽略了指纹的细节特征,匹配准确性不高。细节点匹配算法的难点在于:细节点提取过程会产生虚假特征点和丢失真实细节点;指纹图像普遍存在平移和旋转;指纹图像之间重合区域小,相同手指指纹的细节点集之间对应关系难以确宀定;图

14、像采集过程中,由于非线性映射、手指按压力度不均造成了扭转。2.6评价指纹识别系统算法性能的指标评价指纹识别系统算法的性能指标有3个,分别为拒识率(FRR)、误识率(FAR)和正确识别率(CR)。误识率(FAR)是指在已提取的特征点的指纹样本库中,不同指纹匹配分数大于给定阈值判断为匹配的比率。其计算如下式:FAR=rejetnUmx100%(2.1)totalnum拒识率(FRR)是指在已提取的特征点的指纹样本库中,相同指纹匹配分数小于给定阈值误判为不匹配的比率。其计算如下式:FRR=rejetnumx100%totalnum(2.2)正确识别率(CR)计算如下式:CR=correctnumx1

15、00%totalnum(2.3)式中:totalnum=rejetnum+falsenum+correctnum从式2.1到2.3可以看出,FRR与FAR呈现反比例关系,随着匹配阈值的降低,拒识率(FRR)相应降低,误识率(FAR)升高,反之亦然。所以应该充分考虑系统的需要,在拒识率(FRR)与误识率(FAR)之间找到一个最佳平衡点。课题的容和目标指纹识别系统的硬件设计系统的结构框图如图3.1所示,该系统主要完成指纹的采集、处理和匹配等操。主要有以下几个模块,指纹采集模块,K60N512单片机模块以及显示模块等。本设计所使用单片机简介在嵌入式设备处理器的市场争夺中,ARM系列处理器凭借其小体积

16、、低功耗、低成本和高性能,几乎垄断了该市场。本设计所使用的飞思卡尔K60N512单片机便是基于ARMCotex-M4核,Cotex-M4核面向数字信号控制市场,具有高效并且易于使用的控制和信号处理能力。Cote-M4属于ARMv7架构,该架构采用了Thumb-2技术,该项技术比纯32位代码少使用31%的存,减少了系统开销。同时,Cotex-M4核具有一个单时钟周期乘法累加(MAC)单元、优化的单指令多数据(SIMD)指令、饱和运算指令和一个可选的单精度浮点运算单元(FPU)。此外,该核提供最佳的代码密度和一个嵌套向量中断控制器,可以出色的完成中断处理。Cotex-M4核框图如图3.2所示。EN

17、/ICDetailandTraceHmtingPointUnitMemorypixitectiarkunitCortex-M4CPU图3.2Cotex-M4核框图ARM*D5P总lkMatrixCadeInterfaceSRAM&pcripheml吓Did:丄帚Serialwire:FluhwatLfipnmts:viewer:|utch:If本设计所使用的指纹模块简介指纹模块选择了城章科技的R305F模块,该产品是该公司2011年推出的最新产品。指纹模块采用了瑞典FingerPrintCard公司的FPC1011F3型指纹传感器,这款传感器利用了反射式探测技术,成像质量高,对干湿手指都具有良

18、好的适应性。FPC1011F3是一款电容式传感器,传感器分辨率为363dpi,置8位数模转换器,它通过SPI接口与模块上面的高性能DSP芯片相连。高性能的DSP芯片嵌完整的指纹识别算法和协议,具有指纹采集,指纹比对,指纹搜索和存储等功能。模块通过串口与单片机进行通讯,数据发送端接上位机的数据接收端,数据接收端接上位机的数据发送端。本系统通过单片机与指纹模块的通信实现了自动指纹识别的功能。首先将个人指纹信息录入指纹模块,之后指纹传感器采集指纹信息且与存储在指纹模块里面的指纹模板进行比对,若找到指纹,返回该指纹所对应的信息,送LCD显示,若未找到,提示未找到信息。主程序分析4.1Cotex-M4核

19、寄存器简介Cotex-M4的寄存器有:R0R15。其中R0R12是32位通用寄存器,其中R0R7又被称为低组寄存器,R8R12被称为高组寄存器。32位的Thumb-2指令可以访问所有通用寄存器R13:堆栈指针寄存器(SPStackPointer),它分为两部分,一个叫做进程堆栈指针PSP(ProcessStackPointer),一个叫做主堆栈指针MSP(MasterStackPointe),但在同时刻只用到了其中的一个,配置控制寄存器(CONTROL)的CONTROLS位来选择是使用PSP还是MSP。R14:寄存器(LinkRegister),子程序调用、函数调用以及异常处理时,由R14存储

20、返回地址,复位时R14里面的值为Oxffffffff。R15:程序计数寄存器(ProgramCounter),指向当前程序的地址,修改它的值,就可以改变程序的执行流。同时Cotex-M4还在核水平上搭载了若干特殊功能寄存器,包括程序状态字寄存器组(PSRs或xPSR)、中断屏蔽寄存器组(PRIMASK、FAULTMASK和BASEPRI)和控制寄存器(CONTROL),且只能用MSR和MRS指令访问它们。4.2Cotex-M4中断机制Cotex-M4在核水平上搭载了一个异常响应系统NVIC,支持为数众多的系统异常和外部中断。NVIC位于核部,通过私有外设总线访问。编号为015的对应系统异常,编

21、号16及以上为外部中断。与经典的ARM7TDMI,ARM926EJ-S相比较,在核层次实现了向量中断控制器。当发生了异常并且要响应时,Cotex-M4需要定位其服务例程的入口地址,这些入口地址存储在异常向量表中。通常中断程序的处理流程为:关闭系统总中断、开启外设模块并使能该外设模块中断、配置NVIC模块中的中断寄存器以及开总中断等几个过程。NVIC会根据优先级的设置来控制抢占与嵌套行为。因此,在某个异常正在响应时,所有优先级不高于它的异常都不能抢占之,而且它也不能自己抢占自己。如果一个已经被挂起的中断被使能,NVIC会根据优先级来决定是否服务这个中断。当然,一个被禁止的中断被触发挂起,无论怎样

22、的优先级,NVIC都不会服务它。高优先级中断可以抢占并挂起低优先级中断,同时将低优先级中断上下文保存于系统中断栈中,以便下次系统恢复时继续执行。当一个高优先级中断执行完以后,系统会在挂起的中断中选择一个优先级最高的中断继续执行,这个过程由Cotex-M4的NVIC自动完成,由于中断只使用中断栈,每嵌套一级中断,至少需要保存32个字节(核寄存器的容)于堆栈空间,加之中断服程序(ISR)运行过程中也需要利用中断栈空间,系统中出现较深的嵌套中断时,系统对中断栈空间的需求较高,所以中断环境初始化时,应视最深中断深度,合理分配中断栈空间大小。Cotex-M4从一个中断源发出中断请求信号到硬件响应中断请求

23、的延迟时间固定位12个周期。这12个周期系统执行入栈和取栈等系列操作,若中断信号连续发生,Cotex-M4可优化中断与中断间的硬件响应间隔时间至6个周期2。4.3K60N512启动代码分析启动代码用来完成对系统的初始化,它通常包含以下几部分:中断向量表定义,地址重映射及中断向量表的复制,堆栈初始化,系统时钟频率设置,中断寄存器的初始化和进入用户程序等部分3。K60N512上电时地址在0 x00000000处,系统上电之后,从0 x00000000处取堆栈指针到SP,之后从0 x00000004处取程序指针到PC,然后跳转至PC指针所指向的地址开始执行程序。K60N512芯片可以在RAM和Fla

24、sh中执行代码,在RAM中执行速度更快,因此通常将中断向量表和数据复制到RAM空间中。BSS段是指用于存放程序中未初始化的全局变量和静态变量的一块存区域,数据段存放初始化后了的全局变量和静态变芯片主时钟是利用MCG模块中的PLL模块,倍频50MHZ有源晶振得到的。Kinetis芯片部存在3种不同的时钟:核时钟,总线时钟和flash时钟。其中核时钟是基本时钟,其他时钟均从核时钟分频得到。MCG模块为MCU提供了多种时钟源,其部包含一个锁频环(FLL)和一个锁相环(PLL),FLL接受部或外部的参考时钟源,PLL接受外部参考时钟源,外部时钟参考源来自OSC模块。该部分启动代码由飞思卡尔公司提供,完

25、成了芯片的基本初始化。K60N512芯片的启动程序流程图如图4.1所示。从流程图中可以看到芯片初始化的基本过程,启动代码的最终目的是跳转到main函数,在main函数里面加载关于指纹识别的相关操作代码,可以说这段代码的存在降低了开发的难度。芯片上电读取堆栈指针和程序指针,跳转至程序指针所指向的地址1F初始化CPU寄存器,关闭中断1r关闭看门狗1复制中断向量和代码到RAM中,初始化BSS段以及数据段1r初始化芯片时钟,打开中断1F跳转到main函数执行图4.1启动程序流程图4.4K60N512看门狗程序分析本设计中采用了普通看门狗,以确保程序跑飞之后及时复位,增加了系统的可靠性。K60N512的

26、看门狗寄存器是只写一次寄存器,即上电后只能对其进行一次写入,若要多次写入,必须先解锁看门狗。解锁看门狗是向看门狗的解锁寄存器(WDOG_UNLOCK)连续写入0 xC520和0XD928,两次写入时间间隔不能超过20个时钟周期,否则解锁不成功。解锁看门狗后通过配置看门狗状态控制寄存器(WDOG_STCTRLH)的WDOGEN位来关闭看门狗。使能看门狗以后,会在溢出时间超时之后产生看门狗复位。程序中必须在溢出超时前进行喂狗操作,喂狗之后看门狗模块重新计时,MK60N512的喂狗操作是向看门狗刷新寄存器(WDOG_REFRESH)连续写入0 xB480和0 xA602,两次写入时间间隔同样不能超过

27、20个时钟周期。看门狗的溢出时间通过设置WDOG_TOVALH和WDOG_TOVALL寄存器实现。4.5Flash软件构件简介Flash存储器的特点是断电后保持数据,微控制器使用Flash存储器来存储代码和数据,有时也将系统运行状态参数保存在Flash中K60512部集成512K的Flash,分为256个扇区,Flash存储器的特点是只能将数据从1写为0,不能从0写为1,写入的最小单位为一个字节,擦出的最小单位一个扇区(2K)。Flash存储器部集成Flash控制器,控制器可以接收并执行命令。4.6Kinetis的FlexBus模块简介FlexBus片选地址寄存器(FB_CSARn)用来配置相

28、应外部片选信号FB_CSn的地址围(基地址),FB_CSn为低电平时选中相应的外设。片选控制寄存器(FB_CSMRn)里面的FB_CSCRPS(端口大小)与FB_CSCRBLS(对齐方式)相配合,决定FlexBus数据总线的端口分配和大小。引脚复用功能控制寄存器(FB_CSPMCR),配置该寄存器设置FlexBus引脚复用功能。4.7K60N512异步接收器/发送器(UART)简介UART接收器可以容纳8、9或10位数据字符。UARTx_c2RIE位和UARTx_c2TIE位的设置决定是否允许接受和发送中断,若使能中断,必须首先实现中断服务程序。设置UARTx_C2RE位和UARTx_C2TE

29、位使能UART接收机和发送机。UARTx_C1M位、UARTx_C1PE位和UARTx_C4M10位的状态决定数据字符的长度。UARTx_S2MSBF位设置为1时,接收器操作使得在起始位后面接收的第一位是数据字的最高有效位。奇偶校验位(该位禁用的情况下选择停止位)之前接收到的位被当作数据字的最低有效位,所有必要的位顺序是由模块自动处理。UARTx_BDH寄存器与UARTx_BDL寄存器一起控制UART波特率发生器的预分频因子。更新13位波特率设置时,首先写BDH缓冲新值的高半部分,然后写BDL。直到BDL被写入时BDH中的值才会变。UART初始化函数主要实现了UART数据格式,波特率,UART

30、模块时钟使能等工作。UART构建测试可以通过查询和中断两种方式实现。查询方式通过不断调用接收函数,查询接收标志是否有效来判断是否成功接收数据。中断方式通过中断服务程序实现,成功接收一个字节之后,芯片自动跳转至中断服务程序,中断服务程序中调用接收一个字节的函数来接收数据。K60N512的UART可以稳定工作在115200bps下。4.8指纹模块指令介绍主程序中指纹存储程序流程图如图4.2所示,指纹搜索程序流程图如图4.3所示。用到的指纹模块指令分列如下:4.8.1指纹图像获取发送获取指纹图像的指令,等待接收应答包。指令的指令包和应答包的格式分别如表4.1和表4.2所示。表4.1指令包格式2byt

31、es4bytes1byte2bytes1byte2bytes模块地址包标识包长度指令码校验和OxefOlOxffffffff01H03H01H05H表4.2应答包格式2bytes4bytes1byte2bytes1byte2bytes模块地址包标识包长度确认码校验和OxefOlOxffffffff07H03HxxHsum开始注册成功读到图像否否是是存储成功否否是是结束读到图像否是否生成特征,特征文件存CharBufferl生成特征,特征文件存CharBuffer2发存储模板指令发获取图像指令发生成特征指令发生成特征指令发获取图像指令发注册模板指令图4.2指纹存储程序流程图图4.3指纹搜索程序流

32、程图4.8.2生成特征编程中为了提高模板质量,生成了两次特征文件,分别存于charbuffer1与charbuffer2当中,生成特征指令的指令包与应答包的格式分别如表4.3和表4.4所示。表4.3指令包格式2bytes4bytes1byte2bytes1byte1byte2bytes模块地址包标识包长度指令码缓冲区号校验和0 xef010 xffffffff01H04H02HBufferIDsum表4.4应答包格式2bytes4bytes1byte2bytes1byte2bytes0 xef01模块地址0 xffffffff包标识07H包长度03H确认码xxH校验和sum确认码为00H表示生

33、成特征成功,01H表示收包有误。4.8.3生成模板这一步的目的是将charbuffer1与charbuffer2中的特征文件合并生成模板,结果存于charbuffer1与charbuffer2中。指令包和应答包格式分别如表4.5和表4.6所示。表4.5指令包格式2bytes4bytes1byte2bytes1byte2bytes0 xef01模块地址0 xffffffff包标识01H包长度03H指令码05H校验和09H表4.6应答包格式2bytes4bytes1byte2bytes1byte2bytes0 xef01模块地址0 xffffffff包标识07H包长度03H确认码xxH校验和sum

34、确认码为00H表示生成模板成功。01H表示收包有误,0aH表示生成模板失败。4.8.4储存模板这一步的作用是将charbuffer1或charbuffer2中的模板文件存到PageID号flash数据库位置。指令包和应答包格式分别如表4.7和表4.8所示。表4.7指令包格式2bytes4bytes1byte2bytes1byte1byte2bytes2bytes模块地址包标识包长度指令码缓冲区号位置号校验和OxefOl0 xffffffff07H06H06HBufferIDPageIDsum4.8应答包格式2bytes4bytes1byte2bytes1byte2bytes模块地址包标识包长度

35、确认码校验和0 xef010 xffffffff07H03HxxHsum确认码为00H表示存储成功,01H表示收包有错,ObH表示PagelD超出指纹库围,18H表示写flash出错。4.8.5高速搜索在此环节当中,以CharBuffer1或CharBuffer2中的特征文件高速搜索整个或部分指纹库。若搜索到,则返回页码。这一环节是指纹识别的最后一个环节,也是最重要的一个环节。指令包和应答包的格式分别如表4.9和表4.10所示。表4.9指令包格式2bytes4bytes1byte2bytes1byte1byte2bytes2bytes2bytes模块地址包标包长度指令码缓冲区参数参数校验识号0

36、 xef010 xffffffff01H08H1bHBuferIDStartPagePageNumsum表4.10应答包格式2bytes4bytes1byte2bytes1byte2bytes2bytes2bytes模块地址包标识包长度确认码页码得分校验和0 xef010 xffffffff07H07HxxHPageIDMatchScoresum4.9补充说明本设计中指纹搜索程序中添加了低功耗定时功能,搜索时间超过预先设定的值之后进入中断,在该中断中又添加了提示未找到指纹图像的信息以及软件复位功能,实现自动指纹识别的作用。设计中还采用了AD功能实时监测芯片工作温度。实时时钟用于获得时间。蜂鸣器

37、以及LCD用来提示指纹录入以及搜索的情况。结论本设计主要是基于KinetisK60N512单片机的指纹识别系统设计,指纹模块选择的是城章科技的R305F指纹模块,得到如下结论:指纹识别的各个环节紧密相连,缺一不可;据识率与误识率是一对矛盾的指标,找到平衡点至关重要;K60N512可以出色的完成指纹识别的目的;指纹模块算法性能优良,实测算法性能可靠,识别率高。致设计是在老师的悉心指导下,经过三个月的努力完成的,在此感老师的指导。毕业设计是对大学四年里所学的知识的一次全面检验,本设计利用所学的专业知识,结合实际,完成对自己的一次综合测试。在设计的过程中得到了导师的认真指导和严格的要求,从而在此过程

38、中不但使所学的专业知识得到了巩固,更加重要的是从导师那学到了很多的实践经验以及对工作认真的态度。在此,我对培养和关心我的老师表示衷心的感。参考文献1晶指纹识别算法研究D.:工程大学,2007.石晶,王宜怀,勇等计算机科学J,2013,40(6):41-44.王超艺基于Cotex-M4核的Kinetis微控制器的应用研究D.:大学,2011.4城章科技.R30X系列指纹识别模块用户手册M.2012:1-44.FreescaleSemiconductorInc.CotexM0+/M4InterruptprincipleanddesignM.王宜怀,吴瑾,银珍嵌人式系统原理与实践M.:电子工业,20

39、13.附录A程序源码#includegpio.h#includemon.h#includeuart.h#includeili9320.h#includestdio.h#includegui.h#includew25qxx.h#includewdog.h#includelptmr.h#includertc.h#includeadc.h#defineLED1PEout(6)#defineLED2PEout(7)#defineLED3PEout(11)#defineLED4PEout(12)externGUI_BITMAPbmasdd;externGUI_BITMAPbmgrads;externGU

40、I_BITMAPbmorient;externGUI_BITMAPbmthin;externGUI_CONST_STORAGEunsignedcharacfinger;constGUI_BITMAP*pBitmap;constGUI_BITMAP*qBitmap;constGUI_BITMAP*rBitmap;constGUI_BITMAP*sBitmap;#ifndefGUI_FLASH#defineGUI_FLASH#endifexternGUI_FLASHconstGUI_FONTGUI_FontHZ_STXingKai_35;#defineIR_PORTHW_GPIOE#defineI

41、R_PIN(28)#defineIR_DATAPEin(IR_PIN)voidGPIO_ISR(uint32_tpinArray);staticuint8_tInfraredExec(uint8_t*code);uint32_tinstance;uint8_tt=0;uint8_tdat24=0;unsignedcharGR_Pack_Head6=0 xEF,0 x01,0 xFF,0 xFF,0 xFF,0 xFF;unsignedcharGR_GetImage6=0 x01,0 x00,0 x03,0 x01,0 x0,0 x05;unsignedcharGR_GenChar17=0 x0

42、1,0 x00,0 x04,0 x02,0 x01,0 x00,0 x08;unsignedcharGR_GenChar27=0 x01,0 x00,0 x04,0 x02,0 x02,0 x00,0 x09;unsignedcharGR_match6=0 x01,0 x00,0 x03,0 x03,0 x00,0 x07;unsignedcharGR_search11=0 x01,0 x0,0 x08,0 x04,0 x02,0 x0,0 x00,0 x00,0 x08,0 x00,0 x17;unsignedcharGR_upchar11=0 x01,0 x0,0 x04,0 x08,0

43、x01,0 x0,0 x0,0 x0,0 x13,0 x0,0 x21;unsignedcharGR_storechar9=0 x01,0 x0,0 x06,0 x06,0 x02,0 x0,0 x03,0 x00,0 x12unsignedcharGR_speedsearch11=0 x01,0 x00,0 x08,0 x1b,0 x02,0 x00,0 x00,0 x0,0 x10,0 x00,0 x36;unsignedcharGR_regmodel6=0 x01,0 x0,0 x03,0 x05,0 x0,0 x09;unsignedcharGR_valid6=0 x01,0 x0,0

44、 x03,0 x1d,0 x00,0 x21;charDispBuff132;charDispBuff232;staticvoidUART_RX_ISR(uint16_tbyteReceived)datt=byteReceived;t+;staticvoidLPTMR_ISR(void)GUI_Init();GUI_Clear();GUI_DispStringAt(Nosuchafingerprint!,5,20);.可修编-可修编-GUI_DispStringAt(pleaseenteragain!,5,35);DelayMs(3000);NVIC_SystemReset();voidFIN

45、GERPRINT_Cmd_Get_Img(void)unsignedchari;for(i=0;i6;i+)UART_WriteByte(instance,GR_Pack_Headi);for(i=0;i6;i+)UART_WriteByte(instance,GR_GetImagei);voidFINGERPRINT_Cmd_Gen_Char1(void)unsignedchari;for(i=0;i6;i+)UART_WriteByte(instance,GR_Pack_Headi);for(i=0;i7;i+)UART_WriteByte(instance,GR_GenChar1i);v

46、oidFINGERPRINT_Cmd_Gen_Char2(void)unsignedchari;for(i=0;i6;i+)UART_WriteByte(instance,GR_Pack_Headi);for(i=0;i7;i+)UART_WriteByte(instance,GR_GenChar2i);voidFINGERPRINT_Cmd_match(void)unsignedchari;for(i=0;i6;i+)UART_WriteByte(instance,GR_Pack_Headi);for(i=0;i6;i+)UART_WriteByte(instance,GR_matchi);voidFINGERPRINT_Cmd_search(void)unsignedchari;for(i=0;i6;i+)UART_WriteByte(instance,GR_Pack_Headi);for(i=0;i11;i+)UART_WriteByte(instance,GR_searchi);voidFINGERPRINT_Cmd_store()unsignedchari;for(i=0;i6;i+)UART_WriteByte(instance

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论