指纹识别模块指导
指纹识别原理及模组介绍
指纹识别的背景知识
我们手掌及其手指、脚、脚趾内侧表面的皮肤凸凹不平产生的纹路会形成各种各样的图案。这些纹路的存 在增加了皮肤表面的摩擦力,使得我们能够用手来抓起重物。人们也注意到,包括指纹在内的这些皮肤的纹路在 图案、断点和交叉点上各不相同,也就是说,是唯一的。依靠这种唯一性,我们就可以把一个人同他的指纹对应 起来,通过对他的指纹和预先保存的指纹进行比较,就可以验证他的真实身份。这种依靠人体的身体特征来进行 身份验证的技术称为生物识别技术,指纹识别是生物识别技术的一种
的玻璃表面,反射光线由CCD去获得,反射光的数量依赖于压在玻璃表面指纹的嵴和峪的深度和皮肤与玻璃间的油 脂。光线经玻璃射到峪后(指纹线之间的凹陷部分)反射到CCD—呈现白色,而射到嵴后则不反射到CCD,图像呈现黑 色(确切的是脊上的液体、油脂影响光线的反射路径)。
光学指纹采集技术有明显的优点:价格低廉。缺点:由于要求足够长的光程,因此要求足够大的尺寸,而且过 分干燥和过分油腻的手指识别效果差。
指纹识别应用领域
指纹等生物识别技术可弥补传统的安全认证方法,提供了一个很好的解决方案。可用指纹等生物特征提高安全 性的领域举例: 涉密系统,提供高度安全防范措施 针对大规模人群身份鉴别技术 网络、数据库和关键文件等的安全控制 机密计算机的登录认证 银行ATM,POS终端等的安全认证 手机、平板、PC等使用认证等 移动支付 安全门禁、门锁
指纹识别应用趋势
手机、PAD、安防 屏幕解锁 -更安全快捷 特殊应用程序访问许可 –防止他人或打开你的特殊应用程序 数据和文件安全访问 –防止他人访问你的手机数据 移动支付 –更快捷的完成安全支付 应用程序快捷方式 –给每个手指赋予不同的指令 安防(门锁、保险柜等)
通元微指纹识别模组TFP625R 用户手册说明书
通元微指纹识别模组TFP625R用户手册厦门通元微智能科技有限公司目录1.产品规格 (1)2.Pin map (3)3. 概念解释 (3)1)资源开销 (3)2)模组参数 (4)3)指纹库 (4)4.通讯协议 (5)1)数据包格式 (5)2)命令码 (6)3)反馈码 (7)5. 命令 (8)GetImg (8)Img2Tz (9)Match (10)Search (10)RegModel (11)StoreModel (11)LoadChar (12)UpChar (13)DownChar (14)UpImage (15)DeleteChar (16)Empty (17)SetSysPara (17)ReadSysPara (18)SetPwd (19)VfyPwd (19)SetAddr (20)ReadINFPage (21)WriteNotePad (22)ReadNotePad (22)TemplateNum (23)ReadConList (23)Cancel (24)GetMinEmptyID (25)AutoEnroll (26)AutoIdentify (28)6.使用流程 (30)7.休眠与唤醒 (31)8.测试环境 (33)9.技术支持 (34)欢迎使用通元微指纹识别模组TFP625R 。
本文将为客户使用本模组进行指纹识别开发提供必要的说明信息。
本模组为单机指纹识别模组。
模组可以进行指纹注册、指纹识别、指纹验证等功能。
本模组支持UART通讯方式。
1.产品规格TFP625R具有模组自学习功能。
该功能会提升指纹识别的准确率。
匹配同一指纹,在匹配若干次后,匹配分数有所提升。
2.P in map连接器类型:FPC-0.5-6P: 6Pin 条形连接器,间距0.5mm。
3. 概念解释1)资源开销2)模组参数3) 指纹库图3-3, 模板与特征在Flash 中的对应成员0 成员1特征2N-1。
SFM3050 指纹识别接口板用户指南说明书
BiometricInterface BoardUser Guideelectronic stepsContents1 What You Need to Get Started2 Setting Up the System3 Enroll a Fingerprint4 How to Identify a Fingerprint5 Delete a Fingerprint6 Board Schematic electronic stepsOverviewelectronic stepsThe Biometric Interface Board is a demonstration board for evaluating SFM3050 ngerprint module. Its an expansion board compatible with Microchip Explorer 16 development board.Fingerprint modules are designed to provide biometric security solution to developersand manufacturers for integration with several application, as access control, time attendance,mobile device, safes and so on. FeaturesHigh-end standalone ngerprint module equipped with RS232 interface.EER < 0.1%Enrollment time 700 msec 1:1 Veri cation time 700 msec1:1000 Identi cation time * 830 msecTemplate size 384 Bytes (reducible to 256 bytes)Template standard ISO19794-2, ANSI-378Getting StartedTo get started, an Explorer 16 Development Board is required. The Biometric Interface Board can be attached to the Explorer 16 Development Board through the K1 connector and it was speci callydesigned to be used with PIC24FJ256GB110 PIM.Pag 1Electronicsteps Presenting...1 What You Need to Get StartedAfter power up the board, wait until the presentation ends, or wait 30 seconds for the system to initialize before pressing S4.STEP1STEP2Press S4 to switch from the apresentation to the menu.STEP3If its your rst time to run the aplication, then you have to start to Enroll a nger rst.Please go to the chapter “Enroll a Fingerprint”. If you have already done the enrollment you can start to identify the same nger, by pressing S6.We provide a simple rmware to demonstrate how to Enroll, Verify and Delete a ngerprint into the SFM 3050 module.After you program the demo rmware to PIC24F256GB110 PIM, and atached the Explorer 16 board to the Biometric Interface Board, power up the Explorer 16, and you will see a quick presentation running on the LCD. Please wait until the presentation ends because the module is also initializing during this time.2 Setting Up the system- Biometric Interface Board- Microchip Explorer 16 Development Board - PIC24FJ256GB110 PIM - Demo rmware- PIC Programer to burn the demo rmware into the PIC24F256GB110 PIMelectronic stepsS3 -> Enroll S5 -> DeleteElectronicsteps Presenting...Press S6 toIdentify FingerPag 2S3 -> Enroll S5 -> DeletePlease insert FingerEnroll Fail ErrorFinger Enrolled Success3 Enroll a FingerprintPress S4 until the LCD shows a menu with S3 and S5 options.STEP1STEP2Press S3 to Enroll a ngerprint.STEP3Insert your ngerprint by pressing the sensor module with your nger .STEP4If the LCD shows the message“Finger Enrolled Success” your ngerprint was correctly enrolled in the module.T roubleshootingIf the LCD shows a Error Message, it can be due to a timeout or to a error reading the ngerprint. Go to Step 1 and try again.electronic stepsPag 3Please insert Finger4 How to Identify a FingerprintPress S4 until the LCD shows a menu with S6 option.STEP1STEP2Press S6 to Identify nger .STEP3Insert your ngerprint by pressing the sensor module with your nger .STEP4If the LCD shows the message“Finger Match Success” your ngerprint was correctly identi ed by the module.T roubleshootingIn case you received a “No match” message,it can be due to a timeout , error reading the ngerprint or the nger is diferent from the one you previously Enrolled.Go to Step 1 and try again, or if the nger is diferent you must Enroll rst.Press S6 toIdentify FingerFinger Match SuccessNo match, finger not identifiedelectronic stepsPag 45 Delete a FingerprintPress S4 until the LCD shows a menu withS5 option.STEP1STEP2Press S5 to Delete ngerprint.STEP3If the LCD shows the message “Done Deleting” your ngerprint was correctly deleted by the module.Done Deleting Successelectronic steps S3 -> EnrollS5 -> DeletePag 56 Board Schematicelectronic steps31A 0N BIO201201Pag 6DEVELOPMENT BOARDS - INTERFACE BOARDS - ELECTRONIC KITS - STARTER KITSAll rights reserved. Name and logos are trademarks of STEPTRONIC Lda. All othertrademarks and services marks are the property of theirs owners.electronic steps。
指纹识别命令 详解
(1)打开“003 指纹识别模块用户手册.pdf”先看第2页,参数介绍。
模块工作在3.6V-6V,他的波特率出厂设定在9600 bps。
RXD、TXD兼容CMOS和TTL电平,也就是3.3V和5V都兼容。
(2)接着第3页模块接线介绍。
(3)再仔细查看第4、5页的内容。
“命令包格式”这个是主机(上位机)发送给模块的,“数据包格式”和“结束包格式”(这两个命令可以是上位机发,也可以是模块发),要注意的包的格式。
“指令应答”(指纹模块应答包格式)。
需要注意的是校验位的计算方法:“校验和是从包标识至校验和之间所有字节之和,超出2 字节的进位忽略。
”第6、7、8、9页也需要查看一下。
(4)下面我们来讲一个具体的例子---- 验证口令PS_VfyPwd这个命令,通过此命令,我们可以知道模块是不是连接正常。
这个命令在第21页从前面了解到芯片地址是FF FF FF FF 共四个字节(4bytes),默认口令为00 00 00 00共四个字节(4bytes)。
发送的命令是:EF 01 FF FF FF FF 01 00 07 13 00 00 00 00 00 1B其中命令分分别讲解如下:EF 01(两个字节的包头)FF FF FF FF(四个字节芯片地址)01(包标识)00 07 (两个字节长度,不足的用0补齐,不能不写)13 (一个字节指令码)00 00 00 00 (四个字节口令)00 1B(两个字节校验和)校验和计算方法:在第4、5页上面,这里计算就是:01(包标识开始)+00+07+13+00+00+00+00=1B,由于是两个字节校验和,所以前面补00,最好的校验和为:00 1B。
这就是发送一个命令介绍,其它的类似,请用户自己参考说明书。
请注意,用户最好不要随意更改地址和口令,除非需要,否则不要更改,以免您记不住,或者更改错误,就需要返厂维修了(重新下载程序)。
指纹识别模块说明书
指纹识别模块实验注:此说明书适用于EL-EMCU-I实验箱、EXP-89S51/52/53CPU板。
一、实验目的掌握指纹模块的开发协议;掌握16C550芯片的编程方法;二、实验设备计算机,KEIL UVISION2环境,EL-EMCU-I实验箱,直连串口电缆、交叉串口电缆(针对针),导线,短接块。
三、基本原理指纹识别模块采用MCU和PC两种控制方法,供用户灵活选用。
其指纹模块采用深圳十指科技的TF-MD-M12开发模块,MCU端的外围电路由通过芯片16C550芯片进行并口到串口的转换,PC端的外围电路用MAX3232控制,模块的电源由实验箱上的接口插座提供。
下面将具体介绍一下各部分的组成及其原理。
TF-MD-M12开发模块的功能特点:◇先进的指纹识别算法(商业);◇高速算法,500人指纹只要0.43 秒;◇1:N,1:1 比对(两种可选);◇用户可分多级权限管理(1、2、3);◇多级的安全级别自主设置,可更多应用于不同场所;◇采用高精密的光学成像元件,识别准确;◇体积小,电路只有:40*58mm,易于集成;◇功能高度集成,存于DSP中,不用再加电路板;◇标准接口协议,开发简单;◇采用面光源,成像速度快;◇内部采用高级数字处理器DSP,处理速度快;◇识别率高,最高可达:0.00001% ;◇稳定性好,四年不断升级和优化;◇具低电压报警功能;◇微功耗设计适于电池供电;◇主板低频设计抗外部电磁干扰;◇主要供外销厂家和集成商,开发和集成产品;◇设计精巧适于嵌入指纹锁/小指纹门禁机/手持指纹识别设备;TF-MD-M12开发模块的主要性能指标:◇电路板尺寸(mm)58×40◇采集头分辨率500DPI◇指纹容量80 枚◇比对时间<1 秒◇认假率0.0001%◇拒真率0.01%◇动态电流<140mA◇待机电流<18µA◇工作电压5-7.5V其开发协议请用户参见随程序附带的TF-MD-M1开发协议PDF文档。
指纹识别模块指导
准备实验需要的设备。
硬件: 试验箱、电源线、串口线、网线、指纹扫描模块、PC机一台。
一.软件: 虚拟机、超级终端、FTP软件。
二.连线方式将指纹识别模块安装在经典2410DVP试验箱的168扩展槽中。
三.实验原理指纹模块是面向广阔的锁具市场、保险箱(柜)、安防及工控市场, 推出的。
她是由32位高性能可编程处理器、活体指纹采集芯片和指纹识别核心固件等构成的一个独立的嵌入式指纹识别系统。
本指纹模块具有200枚以上指纹存储能力, 可扩展到上千枚, 具备1秒以内的指纹比对性能, 支持1: 1和1: N两种比对模式, 能够任意兼容各类指纹传感芯片, 允许客户内置应用程序, 减化应用方案, 节省开发成本。
本模块可提供全面的ODM定制服务, 时时刻刻、轻轻松满足您的个性化指纹产品需求。
功能用途指纹模块是嵌入式指纹产品的核心。
她面向锁具、安防和工控企业, 为他们提供一个“快速应用指纹技术”的硬件平台。
在这个平台上, 企业只需专注于原有产品, 无须关注指纹传感器的接入、指纹注册比对等远离其核心价值的技术, 从而在不增加研发成本的同时提升原有产品的应用价值。
指纹模块功能:活体指纹识别脱机指纹注册(250枚)脱机指纹比对(1: 1.1: N)可内置应用程序(固件)可接入任意指纹传感器件(光学、半导体电容、半导体温感、半导体压感、按压式、滑动式)丰富的接口支持(32位GPIO、SPI、UART、I2C.RF)指纹模块应用范围:指纹门锁指纹保险柜(箱)指纹文件柜指纹工控设备指纹遥控器指纹通关设备指纹POS机指纹IC卡读卡器指纹数码产品指纹电气开关等技术规格指纹模块一般参数:注: 指纹采集传感器选择请参考附录1。
模块优势可编程直接在模块的主控MCU中写入应用程序兼容性强能够兼容全球各种指纹传感芯片(光感、电容、电感、温感、压感, 滑动式和按压式)(用户可指定)指纹容量大片内可存储250枚以上指纹, 支持片外扩展注册比对性能优越指纹算法经过多年商用, 嵌入式环境下FAR、FRR性能优良服务好提供24小时技术支持和全面的ODM定制服务(只需提供规格书)四、程序分析根据如上提供的指纹操作API, 在linux开发环境下编写程序实现对指纹模块的完整操作。
FM-180指纹识别模块用户手册
UART 通讯指令格式详解
FM-180是完整的指纹识别模块,不需挂接任何外围部件,模块始终处于从属地位(Slave mode),主机(Host)需要通过不同的指令让模块完成各种功能。主机的指令、模块的应答 以及数据交换都是按照规定格式的数据包来进行的。主机必须按照下述格式封装要发送的指 令或数据,也必须按下述格式解析收到的数据包。
用户记事本
在FLASH 中开辟了一个512 字节的存储区域作为用户记事本,该记事本逻辑上被分成16 页, 每页32 字节。上位机可以通过PS_WriteNotepad 指令和PS_ReadNotepad 指令访问任意一 页。注意写记事本某一页的时候,该页32 字节的内容被整体写入,原来的内容被覆盖。
应答包格式:
2bytes
4bytes
1 byte
2 bytes
1 byte
N bytes
2 bytes
0xEF01
芯片地址 包标识07
包长度
确认码
返回参数
校验和
FM-180 指纹识别模块用户手册 V1.1
确认码定义: 1. 00h:表示指令执行完毕或OK; 2. 01h:表示数据包接收错误; 3. 02h:表示传感器上没有手指; 4. 03h:表示录入指纹图像失败; 5. 04h:表示指纹图像太干、太淡而生不成特征; 6. 05h:表示指纹图像太湿、太糊而生不成特征; 7. 06h:表示指纹图像太乱而生不成特征; 8. 07h:表示指纹图像正常,但特征点太少(或面积太小)而生不成特征; 9. 08h:表示指纹不匹配; 10. 09h:表示没搜索到指纹; 11. 0ah:表示特征合并失败; 12. 0bh:表示访问指纹库时地址序号超出指纹库范围; 13. 0ch:表示从指纹库读模板出错或无效; 14. 0dh:表示上传特征失败; 15. 0eh:表示模块不能接受后续数据包; 16. 0fh:表示上传图像失败; 17. 10h:表示删除模板失败; 18. 11h:表示清空指纹库失败; 19. 12h:表示不能进入低功耗状态; 20. 13h:表示口令不正确; 21. 14h:表示系统复位失败; 22. 15H:表示缓冲区内没有有效原始图而生不成图像; 23. 16H:表示在线升级失败; 24. 17H:表示残留指纹或两次采集之间手指没有移动过; 25. 18H:表示读写FLASH 出错; 26. 0xf0:有后续数据包的指令,正确接收后用0xf0 应答; 27. 0xf1:有后续数据包的指令,命令包用0xf1 应答; 28. 0xf2:表示烧写内部FLASH 时,校验和错误; 29. 0xf3:表示烧写内部FLASH 时,包标识错误; 30. 0xf4:表示烧写内部FLASH 时,包长度错误; 31. 0xf5:表示烧写内部FLASH 时,代码长度太长; 32. 0xf6:表示烧写内部FLASH 时,烧写FLASH 失败; 33. 0x19:未定义错误; 34. 0x1a:无效寄存器号; 35. 0x1b:寄存器设定内容错误号; 36. 0x1c:记事本页码指定错误; 37. 0x1d:端口操作失败; 38. 0x1e:自动注册(enroll)失败; 39. 0x1f:指纹库满 40. 0x20—0xefh:Reserved。 指令只能由上位机下给模块,模块向上位机应答。 系统上电复位后将首先检查默认的设备握手口令是否被修改,若未被修改,则系统认为上位 机没有验证口令的需求,SOC 直接进入正常工作状态;若已被修改,则必须首先验证设备握
电容式指纹模块工作原理
电容式指纹模块的工作原理1. 引言随着科技的发展,指纹识别已经成为一种广泛应用的生物识别技术。
而电容式指纹模块是实现指纹识别的一种主流技术之一。
本文将详细介绍电容式指纹模块的工作原理,包括指纹的形成与结构、电容式指纹模块的主要组成部分、电容式指纹模块的工作流程以及原理解析。
2. 指纹的形成与结构指纹是人体皮肤表面的一种纹路,它由皮肤的皱褶和汗腺开口孔组成。
指纹的形成是由胎儿时期的胚胎皮肤表面起皱开始的,随着胚胎的发育,这些皱褶逐渐形成了指纹。
指纹的形态特征是独一无二的,每个人的指纹都是唯一的。
指纹主要分为三个部分:弓型、循环型和横纹。
其中弓型指纹较为稀少,循环型指纹最常见,横纹指纹次之。
指纹在特征方面可细分为:单纹、双纹、中纹、岛纹、混纹、复纹、裂纹、星纹等。
指纹的结构主要分为三层:表皮层,含有水分较多,是指纹的主要部分;乳头层,构成了指纹的起伏;基底层,对应指纹的基本纹型。
3. 电容式指纹模块的主要组成部分电容式指纹模块是通过感应和测量指纹的电容变化来实现指纹识别的。
它主要由以下几个基本组成部分组成:3.1 指纹传感器指纹传感器是电容式指纹模块的核心部件之一,它用来感应指纹的电容变化。
指纹传感器通常采用一种特殊的材料作为感应电极,这种材料能够在接触到指纹时产生电容变化。
指纹传感器的表面通常采用一层特殊的涂层,能够增加指纹与传感器之间的接触面积,提高电容变化的敏感度。
3.2 信号处理电路信号处理电路是负责接收、放大和处理指纹传感器输出的电信号的电路。
它通常包括模拟信号处理电路和数字信号处理电路两部分。
模拟信号处理电路负责对指纹传感器输出的模拟信号进行放大、滤波等处理,将其转换成适合数字信号处理电路处理的信号。
数字信号处理电路负责对模拟信号进行数字化处理,包括滤波、增强、特征提取等。
3.3 控制电路与接口控制电路与接口主要负责指纹模块与外部设备之间的通信和控制。
它通常包括微处理器、存储器、通信接口等。
指纹识别模块程序及原理图
程序:#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int#define Dbus P0#define buffer1ID 0x01#define buffer2ID 0x02#define queren 0x88#define tuichu 0x84#define shanchu 0x82sbit B0=B^0;sbit B7=B^7;sbit jidianqi=P3^6;sbit RS=P2^2;sbit RW=P2^1;sbit E1=P2^0;sbit LEDK=P3^4; //控制背光sbit SCLK=P2^3;sbit IO=P2^5;sbit RST=P2^4;uchar code ta[8]={0x00,0x51,0x09,0x10,0x05,0x02,0x11,0xbe}; uchar data a[7]; // 秒分时日月星期年uchar dz[4]; //存键输入值uchar mima[7];uchar mimaID[6]={1,2,3,4,5,6};uchar data K;uchar data Key;uint PageID;uchar data querenma;uchar sum[2];int summaf,summas;uchar code nian[]={"年"};uchar code yue[]={"月"};uchar code ri[]={"日"};uchar code xinqi[]={"星期"};uchar code mao=0x3a;unsigned char code text1[]={" 请按指纹"};unsigned char code text2[]={" 请再次按指纹"};unsigned char code text3[]={" 指纹采集成功"};unsigned char code text4[]={"请按任意键继续"};unsigned char code text5[]={" 指纹采集失败"};unsigned char code text6[]={"输入删去的指纹号"};unsigned char code text7[]={" 删指纹号成功"};unsigned char code text8[]={"按键一:增加指纹"};unsigned char code text9[]={"按键二:删去指纹"};unsigned char code text10[]={" 请重新按指纹"};unsigned char code text11[]={"清空指纹库成功"};unsigned char code text12[]={" 没搜索到指纹"};unsigned char code text13[]={"请先按键再刷指纹"};unsigned char code text14[]={" 请重新操作"};unsigned char code text15[]={" 删去失败"};unsigned char code text16[]={" 接收包出错"};unsigned char code text17[]={" 编号为:"};unsigned char code text18[]={"指纹已找到请进"};unsigned char code text19[]={" 该指纹已存储"};unsigned char code text20[]={" 请输入密码"};unsigned char code text21[]={" 密码错误"};unsigned char code text22[]={"按键三:更新密码"}; // @@@ unsigned char code text23[]={"请再次输入密码"};unsigned char code text24[]={"两次输入的密码不"};unsigned char code text25[]={"一致,请重新操作"};unsigned char code text26[]={" 密码更新成功"};另外:void delay(uint tt){ uchar i;while(tt--){for(i=0;i<125;i++);}}void initialize51(){SCON= 0x50; //串口方式1 //REN=1; 允许接收PCON=0x80; //SMOD=1TMOD= 0x20; //定时器1定时方式2TH1= 0xff; //11.0592MHz 模块默认波特率为57600bps TL1= 0xff;TR1= 1; //启动定时器}unsigned char Keycan(void) //按键扫描程序P1.0--P1.3为行线P1.4--P1.7为列线{unsigned char rcode, ccode;P1 = 0xF0; // 发全0行扫描码,列线输入if((P1&0xF0) != 0xF0) // 若有键按下{delay(1);// 延时去抖动if((P1&0xF0) != 0xF0){ rcode = 0xFE; // 逐行扫描初值while((rcode&0x10) != 0){P1 = rcode; // 输出行扫描码if((P1&0xF0) != 0xF0) // 本行有键按下{ccode = (P1&0xF0)|0x0F;//do{;}while((P1&0xF0) != 0xF0); //等待键释放return ((~rcode) + (~ccode)); // 返回键编码}elsercode = (rcode<<1)|0x01; // 行扫描码左移一位}}}return 0; // 无键按下,返回值为0}void KeyDeal(unsigned char Key){ //unsigned char n;if(Key!=0){switch(Key){case 0x11: K=1; break;case 0x21: K=2; break;case 0x41: K=3; break;case 0x81: break; //K=funguanliyuan;case 0x12: K=4; break;case 0x22: K=5; break;case 0x42: K=6; break;case 0x82: K=34;break; //K=funshanchu;case 0x14: K=7; break;case 0x24: K=8; break;case 0x44: K=9; break;case 0x84: break; //K=funtuichu;case 0x18: break; //K=shuazhiwencase 0x28: K=0; break;case 0x48: break;case 0x88: break; //K=funqueren;default: break;}}}//*************************************//12864//读12864忙void ReadBusy(void){unsigned char ch;cheak:Dbus=0xff;RS=0;RW=1;E1=1;ch=Dbus;E1=0;ch=ch|0x7f;if(ch!=0x7f)goto cheak;}//向LCD写命令void WriteCommand(uchar command){ReadBusy();RW=0;Dbus=command;E1=1;E1=0;}//向LCD写数据void WriteData(uchar Lcd_data){ReadBusy();RS=1;RW=0;Dbus=Lcd_data;E1=1;E1=0;}//清屏函数清DDRAMvoid Clrram (void){WriteCommand(0x01);}//LCD12864初始化程序void Lcd_int(){WriteCommand(0x30); //30---基本指令动作WriteCommand(0x0c); //开显示,关游标WriteCommand(0x01); //清屏,地址指针指向00HWriteCommand(0x02);}//LCD12864显示时间void playtime(){uchar i,n3,n4,y1,y2,r1,r2,s1,s2,f1,f2,m1,m2;WriteCommand(0x80); //指定第一行显示位置for(i=0;i<16;i++)WriteData(text13[i]); //显示LCD12864并行显示n3=a[6]>>4; n4=a[6]&0x0f;WriteCommand(0x90); //指定第二行显示位置WriteData(0x32);WriteData(0x30);WriteData(0x30+n3);WriteData(0x30+n4);for(i=0;i<2;i++) WriteData(nian[i]);y1=a[4]>>4; y2=a[4]&0x0f;WriteData(0x30+y1);WriteData(0x30+y2);for(i=0;i<2;i++) WriteData(yue[i]);r1=a[3]>>4; r2=a[3]&0x0f;WriteData(0x30+r1);WriteData(0x30+r2);for(i=0;i<2;i++)WriteData(ri[i]);WriteCommand(0x88); //指定第三行显示位置for(i=0;i<4;i++)WriteData(xinqi[i]);WriteData(a[5]+0x30);s1=a[2]>>4;s2=a[2]&0x0f; f1=a[1]>>4;f2=a[1]&0x0f; m1=a[0]>>4;m2=a[0]&0x0f;WriteCommand(0x98); //指定第四行显示位置WriteData(0x30+s1);WriteData(0x30+s2);WriteData(mao);WriteData(0x30+f1);WriteData(0x30+f2);WriteData(mao);WriteData(0x30+m1);WriteData(0x30+m2);}//*************************************//12864//*********************************//ds1302控制uchar r1302() //读数据ds1302{ uchar i;for(i=0;i<8;i++){B>>=1;B7 = IO;SCLK=1;SCLK=0;}return B;}void w1302(uchar co) // 写ds1302 单字节{uchar i;B = co;for(i=0;i<8;i++){IO = B0; //原来是使用ACC寄存器,但不行,后改使用B寄存器后才正常运行???SCLK=1;SCLK=0;B>>=1;}}void w(uchar a, uchar d) //寻址,写数{RST = 0;SCLK = 0;RST = 1;w1302(a);w1302(d);SCLK = 1;RST = 0;}uchar r(uchar a) //寻址,读数{uchar r;RST = 0;SCLK = 0;RST = 1;w1302(a);r=r1302();SCLK = 1;RST = 0;return r;}void wclo(uchar *p) //写多字节ds1302 {uchar i;w(0x8e,0x00); //写允许RST=0;SCLK=0;RST=1;w1302(0xbe); //写多字节命令for(i=0;i<8;i++)w1302(*(p+i)); //写时钟数据w(0x00,0x50); //??? 启动定时器SCLK=1;RST=0;}void rclo(uchar *p) //读出多字节ds1302 {uchar i;RST=0;SCLK=0;RST=1;w1302(0xbf);for(i=0;i<7;i++)*(p+i) = r1302(); //读出时钟数据SCLK=1;RST=0;}//***************************************//void SFG_getimage() //录入指纹图像{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;TI=0;summaf=0x05;SBUF=summaf;while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_genchar(uchar bufferID) //生成特征并存于charbuffer1/2 调用后单片机波特率变化@@@ {uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X04;while(TI==0);TI=0;SBUF=0X02;while(TI==0);TI=0;SBUF=bufferID;while(TI==0);TI=0;summaf=0x07+bufferID; sum[0]=summaf;sum[1]=summaf>>8; SBUF=sum[1];while(TI==0)TI=0;SBUF=sum[0];while(TI==0)TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF; while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_regmodel() //合并生成模板{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X05;while(TI==0);TI=0;SBUF=0X00;while(TI==0);summaf=0x09;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_storechar(uint pageID) //储存模板ID=1010也储存成功ID>=1011 querenma=0x18?@@@{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X06;while(TI==0);TI=0;SBUF=0X06;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;ID1=pageID;ID2=pageID>>8; SBUF=ID2;while(TI==0);TI=0;SBUF=ID1;while(TI==0);TI=0;summaf=0x0e+ID1+ID2; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_empty() //清空指纹库{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X0d;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x11;SBUF=summaf;while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_fastsearch(uchar bufferID) //搜索指纹返回指纹ID号sum、pagenum>255都会使程序卡@@@ {uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X08;while(TI==0);TI=0;SBUF=0X1b;while(TI==0);TI=0;SBUF=bufferID;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=180;while(TI==0);TI=0;summaf=9+0x1b+bufferID+180; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF; //接收到的ID号while(RI==0);RI=0;while(RI==0);RI=0;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void SFG_enroll() //自动注册模板返回存储ID =录图像+合并生成模板+储存模板{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X10;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x14;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void SFG_deletchar(uint pageID) //删除指纹校验和在2字节的页码处应分高低字节相加{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);SBUF=0X00;while(TI==0);TI=0;SBUF=0X07;while(TI==0);TI=0;SBUF=0X0c;while(TI==0);TI=0;ID1=pageID;ID2=pageID>>8; SBUF=ID2;while(TI==0);TI=0;SBUF=ID1;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=1;while(TI==0);TI=0;summaf=0x15+ID1+ID2; sum[0]=summaf;sum[1]=summaf>>8;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_writereg(uchar N) //设置波特率{uchar i;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X05;while(TI==0);TI=0;SBUF=0X0e;while(TI==0);TI=0;SBUF=4;while(TI==0);TI=0;SBUF=N;while(TI==0);TI=0;summaf=0x1a;sum[0]=summaf;sum[1]=0;SBUF=sum[1];while(TI==0);TI=0;SBUF=sum[0];while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];}void SFG_identify() //自动验证指纹录图像+生成特征+搜索{uchar i,ID1,ID2;SBUF=0xef;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0XFF;while(TI==0);TI=0;SBUF=0X01;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;SBUF=0X03;while(TI==0);TI=0;SBUF=0X11;while(TI==0);TI=0;SBUF=0X00;while(TI==0);TI=0;summaf=0x15;SBUF=summaf; //校验和while(TI==0);TI=0;for(i=0;i<9;i++){while(RI==0);RI=0;}while(RI==0);RI=0;querenma=SBUF;while(RI==0);RI=0;ID1=SBUF;while(RI==0);RI=0;ID2=SBUF;while(RI==0);RI=0;while(RI==0);RI=0; //得分while(RI==0);RI=0;sum[1]=SBUF;while(RI==0);RI=0;sum[0]=SBUF;summas=(sum[1]<<8)+sum[0];//PageID=ID1;PageID=(ID1<<8)+ID2;}void shuazhiwen(){uchar i,IDs1,IDs2,IDs3;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text1[i]); //显示LCD12864并行显示请按指纹//SFG_getimage();//SFG_genchar(1);//SFG_fastsearch(1);SFG_identify();while(querenma==2)SFG_identify();if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text18[i]); //显示LCD12864并行显示指纹通过门已开IDs1=PageID/100;IDs2=PageID/10%10;IDs3=PageID%10;WriteCommand(0x88); //指定第三行显示位置for(i=0;i<10;i++)WriteData(text17[i]); //显示LCD12864并行显示编号为:WriteData(0x30+IDs1);WriteData(0x30+IDs2);WriteData(0x30+IDs3);jidianqi=0; //开门}else if(querenma==9){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text12[i]); //显示LCD12864并行显示没搜索到指纹}else{Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text16[i]); //显示LCD12864并行显示接收包出错}WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}void addfinger(){uchar i,IDa1,IDa2,IDa3;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text1[i]); //显示LCD12864并行显示请按指纹SFG_getimage();while(querenma!=0)SFG_getimage();SFG_genchar(buffer1ID);initialize51();SFG_fastsearch(buffer1ID);while(querenma==1)SFG_fastsearch(buffer1ID);if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text19[i]); //显示LCD12864并行显示该指纹已存储WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}else if(querenma==9){Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text2[i]); //显示LCD12864并行显示请再次按指纹SFG_enroll();while(querenma==2)SFG_enroll();Clrram();if(querenma==0){IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10;WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text3[i]); //显示LCD12864并行显示指纹采集成功WriteCommand(0x88); //指定第三行显示位置for(i=0;i<10;i++)WriteData(text17[i]); //显示LCD12864并行显示编号为:pgaeID WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3);}else if(querenma!=0){WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text5[i]); //显示LCD12864并行显示指纹采集失败WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text14[i]); //显示LCD12864并行显示请重新采集}WriteCommand(0x98); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Clrram();}void deletfinger(){uchar i,j=0;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text6[i]); //显示LCD12864并行显示请输入删去的指纹号for(i=0;i<5;i++)dz[i]=0; //不输入时会默认为000 @@@Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30); //按键有抖动@@@if(Key==0)K=10;if((K>=0)&&(K<=9)){dz[j]=K;if(j<3){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x30+dz[j]);}++j;if(j==4)j=3; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}if(j>=2)PageID=dz[2]+dz[1]*10+dz[0]*100;if(j==1)PageID=dz[1]+dz[0]*10;if(j==0)PageID=dz[0];SFG_deletchar(PageID);if(querenma==0){Clrram();WriteCommand(0x90); //指定第二行显示位置显示删除成功for(i=0;i<16;i++)WriteData(text7[i]); //显示LCD12864并行显示}else{Clrram();WriteCommand(0x90); //指定第二行显示位置显示删除失败for(i=0;i<16;i++)WriteData(text15[i]); //显示LCD12864并行显示}WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);Clrram();}void gaimima(){uchar i,j,mima1[6],mima2[6];Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text20[i]); //显示LCD12864并行显示请输入密码for(i=0;i<6;i++)mima1[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima1[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang } //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();Clrram();j=0;WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text23[i]); //显示LCD12864并行显示请再次输入密码for(i=0;i<6;i++)mima2[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima2[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();if((mima1[0]==mima2[0])&&(mima1[1]==mima2[1])&&(mima1[2]==mima2[2])&&(mima1[3]==mima2[3 ])&&(mima1[4]==mima2[4])&&(mima1[5]==mima2[5])){for(i=0;i<6;i++)mimaID[i]=mima1[i];WriteCommand(0x80); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text26[i]); //显示LCD12864并行显示密码更新成功WriteCommand(0x88); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}else{WriteCommand(0x80); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text24[i]); //显示LCD12864并行显示两次输入的密码不WriteCommand(0x90); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text25[i]); //显示LCD12864并行显示一致,请重新操作WriteCommand(0x88); //指定第四行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Clrram();}void guanliyuan(){ uchar i,j;Clrram();WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text20[i]); //显示LCD12864并行显示请输入密码for(i=0;i<6;i++)mima[i]=0;Key=Keycan();while(Key!=queren){Key=Keycan();KeyDeal(Key);delay(30);if(Key==0)K=10;if((K>=0)&&(K<=9)){mima[j]=K;if(j<6){WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x0f);}++j;if(j==7)j=6; //@@#yinhuang} //显示LCD12864并行显示if(K==34) //按了删除键{if(j==0){WriteCommand(0x88); //指定第三行显示位置WriteData(0x20);}else{--j;WriteCommand(0x88+j); //指定第三行显示位置WriteData(0x20);}}}Clrram();if((mima[0]==mimaID[0])&&(mima[1]==mimaID[1])&&(mima[2]==mimaID[2])&&(mima[3]==mimaID[3])&& (mima[4]==mimaID[4])&&(mima[5]==mimaID[5])){while(Keycan()!=tuichu){WriteCommand(0x90); //指定第二行显示位置按键1:增加指纹for(i=0;i<16;i++)WriteData(text8[i]); //显示LCD12864并行显示WriteCommand(0x88); //指定第三行显示位置按键2:删除指纹for(i=0;i<16;i++)WriteData(text9[i]); //显示LCD12864并行显示WriteCommand(0x98); //指定第三行显示位置按键3:改密码for(i=0;i<16;i++)WriteData(text22[i]); //显示LCD12864并行显示KeyDeal(Keycan());switch(K){case 1: addfinger();K=6; break;case 2: deletfinger(); break;case 3: gaimima(); break;default: break;}}}else{WriteCommand(0x90); //指定第二行显示位置for(i=0;i<16;i++)WriteData(text21[i]); //显示LCD12864并行显示密码错误WriteCommand(0x88); //指定第三行显示位置for(i=0;i<16;i++)WriteData(text4[i]); //显示LCD12864并行显示请按任意键继续while(Keycan()==0);}Key=0;}void main(){initialize51();LEDK=0;Lcd_int();Clrram();wclo(ta);delay(100);//SFG_empty();///@@@@//SFG_deletchar(255);//SFG_storechar(1011);//SFG_fastsearch(1);// WriteCommand(0x90); //指定第二行显示位置// WriteData(0x30+((0xf0&querenma)>>4));WriteData(0x30+(0x0f&querenma));while(1){Key=Keycan();if(Key==0x18) //指纹刷机{Clrram();shuazhiwen();Clrram();}if(Key==0x81) //管理员操作{Clrram();guanliyuan();Clrram();}rclo(a); playtime(); delay(100); jidianqi=1; }}。
FPC1020指纹模块用户使用手册
IDWD1020指纹识别模块用户手册IDWD1020 Fingerprint Module User’s Guide(Ver 1.1)北京艾迪沃德科技发展有限公司2014年6月第二版目录(一)概述 (1)(二)通讯协议 (2)2.1通讯处理过程 (2)2.2通讯包P ACKET 的分类 (3)2.2.1命令包Command packet (3)2.2.2响应包Response packet (3)2.2.3指令/响应的数据包Data Packet (3)2.3通讯包的帧结构 (4)2.3.1通讯包Parket识别代码 (4)2.3.2命令包(Command packet )的帧结构 (4)2.3.3响应包(Response packet)的帧结构 (5)2.3.4指令数据包(Command Data Packet)的帧结构 (5)2.3.5响应数据包(Response data packet)的帧结构 (6)(三)通讯命令(COMMAND )综述 (7)3.1指纹特征模板(T EMPLATE R ECORD)的数据结构 (7)3.2命令列表(C OMMAND L IST ) (7)(四)各通讯命令(COMMAND)详细说明 (9)4.1连接测试(CMD_TEST_CONNECTION) (9)4.2设置参数(CMD_SET_PARAM) (10)4.3读取参数(CMD_GET_PARAM) (13)4.4读取设备信息(CMD_DEVICE_INFO) (14)4.5使模块进入IAP模式(CMD_ENTER_IAP_MODE) (15)4.6采集指纹图像(CMD_GET_IMAGE) (16)4.7检测手指(CMD_FINGER_DETECT) (17)4.8上传指纹图像到主机(CMD_UP_IMAGE_CODE) (18)4.9下载指纹图像到模块(CMD_DOWN_IMAGE) (20)4.10控制采集器背光灯(CMD_SLED_CTRL)开/关 (22)4.11保存指纹模板数据到模块指纹库(CMD_STORE_CHAR) (23)4.12读取指纹库中的指纹并暂存在指定的R AM B UFFER中(CMD_LOAD_CHAR) (24)4.13将暂存在R AM B UFFER中的指纹模板上传到主机(CMD_UP_CHAR) (25)4.14下载指纹模板数据到模块指定的R AM B UFFER(CMD_DOWN_CHAR) (26)4.15删除指定编号范围内的指纹(CMD_DEL_CHAR) (28)4.16获取指定编号范围内可注册的首个编号(CMD_GET_EMPTY_ID) (29)4.17检查指定的编号是否已被注册(CMD_GET_STATUS) (30)4.18检查指定编号范围内的指纹库是否有数据损坏(CMD_GET_BROKEN_ID) (31)4.19获取指定编号范围内已注册的指纹总数(CMD_GET_ENROLL_COUNT) (32)4.20从暂存在I MAGE B UFFER中的指纹图像产生模板(CMD_GENERATE) (33)4.21合成指纹模板数据用于入库(CMD_MERGE) (34)4.22指定2个R AM B UFFER之间的模板做比对(CMD_MATCH) (35)4.23指定编号范围的1:N识别(CMD_SEARCH) (36)4.24指定R AM B UFFER与指纹库中指定编号的模板比对(CMD_VERIFY) (37)4.25设置模块序列号(CMD_SET_MODULE_SN) (38)4.26读取模块序列号(CMD_GET_MODULE_SN) (40)4.27取消采集指纹(CMD_FP_CANCEL) (41)4.28获取已注册ID列表(CMD_GET_ENROLLED_ID_LIST) (42)4.29进入休眠状态(CMD_ENTER_STANDBY_STATE) (44)4.30通讯错误返回(I NCORRECT C OMMAND) (45)4.31注意事项 (45)(五)响应(RESPONSE)及错误代码表(ERROR CODE) (46)(六)登记及比对流程图 (47)6.1光学及面阵式半导体指纹采集器模块的注册流程(E NROLL P ROCESS) (47)6.2滑动采集器模块的注册流程(E NROLL P ROCESS) (48)6.3光学及面阵式半导体采集器模块的验证及识别流程(V ERIFY &I DENTIFY) (49)6.4滑动采集器模块指纹验证和识别流程(V ERIFY &I DENTIFY ) (50)(七)硬件描述 (51)7.1主处理板尺寸 (51)7.2指纹传感器尺寸图..................................... 错误!未定义书签。
智能门锁指纹识别模块的安装说明
智能门锁指纹识别模块的安装说明智能门锁是现代家居生活中的重要组成部分,为了提高家庭安全性,越来越多的家庭开始安装智能门锁指纹识别模块。
下面将为您介绍智能门锁指纹识别模块的安装步骤。
一、准备工作在安装之前,请确保您具备以下物品:1. 智能门锁指纹识别模块一套;2. 电池或电源适配器;3. 所需工具,如螺丝刀、电钻等;4. 安装支架(根据产品型号)。
二、安装支架1. 首先,使用螺丝刀将门把手卸下。
2. 选择合适的位置安装支架,确保支架与门锁底座对齐。
3. 使用电钻钻孔,然后将支架紧固在门上。
三、连接电源1. 如果您使用的是电池供电,首先打开智能门锁指纹识别模块的电池仓盖,安装好电池,并将仓盖关闭。
2. 如果您使用的是电源适配器供电,将适配器插头插入智能门锁指纹识别模块上的电源插孔。
四、固定智能门锁指纹识别模块1. 将智能门锁指纹识别模块插入支架上的插槽,并轻轻向内按压,直到听到"卡槽卡入声"。
2. 验证指纹识别模块是否安装牢固,确保其不会松动。
五、测试指纹识别功能1. 按下指纹识别模块上的开锁按钮,屏幕将亮起。
2. 将您的手指放在指纹识别器上,让其读取指纹。
3. 等待片刻,如果指纹验证通过,门锁就会自动打开。
六、设置其他功能(可选)一些智能门锁指纹识别模块还提供了其他功能,例如密码锁、卡片解锁等。
您可以根据需要设置并使用这些功能。
七、注意事项1. 安装过程中请小心操作,避免受伤或损坏产品。
2. 在安装之前,请确保电池电量充足或使用适配器供电。
3. 若指纹识别不能正常工作,请检查指纹识别模块与门的对齐情况,并确保手指清洁无异物。
通过以上几个简单步骤,您就可以轻松地安装智能门锁指纹识别模块了。
这款智能设备将为您提供更加方便快捷、安全可靠的家居体验。
祝您安装顺利,享受智能门锁带来的便利!八、维护与保养一旦完成安装,为了保持智能门锁指纹识别模块的正常运行,您需要定期进行维护和保养。
1. 清洁指纹识别器:使用柔软的布和少量清洁剂轻轻擦拭指纹识别器表面,去除指纹和污渍。
指纹模块应用方案
指纹模块应用方案指纹模块是一种集成指纹采集、图像处理、特征提取和特征匹配等功能的模块。
它通过扫描和记录指纹图像,将指纹特征提取出来,并与预先存储的指纹特征进行匹配,从而实现指纹识别的功能。
指纹模块可以应用在各个领域,下面将介绍几种常见的指纹模块应用方案。
1.门禁系统应用方案:指纹模块可以应用在门禁系统中,通过与门禁控制器相连接,实现对门禁设备的指纹识别功能。
用户可以通过注册指纹信息,并将其存储在门禁控制器中,然后通过将手指放在指纹模块上,进行指纹识别验证,验证通过后门禁设备会打开。
2.安防监控系统应用方案:指纹模块可以应用在安防监控系统中,用于对监控设备进行身份识别。
例如,在一些需要限制访问权限的区域,只有特定人员的指纹信息被授权后才能进入,其他人员的指纹信息无法通过验证。
3.个人设备解锁应用方案:指纹模块可以应用在个人设备上,例如手机、平板电脑和笔记本电脑等,用于对设备进行解锁。
用户可以通过在设备上注册指纹信息,然后使用指纹进行解锁而无需输入密码或图案解锁。
这种方案不仅方便了用户,还提高了设备的安全性。
4.银行和金融领域应用方案:指纹模块可以应用在银行和金融领域,用于对用户进行身份验证。
用户在办理账户或进行交易时,可以通过指纹识别进行身份验证,确保账户的安全性和交易的合法性。
5.医疗健康领域应用方案:指纹模块可以应用在医疗健康领域,用于对患者和医务人员进行身份验证。
例如,医院可以使用指纹模块来验证医务人员的身份,以确保只有授权人员才能进入特定区域,或者通过指纹识别验证患者的身份,以确保医疗记录和处方的安全性。
除了以上几种常见的应用方案外,指纹模块还可以应用在各个领域的人员考勤、员工管理、数据加密等方面。
指纹模块的应用方案可以根据实际需求进行定制和开发,以满足不同场景下的指纹识别需求。
指纹识别模块FPM10A用户手册
4.2.1 图像缓冲区------------------------------------------------------------------------------5 4.2.2 特征文件缓冲区------------------------------------------------------------------------------5 4.3 指纹库---------------------------------------------------------------------------------------------------------5 4.4 系统配置参数------------------------------------------------------------------------------------------------5 4.4.1 波特率控制------------------------------------------------------------------------------5 4.4.2 安全等级------------------------------------------------------------------------------6 4.4.3 数据包长度------------------------------------------------------------------------------6 4.5 系统状态寄存器---------------------------------------------------------------------------------------------6 4.6 模块系统口令------------------------------------------------------------------------------------------------6 4.7 模块地址------------------------------------------------------------------------------------------------------6 4.8 随机数产生器------------------------------------------------------------------------------------------------6 第五章 通讯协议---------------------------------------------------------------------------------------7 5.1 数据包格式------------------------------------------------------------------------------------7 5.2 数据包的效验与应答---------------------------------------------------------------------7 第六章 模块指令系统------------------------------------------------------------------------------9 6.1 系统类指令---------------------------------------------------------------------------------9 6.2 指纹处理类---------------------------------------------------------------------------------12 6.3 其它指令------------------------------------------------------------------------------------17 6.4 指令集汇总表------------------------------------------------------------------------------19 第七章 程序开发指南------------------------------------------------------------------------------------------00 7.1 初始化模块------------------------------------------------------------------------------------00 7.2 信息流向图------------------------------------------------------------------------------------------00 7.3 典型工作流程---------------------------------------------------------------------------------------00 7.4 开发应用------------------------------------------------------------------------------00 附录 1 外形尺寸---------------------------------------------------------------------------------------20 F1.1 分体式模块外形尺寸------------------------------------------------------------------------------20 F1.2 光学指纹传感器(或一体式模块)外形尺寸----------------------------------00 附录 2 常见技术问题问答------------------------------------------------------------------------------------ 00
SFG系列指纹识别模块介绍
SFG系列指纹识别模块介绍R30X系列指纹识别模块是圣非格科技有限公司2009年推出的最新产品,采用了最先进的指纹传感器和高性能的DSP处理器,内嵌完整的指纹识别算法和协议。
具有指纹采集,指纹比对,搜索和存储等功能的智能型模块。
与同类指纹产品相比,因R30X系列采用自适应参数调节机制,对指纹的适应性更强,对干湿手指都有较好的成像质量,适用人群更广泛。
1.应用范围保险柜(箱)、门锁门禁系统与PC联机的指纹识别及认证系统等2.主要技术指标序号 项目 参数 备注1 工作电压 DC3.6-7.0V2 工作电流 100mA3 峰值电流 150mA4 安全等级 5级 从低到高:1、2、3、4、55 拒真率(FRR) <0.1% 安全等级为3时6 认假率(FAR) <0.001% 安全等级为3时7 图像处理时间 <0.4秒8 1:1000搜索时间 <1秒9 储存容量 250枚10 UART(TTL逻辑电平)波特率(9600×N)bps ,N=1-12默认N取6,即57600bps11 USB1.112 温度 -20℃-+50℃13 工作湿度 10%-90%(无凝露)14 储存温度 -30℃-+80℃15 储存湿度 <90%(无凝露)16 模块外形尺寸 48×32mm17 传感器尺寸 54×24×21mm二、硬件接口1.外部接口尺寸图R305光学式一体式指纹模块:R305F电容式指纹模块2.串行通讯引脚号 名称 定义 描述1 VIN 电源输入 电源正输入端2 GND 电源和信号地 电源和信号地3 TD 数据发送 串行数据输出,TTL逻辑电平4 RD 数据接收 串行数据输入,TTL逻辑电平模块通过串行通讯接口,可直接与采用3.3V或者5V电源的单片机进行通讯;指纹模块的数据发送端(TD)接上位机的数据接收端(RXD),指纹模块的数据接收端(RD)接上位机的数据发送端(TXD)。
ZAZ用户手册
深圳市指昂科技有限公司Shenzhen Zhi Ang Science and Technology Co., Ltd.ZAZ-050指纹识别模块目录第一章概述 (3)1.1 产品原理介绍 (3)1.2 产品规格 (3)第二章硬件接口 (4)2.1 上电延时时间 (4)2.2 接口定义(TTL电平) (4)2.3 接口定义(USB电平).................................................................... 错误!未定义书签。
第三章系统资源 . (5)3.1 缓冲区 (5)3.1.1 图像缓冲区 (5)3.1.2 特征文件缓冲区 (5)3.2 指纹库 (5)3.3 系统配置参数 (5)3.3.1 波特率控制(参数序号:4) (5)3.3.2 安全等级(参数序号:5) (5)3.3.3 数据包长度(参数序号:6) (5)第四章通讯协议 (6)1. 数据包格式 (6)2. 数据包的校验与应答 (6)第五章模块指令系统 (7)1 指纹处理类指令 (7)1)获取图像ZAZ_GetImg (7)2)图像生成特征ZAZ_GenChar (7)3)特征合成模板ZAZ_RegModel (8)4)上传特征或模板ZAZ_UpChar (8)5)下载特征或模板ZAZ_DownChar (8)6)存储模板ZAZ_Store (9)7)读出模板ZAZ_LoadChar (9)8)删除模板ZAZ_DeletChar (10)9)清空指纹库ZAZ_Empty (10)10)精确比对两枚指纹特征ZAZ_Match (10)11)搜索指纹ZAZ_Search (11)12)读有效模板个数ZAZ_TempleteNum (11)2 系统设置类指令 (11)13)设置模块系统基本参数ZAZ_SetSysPara (11)15)读系统参数ZAZ_ReadSysPara (12)14)写记事本ZAZ_WriteNotepad (12)16)读记事本ZAZ_ ReadNotepad (13)17)读取指纹库列表ZAZ_ ReadFpflash (13)第六章开发流程图 (14)第七章设备尺寸图 (15)第一章概述ZAZ-050指纹模块系指昂科技推出的,以高速DSP处理器为核心,结合具有公司自主知识产权的光学指纹传感器,具有指纹录入、图像处理、指纹比对、搜索和模板储存等功能的智能型模块。
指纹识别模块原理图
指纹识别模块原理图
在指纹识别模块的原理图中,可以分为以下几个部分:
1. 指纹传感器:用于感知和采集用户手指上的指纹信息。
它由一组微小的传感器阵列组成,每个传感器可以测量细微的指纹特征。
传感器通常使用电容式或光学式技术。
2. 指纹图像处理器:负责对从指纹传感器采集到的原始数据进行处理和增强。
包括放大、滤波和去噪等操作,以提高指纹图像的质量和可靠性。
3. 特征提取算法:将处理后的指纹图像转化为数学表示,抽取出指纹特征。
常用的算法包括细节特征、方向特征和最小框架等。
4. 指纹模板存储:将提取的指纹特征转化为模板,并进行存储。
模板通常是一个由特征值和其相关信息组成的矩阵。
存储方式可以采用数据库或内部存储器。
5. 指纹匹配算法:对采集到的指纹特征和存储的指纹模板进行比对。
匹配算法可以采用多种方式,如1:1比对、1:N搜索等,以确定是否匹配成功。
6. 决策处理器:根据匹配结果,进行相应的决策处理。
例如,匹配成功可以授权解锁或认证通过,匹配失败可以拒绝访问或触发报警等。
7. 接口电路:提供模块与其他设备或系统的连接。
常见的接口有UART、SPI、I2C等,以便模块与宿主设备进行数据传输和控制。
以上是指纹识别模块的基本原理,不同的厂商和型号可能会有一些细微的差异,但总体流程和功能相似。
(完整版)指纹识别模块单片机程序
(完整版)指纹识别模块单片机程序#include#include#define TRUE 1unsigned char SaveNumber=0,searchnum=0;unsigned int S earchNumber=0;unsigned int clk0=0;sbit relay =P1^4; //继电器引脚sbit buzzer=P1^5; //蜂鸣器引脚sbit red= P2^7;//录入模式指示灯在板子靠近单片机处sbit green= P2^0;//识别模式指示灯在板子远离单片机处sbit k1=P3^3; //模式识别sbit k2=P3^4; //录入一次指纹sbit k3=P3^2; //清除所有指纹(10个指纹清除)//变量定义:unsigned char code tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//表:共阳数码管0-9//数码管引脚定义:sbit SMG_g = P1^3; //定义数码管阳级控制脚(个位)//由于程序中定时器被用我们用一位数码管显示且为静太显示所以推荐大家用1602或者12864液晶bit changeflag=0,modeflag=0,clearallflag=0; //默认为识别模式,如果为1为录入指纹模式,每录入一次SaveNumber++ //////////////////////////////////////常用指令定义///////////////////////////////Verify Password :验证设备握手口令unsigned char code VPWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b}; //回送12个//设置设备握手口令unsigned char code STWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a}; //回送12个//GetImage :探测手指并从传感器上读入图像unsigned char code GIMG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05}; //回送12个//Gen Templet1 :根据原始图像生成指纹特征1unsigned char code GENT1[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08}; //回送12个//Gen Templet2 :根据原始图像生成指纹特征2unsigned char code GENT2[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09}; //回送12个//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个//Merge Templet ;将CharBufferA与CharBufferB中的特征文件合并生成模板,结果存于ModelBuffer。
指纹模块ZFM-206操作手册
第 2 页,共 36 页
杭州指安科技有限公司
第一章 概述
1.1 模块特色
ZFM-206 系列光学指纹模块是杭州指安科技有限公司 2010 年推出的稳定量产的产品。 ZFM-206 系列光学指纹模块以高性能高速 DSP 处理器 AS601 为核心,结合具有公司自主知识产 权的光学指纹传感器,在无需上位机参与管理的情况下,具有指纹录入、图像处理、指纹比对、搜 索和模板储存等功能的智能型模块。和同类指纹产品相比,ZFM-206 模块具有以下特色: ◆ 自主知识产权 光学指纹采集头,模块硬件所有技术,均由杭州指安自主开发;同时杭州指安是杭州晟元芯片 指纹专用芯片 PS1802 和 AS601 的全国总代理。 ◆ 指纹适应性强 指纹图像读取过程中,对干湿手指都有较好的成像质量,适用人群广泛。 ◆ 性价比优 ◆ 二次开发应用简单 无需具备指纹识别专业知识即可应用。用户根据 ZFM-206 模块提供的丰富控制指令,可自行开 发出功能强大的指纹识别应用系统。 ◆ 灵活设置安全等级和波特率 面对不同应用场合,用户可自行设定不同安全等级。 ◆ 唯一性 模块提供的 32 位随机数等功能,可以让应用模块开发的指纹识别应用系统拥有全世界的唯一 性。 ◆ 专业的售中和售后团队 指安科技拥有完备的技术团队,所有员工均来自指纹行业的专业人才,可以对用户开发提供良 好的技术支持和售中售后服务工作。 ◆ 应用范围广 ZFM-206 模块应用广泛,适合从高端到低端的所有指纹识别系统。比如:
● 指纹门锁、保险柜、枪盒、金融等安全领域; ● 门禁系统、工控机、POS 机、驾培、考勤等身份领域; ● 私人会所、管理软件、授权许可等管理领域。 开发商可以根据本手册提供的技术资料,开发出从简单到复杂的多种指纹识别应用系统。(公司 还提供基于 PC 的测试软件和基于 51 的 SDK 方便二次开发,具体可与我公司联系)。
指纹锁模块命令
指纹锁模块命令模块命令一、模块指令集:1.GetImage :从传感器上读入图像2.GenTemplet :根据原始图像生成指纹特征3.MoveTemplet :在三个特征缓冲区之间移动特征文件4.MatchTwoTemplet :精确比对CharBufferA与CharBufferB 中的特征文件5.Search :以CharBufferA或CharBufferB中的特征文件搜索整:个或部分指纹库6.MergeTwoTemplet :将CharBufferA与CharBufferB中的特征文件合并生:成模板存于ModelBuffer7.StoreTemplet :将ModelBuffer中的文件储存到flash指纹库中8.LoadTemplet :从flash指纹库中读取一个模板到ModelBuffer9.UpTemplet :将特征缓冲区中的文件上传给上位机10.DownTemplet :从上位机下载一个特征文件到特征缓冲区11.UpImage :上传原始图像12.DownImage :下载原始图像13.DeletOneTemplet :删除flash指纹库中的一个特征文件14.EraseAllTemplet :清空flash指纹库15.ReadParTable :读参数表16.SysConfigure :系统配置指令17.Sleep :休眠指令18.SetSecurLevel :设置安全等级19.SetPwd :设置设备握手口令20.VfyPwd :验证设备握手口令21.Reset :系统复位,进入上电初始状态22.FlashLED :闪灯指示23.CodeUpgrade :在线升级24.WriteNotepad :写记事本25.ReadNotepad :读记事本二、指令数据包(packet)格式指令数据包共分为三类:包标识=01 命令包包标识=02 数据包,且有后续包包标识=08 最后一个数据包,即结束包01命令包格式:1 byte 4 bytes2 bytes 1byte …… 2 bytes包标识01 设备地址码包长度指令参数1 参数2…参数n 校验和02数据包格式:1 byte 4 bytes2 bytes N bytes… 2 bytes包标识02 设备地址码包长度数据校验和08结束包格式:1 byte 4 bytes2 bytes N bytes… 2 bytes包标识08 设备地址码包长度数据校验和数据链路层在编码与解码时,以0xC0作为包起始符和结束符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/*****************************************************************
Get_FPNum()获得当前已注册指纹数
Command ID:0x27
协议头协议长度固定字段命令码协议尾
void User_enroll(unsigned char ucFPIdx);
/*****************************************************************
User_auth()指纹验证
Command ID:0x24
Command:0x01 0x02 0x24 0xff 0x03
2.锁具、电气控制产品同样可用
3.活体采集技术,防伪性强
(3)ATW200
ATW200
使用方式
手指滑动式
采集原理
半导体电容传感
采集点阵
192x8pixel 0.5x13mm
分辨率
500dpi
图像灰度
128级
耐用次数
100万次(10年)
工作温度
-0℃~70℃
防静电(ESD)
> 15KV
选用建议
1.滑动式传感器中感应宽度最大者,手指倾斜影响不大
注册比对性能优越 指纹算法经过多年商用,嵌入式环境下FAR、FRR性能优良
服务好 提供24小时技术支持和全面的ODM定制服务(只需提供规格书)
四、程序分析
在实验代码中我们已经提供了fingermap.c文件,其中对指纹模块的操作进行了封装,用户在使用中只需要调用其中的对应函数就可以实验对应的功能,当然也可以对API进行修改已满足自己的需求.
FPC1011
使用方式
手指按压式
采集原理
反射式电容测量法
采集点阵
152x200pixel(可调)10x14mm
分辨率
363dpi
图像灰度
256级,增强清晰
耐用次数
超强保护层100万次(10年)
工作温度
-20℃~85℃
防静电(ESD)
> 15KV
选用建议
1.产品性能世界领先,适用于高端指纹产品
2.采种较大,适用于锁具、电气控制产品,不适用于小型数码产品
User_erase()删除指纹记录
Command ID:0x22
Command:0x01 0x02 0x22 0xff 0x03
******************************************************************/
void User_erase(unsigned char ucFPIdx);
指纹模块功能:
活体指纹识别
脱机指纹注册(250枚)
脱机指纹比对(1:1、1:N)
可内置应用程序(固件)
可接入任意指纹传感器件(光学、半导体电容、半导体温感、半导体压感、按压式、滑动式)
丰富的接口支持(32位GPIO、SPI、UART、I2C、RF)
指纹模块应用范围:
指纹门锁
指纹保险柜(箱)
指纹文件柜
> 15KV
选用建议
?活体采集技术,防伪性强
(5)TAS5110
TAS5110
(Sensor) (透镜)
使用方式
手指按压式
采集原理
光学CMOS传感
采集点阵
357x293pixel(可调)
分辨率
700dpi
图像灰度
256级
耐用次数
100万次(10年)
工作温度
0℃~60℃
选用建议
1.全球用量最大的光学指纹仪URU选用
3.活体采集技术,防伪性强
(2)SW6888
SW6888
使用方式
手指滑动式
采集原理
半导体电容传感
采集点阵
192x16pixel 0.8x9.8mm
分辨率
500dpi
图像灰度
256级
耐用次数
100万次(10年)
工作温度
-20℃~70℃
防静电(ESD)
> 15KV
选用建议
1.唯一国内设计制造,性价比高,适用于小型数码产品
Set_SecuLv()设置指纹比对时的严格等级(00-04)
Command ID:0x28
协议头协议长度固定字段命令码安全级别协议尾
020401 0228MM02 01 03
******************************************************************/
本指纹模块具有200枚以上指纹存储能力,可扩展到上千枚,具备1秒以内的指纹比对性能,支持1:1和1:N两种比对模式,能够任意兼容各类指纹传感芯片,允许客户内置应用程序,减化应用方案,节省开发成本。
本模块可提供全面的ODM定制服务,时时刻刻、轻轻松满足您的个性化指纹产品需求。
功能用途
指纹模块是嵌入式指纹产品的核心。她面向锁具、安防和工控企业,为他们提供一个“快速应用指纹技术”的硬件平台。在这个平台上,企业只需专注于原有产品,无须关注指纹传感器的接入、指纹注册比对等远离其核心价值的技术,从而在不增加研发成本的同时提升原有产品的应用价值。
电源管理
正常/休眠
Flash RAM
256K
接口
32位GPIO、SPI、UART、I2C、RF
Timer
1个可用
中断
10个可用
指纹模块性能参数:
参数
参数值
参数
参数值
指纹模板大小
360byte
支持的传感器
FPC1011
指纹容量(片内)
250枚
SW6888
识假率FAR
1/10000
ATW200
拒真率FRR
/*****************************************************************
User_enroll()注册用户
Command ID:0x21
Command:0x01 0x02 0x21 0xff 0x03
******************************************************************/
一.准备实验需要的设备。
硬件:试验箱、电源线、串口线、网线、指纹扫描模块、PC机一台。
软件:虚拟机、超级终端、FTP软件。
二.连线方式
将指纹识别模块安装在经典2410DVP试验箱的168扩展槽中。
三.实验原理
指纹模块是面向广阔的锁具市场、保险箱(柜)、安防及工控市场,推出的。她是由32位高性能可编程处理器、活体指纹采集芯片和指纹识别核心固件等构成的一个独立的嵌入式指纹识别系统。
2.目前分辨率较高的指纹传感芯片
3.采集面积大,手指方向任意
4.适用锁具、工控类产品
五、实验步骤
1、测试模块
我们通过串口测试工具compt38_setup.exe对该模块进行测试;
2、双击COM Port Toolkit 3.8出现
单击com port configuration
出现下图,请按照下图配置。
我们输入【2】即可注册一个新用户。
输入【2】后又时会出现如图所示的错误,这是正常现象,多试几次就会有正常的输出。注册的时候指纹需要输入三次才能通过,就像图示一样。
指纹工控设备
指纹遥控器
指纹通关设备
指纹POS机
指纹IC卡读卡器
指纹数码产品
指纹电气开关等
技术规格
指纹模块一般参数:
参数
参数值
参数
参数值
工作电压
3.3V
CPU
32bit
工作电流
75mA / 20uA(Sleep)
内部时钟
80M
工作温度
0℃~70℃
ROM
256K
大小尺寸
35x45mm(可定制)
SRAM
256K
[/mnt/yaffs] mount -t nfs -o nolock 192.168.0.56:/arm2410s /host
[/mnt/yaffs]cd /host/usr/lyj/exp/
[/host/usr/qinguang/exp/]./fingermap
附录1
各款传感器主要参数
(1) FPC1011
020301 012702 01 03
******************************************************************/
void Get_FPNum();
/*****************************************************************
1/1000
LTTSS500
比对时间
< 1秒
TAS5110
比对方式
1:1 / 1:N
安全等级
5级(可调)
注:指纹采集传感器选择请参考附录1。
模块优势
可编程 直接在模块的主控MCU中写入应用程序
兼容性强 能够兼容全球各种指纹传感芯片(光感、电容、电感、温感、压感,滑动式和按压式)(用户可指定)
指纹容量大 片内可存储250枚以上指纹,支持片外扩展
******************************************************************/
void User_clear();
/*****************************************************************