指纹识别模块单片机程序_第1页
指纹识别模块单片机程序_第2页
指纹识别模块单片机程序_第3页
指纹识别模块单片机程序_第4页
指纹识别模块单片机程序_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、#include #include #define TRUE 1unsigned charSaveNumbei=0,searclmum=0;unsigned iiit SeaicliNumber=O;unsigned iiit clk0=0;sbit relay =P 1A4; 继电器引脚sbit buzzei-=PlA5; 蜂鸣器引脚sbit red=P2T;/录入模式指示灯在板子靠近单片机处sbit green= P2P;/识别模式指示灯 在板子远离单片机处sbitkl=P3T;模式识别sbit k2=P3A4; /录入一次指纹sbit k3=P3-2; /?W除所有指纹(10个指纹清除)

2、变量定义:unsigned char code tab10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/表:共阳数 码管0-9数码管引脚定义:sbit SMG_g = P1A3;定义数码管阳级控制脚(个位)由于程序中定时器被用我们用一位数码管显示且为静太显示所以推荐人家用1602或者12864液晶 bit changefiag=0jiiodeflag=0,cleaiallflag=0; 默认为识别模式,如果为1为录入指纹模式, 每录入_次 SaveNumber+7/常用指令定义/Verify Password :验证设备握手I令.OXf

3、f.Oxff.Oxff.Oxff,.OXff.Oxff.Oxff.Oxff,unsignedcharcodeVPWD16= 16,0X01OxOLOJ,0x13.0x00.0x00.0x00,0x00.0x00,Oxlb; 回送 12 个设置设备握手口令unsignedchaicodeSTWD16= 16.0X01OxOLOJ,0x12.0x00.0x00.0x00,0x00.0x00,0x13; 回送 12 个/Getlinage:探测手指并从传感器上读入图像unsigned char code GEvIG14=12, 0X01 .0Xff,0xff,0xff,0xff, 0x01, 0、3

4、丄0x00,0x05; 回送 12个/Gen Templetl:根据原始图像生成指纹特征1unsigned char code GENT114= 13,0X01 .0Xff.0xff.0xff.0xff.0x014,2,1.0x00.0x08;/ 回 送 12个/Gen Templet2:根据原始图像生成指纹特征2unsigned char code GENT214= 13,0X01 .OXff.Oxff.Oxff.Oxff,0x01,0,4.2,2,0x00,0x09; /回送 12个/Search Fmger :以ChaiBufferA或CharBufferB中的特征文件搜索整个或部分指纹

5、库 unsigned char code SEAT18=17, 0X01 .OXffOxffOxffOxff. 0x01, 0,8, 4,1.0,0, 0.0x65, 0x00,0x73; 回送 16 个/Merge Templet ;将ChaiBufferA与CharEuffbrE中的特征文件合并生成模板,结果存 于 ModelBufferounsigned char code MERG14=12, 0X01 .OXff,Oxff,Oxff,Oxff. 0x01, 0,3,5、0x00,0x09;/回 送12个/Store Templet :将ModelBuffer中的文件储存到flash指

6、纹库中unsigned chai code STOR16= 15, 0X01 ,OXff,Oxff,OxffOxff. 0x01, 066,2、0x00,0x00,0x00,OxOf; /回送 12 个Read Noteunsigned char code RDNT14= 13,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0.4,0x19, 0. 0x00,Oxle;/Chai Noteunsigned chai code DENT46=45,0X01 ,OXff,Oxff,OxffOxff. 0x01, 0、36xl&0Q0Q0O0Q0O0Q0g0Q0Q0Q0Q0O0Q

7、0O0O0Q0x0(X0x3d;/DEL one templetunsigned char code DELE_one16= 16. 0X01 ,OXff,Oxff,Oxff,Oxff, 0x01, 0,7, 0x0c,0x00,0x00, 0丄 0x00,0x15;/DEL templet;清空指纹库unsigned char code DELE_all12= 12,0X01 .0Xff0xff.0xff.0xff, 0x01, 0,3, 0x0d.0x00.0xll;/常用指令定义结束/宏定义/#define FALSE 0 #define TCRE 1状态定义表#define on1#d

8、efine off 0#define MAX_NUMEER 63#define _Nop() _nop_()/7/宏定义_结束/unsigned charFifbNumber=O;unsigned charFIFO MAX_NUNIBER+1 =0 ;/*!毫秒延时程序*/void delay 1 ms (unsigned int t)unsigned mt i,j;for(i=O;i=6) checksum=FIFOcount+checksum; / 计算校验和if(count=8)package=FIFO7*0X1004-FIFO8; 计 算包长度stop= TURE;if(stop)if

9、(count=package+8)checksum=checksuni-FIFO count-1 -FIFO count;if(checksum != (FIFO count &Oxff)result=FALSE; /校验失败,置结果标志为elseresult=TURE;flag=O; break;/do 的内容结束/while (clkO = MaxTune) & (count =2)/如果不成功,再验证一次,如呆两次不成功,返回失败return(O);void Cleai_All(void) /清空指纹库delay lms(200);C onmiand (DELE_alL 5 0); 清空

10、指纹库unsigned char IingProcess(unsigned char BUFID) 发获取图像并生成特征文件,存入 BUFED 中输入参数为缓冲区号if(Command(GIMG89) & (FifoNumber= 11) & (FIFO刃=0x00)if(BUFID=l)if(Conunand(GENTh60) & (FifoNumber=ll) & (FIFO9=0x00)return 1;elsereturn 0;else if(BUFID=2)if(Conunand(GENT2.60) & (FifbNumber=ll) & (FIFO9=OxOO)leturn 1;e

11、lsereturn 0;elsereturn 0;return 0;bit Searclifinger(void)/索指纹(发送搜索命令、以及根据返回值确定是否存在)if(Conmiand(SEAT.60) & (FifoNumber= 15) & (FIFO9=0x00)SeaicliNumbei-=FIFO 10*0x 100+FIFO 11 (叟索到的页码/MatchScoie=FIFO 12*0x 1OO+FIFO13町以在此计算得分,从而进行安全级别设定,本程序忽略return 1;elsereturn 0;unsigned char search(void)/索指纹unsigned

12、 char SeaicliBuf=0j=0;while (i=40)/如果采集了 40次,还不成功,直接采集失败,直接退出emoll函数返回0ieturn(O);delaylms(2000);/延时2S开始采集下一个特征开始采集第二个特征while(l)temp=ImgProcess(2); 生成特征 2if (temp=l)/生成特征文件2成功if ( (Conunand(MERG40)& (FifbNumber=ll) & (FIFO9=OxOO)=l)合并成功返回1buzzei-O;delaylms(lOO);buzzer=l;delaylms(lOO);buzzei-O;delayln

13、is(lOO); 响两声,表示生成一个模板成功 buzzer=l;ietuin(l);elsereturn(O);elseif (temp=l)/采集指纹没有成功count+;if (count=25)return(O);void main(void)/i 函数 unsigned char i=0;ETO=1;定时器0开中断TL0=0x97; /17ms 的初值TH0=0xBD;串口初始化SCON=0x50; /UART 方式 1:8 位 UART; REN=1:允 许接收PCON=OxO 0; /SMOD=0波特率不加倍TMOD=Ox21; /T1方式2,用于UART波特率THl=0xFD:

14、TL1 =0xFD; /UART 波特率设置:9600TR1=1;TRO=1;/开定时器0ITO=O;/中断0低电平中断IT1=1;/中断1低电平中断EXO=1;/开中断0EX1=1;/开中断1EA=1;SMG_g = 0;P0 = tabO;/显示 0for(i=0;i6;i+)/开始握手6次,如果没有一次成功,表示模块通信不正常。只要成功就 跳出此循坏if(VefPSW()=l)/与模块握手通过,绿灯亮起。进入识别模式green=O;buzzer=O;delaylms(300);buzzei-1;green=l;red=O;break; 成功就退出这个循坏wlule(l)if(k2=0)/

15、录入一个指纹通过delaylms(lO);if(k2=0)/如果仍为低电平,表示按键有效wlule(k2=0);/ 等待松手if(VefPSW()= 1&modeflag= 1&SaveNumber10)/ 4 模块握:f-if(emoll()=l)/采集两次,生成1个指纹模板成功if(savefuigiire(SaveNumber+1 )=1)/ 保存也成功SaveNumber+y/加一次 PO=tabSaveNumber;delaylms(200);PO=OxFF;/来一次显示,闪烁一次delaylins(200); PO=tabSaveNumber;elsebuzzei-O: for(i

16、=0;i=l&seaiclmum= 162)/只能存入 162 个指纹 PO=tab searchiium;/显示搜索到的指纹模块蜂鸣器响一声/继电器打开约3秒钟relay=O;buzzei-O;delay lms( 100);buzzei-1;delaylms(3000);relay=l;if(seaiclmum=25 5)/不正确的指纹 蜂鸣器响三声PO=tabO显示 0buzzei-O;delavlnis(l00); buzzer= 1 ;delaylms( 100);buzzei-O;delavlnis(l00); buzzei-1 ;delaylnis( 100);buzzei-O;

17、delavlnis(l00); buzzei-1 ;delaylnis( 100);if(modeflag= 1)/录入模式green=l; red=0;if(clearallflag= 1)clearallflag=O;Clear_All();red=0;红色灯亮green=l;蜂鸣器长响一次,表示清除所有指纹结束 modeflag=l;/进入录入指纹模式P0=tab0;/表示没有指纹录入buzzer=0;delay lnis(800);buzzer=l;SaveNumbei-0;if(changeflag=l)cliangeflag=0; if(modeflag=0) / 识别模式green=0;red=l;P0=tab0;/显示当前有几个指纹else录入模式red=0;green=l;P0=tab0;/显示 0/while 结束/void TimeiO(void) mtenupt 1定时器 0 中断函数TL0=0x97;TH0=0xBD;clkO+; 延时 17nisvoid intO(void) lntenupt 0/ 中断 0,清除所有指纹

温馨提示

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

评论

0/150

提交评论