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

下载本文档

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

文档简介

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

2、章 硬件设计 31 AT89C52单片机设计3.2 电源电路设计3.3 按键控制部分电路 3.4 LED 指示灯电路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 系统原理图设计2.2 方案说明2.1.1方案一:摄像头采集、飞思卡尔单片机处理 这种方案由指纹图像采集、指纹图像预处理、指纹特征提取、指纹特征匹配、 特征数据库等几部分组成。指纹识别系统的原理框图如图1 所示。该系统首先由数字

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

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

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

11、, 1024 字节内部 RAM,32 个 I/O 口线,两个 16 位 定时/ 计数器,5 个中断向量,一个全双工串行通信口,片内振荡器及时钟电路。3.1.2 引脚结构图(如图 3-1 )U1XTAL1P0.0/AD0P0.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0/T2P3.0/RXDP1.1/T2EXP3.1/TXDP1.2P3.2/INT0P1.3P3.3/IN

12、T1P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD19189322930313938371234567821222324252627281011121314151617363534AT89C52图 3-1 AT89C52 管脚图3.1.3 一些端口的介绍 :P30口:RXD(串行输入口)P31口:TXD(串行输出口) XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。3.1.4 单片机最小系统1)外部晶振的设计STC89C52的内部有一个用于构成振荡器的高增益反相放大器,通过XTAL1,ATAL2外部接上一

13、片作为反馈元件的晶体, 与 C1和 C2构成了并联谐振电路, 使 其构成自激振荡器,电容的值具有微调的作用,我们取30PF,具体的接法如图3-2 外部晶振电路。C122pFX112MC2 12M22pF图 3-2 外部晶振电路STC89C52的工作频率范围在 0-24MHZ。我们选用的是 11.0592MHZ的晶振, 振荡周期约为 1us 机器周期约为 0.1us ,所以这个晶振可以满足这个系统的要求。 并且晶振不能离单片机太远,不然使用外部晶振进行软件调试时就会发现找不 到信号。2)复位电路的设计 MCS51单片机通常采用上电自动复位和按钮复位两种方式,本系统采用简单 的自动复位电路如图 2

14、-2 所示。单片机在上电瞬间, RC电路充电, RST引脚端 出现正脉冲,只要 RST 端保持两个机器周期以上的高电平,就能使单片机有效 复位。其中电容选 10uF、电容选 10K。22pFC310ufR110K图 3-3 复位电路3.2 电源电路设计图 3-4电源电路本系统采用的 5V电源主要采用两种方法,第一是直接用 9V 电池然后通过一 个变压电路,利用 7805 将转化成 5V 供单片机和液晶显示部分使用;其二是用 220V通过变压器等将其转化成 5V。 两种方法都可以,但是由于第一种方法便于携带、而且成本相对较低所以我们 选用第一种方案。3.3 按键控制部分电路1)消除抖动 按键的闭

15、合与否反应在电压上就是呈现出高电平或低电平,如果高电平表示 断开,那么低电平则表示闭合,通过电平的高低状态的检测可确认键按下与否。 为了确保 CPU对一次按键动作只确认一次,并且防止干扰信号的影响,必需加 入消除电平抖动的措施,下图 3-5 为按键抖动示意图:图 3-5 按键闭合及断开前后的电压消除抖动通常有硬、软硬两种方法,硬件消除抖动可采取双稳态电路或滤波消 抖电路;软件消抖是在第一次检测到有键按下时,执行一段延时程序再确认该 键是否仍闭合,如果还是闭合状态则确认该键按下,从而消除抖动和干扰影响。 当按键较多时,我们多采用硬件件消抖法。本系统中按键少直接采用直接接入 的方式。2)按键接口设

16、计按键接口设计有两种方法,独立式按键和矩阵式键盘。独立式按键各键相独立,每个按键各接入一根输入线,只要检测输入线的电平就可以识别按键状态。 这种方法电路配置灵活,软件结构简单,但每个按键需占用一根输入口。由于 该设计方案 IO 资源浪费大。故此方法只适用于按键少或其他控制功能很简单的 场合。由于本设计中的按键只有 3 个,考虑系统可靠性和键盘设计的简单所以 采用独立式按键。本系统的按键电路如图 3-6 所示:图 3-6 独立按键电路按键按下是呈低电平,我们采用软件消抖来减少对的单片机影响3.4 LED 指示灯电路图 3-7 LED 灯指示电路当 k2 键按下时,录入模式指示灯 red 亮;当

17、k1 键按下时,识别模式指示灯 green3.5 蜂鸣器电路图 3-8 蜂鸣器电路3.6 指纹传感器模块1)指纹模块电路如下所示:图 3-9 指纹识别模块指纹模块里面主要是 DSP芯片,型号为 PS1802,加上外面的 CMOS芯片, CMOS 芯片主要是对指纹进行“照相” ,生成指纹特征,如图 3-8 所示就是一个指纹模 板,录入两次这样的指纹特征就能生成一个指纹模板。具体的工作过程是:扫描指纹(录入图像) 、生成特征、合成模板(建立一个指 纹库文件,成功录入一个指纹) 。图 3-10 指纹模板指纹模板就是“照一次相” ,指纹模块里面的 CMOS芯片采集一次指纹信息,然 后进行模糊处理生成

18、0和 1两种记录信息,存入指纹模块的 FLASH芯片里面。 当切换到识别模式的时候,指纹模块就会先让 CMOS芯片采集一次指纹,然后和 FLASH芯片的数据进行对比。看是不是存在,如果存在就能返回是几号指纹。这 样我们就能通过单片机或者电脑进行指纹识别与登记了。2)指纹传感器模块实物图 指纹模块型号是: FM-180,此模块上里面包含了 :1、光学头 2 、通信连接线 3 、DSP芯片(在模块里面)4、稳压芯片 5、FLASH芯片 6 、CMSO传感器(在模块里面) 等部件组成。1、光2、通信连3、DSP芯4、稳压芯5、 FLASH6 、 CMOS图 3-11 指纹传感器模块实物图第四章 软件

19、程序设计该设计主要通过设定的 3个按键来实现一定的功能, 3个按键分别为模式切换 (识 别模式和录入指纹模式) 、指纹录入、删除所有指纹。41 程序流程图4.1.1程序主流程图( 1)指纹录入: 先进行录入模式,然后按一下录入指纹,灯会闪烁,录入成 功一次,蜂鸣器响一次, 这时候拿开手指, 1 秒放入同一个手指, 会再录入一次, 如果两次都成功,就成功录入了一个指纹。蜂鸣器会响两次,同时显示录入指 纹成功。如果不成功就会显示录入失败。录入完成后,可以进入识别模式,或 者接着录入下一个指纹。录入完成,按一次指纹转换,进入指纹识别开锁模式。 单片机主程序流程设计:4.2 系统关键代码引脚使用:sb

20、it relay =P14; /继电器引脚sbit buzzer=P15; / 蜂鸣器引脚 sbit red= P27;/ 录入模式指示灯 sbit green= P20;/ 识别模式指示灯在板子靠近单片机处在板子远离单片机处sbit k2=P34; /sbit k1=P33; /sbit k3=P32; /录入一次指纹模式识别转换清除所有指纹( 10 个指纹清除)部分主函数代码:void main(void)/主函数unsigned char i=0;ET0=1; / 定时器 0 开中断TL0=0x97; /17ms 的初值TH0=0xBD;delay1ms(5);LcdRw=0; / 只对

21、液晶进行写操作,不进行读操作delay1ms(5);LCD_Initial();/ 液晶初始化 delay1ms(5);GotoXY(0,0);/x,yPrint(Identify);/ 串口初始化SCON=0x50; /UART 方式 1:8 位 UART; REN=1: 允许接收PCON=0x00; /SMOD=0: 波特率不加倍TMOD=0x21; /T1方式 2, 用于 UART波特率TH1=0xFD;TL1=0xFD; /UART 波特率设置 :9600TR1=1;TR0=1;/ 开定时器 0IT0=0;/ 中断 0 低电平中断IT1=1;/ 中断 1 低电平中断EX0=1;/ 开中

22、断 0EX1=1;/ 开中断 1EA=1;mode();/ 看当前是什么模式for(i=0;i6;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);/

23、等待松手 if(VefPSW()=1&modeflag=1&SaveNumber10)/ 与模 块握手通过if(enroll()=1)/ 采集两次,生成 1 个指纹模板 成功 if(savefingure(SaveNumber+1)=1)/ 保 存也成功SaveNumber+;/ 加一次 shownum(SaveNumber);elsebuzzer=0;for(i=0;i=1&searchnum=162)/ 最多是 162 个指纹 shownum(searchnum);/ 蜂鸣器响一声relay=0;buzzer=0; delay1ms(100);buzzer=1;for(i=0;i20;i+

24、) delay1ms(150);relay=1;if(searchnum=255)/ 不正确的指纹 蜂鸣器响三声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;/ 蜂鸣器长响一次,表示清除所有指纹结束modefl

25、ag=1;/ 进入录入指纹模式GotoXY(0,0);/x,yPrint(Input);shownum(0);buzzer=0;delay1ms(800);buzzer=1;SaveNumber=0;if(changeflag=1)mode();/ 显示当前模式changeflag=0;/while(1)结束 /void int0(void) interrupt 0/中断 0,清除所有指纹if(k3=0) / 清除所有指纹delay1ms(10);if(k3=0)/ 如果仍为低电平,表示按键有效while(k3=0);/ 等待松手clearallflag=1;changeflag=1;定时器

26、0 中断函数中断 1,模式转换void Timer0(void) interrupt 1/TL0=0x97;TH0=0xBD;clk0+; / 延时 17ms void int1(void) interrupt 2/ if(k1=0)/ 模式转换 其中用 modeflag 来标志 , 默认从第 1 个指纹开始录 入 delay1ms(10); if(k1=0)/ 如果仍为低电平,表示按键有效 while(k1=0);/ 等待松手 modeflag=modeflag;/0 表示录入指纹 1 表示识别指纹 changeflag=1;/ 模式发生了转换第五章 调试完成了硬件的设计、制作和软件编程之后

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

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

29、8.3 吕凤军.数字图象处理编程入门一一做一个自己的Photoshop. 北京:清华大学出版社, 1999.4 刘文星,王雄沂,母国光 .纹线跟踪及其在细化指纹后处理中的应用 . 光电 子傲光, 2002,13 (2) :184-187.5 刘家锋,唐降龙,赵泉 . 一个基于特征点匹配的联机指纹鉴别系统 . 哈尔滨 工业大学学报, 2002.34 (1) :132-1366 简兵,庄镇泉等 .基于脊线跟踪的指纹图细节提取算法 . 电路与系统学报, 20017 刘旭,田捷 .自动指纹识别算法在嵌入式系统的实现 J. 计算机工程与应 用, 2002.8 周毅,等著 .基于 SPI 协议的实现,计算

30、机仿真 .2003.9 窦振中.单片机外围器件实用手册 (存储器分册 ) 北京:北京航空航天大学 出版社, 20O010 李华MCS-51系列单片机实用接口技术 北京:北京航空航天大学出版社, 199811 张培仁,孙占辉,张村峰基于 c 语言编程 MCS一 51 单片机原理与应用M 北京:清华大学出版社, 2003附件 2 程序清单#include #include #includelcd1602.hsbit relay =P14; / sbit buzzer=P15; / sbit red= P27;/ sbit green= P20;/sbit k2=P34; /sbit k1=P33;

31、 /sbit k3=P32; /继电器引脚蜂鸣器引脚录入模式指示灯 在板子靠近单片机处识别模式指示灯 在板子远离单片机处录入一次指纹模式识别转换清除所有指纹( 10 个指纹清除)#define Max_User 10#define error 2unsigned char unsigned intSaveNumber=0,searchnum=0;SearchNumber=0;unsigned int clk0=0;unsigned char str3=0,0,0;unsigned char code Identify16=Lock: Idenfity;unsigned char code In

32、put16 =Lock: Input ;bit modeflag=0,clearallflag=0,changeflag=0;/ 默认为识别模式/ 常用指令定义 /Verify Password :验证设备握手口令unsigned char code VPWD16=16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b; / 回送 12 个/ 设置设备握手口令unsigned char code STWD16=16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x12,0x0

33、0,0x00,0x00,0x00,0x00,0x1a; / 回送 12 个/GetImage :探测手指并从传感器上读入图像unsigned char code GIMG14=12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05; / 回送 12 个/Gen Templet1:根据原始图像生成指纹特征 1unsigned charcodeGENT114=13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08; / 回送 12 个/Gen Templet2:根据原始图像生成指纹特征 2unsign

34、ed char codeGENT214=13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09; / 送 12 个 /Search Finger :以 CharBufferA 或 CharBufferB 中的特征文件搜索整 个或部分指纹库unsigned char code SEAT18=17, 0,8, 4,1,0,0, 0,0x65, 0x00,0x73; /Merge Templet ; 将 CharBufferA 成模板,结果存于 ModelBuffer 。0X01 ,0Xff,0xff,0xff,0xff, 0x01, / 回送 16

35、个与 CharBufferB 中的特征文件合并生unsigned char code MERG14=12,0,3,5 , 0x00,0x09;/ 回送 12 个0X01 ,0Xff,0xff,0xff,0xff,0x01,/Store Templet:将 ModelBuffer 中的文件储存到 flash 指纹库中unsigned char code STOR16=15, 0X01 ,0Xff,0xff,0xff,0xff, 0,6,6,2, 0x00,0x00, 0x00,0x0f; / 回送 12 个 /Read Noteunsigned char code RDNT14=13,0X010

36、,4,0x19, 0, 0x00,0x1e;/Clear Noteunsigned char code DENT46=45,0X01,0Xff,0xff,0xff,0xff,0Xff,0xff,0xff,0xff,0x01,0x01,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 templetunsigned char code DELE_one16=16, 0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7, 0x0c,

37、 0x00,0x00, 0,1, 0x00,0x15;/DEL templet ; 清空指纹库unsigned char code DELE_all12=12,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,3, 0x0d,0x00,0x11;/ 常用指令定义 结束 /宏定义 /#define FALSE 0#define TURE 1/ 状态定义表#define on1#define off0#define MAX_NUMBER 63#define _Nop() _nop_()/ 宏定义 结束/unsigned char FifoNumber=0; xdata unsig

38、ned char FIFOMAX_NUMBER+1=0;毫秒延时程序 */void delay1ms(unsigned int t) unsigned int i,j;for(i=0;it;i+) for(j=0;j=6) checksum=FIFOcount+checksum; / 计算校验和if(count=8)包长度标志为 0package=FIFO7*0X100+FIFO8; / 计算stop= TURE;if(stop)if(count=package+8)checksum=checksum-FIFOcount-1; if(checksum!=FIFOcount&0xff) resu

39、lt=FALSE; / 校验失败 , 置结果elseresult=TURE;flag=0;break;的内容 结束/do/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

40、) & (FifoNumber=11) & (FIFO9=0x00)if(BUFID=1)if(Command(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(S

41、EAT,60) & (FifoNumber=15) & (FIFO9=0x00) ) / 搜索到指纹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();/

42、 进行指纹比对,如果搜索到,返 回搜索到的指纹序号if(SearchBuf=1)return SearchNumber;elsereturn 255;/ 表示搜索到的指纹不正确i+;return 0;bit savefingure(unsigned char ID)/ 保存指纹unsigned char i=0;/ 现在开始进行存储指纹模板的操作 for (i=0;i=40)/ 如果采集了 40 次,还不成功,直接采集失败, 直接退出 enroll 函数返回 0return(0);/ 采集第一个特征成功count=0;buzzer=0;delay1ms(100);buzzer=1;delay1

43、ms(2000);/ 延时 2S 开始采集下一个特征/ 开始采集第二个特征while(1)temp=ImgProcess(2); / 生成特征 2if (temp=1)/ 生成特征文件 2 成功&if ( (Command(MERG,40)& (FifoNumber=11) (FIFO9=0x00)=0 ) /合并不成功返回 0,成功返回 1return 0;else/ 特征文件合并生成模板,结果存于 ModelBufferbuzzer=0;delay1ms(100);buzzer=1;delay1ms(100);buzzer=0;delay1ms(100); / 响两声,表示生成一个模板成功

44、 buzzer=1;return 1;elseif (temp=1)/ 采集指纹没有成功count+;if (count=25) return(0);void shownum(unsigned char dat)unsigned char numdat=0; numdat=dat;GotoXY(0,1);/x,yPrint(Finger:);GotoXY(0,8);/x,y str0=0x30+numdat/10; str1=0x30+numdat%10; Print(str);void mode(void)if(modeflag=0)GotoXY(0,0);/x,yPrint(Identify);green=0;red=1;elseGotoXY(0,0);/x,yPrint(Input);red=0;green=1;shownum(0);void main(void)/ 主函数unsigned char i=0;ET0=1; / 定时器 0 开中断TL0=0x97; /17ms 的初值TH0=0xB

温馨提示

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

评论

0/150

提交评论