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

下载本文档

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

文档简介

1、任务书指纹识别功能简述:1)根据所学的知识和能力,设计程序可以实现根据指纹的大小、形状等特征,识别出不同的指纹。2)利用按键标志当前指纹识别的状态,例如录入状态,识别状态清楚状态 ;利用液晶 1602能够显示当前指纹识别的状态信息。3)利用继电器,对当前信息的判断,例如提醒当前指纹识别错误利用蜂鸣器和 LED 等提醒当前指纹识别是否正确精选目录第一章 绪论11、指纹识别中的基本概念1.2 指纹识别的发展前景1.3、指纹识别课题设计的内容与意义第二章 方案选择2.1 系统原理图设计2.2 方案说明2.3 方案比较2.4 方案选择第三章 硬件设计3. 1 AT89C52单片机设计3.2电源电路设计

2、3.3按键控制部分电路3.4LED 指示灯电路3.5蜂鸣器电路3.6指纹传感器模块第四章 软件程序设计4.1 程序流程图4.2 程序 第五章 调试5.1 硬件调试5.2 软件调试随着时代的发展, 社会越来越需要高效、 可靠的身份识别系统传统的 个人身份鉴别手段如钥匙、口令、密码、身份证件,甚至 IC 卡等识 别方式,由于它们具有可假冒、可伪造、可盗用、可破译的弱点,已 不能完全满足现代社会经济活动和社会安全防范的需要。 随着识别技 术的不断成熟和计算机技术的飞速发展, 各种基于人体生理特征的身 份识别系统如:指纹、手掌、声音、视网膜、瞳孔和面纹等识别技术 纷纷从实验室中走出来。目前,从实用的角

3、度看,指纹识别技术是优 于其它生物识别技术的身份鉴别方法。 本次设计我们利用指纹识别传 感器进行指纹采集与识别 , 在单片机中对指纹进行处理 , 用按键标志 当前指纹识别的状态, 录入状态,识别状态,清除状态,用液晶 1602能够显示当前指纹识别的状态信息 ;用继电器对当前信息进行判断,例如提醒当前指纹识别错误 ;利用蜂鸣器和 LED 等提醒当前指纹识别是 否正确关键词:指纹识别;单片机;指纹识别传感器 ;液晶 1602;继电器第一章 绪论进入 21 世纪后,由于国际反恐、 互联网应用等因素的推动, 在全球范围内, 指纹识别技术得到了更加广泛的应用, 指纹识别市场进入高速发展阶段。 利用人 的

4、生理特征,例如像指纹等来识别个人的身份,将成为今后几年 IT 产业的重要 革新。指纹在所有的生物特征中,相对稳定、不随年龄而变化和采集较为便捷, 同时它的研究历史最长、 相对更为成熟。与现有的智能卡、 身份证号码和密码的 身份识别系统相比, 指纹识别的性价比最高, 也更适于应用到大众生活中。 因此 指纹识别以其革命性的便捷和安全性成为一个理想的卓越的解决方案。11、指纹识别中的基本概念指纹识别是成熟的生物识别 (Biometric) 技术,由于人体的身体特征具有不可复 制的特点, 人们把目光转向了生物识别技术, 希望可以籍此技术来应付现行系统 安全所面临的的挑战。 要把人体的特证用于身份识别,

5、 这些特征必须具有唯一性 和稳定性。研究和经验表明,人的指纹、掌纹、面孔、发音、虹膜、视网膜、骨 架等都具有唯一性和稳定性的特征, 即每个人的这些特征都与别人不同、 且终生 不变,因此就可以据此识别出人的身份。基于这些特征,人们发展了指纹识别、 面部识别、发音识别等多种生物识别技术, 目前许多技术都已经成熟并得以应用, 其中的指纹识别技术更是生物识别技术的热点。1.2 指纹识别的发展前景指纹行业是一个新兴的行业, 本身具有很高的科技含量, 相对利润高发展前景广 阔。经专家预计,指纹产品将是未来 IT 产业新的增长点:利润率最高、发展潜 力最大。于是, 世界顶尖的指纹识别技术得到了全球范围内的高

6、度重视, 指纹识 别技术的应用如火如荼地迅速发展起来。 目前,国内已经有不少企业在参与指纹 识别技术的开发和应用。 指纹技术在现代生活和工作中的应用已越来越普遍, 例 如:指纹考勤、指纹社保、指纹银行、指纹商场、指纹接送幼儿等等生活和工作 的新现象已广为人知,指纹技术正在日益刷新着我们的现代化生活方式。1.3、指纹识别课题设计的内容与意义 指纹识别技术相对于其他识别方法有许多独到之处,具有很高的实用性和可行 性。因此,指纹识别成为最流行、最方便、最可靠的身份认证方式,己经在社会 生活的诸多方面得到广泛应用。 这是由于指纹是独一无二的, 两人之间不存在着 相同的指纹, 指纹是独一无二的, 两人之

7、间不存在着相同的指纹, 同时指纹样本 易于采集,难以伪造,便于开发,实用性强,可以利用多个指纹构成多重口令, 提高系统的安全性。本文主要通过对MCS-51系列单片机的结构和功能进行分析,来研究基于单片机 指纹识别系统的内部结构特点和功能阐述以及工作原理, 更好的了解了指纹识别 系统的未来前景。第二章 方案选择2.1 系统原理图设计ClT卜=PF1 TikT亡空医PHTPIMIMPIdA 10?MDtn 4、a-4piQp n曲26P1_O1JPi_4 屮占Pl JOXIPtF*l M-E tA1讯 aK卩10 L 117HIMill1.11LCD J|H1H-n -p- pjitindifw.

8、T -ii u u i-i -Q kJ i i IIKJ Dz p? arft”Ft 书ME p? ?rpj 吒勺nP2 Jrt-lS心PigP3 miHHP3 ZiIhilR斗PFU.4i1FE呃叵2liOi33DgcinM34K71盃3Q?1 卜PdizimmPD VAD1H 2/AUPD 3JQM PC呦M PD few Pfl 50I叮_ - TLyj uLea tiTE T亦It鼬麻J=L#RL1 HLf-SrCC2.2方案说明2.1.1方案一:摄像头采集、飞思卡尔单片机处理这种方案由指纹图像采集、指纹图像预处理、指纹特征提取、指纹特征匹配、特 征数据库等几部分组成。指纹识别系统的原

9、理框图如图1所示。图2-1、指纹识别系统框图该系统首先由数字摄像头OV6620采集指纹,并将指纹图像转化为数字图像; 然后用16位的飞思卡尔X128单片机对指纹数字图像进行预处理,再通过图像增 强、分割、平滑、细化等处理过程得到便于指纹特征提取的数字图像:接着提取 细化后的图像细节特征点;然后将指纹信息数据送入STC89C52单片机中,一块 液晶1602与STC89C52单片机相连,液晶用于显示当前指纹采集系统的工作状 态和经对比后指纹采集的信息是否正确,用一个蜂鸣器和LED指示灯指示当前采集的指纹信息正确。当采集到的指纹信息正确,蜂鸣器发出响声并且LED指示灯点亮。2.1.2方案二 指纹识别

10、传感器代替第一种方案中的摄像头和飞思卡尔单片机, 我们利用一个指纹识别传感 器来对指纹进行采集,识别以及部分处理,然后将信息输送到AT89C52单片机中,利用按键控制当前指纹识别的状态,用 LED灯进行显示,即录入状态,识别状 态,清除状态;利用液晶1602能够显示当前指纹识别的状态信息,即录入指纹的编 号以及当前指纹;利用继电器,对当前信息的判断,例如提醒当前指纹识别错误; 利用蜂鸣器提醒当前指纹识别是否正确,如果指纹录入正确,蜂鸣器发出响声。2.3方案比较1)复杂性:方案一采取用数字摄像头 OV6620采集指纹图像,然后用16位 的飞思卡尔X128单片机进行图像处理,还要进行图像增强、分割

11、、平滑、细化 等处理过程才能得到便于指纹特征提取的数字图像;而这些过程在方案二中只用 一个指纹传感器模块就可以代替,所以方案二设计简单。2)准确性:方案一中所采集的摄像头分辨率有限,所以采集的指纹信息有一定的误差,方案二中指纹传感器模块是利用集成的光学头进行处理的,比较精确。3)局限性:由于方案一中使用的飞思卡尔单片机处理程序比较复杂,超出 了我们的学习范围,而方案二传感器就使程序简单化了。2.4方案选择鉴于各种原因,我们最终选择第二种方案,使用指纹传感器模块来设计系统。第三章硬件设计3. 1 AT89C52单片机设计3.1.1 主要性能有12k字节Flash闪速存储器,1024字节内部RAM

12、 32个I/O 口线,两个16位 定时/计数器,5个中断向量,一个全双工串行通信口,片内振荡器及时钟电路。3.1.2引脚结构图(如图3-1)19以TAL1XTAL2P 0.0/AD0P 0.1/AD1P 0.2/AD2P 0.3/AD3P 0.4/AD4P 0.5/AD5P 0.6/AD6RSTP 0.7/AD7PSENP 2.0/A8P 2.1/A9P 2.2/A10P 2.3/A11ALEP 2.4/A12EAP 2.5/A13P1.0/T2P 2.6/A14P 2.7/A15P 3.0/RXDP 1.1/T2EXP 3.1/TXDP 1.2P 3.2/INT0P 1.3P 3.3/INT

13、厂P 1.4P 3.4/T0P 1.5P3.5/T1P 1.6P3.6/WRP 1.7P 3.7/RD39189AT89C521T2込7829 03U1图3-1AT89C52管脚图3.1.3 些端口的介绍:P30 口: RXD(串行输入口)P31 口: TXD(串行输出口)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2振荡器反相放大器的输出端。3.1.4单片机最小系统1)外部晶振的设计C122pFX112MSTC89C52的内部有一个用于构成振荡器的高增益反相放大器,通过 XTAL1 ATAL2外部接上一片作为反馈元件的晶体,与 C1和C2构成了并联谐振电路,使 其构成自激

14、振荡器,电容的值具有微调的作用,我们取 30PF,具体的接法如图 3-2外部晶振电路。C2HF22pF图3-2外部晶振电路STC89C52的工作频率范围在0-24MH乙 我们选用的是11.0592MHZ的晶振, 振荡周期约为1us机器周期约为0.1us,所以这个晶振可以满足这个系统的要求。 并且晶振不能离单片机太远,不然使用外部晶振进行软件调试时就会发现找不到 信号。2)复位电路的设计MCS51单片机通常采用上电自动复位和按钮复位两种方式,本系统采用简单 的自动复位电路如图2-2所示。单片机在上电瞬间,RC电路充电,RST引脚端出 现正脉冲,只要RST端保持两个机器周期以上的高电平,就能使单片

15、机有效复位。 其中电容选10uF、电容选10K。22 pFVOHC310ufR110K图3-3复位电路3.2电源电路设计本系统采用的5V电源主要采用两种方法,第一是直接用 9V电池然后通过一 个变压电路,利用7805将转化成5V供单片机和液晶显示部分使用;其二是用 220V通过变压器等将其转化成5V。两种方法都可以,但是由于第一种方法便于携带、而且成本相对较低所以我们选 用第一种方案。图3-4电源电路3.3按键控制部分电路1)消除抖动按键的闭合与否反应在电压上就是呈现出高电平或低电平,如果高电平表示 断开,那么低电平则表示闭合,通过电平的高低状态的检测可确认键按下与否。 为了确保CPU对一次按

16、键动作只确认一次,并且防止干扰信号的影响,必需加入 消除电平抖动的措施,下图3-5为按键抖动示意图:图3-5按键闭合及断开前后的电压消除抖动通常有硬、软硬两种方法,硬件消除抖动可采取双稳态电路或滤波消抖 电路;软件消抖是在第一次检测到有键按下时,执行一段延时程序再确认该键是 否仍闭合,如果还是闭合状态则确认该键按下, 从而消除抖动和干扰影响。当按 键较多时,我们多采用硬件件消抖法。本系统中按键少直接采用直接接入的方式。2)按键接口设计按键接口设计有两种方法,独立式按键和矩阵式键盘。独立式按键各键相独 立,每个按键各接入一根输入线,只要检测输入线的电平就可以识别按键状态。这种方法电路配置灵活,软

17、件结构简单,但每个按键需占用一根输入口。由于该设计方案10资源浪费大。故此方法只适用于按键少或其他控制功能很简单的场 合。由于本设计中的按键只有3个,考虑系统可靠性和键盘设计的简单所以采用 独立式按键。本系统的按键电路如图 3-6所示:P3?P33K4图3-6独立按键电路按键按下是呈低电平,我们采用软件消抖来减少对的单片机影响。3.4 LED指示灯电路redgreen图3-7 LED灯指示电路当k2键按下时,录入模式指示灯red亮;当k1键按下时,识别模式指示灯green 亮。3.5蜂鸣器电路V(f图3-8蜂鸣器电路3.6指纹传感器模块1)指纹模块电路如下所示:P zwVCC TXD RXD

18、GNDvccP3Q疋图3-9指纹识别模块指纹模块里面主要是 DSP芯片,型号为PS1802加上外面的CMOS5片,CMOS 芯片主要是对指纹进行“照相”,生成指纹特征,如图3-8所示就是一个指纹模 板,录入两次这样的指纹特征就能生成一个指纹模板。-r =具体的工作过程是:扫描指纹(录入图像)、生成特征、合成模板(建立一个指 纹库文件,成功录入一个指纹)。图3-10指纹模板指纹模板就是“照一次相”,指纹模块里面的CMO芯片采集一次指纹信息,然后 进行模糊处理生成0和1两种记录信息,存入指纹模块的FLASH芯片里面。当切换到识别模式的时候,指纹模块就会先让CMOS5片采集一次指纹,然后和FLASH

19、片的数据进行对比。看是不是存在,如果存在就能返回是几号指纹。这 样我们就能通过单片机或者电脑进行指纹识别与登记了。2)指纹传感器模块实物图n疋:指纹模块型号是:FM-180,此模块上里面包含了 :1、光学头2、通信连接线3、DSP片(在模块里面)4、稳压芯片5、FLASH片6、CMS传感器(在模块里面)等部件组成。1、光学头2、通信连接线3、DSP芯片模块从:到右;4、稳压芯片黑色:GNDb nilsajjxD珂甘-VCC5、FLASH 芯片6、CMOS传感器图3-11指纹传感器模块实物图第四章软件程序设计该设计主要通过设定的 别模式和录入指纹模式)3个按键来实现一定的功能,3个按键分别为模式

20、切换(识 、指纹录入、删除所有指纹。4. 1程序流程图4.1.1程序主流程图(1)指纹录入:先进行录入模式,然后按一下录入指纹,灯会闪烁,录入成功 一次,蜂鸣器响一次,这时候拿开手指,1秒放入同一个手指,会再录入一次, 如果两次都成功,就成功录入了一个指纹。蜂鸣器会响两次,同时显示录入指纹 成功。如果不成功就会显示录入失败。录入完成后,可以进入识别模式,或者接 着录入下一个指纹。录入完成,按一次指纹转换,进入指纹识别开锁模式。单片机主程序流程设计:单片机的主程序遵程图#4.2系统关键代码引脚使用:sbit relay =P 1八4; / sbit buzzer=卩1八5; / sbit red

21、= P27;/ sbit gree n= P 2八0;/sbit k2=P3A4; /sbit k1= P3A3; /sbit k3=P 3八2; /继电器引脚蜂鸣器引脚录入模式指示灯在板子靠近单片机处 识别模式指示灯在板子远离单片机处录入一次指纹模式识别转换清除所有指纹(10个指纹清除)部分主函数代码void mai n(void)/un sig ned char i=0;主函数ET0=1;/ 定时器0开中断TL0=0x97; /17ms 的初值 TH0=0xBD;delay1ms(5); LcdRw=0; / delay1ms(5); LCD_I nitial();/ delay1ms(5

22、);GotoXY(0,0);/x,y只对液晶进行写操作,不进行读操作液晶初始化Print(Identify);/ 串口初始化 SCON=0x50; PCON=0x00;TMOD=0x21;TH1=0xFD;/UART 方式1:8位UART; REN=1:允许接收/SMOD=0: 波特率不加倍/T1方式2,用于UART波特率TL1=0xFD; /UART TR1=1;TR0=1;/波特率设置 :9600开定时器IT0=0;/IT1=1;/EX0=1;/ 开中断 0EX1=1;/ 开中断 1 EA=1;中断 0 低电平中断中断 1 低电平中断mode();/ 看当前是什么模式for(i=0;i6;

23、i+)/ 开始握手 6 次,如果没有一次成功,表示模块通信不正 常。只要成功就跳出此循环 if(VefPSW()/ 与模块握手通过,绿灯亮起。进入识别模式green=0; / 读一次buzzer=0;shownum(0); delay1ms(300); buzzer=1;break;elsered=1; green=1; break;while(1)if(k2=0)/ 录入一个指纹delay1ms(10);if(k2=0)/ 如果仍为低电平,表示按键有效 while(k2=0);/ 等待松手 if(VefPSW()=1&modeflag=1&SaveNumber10)/ 与 模块握手通过if(

24、enroll()=1)/采集两次,生成 1个指纹模板成功if(savefingure(SaveNumber+1)=1)/保存也成功SaveNumber+;/ 加一次 shownum(SaveNumber); else buzzer=0; for(i=0;i=1&searchnum=162)/ 最多是 162 个指纹 shownum(searchnum);/ 蜂鸣器响一声relay=0;buzzer=0; delay1ms(100);buzzer=1;for(i=0;i20;i+) delay1ms(150);为识别模式 relay=1;if(searchnum=255)/ 不正确的指纹 蜂鸣器

25、响三声 shownum(0);buzzer=0;delay1ms(100); buzzer=1;delay1ms(100); buzzer=0;delay1ms(100); buzzer=1;delay1ms(100); buzzer=0;delay1ms(100); buzzer=1;delay1ms(100);if(clearallflag=1)clearallflag=0;Clear_All();red=0; / 红色灯亮green=1;/ 蜂鸣器长响一次,表示清除所有指纹结束 modeflag=1;/ 进入录入指纹模式 GotoXY(0,0);/x,y Print(Input); sh

26、ownum(0); buzzer=0;delay1ms(800); buzzer=1;SaveNumber=0; if(changeflag=1) mode();/ 显示当前模式 changeflag=0;结束/while(1)中断 0,清除所有指纹void int0(void) interrupt 0/if(k3=0) / 清除所有指纹delay1ms(10);if(k3=0)/ 如果仍为低电平,表示按键有效 while(k3=0);/ 等待松手 clearallflag=1;changeflag=1;定时器 0 中断函数中断 1,模式转换void Timer0(void) interrup

27、t 1/TL0=0x97;TH0=0xBD;clk0+; / 延时 17msvoid int1(void) interrupt 2/if(k1=0)/ 模式转换 其中用 modeflag 来标志 , 默认从第 1 个指纹开始录 delay1ms(10);if(k1=0)/ 如果仍为低电平,表示按键有效 while(k1=0);/ 等待松手modeflag=modeflag;/0 表示录入指纹 1 表示识别指纹 changeflag=1;/ 模式发生了转换第五章 调试完成了硬件的设计、 制作和软件编程之后, 要使系统能够按设计正常运行, 必须 进行硬件调试和软件调试。5.1 硬件调试 硬件调试的

28、主要任务是排除硬件故障,其中包括设计错误和工艺性故障。(1) 在电路的电源焊接一个电源指示灯,判断电路中通电是否正常。(2) 将电路中的电源线布置在通用板的四周,这样使用电源很方便,减少干扰, 同时可以减少短路故障发生的可能。(3) 元器件合理布局,且尽量减少占用板子的面积,力争做到节俭。特别是单 片机的晶振尽量靠近单片机,减少干扰。(4) 液晶的焊接注意方向,且调节背光的电位器不可以少。5.2 软件调试软件调试的任务是利用开发工具进行在线仿真调试, 发现和纠正程序错误, 同时 也能发现硬件故障。程序的调试应一个模块一个模块地进行, 首先单独调试各功能子程序, 检验程序 是否能够实现预期的功能

29、, 接口电路的控制是否正常等; 最后逐步将各子程序连 接起来总调。 联调需要注意的是, 各程序模块间能否正确传递参数, 特别要注意 各子程序的现场保护与恢复。本设计主要有:指纹识别传感器图像采集模块单片机图像处理 按键模块和指示灯模块 指纹液晶显示和蜂鸣器、继电器模块不断地对单片机下程序,观看调试结果。参考文献1 河桥,段清明, 邱春玲.单片机原理及应用 . 北京:中国铁道出版社, 2007.122 冯星奎, 李林艳,颜祖泉 .一种新的指纹图像细化算法 .中国图像图形学报, 1999, 4(10)835-838.Photoshop. 北京:清华大做一个自己的3 吕凤军. 数字图象处理编程入门

30、学出版社, 1999.4 刘文星,王雄沂,母国光 .纹线跟踪及其在细化指纹后处理中的应用. 光电子傲光,2002, 13 (2) : 184-187.5 刘家锋,唐降龙,赵泉. 一个基于特征点匹配的联机指纹鉴别系统 . 哈尔滨工 业大学学报, 2002.34 (1) : 132-136刘旭,田捷 . 自动指纹识别算法在嵌入式系统的实现 J. 计算机工程与应 2002.周毅,等著 . 基于 SPI 协议的实现,计算机仿真 .2003. 窦振中.单片机外围器件实用手册 (存储器分册 ) .北京:北京航空航天大学 出版社, 20O010 1998 11M.6 简兵,庄镇泉等 . 基于脊线跟踪的指纹图

31、细节提取算法 . 电路与系统学报, 20017用,89李华.MCS-5係列单片机实用接口技术.北京:北京航空航天大学出版社,张培仁,孙占辉,张村峰.基于 c语言编程MCS- 51单片机原理与应用 北京:清华大学出版社, 2003.附件 2 程序清单#include #include #includelcd1602.hsbit relay =P 1八4; / sbit buzzer=卩1八5; / sbit red= P27;/ sbit gree n= P 2八0;/继电器引脚蜂鸣器引脚录入模式指示灯 在板子靠近单片机处 识别模式指示灯 在板子远离单片机处sbit k2=P3A4; /sbit

32、 k1= P3A3; /sbit k3=P3A2; /录入一次指纹模式识别转换清除所有指纹( 10 个指纹清除)#define Max_User 10#define error 2unsigned char unsigned int unsigned int clk0=0;SaveNumber=0,searchnum=0;SearchNumber=0;unsigned char str3=0,0,0;unsigned char code Identify16=Lock: Idenfity; unsigned char code Input16 =Lock: Input ;bit modefla

33、g=0,clearallflag=0,changeflag=0;/ 常用指令定义 /Verify Password :验证设备握手口令unsigned char code VPWD16=16,0X01 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b;/ 设置设备握手口令unsigned char code STWD16=16,0X01 0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a;/GetImage默认为识别模式/,0Xff,0xff,0xff,0xff,回送 12 个/:探测手指并从传感器上读入图像,0Xff,

34、0xff,0xff,0xff,回送 12 个unsigned char code GIMG14=12,0X01 ,0Xff,0xff,0xff,0xff,0,3,1,0x00,0x05;/ 回送 12 个/Gen Templet1:根据原始图像生成指纹特征 1unsignedcharGENT114=13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08; 回送 12 个/Gen Templet2unsigned:根据原始图像生成指纹特征 2char0x01,code/codeGENT214=13,0X01 ,0Xff,0xff,0xff,0xff

35、,0x01,0,4,2,2,0x00,0x09; / 送 12 个 /Search Finger 个或部分指纹库 unsigned char code SEAT18=17, 0,8, 4,1,0,0, 0,0x65, 0x00,0x73;/Merge Templet ; 将 CharBufferA 模板,结果存于 ModelBuffer 。 unsigned char code 0,3,5 , 0x00,0x09;/ /Store Templet unsigned char code 0,6,6,2, 0x00,0x00, /Read Note:以 CharBufferA 或 CharBuff

36、erB 中的特征文件搜索整0X01 ,0Xff,0xff,0xff,0xff,/ 回送 16 个与 CharBufferB 中的特征文件合并生成0x01,MERG14=12, 回送 12 个 :将 ModelBuffer 中的文件储存到 flash 指纹库中 STOR16=15, 0X01 0x00,0x0f; /0X01 ,0Xff,0xff,0xff,0xff,0Xff,0xff,0xff,0xff,回送 12 个0x01,0x01,unsigned char code RDNT14=13,0X01 0,4,0x19, 0, 0x00,0x1e;/Clear Note unsigned c

37、har code DENT46=45,0X01 0,36,0x18,0,0,0,0Xff,0xff,0xff,0xff,0Xff,0xff,0xff,0xff,0x01,0x01,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 templetunsigned char code DELE_one16=16, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,7, 0x0c, 0x00,0x00, 0,1, 0x00,0x15;0x01, 0,3,/DEL temp

38、let ; 清空指纹库 unsigned char code DELE_all12=12,0X01 ,0Xff,0xff,0xff,0xff, 0x0d,0x00,0x11;/ 常用指令定义 结束 /宏定义 /#define FALSE 0 #define TURE / 状态定义表#define onNUMBER 63#define off #define MAX_#define _Nop() _nop_()/宏定义结束/unsigned char FifoNumber=0; xdata unsigned char FIFOMAX_NUMBER+1=0;/*1 毫秒延时程序 */void de

39、lay1ms(unsigned int t)unsigned int i,j;for(i=0;it;i+) for(j=0;j=6)checksum=FIFOcount+checksum; / 计算校验和if(count=8)package=FIFO7*0X100+FIFO8; / 计算包长度stop= TURE;标志为 0/do /if(stop)if(count=package+8)checksum=checksum-FIFOcount-1;if(checksum!=FIFOcount&0xff)result=FALSE; / 校验失败 , 置结果elseresult=TURE;flag=

40、0;break;的内容结束while (clk0=MaxTime)&(count=2)/ 如果不成功,再验证一次,如果两次不成功,返回失败return(0);清空指纹库void Clear_All(void) / delay1ms(200);Command(DELE_all,50); / 清空指纹库 发获取图像并生成特征unsigned char ImgProcess(unsigned char BUFID) / 文件,存入BUFID中/输入参数为缓冲区号 if(Command(GIMG,89) & (FifoNumber=11) & (FIFO9=0x00) if(BUFID=1) if(C

41、ommand(GENT1,60) &(FifoNumber=11) & (FIFO9=0x00) return 1; elsereturn 0; else if(BUFID=2) if(Command(GENT2,60) &(FifoNumber=11) & (FIFO9=0x00) return 1; elsereturn 0;elsereturn 0;return 0;bit Searchfinger(void)/搜索指纹 (发送搜索命令、以及根据返回值确定是否存在)if( Command(SEAT,60) & (FifoNumber=15) & (FIFO9=0x00) ) / 索到指纹

42、SearchNumber=FIFO10*0x100+FIFO11;/ 搜索到的页码/MatchScore=FIFO12*0x100+FIFO13 可以在此计算得分, 从而进 行安全级别设定,本程序忽略return 1;elsereturn 0;unsigned char search(void)/ 搜索用户unsigned char SearchBuf=0,i=0;while (i20)if (ImgProcess(1)=1)/首先读入一次指纹SearchBuf=Searchfinger();/ 进行指纹比对,如果搜索到,返 回搜索到的指纹序号if(SearchBuf=1)return Sea

43、rchNumber;elsereturn 255;/表示搜索到的指纹不正确i+; return 0;保存指纹bit savefingure(unsigned char ID)/ unsigned char i=0;/ 现在开始进行存储指纹模板的操作 for (i=0;i=40)/ 如果采集了 40 次,还不成功,直接采集失败, 函数返回 0return(0);/ 采集第一个特征成功count=0;buzzer=0;delay1ms(100);buzzer=1;delay1ms(2000);/延时2S开始采集下一个特征/ 开始采集第二个特征while(1)temp=ImgProcess(2); / 生成特征 2if (temp=1)/ 生成特征文件 2成功 (Command(MERG,40)& (FifoNumber=11) &合并不成功返回 0,

温馨提示

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

评论

0/150

提交评论