基于单片机的指纹密码锁设计与实现.docx
摘要随着这几年科技和互联网的快速发展,指纹识别技术也得到了突飞猛进,可以看到指纹识别技术以经在生活中使用很广了,而它未来的发展空间也是潜力无限,智能门锁,智能手机解锁绝大多数都是应用了指纹识别功能。指纹虽然只是手指顶部一小块看着不起眼的部位,但是它却能够识别到人的身份,而且指纹识别是当今最方便的能够快捷的识别人身份的技术。此系统是根据单片机来实现指纹识别开锁的一个功能设计。模块核心采用的是性能各方面都优越的STC89C5单片机,然后连接串口通信控制指纹模块,这样就可以让指纹模块能够录取指纹和存储指纹数据,最后连接继电器做成的直观锁,这个设计具有小巧,价格低廉等优势。关键词:单片机指纹识别液晶屏AbstractWiththerapiddevelopmentoftechnologyandtheInternetinrecentyears,fingerprintrecognitiontechnologyhasalsomaderapidprogress.Youcanseethatfingerprintrecognitiontechnologyhasbeenwidelyusedinlife,anditsfuturedevelopmentspaceisalsounlimited.Thevastmajorityofsmartphoneunlockshaveappliedfingerprintrecognition.Althoughthefingerprintisjustasmallpieceofthetopofthefingerlookingattheinconspicuouspart,itcanrecognizetheidentityoftheperson,andfingerprintrecognitionisthemostconvenienttechnologythatcanquicklyidentifytheidentityoftheperson.Thissystemisbasedonasingle-chipmicrocomputertoachieveafunctionaldesignoffingerprintidentificationunlocking.ThecoreofthemoduleusesSTC89C5singlechipmicrocomputerwithsuperiorperformanceinallaspects,andthenconnectstheserialcommunicationtocontrolthefingerprintmodule,sothatthefingerprintmodulecantakefingerprintsandstorefingerprintdata,andfinallyconnecttheintuitivelockmadebytherelay.Thisdesigniscompact,Lowpricesandotheradvantages.KeyWords:MCUfingerprintidentificationLCDscreen第1M述1Ll指纹识别技术的进展11.2 进行指纹识别的原理11.3 设计系统的目的和意义21.4 系统工作流程3第2章硬件介绍和设计42.1 单片机及最小系统42.1.1 STC89C52单片机的介绍42.1.2 系统外部晶振的设计72.1.3 复位电路的设计72.2 液晶屏幕显示模块82.2.1 控制器接口说明92.2.2 12864引脚与单片机连接图92.3 按键控制部分电路102.4 系统指纹模块122.4.1 指纹模块的简单介绍E2.4.2 指纹模块引脚接法132.4.3 指纹模块的命令3第3章系统软件的设计173.1 系统程序工作分析173.2 串口初始化173.3 主程序流程183.3.1 键盘管理程序设计流程193.3.2 液晶模块程序设计流程203.3.3 通信程序设计流程213.4 运用Keil编程程序21第4章调试及实验结果234.1 、指示灯跟继电器的调试234.2 按键和指纹模块的的调试234.3 指纹识别正确率测试24第5章总结与展望255.1 总结255.2 展望25参考文献26致谢28第1章概述1.1 指纹识别技术的进展在现实生活中所有的东西都有一个自身的特征,用这些东西可以当作自身的特征来识别。当然这对于我们人体来说也是同样适用的,比如一根头发通过比对DNA就可以知道这个人是谁,相对而言,识别一个人的身份最方便,直接的方法就是识别指纹了。指纹说的是手指顶端那一节的纹路线条,在胚胎发育的时候就已经开始形成了。指纹识别历史悠久。技术的突飞猛进,进而导致人们可以制造出指纹成像的工具,在现在科技高速发展的时代,指纹识别的使用也越来越普遍了,随着成像设备的快速发展,目前指纹识别生物技术的发展,O全世界已经建立了犯罪指纹机构的指纹识别数据库,指纹识别手指被正式认可为识别手指的有效方法据统计,在全世界70亿人口当中,还找不出任何两个指纹是相同的,这就说明了,它拥有这独一无二的特性,它的这个特性让全世界警察机关都在使用指纹鉴别技术来办案。指纹相当于一种人体印章,每当签合同的时候,就可以发现合同上要按压指纹,公安部门在破案的时候就会运用指纹识别技术去查出不法分子。由于人体缺乏重复性,人们将注意力转向了对生物技术的学习,希望利用这项技术来应对当前的挑战,这些特征必须是独特的。经过多年的众多研究表明,人的指纹,人脸,人的声音和眼睛等这些不仅是唯一可以识别人的特征,而且还是非常稳定的,正是因为人体拥有着这些特性,使得现在很多生物技术不仅发展成熟而且还得到了广泛的应用,例如:指纹识别、脸部识别、瞳孔和声音锁等。人们对生物技术锲而不舍的研究使得指纹识别技术得到了突飞猛进,虽然手指顶端的指纹看起来并不起眼,但是它却可以精准的识别出人的身份。现代科技的进步带动了指纹识别技术的快速发展,制造出来的指纹图像读取工具也越来越小,更加方便携带。再加上智能手机平板电脑的广泛应用,从而能够简单的比较两个指纹,此外,匹配算法的可靠性一直在增强,识别指纹的技术变得越来越常见。1.2 进行指纹识别的原理指纹般指的就是手指最顶一节的纹路,一个完美的指纹图像是由黑白的二进制构成的图像。然而,通常获得指纹的途径是通过按压手指取得的,因此,由于某些外部原因和手指本身的皮肤和状况等因素的影响,有时候获取到的指纹不是很符合要求。此外通过机器对手指进行数字化时,由于光照问题也会产生其他的物理影响。产生的这些影响使得灰度图像不可以直接用于配对。所以一定要选择指纹的特征来对它进行识别。正常情况下指纹的描述有2种特征:1、全局特征。顾名思义就是要对整个纹路结构进行描述,下图IT就是指纹的3种全局特征,假如把手伸开,仔细注意看的话,就可以看到指纹的纹路是不相同的,但总的来说一共归纳为3种,分别是:斗形纹就是观察起来像一根绳子绕圈圈的;箕形纹就是弯弯看起来很多个半圆形叠加的;一条一条排列像弓一样的纹路就是弓形纹;所有人的指纹不仅整体形状会有差异,其他的也会不相同。loopwhorlarch图IT指纹三种形状图2、局部特征,看局部这两个字就知道说的是指纹的一部分,要针对这一部分拥有象征性的特点展开刻画,通过类型、方向、曲率、质量等这些特点来进行重点刻画。经过以上分析所知类型其实就是当前对指纹分类的特征点,这些特征点有许多种类型,前面所讲到的所有的特征点在人的指纹中的存在也是不一样的,人体指纹特点出现最多的是短纹,它的出现率高达60%,第二个是分叉点百分之二十多的概率。基于局部纹理功能定义的许多详细功能,假如一起应用所有的这一些功能,则很难自动,快速地提取它们并将它们与其他特征区分开,自动指纹识别系统通常用到的是分叉点跟断点这两个主要功能进行识别,剩下的特性,可以将它们组合起来表示。1.3 设计系统的目的和意义随着时代的进步,人们迫切需要一个更加安全可靠的安防和身份识别系统,以前的一些个人密码这些太麻烦,万一哪天忘记了就相当与没有了,加上一些身份识别的东西跟人体不是形影不离的,这些东西会被不法分子伪造,被盗和破译,无法完全满足现代社会经济活动和社会需求的安防。相对而言,每个人的指纹都是特定的,又跟识别者本身不可分割,所以指纹识别的安全系数要比其他的传统方法高很多。截至今日,还没有发现任何的两个人具有相同的指纹,指纹识别技术不管是从哪个方面讲都将是我们未来生活最需要的东西,因此在未来的新时代我们的指纹使用次数将会大大的增加,我们的生活会因为指纹技术的发展而更加的方便和安全。5单片机技术的应用现在已经是非常的成熟了,仔细观察的话就会发现它已经被广泛的应用到了我们的生活之中,比如:运动手环,火灾报警器等,经过了大学四年的学习,特别是学习了跟单片机相关知识后,觉得非常有必要活学活用,把它从书本上应用到生活之中,所以本次设计了一个用单片机来控制指纹识别开锁的系统,但愿做出的作品能够应用在生活之中。1.4 系统工作流程1、系统开机:给它插上电源,这时候就可以看到指示灯亮起红色,屏幕也会因为通电点亮,液晶屏幕显示出:“请输入密码”字样,输入按键之后,液晶屏幕会显示出:“请按指纹”字样,然后接着就能看到识别的地方会有背景灯亮起,这时候就可以实行下一步动作进行开锁。如果系统识别到的指纹是正确的,接下来继电器就会开始动作,那么锁将会打开,进行指纹识别开锁的人就可以来到屋内,锁被顺利打开的时候屏幕就会有:“门己打开”的显示;如果识别的指纹不存在或者说存在但不成功,继电器则不会有任何动作,门锁不会打开,开锁者自然就没有办法进到屋内,同时屏幕显示出:“没有搜索到指纹请按任意键继续”的字样。2、管理者模式:输入键盘A键后进入操作模式,屏幕显示“请输入密码”,这时候按下设置好的初始密码,密码正确的话就进入到管理者模式,如果密码错误,则会显示“密码错误,请重新操作”。在管理者界面下能够实现增加多个开锁指纹、删掉用不到的指纹、手动开锁和修改进入操作页面的密码功能。输入“1”就可以添加系统的开锁指纹,液晶屏幕会显示出“请按手指”字样,将拇指端部按在指纹收集器上,多次按压录入,屏幕显示“指纹采集成功”并给采集到的指纹编号。按下数字“2”的删去指纹模式,液晶屏幕会显示出“请输入删去的指纹号”的字样,按下删除的指纹编号即可删除。在某些意外的情况下,假如遇到什么紧急状况,这时启用手动开锁功能,门锁也会顺利打开。最后修改密码功能可以对密码进行更改,保存后就可以进入主菜单页面的6位密码。整个系统的设计框图如图3所示图1-3系统总体框架图第2章硬件介绍和设计2.1 单片机及最小系统2.1.1 STC89C52单片机的介绍单片机其实可以当作嵌入式微控制器来使用,拿它跟普通的电脑微处理器来做对比的话,体积小方便携带就是它的优势,可以放置在仪器内部,但它的内存量少,输入输出接口简单,功能低。对于单片机而言现在简直就是个百鸟争鸣的时间段,现在有很多在这方面有技术的企业差不多都开发了单片机,使得单片机的种类甚多有。所有的这些都有独特的属性并相互补充,为单片机应用提供了更多的选择6。现在学习所用到的单片机几乎都是将中央处理器(CPU)、只读程序存储器(ROM)、随机存取数据存储(RAM)、并行和串行通信接口,定时电路、时钟电路、中断系统集成在单个芯片上,而有部分单个芯片上集成了LCD(液晶)驱动电路,这样一个单片机就拥有了更多的单元电路,它的功能随着单元电路的增多会更加强大。使用到的52单片机的性能如下:它的工作电压是3.3V5.5V,工作的时候频率一般为48MHz。它的通用输入输出端口有32个,当复位时:P1P2P3/P4要上拉准双向端口,PO端口作为漏极开路输出,可以进行总线扩展,可以不增加上拉电阻,一般使用I/O端口时,都是要增加上拉电阻。ISP/IAP,没有专用的编程器,没有专用的仿真器。它一共拥有计时器TO,Tl,T2,这三个类型的定时器或者计数器。STC89C52RC单片机的工作模式:工作模式功耗掉电模式掉功耗低于0.1UA空闲模式功耗为2mA正常工作模式功耗4mA7mA外部中断可以唤醒它的掉电模式,可以应用到如水表等设备中。下图2T本次采用的单片机引脚功能说明。13STC89C52VCC1Pl.0VCCPl.1P0.0Pl.2PO.1Pl.3P0.2PL4P0.3Pl.5P0.4PL6P0.5PL7P0.6REST/VPDP0.7P3.0/RXDFA/VPPP3.1/TXDALE/PR0GP3.2/TNTOPSENP3.3INT1P2.7P3.4T0P2.6P3.5T1P2.5P3.6/WRP2.4P3.7/RDP2.3XTAL2P2.2XTALlP2.1GNDP2.0402393384375366:正73483393210311130122913281427152616251724182319222021图2-1STC89C52引脚图VCC:连接电源电压VSS:接地P0:真正的双向口,输出锁存,输入缓冲,能驱动4个TTL负载。Pl:输入要先置1,无高阻态,能驱动4个TTL负载。P2口:I/O与Pl口一样,当有片外存储器时,作地址线使用。P3端口:每个位还可以用于第二个功能,第二功能的定义见表2-1。表2-1STC89C52P3口的第二功能P3功能P3.0RXD(串行输入)P3.1TXD(串行输入口)P3.2INT/0(外中断0)P3.3INT/1(外中断1)P3.4T0(定时/计数器0)P3.5T0(定时/计数器1)P3.6外部数据存储器写选通P3.7外部数据存储器读选通液晶显示器和通讯子程序两个主要部分组成了此设计的主程序。主程序的工作过程:第一步是对各种硬件功能模块进行初始化,开启液晶显示屏,键盘扫描,指纹模块建立通讯。2.1.2 系统外部晶振的设计晶体振荡器又被称为晶振,在整个单片机系统的运用里面它是不可或缺的,时钟频率可以由它和单片机的内部电路连结来产生,而且产生的时钟频率还会影响着单片机相关的所有指令的执行速度。在平时的工作环境中,部分晶振在一定范围内可以使用外部电压来调节。晶振跟晶体在一块工作的时候,这个工作的晶体能够把电能跟机械能转变成共振,可以提供稳定,精确的单频振荡。网系统所需要的基本时钟信号是由单片机的晶振来完成的,正常使用下,系统跟晶振是共用的。系统所需的时钟频率是由晶振跟锁相环电路一起匹配提供的。,通过连接到同一晶体的不同锁相环可以提供给不同的子系统分别对应着不同频率的时钟信号。本次设计选择11.0592MHZ的晶振作为系统的振荡源,STC89C52具备的高增益反相放大器可以构成振荡器,因此我们可以通过连接晶体、XTALl和XTAL2作为反馈元件,和Cl和C2组成并联谐振电路,这样就可以组合成一个自激振荡器,在此电路中采用的是值为30PF的电容,如图2-2外部晶振电路。Kjr>图2-2外部晶振电路我们选择了IL0592MHz的晶体振荡器,振荡周期约为his。机器周期差不多是0.1us,经过计算这个晶体能够满足本系统的要求,晶振跟单片机两者的问隔不能太大,不然的话容易无法接收信号。2.1.3 复位电路的设计单片机电路初始化到指定状态可以由置位和复位来完成。一般是在单片机的RST引脚上焊接一个电阻和一个电容来形成复位电路,想要电路实现复位,这时候就需要做到复位电平的持续间隔一定要大于单片机的两个机器周期°。复位电路是由上电和按键2个复位合成的1、上电复位:这次的系统设计中单片机是通过高电平来进行复位的,绝大多数都是接一个电容器在VCC和RST引脚之间,最后在GND脚接上一个电阻来完成。电容器的值基本都是IOUR电阻器采用的阻值是10K。2、按键复位:按键复位是通过复位电容器跟开关并联组成的。按下系统中的复位键时,复位电路中的电容器将会放电,由于电容器充电,RST也被拉至高电平,它将在一段时间内保持高电平,这样就可以复位单片机。在这个系统中使用的复位电路如图2-3所示.在电源开启的时刻,当这整个电路中如果RC电路有电流入,那么它就会充电,而这时候RST引脚处会有正脉冲。只须能够保证RST端持续有较高的电平大于两个周期,单片机就可以实现复位。在这里选用的电容器的值是IOUF,电阻选用IOK。图2-3复位电路2.2液晶屏幕显示模块液晶,全称是液态晶体,是一种相态,因其具备特殊的理化与光电特性,1950年左右开始液晶显示技术开始慢慢发展起来。LCD的主要原理是通过电流刺激液晶分子产生点、线和表面以简化描述,通常将不同的LCD屏幕直接称为LCD屏幕。该液晶尺寸小,功耗低,实际操作简单,它不好的地方就是工作温度的范围过小,才055摄氏度,储存温度是-20飞0摄氏度,因此在设计相应的液晶产品时,必须慎重考虑并选择合适的液晶2.2.112864系列液晶的引脚功能12864中有20个引脚。下表是引脚的具体说明。表2-2引脚功能定义序号符号引脚说明编号符号引脚说明1VSS接地端11D4DataI/O2VDD电源正,接+5V12D5DataI/O3VO对比度调整,一般接+5V13D6DataI/O4D/I片选也叫使能,接+5V14D7DataI/O5R/W数据输入端(H/L)15PSB串并模式选择6E时钟输入端16NC空引脚7DODataI/O17RST复位端,低电平有效8DlDataI/O18I'J:空引脚9D2DataI/O19A背光正极,接+5V10D3DataI/O20K背光负极,接地2.2.1控制器接口说明1、初步操作时序如下表:表2-3读写输入输出读状态输入:RS=L,RW=H,E=H输出:D(D7=状态字写指令输入:RS=L,RW=L,D0D7=指令码,E二高脉冲输出:D(TD7二数据读数据输入:RS=H,RW=H,E=H输出:无写数据输入:RS=H,RW=L,D0D7=数据,E二高脉冲输出:无2、状态字说明表2-4状态字说明STA7STA6STA5STA4STA3STA2STAlSTAOD7D6D5D4D3D2DlDOSTA06当前数据地址指针的数值STA7读写操作使能1:禁止0:允许一定要先执行读写检测,保证STA7为O以后,才可以对控制器进行读写操作。实质上,由于单片机的操作速度比液晶控制器的响应速度慢,因此不需要执行读/写检测或仅需很短的延迟。2.2.212864引脚与单片机连接图下图为12864与单片机的接口连接图。S182VSS.rrr3UUVOP2.34QQP2.45OPWP2.S6IxWE11P0.07PO.18111一二9Lzl¼7P0.310D3rP0.411P0.512P0.613P0.7141VD7pen1516XoJ17OCT18A19A20Krm?图2-412864引脚与单片机连接图一开始就要初始化用户编辑的显示程序,经过初始化后模块就可以正常使用了。在指令没有发送给模块以前,单片机的模块内部必须是在非忙碌情况下,最后按照接收到的指令在屏幕上放出有关的内容。1 .在这里需要知道RS写入的是命令还是数据。2 .读/写控制端子设置为写模式。3 .把数据或命令发送到数据线。4 .给E一个高脉冲,它就会把数据发送到LCD控制器然后接着完成写操作。2.3按键控制部分电路如果按钮未关闭,则电压将显示高电平或低电平。高电平和低电平指示不能同时打开,一个打开的情况下另一个会关闭。有没有被按下可以用检测电平的高低状态来确保。电路中必须添加去除电平抖动的方法,图2-5就是按键抖动的示意图,可以用软件或硬件来消抖,硬件一般通过使用双稳态电路或滤波器去抖动电路来移除。平时执行延迟程序的时候都是用软件去抖动,这样就可以确保第一次按下某个键时是否仍然是关闭状态,如果一直是关闭状态的话,第一步要确保已按下该键以消除抖动和干扰的影响。设计键界面的方法有独立键和矩阵键盘两种。独立按钮的每个按钮都是单独的,而且每个按钮一定要连接到输入线。输入线的电平一旦被检测到,就可以清楚知道按钮状态。此方法具备灵活的电路配置和简单的软件结构,但是具体计算后发现这个办法I/O消耗大,所以此方法绝大多数用于按键少或其他控制作用很简单的地方。由于此设计中有许多键,因此由于系统的可靠性和键盘设计的简单性而采用矩阵键。本次系统的按钮电路如图2-6所述,按下按钮的程度很低,我们使用软件去抖来减少对微控制器的影响。图2-5按键闭合及断开前后的电压检测矩阵键盘的办法有非常多种,一般最主要的几种的是:逐点扫描法,逐行扫描法,全局扫描法。在这个设计中检测采用的时逐行扫描法,PL4-P1.7是当作列线,Pl.O-Pl.当作行线来工作的。工作步骤如下:1 .如何知道有没有在键盘上按下了任意按键,这时候将所有的行线设置为输出端口后持续输出低电平;最后把其中的所有列线作为输入端口,这时候如果读取到有任何一行列线是低电平状态,就表明其中有按钮被按下了。2 .确认按钮的位置。在知道有任何一个按键被按下之后(执行按键去抖动处理之后),下一步是通过依次将每一行设置为输出低电平(其余行输出高电平)来确定按下了哪个按键,然后逐列检查每个列的级别情况。假如其中有某列是低电平的话,按行线和列线输出都是低电平的那个交叉键。3 .当知道所有的键位置之后,里面所有的键都会进行编号,即该键被编码。程序设计中通常使用计算方法和查表方法对密钥进行编码。本示例使用计算法编码。图2-6按键电路2.4系统指纹模块2.4.1指纹模块的简单介绍在本次系统设计中使用的是型号为ZFM60的指纹模块,指纹模块电路示意图如下:图2-7指纹模块接口图系统采用的指纹模块中拥有DSP芯片,还拥有着对外部指纹进行指纹特征采集的CMOS芯片,下图所示是指纹模板,指纹采集详细的步骤是:先对采集的指纹进行拍照扫描,根据识别到的指纹特征合成模板,最后的一步就是指纹输入成功了。图2-8指纹模版指纹模板是用来对按压的指纹进行“拍照”,每一次在指纹模块中按压输入指纹信息的时候,CMOS芯片都会执行简单处理,并且接着会输出0和1两种记录的具体信息,最后这些信息会被存储FLASH芯片里。当模块处于识别模式,指纹模块的第一要务就是让CMOS芯片收集正在识别的指纹,最后把收集到的指纹信息跟储存在FLASH芯片中的信息作对比。看看是否存在,如果存在,它将返回指纹号。这样,我们可以通过单芯片计算机或计算机执行指纹识别和注册。具体的指纹模块介绍如下:该指纹模块的型号为:ZFM60,其中包含:1 .光学头2,通信线3,DSP芯片4,稳压芯片5,FLASH芯片6,CMSO传感器等组件。2.4 .2指纹模块引脚接法指纹模块引脚功能:如表2-4所示:表2-5指纹识别模块引脚功能引脚序号名称类型功能描述1Vin输入模块电源正输入端2TD输出串行数据输出。TTL逻辑电平3Rl)输入串行数据输入。TTL逻辑电平4GND信号地:内部与电源地连接2.5 .3指纹模块的命令本系统的设计中,可以通过单片机的串口给指纹模块发送跟接收命令来执行,首先给模块发送信息,等待模块返回给需要单片机进行处理的数据,以此来确认命令有没有被执行。最常见的有下面这几条命令:1、判断模块有没有连接,可以通过启动的时候执行模块握手。其中的命令如下所示:验证口令:指令包格式:2bytes4bytes1byte2bytes1byte4bytes2bytes包头模块地址包标识包长度指令码校验和OxEFOlXxxxOlH071113HPasswor(1SUM应答包格式:2bytes4bytes1byte2bytes1byte2bytes包头模块地址包标识包长度确认码校验和OxEFOlXxxx07H03HxxHSUM需要注意的是:口令对的时候确认码是OOH:收包错误时的确认码为01H;口令错误的时候确认码是13H。2、指纹模板的产生一般要输入图像、接着识别其生成特征、然后合成指纹模板最后的一步是存储指纹模板。录入指纹时用的指令:指令包格式:2bytes4bytes1byte2bytes1byte2bytes包头模块地址包标识包长度指令码校验和OxEFOlXXXXOlH03HOlHSUM应答包格式:2bytes4bytes1byte2bytes1byte2bytes包头模块地址包标识包长度确认码校验和OxEFOlXxX&07H03HxxHSUM当确认码是OOH的时候, 当确认码是OIH的时候, 当确认码是02H的时候, 当确认码是03H的时候, 图像生成特征Img2Tz指令:需要注意的是:说明这时候已经成功的录入了指纹图像;那就说明收包不对;那就说明传感器上并没有手指;那就说明录入的图像已经失败了。指令包格式:2bytes4bytes1byte2bytes1byte1byte2bytes包头模块地址:包标识包长度指令码缓冲区号校验和OxEFOlXxxxOlH04H02HBufferIDSUM应答包格式:2bytes4bytes1byte2bytes1byte2bytes包头模块地址包标识包长度确认码校验和OxEFOlXxxX07H03HxxHSUM需要注意的是:生成完好图像特征时确认码是OOH;收包错误的时候确认码是01H;指纹图像不清晰没有办法生成特征的时候确认码是06H;指纹图像没有问题,特征点不是很多的时候确认码是07H。完成特征模板RegModel指令:功能:特征模板需要用到CharbUfferl和2中的特定文件。指令包格式:2bytes4bytes1byte2bytes1byte2bytes包头模块地址包标识包长度指令码校验和OxEFOlXxxxOlH03H05HSUM应答包格式:2bytes4bytes1byte2bytes1byte2bytes包头模块地址包标识包长度确认码校验和OxEFOlXXXX07H03HxxHSUM需要注意的是:模板合成的确认码是OoH;收包不对时的确认码是OIH;两个指纹合成错误的时候确认码是OaH。指纹存储模板Store指令:指令包格式:2bytes4bytesIbyte2bytes1byte1byte2bytes2byteS包头模块地址标包识包长度指令码缓冲区号位置号验校和OxEFOlXXXXOlH06H06HBufferIDPageIDSUM应答包格式:2bytes4bytes1byte2bytes1byte2bytes包头模块地址包标识包长度确认码校验和OxEFOlXxxX07H0311xxHSUM需要注意的是:储存成功的确认码是00H;收包错误的时候确认码是01H。完成这四个过程和命令,我们已经输入了指纹,重复以上步骤,我们可以输入其他指纹。3.首先将指纹识别切换到识别模式,然后连续检测光学收集头上是否出现指纹。如果有,请扫描指纹并将其与库中的指纹进行比较。如果是,请读出指纹数。模块将自动检测是否有指纹,假如有的话,就会发送下面的命令:搜索指纹Search指令:指令包格式:2byteS4bytesIbyte2byteSIbyteIbyte2bytes2bytes2byteS包头模块地址包标识长包度令指码缓冲区号参数参数验校和OxEFO1XxxxOlH08H04HIDStarPagePageNumSUM应答包格式,2byteS4bytesIbyte2bytesIbyte2bytes2bytes2bytes包头模块地LL包标识包长度确认码页码得分校验和OxEFO1Xxxx07H07HxxHSUM需要注意的是:找到指纹时的确认码是OOH;寻找不到的时候确认码是09H;如果找到,它将返回相应的指纹号,否则,将返回0。第3章系统软件的设计3.1 系统程序工作分析在这一整个系统里,系统中的单片机是当作控制器来使用的。指纹识别模块和12864LCD、按键程序的开发是我们开发整个应用程序中重要的两个点。开发这个程序最重要的一点是建立一系列供主程序任意时候调用的C语言函数子程序。我们用到的是Keil编程软件进行编写程序所需要的代码,该软件可以简单的做到对程序的编写和测试,代码文件是否成功,成功的代码文件运用开发软件烧写到单片机里,给单片机接上电源后,里面的主程序就会实施初始化。根据电路的功能要求,如果按下了相应的按键,这时候的主程序最重要的一点是对LCD进行初始化并且要同时检测按键10。指纹识别模块和12864LCD按键程序的开发是我们开发整个应用程序重要的两个点3.2 串口初始化由于使用串行端口与模块进行通信,因此必须限定好单片机和模块的串行工作速度和数据包格式。SCoN是一个用来设置串行端口工作模式,接收发送控制的特殊功能寄存器。表3-1SCON寄存器地址位位76543210字节地址:98HSMOSMlSM2SM3SM4SMSSM6SM7SCONSMO和SMl是用来提供四种选择功能模式的:表3-2串行口工作方式SMOSMl方式说明波特率000移位寄存器fosc1201110位异步收发曙(8位数据)可变10211位异步收发器(9位数据)fosc64flRfosc3211311位异步收发器(9位数据)可变PCON里面只有一个SMOD与串口工作有关:表3-3PCON寄存器位76543210字节地址:97HSMODPCONSMOD(PCON.7)波特率倍增器。在串口模式13中,波特率跟SMoD有关。当SMOD=1时,波特率加倍。复位时,SMOD=Oo为了能够让指纹模块跟单片机实现通信,两者的波特率一定要是相同的,因为指纹模块的波特率是固定的9600bps,所以此时需要在编程时将单片机的波特率设置为9600bps。在使用串行端口之前,首要任务就是把它初始化,至关重要的一项工作是把定时器更改为1,波特率产生,串口控制和中断控制:详细工作流程如下:L先清楚的知道Tl的工作方法;2 .算出Tl的初始值,然后把它加载到THl和TLL3 .启动Tl;4 .确认串口控制;5 .串口在中断模式的话,要进行中断设置。下面是串口初始化程序:SC0N=0x50;/UART方式1:8位UART:REN=I:允许接收PCON=OxOO:/SMOD=O:波特率不加倍TMOD=0x21;/“1方式2.用于UART波特率,TO方式1THl=OxFD;TLl=OxFD:/UART设置波特率:96006 .3主程序流程根据框架,我做出了下图的整个程序的操作流程图。程序的检查过程:一开始先初始化所有的模块,检测有没有被按下的按键,如果有,就先去判断哪个键被按下了,然后判断是否调用相应的子程序。主程序主要由LCD显示屏,按键程序和通讯子按键程序三部分组成。整个程序的工作步骤是,一开始先把所有的硬件功能初始化,其中有液晶,键盘扫描,指纹建立通讯模块。开始图3-1主程序流程图3.3.1键盘管理程序设计流程键盘模块的工作流程图如图3-2所示:图3-2键盘程序流程图3. 3.2液晶模块程序设计流程显示模块顾名思义就是起到显示作用的,可以把接收到的相关内容显示出来。开始图3-3显示流程图3 .3.3通信程序设计流程下面的图片是串口通信发送数据和接收的工作图,如图3-4。图3-4串口通信数据发送、接收流程图4 .4运用Keil编程程序做好前期的准备工作之后,开始进行程序的编写。首先应建立一系列的C语言子程序供主程序进行调用。此次设计是用Keil软件对单片机进行编程。KeiI可以编译C源代码和汇编源代码,拥有高效易于理解的汇编代码,生成的大多数语句都是非常高效的生成代码。移动目标文件跟库文件可以被KeiI软件连接使用,并且还可以创建HEX文件跟调试目标程序。Keil软件的具体使用方法:1、首先打开本次的编写软件,进行一个新的工程创建,可以把它命名为“Fingerprint",接着选择本次系统设计用到的单片机。2、再打开