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

开通VIP
 

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

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

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于单片机指纹识别系统标准设计.doc)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于单片机指纹识别系统标准设计.doc

1、 任 务 书 课程设计题目:指纹识别 功效简述: 1)依据所学知识和能力,设计程序能够实现依据指纹大小、形状等特征,识别出不一样指纹。 2)利用按键标志目前指纹识别状态,比如录入状态,识别状态,清楚状态;利用液晶1602能够显示目前指纹识别状态信息。 3)利用继电器,对目前信息判定,比如提醒目前指纹识别错误;利用蜂鸣器和LED等提醒目前指纹识别是否正确 目录 第一章 绪论…………………………………………………….. 1.1、指纹识别中基础概念………………………………… 1.2

2、指纹识别发展前景……………………………………… 1.3、指纹识别课题设计内容和意义……………………….. 第二章 方案选择……………………………………………… 2.1 系统原理图设计…………………………………………… 2.2方案说明……………………………………………………… 2.3 方案比较…………………………………………………… 2.4 方案选择……………………………………………………… 第三章 硬件设计……………………………………………… 3.1 AT89C52单片机设计……………………………………… 3.2 电源电路设计……………………………………………… 3.3 按

3、键控制部分电路………………………………………… 3.4 LED指示灯电路………………………………………… 3.5 蜂鸣器电路……………………………………………… 3.6 指纹传感器模块………………………………………… 第四章 软件程序设计…………………………………………. 4.1程序步骤图………………………………………………… 4.2程序…………………………………………………………. 第五章 调试…………………………………………………… 5.1硬件调试……………………………………………………. 5.2软件调试…………………………………………………… 摘 要

4、 伴随时代发展,社会越来越需要高效、可靠身份识别系统传统个人身份判别手段如钥匙、口令、密码、身份证件,甚至IC卡等识别方法,因为它们含有可假冒、可伪造、可盗用、可破译弱点,已不能完全满足现代社会经济活动和社会安全防范需要。伴随识别技术不停成熟和计算机技术飞速发展,多种基于人体生理特征身份识别系统如:指纹、手掌、声音、视网膜、瞳孔和面纹等识别技术纷纷从试验室中走出来。现在,从实用角度看,指纹识别技术是优于其它生物识别技术身份判别方法。此次设计我们利用指纹识别传感器进行指纹采集和识别,在单片机中对指纹进行处理, 用按键标志目前指纹识别状态,录入状态,识别状态,清除状态,用液晶1602能够显示目前指

5、纹识别状态信息;用继电器对目前信息进行判定,比如提醒目前指纹识别错误;利用蜂鸣器和LED等提醒目前指纹识别是否正确 关键词:指纹识别;单片机;指纹识别传感器;液晶1602;继电器 第一章 绪论 进入二十一世纪后,因为国际反恐、互联网应用等原因推进,在全球范围内,指纹识别技术得到了愈加广泛应用,指纹识别市场进入高速发展阶段。利用人生理特征,比如像指纹等来识别个人身份,将成为以后几年IT产业关键革新。指纹在全部生物特征中,相对稳定、不随年纪而改变和采集较为便捷,同时它研究历史最长、相对更为成熟。和现有智能卡、身份证号码和密码身份识别系统相

6、比,指纹识别性价比最高,也更适于应用到大众生活中。所以指纹识别以其革命性便捷和安全性成为一个理想卓越处理方案。 1.1、指纹识别中基础概念 指纹识别是成熟生物识别(Biometric)技术,因为人体身体特征含有不可复制特点,大家把眼光转向了生物识别技术,期望能够籍此技术来应付现行系统安全所面临挑战。要把人体特证用于身份识别,这些特征必需含有唯一性和稳定性。研究和经验表明,人指纹、掌纹、面孔、发音、虹膜、视网膜、骨架等全部含有唯一性和稳定性特征,即每个人这些特征全部和她人不一样、且终生不变,所以就能够据此识别出人身份。基于这些特征,大家发展了指纹识别、面部识别、发音识别等多个生物识别技术,现

7、在很多技术全部已经成熟并得以应用,其中指纹识别技术更是生物识别技术热点。 1.2 指纹识别发展前景 指纹行业是一个新兴行业,本身含有很高科技含量,相对利润高发展前景宽广。经教授估计,指纹产品将是未来IT产业新增加点:利润率最高、发展潜力最大。于是,世界顶尖指纹识别技术得到了全球范围内高度重视,指纹识别技术应用如火如荼地快速发展起来。现在,中国已经有不少企业在参与指纹识别技术开发和应用。指纹技术在现代生活和工作中应用已越来越普遍,比如:指纹考勤、指纹社保、指纹银行、指纹商场、指纹接送幼儿等等生活和工作新现象已广为人知,指纹技术正在日益刷新着我们现代化生活方法。 1.3、指纹识别课题设计内容

8、和意义 指纹识别技术相对于其它识别方法有很多独到之处,含有很高实用性和可行性。所以,指纹识别成为最流行、最方便、最可靠身份认证方法,己经在社会生活很多方面得到广泛应用。这是因为指纹是独一无二,两人之间不存在着相同指纹,指纹是独一无二,两人之间不存在着相同指纹,同时指纹样本易于采集,难以伪造,便于开发,实用性强,能够利用多个指纹组成多重口令,提升系统安全性。 本文关键经过对MCS-51系列单片机结构和功效进行分析,来研究基于单片机指纹识别系统内部结构特点和功效叙述和工作原理,愈加好了解了指纹识别系统未来前景。 第二章 方案选择 2.1系统原理图设计 2.2方案说明 2.1.1方案

9、一:摄像头采集、飞思卡尔单片机处理 这种方案由指纹图像采集、指纹图像预处理、指纹特征提取、指纹特征匹配、特征数据库等几部分组成。指纹识别系统原理框图图1所表示。 图2-1、指纹识别系统框图 该系统首先由数字摄像头ov6620采集指纹,并将指纹图像转化为数字图像;然后用16位飞思卡尔X128单片机对指纹数字图像进行预处理,再经过图像增强、分割、平滑、细化等处理过程得到便于指纹特征提取数字图像:接着提取细化后图像细节特征点; 然后将指纹信息数据送入STC89C52单片机中,一块液晶1602和STC89C52单片机相连,液晶用于显示目前指纹采

10、集系统工作状态和经对比后指纹采集信息是否正确,用一个蜂鸣器和LED指示灯指示目前采集指纹信息正确。当采集到指纹信息正确,蜂鸣器发出响声而且LED指示灯点亮。 2.1.2方案二 指纹识别传感器 替换第一个方案中摄像头和飞思卡尔单片机,我们利用一个指纹识别传感器来对指纹进行采集,识别和部分处理,然后将信息输送到AT89C52单片机中,利用按键控制目前指纹识别状态,用LED灯进行显示,即录入状态,识别状态,清除状态;利用液晶1602能够显示目前指纹识别状态信息,即录入指纹编号和目前指纹;利用继电器,对目前信息判定,比如提醒目前指纹识别错误;利用蜂鸣器提醒目前指纹识别是否正确,假如指纹录入正确,蜂

11、鸣器发出响声。 2.3 方案比较 1)复杂性:方案一采取用数字摄像头ov6620采集指纹图像,然后用16位飞思卡尔X128单片机进行图像处理,还要进行图像增强、分割、平滑、细化等处理过程才能得到便于指纹特征提取数字图像;而这些过程在方案二中只用一个指纹传感器模块就能够替换,所以方案二设计简单。 2)正确性:方案一中所采集摄像头分辨率有限,所以采集指纹信息有一定误差,方案二中指纹传感器模块是利用集成光学头进行处理,比较正确。 3)不足:因为方案一中使用飞思卡尔单片机处理程序比较复杂,超出了我们学习范围,而方案二传感器就使程序简单化了。 2.4 方案选择 鉴于多种原因,我们最终选择

12、第二种方案,使用指纹传感器模块来设计系统。 第三章 硬件设计 3.1 AT89C52单片机设计 3.1.1 关键性能 有12k字节Flash闪速存放器,1024字节内部RAM,32个I/O口线,两个16位定时/计数器,5个中止向量,一个全双工串行通信口,片内振荡器立即钟电路。 3.1.2引脚结构图(图3-1) 图3-1 AT89C52管脚图 3.1.3 部分端口介绍: P30口:RXD(串行输入口) P31口:TXD(串行输出口) XTAL1:振荡器反相放大器及内部时钟发生器输入端。 XTAL2:振荡器反相放大器输出端。

13、 3.1.4 单片机最小系统 1)外部晶振设计 STC89C52内部有一个用于组成振荡器高增益反相放大器,经过XTAL1,ATAL2外部接上一片作为反馈元件晶体,和C1和C2组成了并联谐振电路,使其组成自激振荡器,电容值含有微调作用,我们取30PF,具体接法图3-2外部晶振电路。 图3-2 外部晶振电路 STC89C52工作频率范围在 0-24MHZ。我们选择是11.0592MHZ晶振,振荡周期约为1us机器周期约为0.1us,所以这个晶振能够满足这个系统要求。而且晶振不能离单片机太远,不然使用外部晶振进行软件调试时就会发觉找不到信号。 2)复位电路设计 MCS51单片机

14、通常采取上电自动复位和按钮复位两种方法,本系统采取简单自动复位电路图2-2所表示。单片机在上电瞬间,RC电路充电,RST引脚端出现正脉冲,只要RST端保持两个机器周期以上高电平,就能使单片机有效复位。其中电容选10uF、电容选10K。 图3-3复位电路 3.2 电源电路设计 本系统采取5V电源关键采取两种方法,第一是直接用9V电池然后经过一个变压电路,利用7805将转化成5V供单片机和液晶显示部分使用;其二是用220V经过变压器等将其转化成5V。 两种方法全部能够,不过因为第一个方法便于携带、而且成本相对较低所以我们选择第一个方案。 图3-4 电源电路 3.3 按

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

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

17、red亮;当k1键按下时,识别模式指示灯green亮。 3.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传感器(在模块里面) 等部件组成。 3、DSP芯片 2、通信连接线 1、光学头 6、CMOS传感器 5、FLASH芯片 4

19、稳压芯片 图3-11指纹传感器模块实物图 第四章 软件程序设计 该设计关键经过设定3个按键来实现一定功效,3个按键分别为模式切换(识别模式和录入指纹模式)、指纹录入、删除全部指纹。 4.1程序步骤图 4.1.1程序主步骤图 (1)指纹录入: 优异行录入模式,然后按一下录入指纹,灯会闪烁,录入成功一次,蜂鸣器响一次,这时候拿开手指,1秒放入同一个手指,会再录入一次,假如两次全部成功,就成功录入了一个指纹。蜂鸣器会响两次,同时显示录入指纹成功。假如不成功就会显示录入失败。录入完成后,能够进入识别模式,或接着录入下一个指纹。录入完成,按一次指纹转换,进入指纹识别开锁模式。

20、 单片机主程序步骤设计: 4.2 系统关键代码 引脚使用: sbit relay =P1^4; //继电器引脚 sbit buzzer=P1^5; //蜂鸣器引脚 sbit red= P2^7;//录入模式指示灯 在板子靠近单片机处 sbit green= P2^0;//识别模式指示灯 在板子远离单片机处 sbit k2=P3^4; //录入一次指纹 sbit k1=P3^3; //模式识别转换 sbit k3=P3^2; //清除全部指纹(10个指纹清除) 部分主函数代码: void main(void)//主函数 { unsigned char

21、i=0; ET0=1; //定时器0开中止 TL0=0x97; //17ms初值 TH0=0xBD; delay1ms(5); LcdRw=0; //只对液晶进行写操作,不进行读操作 delay1ms(5); LCD_Initial();//液晶初始化 delay1ms(5); GotoXY(0,0);//x,y Print(Identify); //串口初始化 SCON=0x50; //UART方法1:8位UART; REN=1:许可接收 PCON=0x00

22、 //SMOD=0:波特率不加倍 TMOD=0x21; //T1方法2,用于UART波特率 TH1=0xFD; TL1=0xFD; //UART波特率设置:9600 TR1=1; TR0=1;// 开定时器0 IT0=0;//中止0低电平中止 IT1=1;//中止1低电平中止 EX0=1;//开中止0 EX1=1;//开中止1 EA=1; mode();//看目前是什么模式 for(i=0;i<6;i++)//开始握手6次,假如没有一次成功,表示模块通信不正常。只要成功就跳出此循环

23、 { if(VefPSW())//和模块握手经过,绿灯亮起。进入识别模式 { green=0; //读一次 buzzer=0; shownum(0); delay1ms(300); buzzer=1; break; } else { red=1; green=1; break; } } while(1) { if(k2==0)//录入一个指纹 { delay1ms(10);

24、 if(k2==0)//假如仍为低电平,表示按键有效 { while(k2==0);//等候松手 if(VefPSW()==1&&modeflag==1&&SaveNumber<10)//和模块握手经过 { if(enroll()==1)//采集两次,生成1个指纹模板成功 { if(savefingure(SaveNumber+1)==1)//保留也成功 { SaveNumber++;//加一次

25、 shownum(SaveNumber); } } } else { buzzer=0; for(i=0;i<8;i++) { delay1ms(100); red=~red; } red=0; buzzer=1; } } } if(modeflag==0)//为识

26、别模式 { searchnum=search(); if(searchnum>=1&&searchnum<=162)//最多是162个指纹 { shownum(searchnum); //蜂鸣器响一声 relay=0; buzzer=0; delay1ms(100); buzzer=1; for(i=0;i<20;i++) { delay1ms(150); }

27、 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

28、) { clearallflag=0; Clear_All(); red=0; //红色灯亮 green=1; //蜂鸣器长响一次,表示清除全部指纹结束 modeflag=1;//进入录入指纹模式 GotoXY(0,0);//x,y Print(Input); shownum(0); buzzer=0; delay1ms(800); buzzer=1; SaveNumber=0; } if(changeflag==1) { mode()

29、//显示目前模式 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; } } }

30、 void Timer0(void) interrupt 1//定时器0中止函数 { TL0=0x97; TH0=0xBD; clk0++; //延时17ms } void int1(void) interrupt 2//中止1,模式转换 { if(k1==0)//模式转换 其中用modeflag 来标志,默认从第1个指纹开始录入 { delay1ms(10); if(k1==0)//假如仍为低电平,表示按键有效 { while(k1==0);//等候松手 modeflag=~modeflag;//0表示录入

31、指纹 1表示识别指纹 changeflag=1;//模式发生了转换 } } } 第五章 调试 完成了硬件设计、制作和软件编程以后,要使系统能够按设计正常运行,必需进行硬件调试和软件调试。 5.1硬件调试 硬件调试关键任务是排除硬件故障,其中包含设计错误和工艺性故障。 (1) 在电路电源焊接一个电源指示灯,判定电路中通电是否正常。 (2)将电路中电源线部署在通用板四面,这么使用电源很方便,降低干扰,同时能够降低短路故障发生可能。 (3)元器件合理布局,且尽可能降低占用板子面积,努力争取做到节俭。尤其是单片机晶振尽可能靠近单片机,降低干扰。 (4)液

32、晶焊接注意方向,且调整背光电位器不能够少。 5.2软件调试 软件调试任务是利用开发工具进行在线仿真调试,发觉和纠正程序错误,同时也能发觉硬件故障。 程序调试应一个模块一个模块地进行,首先单独调试各功效子程序,检验程序是否能够实现预期功效,接口电路控制是否正常等;最终逐步将各子程序连接起来总调。联调需要注意是,各程序模块间能否正确传输参数,尤其要注意各子程序现场保护和恢复。 本设计关键有:指纹识别传感器图像采集模块 单片机图像处理 按键模块和指示灯模块 指纹液晶显示和蜂鸣器、继电器模块 不停地对单片机下程序,观看调试结果。 参考文

33、件 [1] 河桥,段清明,邱春玲.单片机原理及应用.北京:中国铁道出版社,.12 [2] 冯星奎,李林艳,颜祖泉.一个新指纹图像细化算法.中国图像图形学报,1999, 4(10)835-838. [3]吕凤军.数字图象处理编程入门一一做一个自己Photoshop.北京:清华大学出版社,1999. [4] 刘文星,王雄沂,母国光.纹线跟踪及其在细化指纹后处理中应用.光电子·傲光,,13 (2):184-187. [5] 刘家锋,唐降龙,赵泉.一个基于特征点匹配联机指纹判别系统.哈尔滨工业大学学报,.34 (1):132-136 [6] 简兵,庄镇泉等.基于脊线跟踪指纹图细节提取算

34、法.电路和系统学报, [7] 刘旭,田捷.自动指纹识别算法在嵌入式系统实现[ J].计算机工程和应用,. [8] 周毅,等著.基于SPI协议实现,计算机仿真.. [9] 窦振中.单片机外围器件实用手册(存放器分册).北京:北京航空航天大学出版社,20O0 [10] 李华.MCS-51系列单片机实用接口技术.北京:北京航空航天大学出版社,1998 [11] 张培仁,孙占辉,张村峰.基于c语言编程MCS一51单片机原理和应用[M].北京:清华大学出版社,. 附件2 程序清单 #include #include

35、> #include"lcd1602.h" sbit relay =P1^4; //继电器引脚 sbit buzzer=P1^5; //蜂鸣器引脚 sbit red= P2^7;//录入模式指示灯 在板子靠近单片机处 sbit green= P2^0;//识别模式指示灯 在板子远离单片机处 sbit k2=P3^4; //录入一次指纹 sbit k1=P3^3; //模式识别转换 sbit k3=P3^2; //清除全部指纹(10个指纹清除) #define Max_User 10 #define error 2 unsigned char Save

36、Number=0,searchnum=0; unsigned int SearchNumber=0; unsigned int clk0=0; unsigned char str[3]={0,'\0','\0'}; unsigned char code Identify[16]="Lock: Idenfity"; unsigned char code Input[16] ="Lock: Input "; bit modeflag=0,clearallflag=0,changeflag=0;//默认为识别模式 ////////////////常

37、见指令定义///////////////////////////// //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};

38、 //回送12个 //GetImage :探测手指并从传感器上读入图像 unsigned char code GIMG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05}; //回送12个 //Gen Templet1 :依据原始图像生成指纹特征1 unsigned char code GENT1[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08}; //回送12个 //Gen Templet2 :依据原始图

39、像生成指纹特征2 unsigned 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

40、 ;将CharBufferA和CharBufferB中特征文件合并生成模板,结果存于ModelBuffer。 unsigned char code MERG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,5 , 0x00,0x09};//回送12个 //Store Templet :将ModelBuffer中文件储存到flash指纹库中 unsigned char code STOR[16]={15, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,6,6,2, 0x00,0x00,

41、 0x00,0x0f}; //回送12个 //Read Note unsigned char code RDNT[14]={13,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,4,0x19, 0, 0x00,0x1e}; //Clear Note unsigned char code DENT[46]={45,0X01 ,0Xff,0xff,0xff,0xff, 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}; /

42、/DEL one templet unsigned char code DELE_one[16]={16, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,7, 0x0c, 0x00,0x00, 0,1, 0x00,0x15}; //DEL templet ;清空指纹库 unsigned char code DELE_all[12]={12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3, 0x0d,0x00,0x11}; ////////常见指令定义-------结束////////////////// ///

43、//////宏定义/////////////////// #define FALSE 0 #define TURE 1 //状态定义表 #define on 1 #define off 0 #define MAX_NUMBER 63 #define _Nop() _nop_() ////////////////宏定义------------结束/////////////////////// unsigned char FifoNumber=0; xdata unsigned char FIFO[MAX_NUMBER+1

44、]={0}; /*********1毫秒延时程序**********/ void delay1ms(unsigned int t) { unsigned int i,j; for(i=0;i

45、 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);//数据包包头识别码 TxdByte(0x01);//数据包包头识别码 i=*p; //数组第“0”个元素、里面存放了本数组长度,把这个长度给变量i,方

46、便进行操作 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 FIF

47、O[count-1]=0x00; if (result) { result=FALSE; start =FALSE; stop =FALSE; count=0; clk0=0; //清零CL0计数 do //////////do内容//////////////////////////////// { restart0: if (RI==1)//假如接收到数据 { tm

48、pdat=SBUF;//先把接收到数据放到tmpdat中 RI=0; if ((tmpdat==0xef)&&(start==FALSE))//这个数据为第一个传回来数据,也就是“指令应答”第一个字节 { count=0; FIFO[0]=tmpdat;//读入第一个应答字节(0XEF),存在第“0”个元素中 flag=1; goto restart0;//能够用中止方法进行

49、 } if(flag==1)//第一个字节已经回来,所以flag==1成立 { if(tmpdat!=0x01) //接收数据错误,将重新从缓冲区接收数据 { flag=0;//接收应答失败 result=FALSE; start =FALSE; stop=FALSE; count=0; goto restart0;

50、 } //假如成功接收到0xef01,能够开始接收数据 flag=2;//flag=2;表示应答成功,能够开始接收数据了 count++;//现在count=1; FIFO[count]=tmpdat;//读入第二个应答字节(0X01),存在第“1”个元素中 start=TURE; //应答成功能够开始接收数据 goto restart0; } if((flag==2)&&(s

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服