指纹算法从获取的指纹图像提取的特征,代表了指纹的信息。指纹的存储、对比和搜索都是通过操作指纹特征来完成的。
指纹处理包括两个过程:指纹登录过程和指纹匹配过程(其中指纹匹配分为指纹对比(1:1)和指纹搜索(1:N)两种方式)。
指纹登录时,对每一枚指纹录入2次,将2次录入的图像进行处理,合成模块存储于模块中。
指纹匹配时,通过指纹传感器,录入要验证指纹图像并进行处理,然后与模块中的指纹模板进行匹配比较(若与模块指定的一个模块进行匹配,称为指纹对比方式,即1:1方式;若与多个模板进行匹配,称为指纹搜索方式,即1:N方式),模块给出的匹配结果(通过或者失败)。
1脚(红线):模块主电源,接3.3V供电(请勿接3.3V以上电源,否则烧毁模块!);
2脚(黄线):模块串口TX(发送端),接MCU或TTL串口的RX(接收端);
3脚(白线):模块串口RX(接收端),接MCU或TTL串口的TX(发送端);
4脚(黑线):模块电源地,接3.3V电源地(负极);
5脚(蓝线):模块触摸感应信号输出(高电平为检测到触摸),需接VTI到3.3V。
6脚(绿线):模块触摸感应电路电源(3.3V),可以与1脚(红线)并接。
7脚,8脚为USB信号线,使用串口控制模块时可以悬空不用。
本文用的是STC89C52RC单片机的开发板,其他的硬件需要一个12864屏和蜂鸣器,本次还借用了两个USB转TTL做额外供电用;一个给指纹模块供电,一个给蜂鸣器供电(板子上的蜂鸣器坏了,额外接一个蜂鸣器)。
接线:
蜂鸣器接的是单片机的P1_0,
指纹模块TX和RX分别接单片机的P3_0和P3_1
12864根据原理图改程序定义即可
sbit RS = P0^7;
sbit RW = P0^6;
sbit E = P0^5;
sbit PSB = P0^4;
sbit RES = P0^3;
KEY_UP和KEY_DOWN 是上下移动,KEY_OK和KEY_CANCEL 是确认和取消。
sbit KEY_UP=P3^5; //定义按键输入端口
sbit KEY_DOWN=P3^4;
sbit KEY_OK=P3^3;
sbit KEY_CANCEL=P3^2;
while(1)
{
if(local_date!=base_date) //光标位置变化,则更新显示
{
DisplayUpdata();
base_date=local_date;
}
if(KEY_OK == 0)
{
while(KEY_OK == 0);//等待松开按键
switch(local_date)
{
case 0: //添加指纹
Led_Green_On();
FPM10A_Add_Fingerprint();
Led_Green_Off();
local_date = 0;
DisplayUpdata();
break;
case 1://搜索指纹
Led_Yellow_On();
FPM10A_Find_Fingerprint();
Led_Yellow_Off();
local_date = 1;
DisplayUpdata();
break;
case 2: //清空指纹
FPM10A_Delete_All_Fingerprint();
local_date = 2;
DisplayUpdata();
break;
}
}
//下
if(KEY_DOWN == 0)
{
while(KEY_DOWN == 0); //等待松开按键
if(local_date<=2)
{
local_date++;
if(local_date==3)
local_date=0;
}
}
//上
if(KEY_UP == 0)
{
while(KEY_UP == 0); //等待松开按键
if(local_date>=0)
{
local_date--;
if(local_date==-1)
local_date=2;
}
}
Delay_Ms(100); //延时判断100MS检测一次
}
}
下载好程序之后模块会进行初始化,初始化过程,蜂鸣器会响,初始化完成会再响一次。
初始化完成之后,选择添加搜索指纹,确认ok后按提示操作即可录入指纹
搜索指纹是自动对比指纹库,把手指放上去验证即可。
1,指纹模块的供电是3.3V,不能接5V供电,否则会烧坏;
2,指纹模块工作的电流比较大,如果遇到通讯不正常,可能是供电不够,可以试试额外电源供电;
3,指纹模块的通讯电平是3.3V,如果遇到不兼容3.3VTTL的单片机,可以加一个电平转换模块;
程序还预留了录入指示灯和识别指示灯,需要的可以自己加LED;需要完整工程的可在评论留言获取。