ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:21.02KB ,
资源ID:2238326      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/2238326.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(完整版指纹识别模块单片机程序.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

完整版指纹识别模块单片机程序.docx

1、完整版指纹识别模块单片机程序#include #include #define TRUE 1unsigned char SaveNumber=0,searchnum=0;unsigned int SearchNumber=0; unsigned int clk0=0;sbit relay =P14; /继电器引脚sbit buzzer=P15; /蜂鸣器引脚sbit red= P27;/录入模式指示灯 在板子靠近单片机处sbit green= P20;/识别模式指示灯 在板子远离单片机处sbit k1=P33; /模式识别sbit k2=P34; /录入一次指纹sbit k3=P32; /清除

2、所有指纹(10个指纹清除)/变量定义:unsigned char code tab10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/表:共阳数码管 0-9 /数码管引脚定义:sbit SMG_g = P13; /定义数码管阳级控制脚(个位)/由于程序中定时器被用 我们用一位数码管显示 且为静太显示 所以推荐大家用1602或者12864液晶 bit changeflag=0,modeflag=0,clearallflag=0; /默认为识别模式,如果为1为录入指纹模式,每录入一次SaveNumber+/常用指令定义/Verify Pass

3、word :验证设备握手口令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,0x00,0x00,0x00,0x00,0x00,0x1a; /回送12个/GetImage :探测手指并从传感器上读入图像unsigned char code GIMG14=12, 0X01 ,0X

4、ff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05; /回送12个/Gen Templet1 :根据原始图像生成指纹特征1unsigned char code GENT114=13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08; /回送12个/Gen Templet2 :根据原始图像生成指纹特征2unsigned char code GENT214=13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09; /回送12个 /Search Finger :以CharBu

5、fferA或CharBufferB中的特征文件搜索整个或部分指纹库unsigned char code SEAT18=17, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,8, 4,1,0,0, 0,0x65, 0x00,0x73; /回送16个/Merge Templet ;将CharBufferA与CharBufferB中的特征文件合并生成模板,结果存于ModelBuffer。unsigned char code MERG14=12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,5 , 0x00,0x09;/回送12个 /Store T

6、emplet :将ModelBuffer中的文件储存到flash指纹库中unsigned char code STOR16=15, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,6,6,2, 0x00,0x00, 0x00,0x0f; /回送12个/Read Noteunsigned char code RDNT14=13,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,4,0x19, 0, 0x00,0x1e;/Clear Noteunsigned char code DENT46=45,0X01 ,0Xff,0xff,0xff,0xff, 0x

7、01, 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,0x00,0x00, 0,1, 0x00,0x15;/DEL templet ;清空指纹库unsigned char code DELE_all12=12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3, 0

8、x0d,0x00,0x11;/常用指令定义-结束/宏定义/#define FALSE 0#define TURE 1/状态定义表#define on 1#define off 0#define MAX_NUMBER 63 #define _Nop() _nop_()/宏定义-结束/unsigned char FifoNumber=0; unsigned char FIFOMAX_NUMBER+1=0;/*1毫秒延时程序*/void delay1ms(unsigned int t) unsigned int i,j; for(i=0;it;i+) for(j=0;j120;j+) ;void T

9、xdByte(unsigned char dat)/串口发送信息,通过查询方式发送一个字符 TI = 0; /让TI0 SBUF = dat; /读入数据 while(!TI); /等待发送完毕 TI = 0; /清零bit Command(unsigned char *p,unsigned char MaxTime) /命令解析,给模块发送一个命令 unsigned char count=0,tmpdat=0,temp=0,i=0,package=0,flag=0,checksum=0; bit result=0, start=0,stop=0; TxdByte(0xef);/数据包包头识别

10、码 TxdByte(0x01);/数据包包头识别码 i=*p; /数组的第“0”个元素、里面存放了本数组的长度,把这个长度给变量i,方便进行操作 p+; p+; for (count=i-1; count!=1;count-) /Sent command String temp=*p+; /取第个“1”个元素的内容,然后发送 TxdByte(temp);/将数据发送出去 result=TURE;/发送完成,结果为真 (真为1) FifoNumber=0; for (count=MAX_NUMBER+1; count!=0; count-)/清空所有FIFO数组里面的内容,写入0X00 FIFO

11、count-1=0x00; if (result) result=FALSE; start =FALSE; stop =FALSE; count=0; clk0=0; /清零CL0计数 do /do的内容/ restart0: if (RI=1)/如果接收到数据 tmpdat=SBUF;/先把接收到的数据放到tmpdat中 RI=0; if (tmpdat=0xef)&(start=FALSE)/这个数据为第一个传回来的数据,也就是“指令应答”的第一个字节 count=0; FIFO0=tmpdat;/读入第一个应答字节(0XEF),存在第“0”个元素中 flag=1; goto restar

12、t0;/可以用中断方式进行 if(flag=1)/第一个字节已经回来,所以flag=1成立 if(tmpdat!=0x01) /接收数据错误,将重新从缓冲区接收数据 flag=0;/接收应答失败 result=FALSE; start =FALSE; stop=FALSE; count=0; goto restart0; /如果成功接收到0xef01,可以开始接收数据 flag=2;/flag=2;表示应答成功,可以开始接收数据了 count+;/现在count=1; FIFOcount=tmpdat;/读入第二个应答字节(0X01),存在第“1”个元素中 start=TURE; /应答成功可以开始接收数据 goto restart0; if(flag=2)&(start=TURE)/flag=2;表示应答成功,可以开始接收数据了 count+; /数据元素下标 FIFOcount=tmpdat;/存入数据 if(coun

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1