当前位置:首页 > 专题范文 > 公文范文 >

电子信息工程基于单片机指纹密码锁设计与实现

时间:2023-03-17 08:10:02 来源:网友投稿

基于单片机的指纹密码锁设计与实现 Design and implementation of fingerprint code lock based on SCM 摘要 随着这几年科技和互联网的快速发展,指纹识别技术也得到了突飞猛进,可以看到指纹识别技术以经在生活中使用很广了,而它未来的发展空间也是潜力无限,智能门锁,智能手机解锁绝大多数都是应用了指纹识别功能。

指纹虽然只是手指顶部一小块看着不起眼的部位,但是它却能够识别到人的身份,而且指纹识别是当今最方便的能够快捷的识别人身份的技术。

此系统是根据单片机来实现指纹识别开锁的一个功能设计。模块核心采用的是性能各方面都优越的STC89C5单片机,然后连接串口通信控制指纹模块,这样就可以让指纹模块能够录取指纹和存储指纹数据,最后连接继电器做成的直观锁,这个设计具有小巧,价格低廉等优势。

关键词:单片机 指纹识别 液晶屏 Abstract With the rapid development of technology and the Internet in recent years, fingerprint recognition technology has also made rapid progress. You can see that fingerprint recognition technology has been widely used in life, and its future development space is also unlimited. The vast majority of smart phone unlocks have applied fingerprint recognition. Although the fingerprint is just a small piece of the top of the finger looking at the inconspicuous part, it can recognize the identity of the person, and fingerprint recognition is the most convenient technology that can quickly identify the identity of the person. This system is based on a single-chip microcomputer to achieve a functional design of fingerprint identification unlocking. The core of the module uses STC89C5 single chip microcomputer with superior performance in all aspects, and then connects the serial communication to control the fingerprint module, so that the fingerprint module can take fingerprints and store fingerprint data, and finally connect the intuitive lock made by the relay. This design is compact, Low prices and other advantages. Key Words:MCU fingerprint identification LCD screen 目录 第1章 概述 1 1.1 指纹识别技术的进展 1 1.2 进行指纹识别的原理 1 1.3 设计系统的目的和意义 3 1.4 系统工作流程 3 第2章 硬件介绍和设计 5 2.1 单片机及最小系统 5 2.1.1 STC89C52单片机的介绍 5 2.1.2 系统外部晶振的设计 7 2.1.3 复位电路的设计 7 2.2 液晶屏幕显示模块 8 2.2.1 控制器接口说明 9 2.2.2 12864引脚与单片机连接图 10 2.3 按键控制部分电路 10 2.4 系统指纹模块 12 2.4.1 指纹模块的简单介绍 12 2.4.2 指纹模块引脚接法 13 2.4.3 指纹模块的命令 13 第3章 系统软件的设计 17 3.1 系统程序工作分析 17 3.2 串口初始化 17 3.3 主程序流程 18 3.3.1键盘管理程序设计流程 20 3.3.2 液晶模块程序设计流程 20 3.3.3 通信程序设计流程 21 3.4 运用Keil编程程序 21 第4章 调试及实验结果 23 4.1、指示灯跟继电器的调试 23 4.2 按键和指纹模块的的调试 23 4.3指纹识别正确率测试 24 第5章 总结与展望 26 5.1总结 26 5.2展望 26 参考文献 27 致谢 28 第1章 概述 1.1 指纹识别技术的进展 在现实生活中所有的东西都有一个自身的特征,用这些东西可以当作自身的特征来识别。当然这对于我们人体来说也是同样适用的,比如一根头发通过比对DNA就可以知道这个人是谁,相对而言,识别一个人的身份最方便,直接的方法就是识别指纹了。

指纹说的是手指顶端那一节的纹路线条,在胚胎发育的时候就已经开始形成了。指纹识别历史悠久。技术的突飞猛进,进而导致人们可以制造出指纹成像的工具,在现在科技高速发展的时代,指纹识别的使用也越来越普遍了,随着成像设备的快速发展,目前指纹识别生物技术的发展,[1]全世界已经建立了犯罪指纹机构的指纹识别数据库,指纹识别 手指被正式认可为识别手指的有效方法据统计,在全世界70亿人口当中,还找不出任何两个指纹是相同的,这就说明了,它拥有这独一无二的特性,它的这个特性让全世界警察机关都在使用指纹鉴别技术来办案。指纹相当于一种人体印章,每当签合同的时候,就可以发现合同上要按压指纹,公安部门在破案的时候就会运用指纹识别技术去查出不法分子。

由于人体缺乏重复性,人们将注意力转向了对生物技术的学习,希望利用这项技术来应对当前的挑战,这些特征必须是独特的。经过多年的众多研究表明,人的指纹,人脸,人的声音和眼睛等这些不仅是唯一可以识别人的特征,而且还是非常稳定的,[2]正是因为人体拥有着这些特性,使得现在很多生物技术不仅发展成熟而且还得到了广泛的应用,例如:指纹识别、脸部识别、瞳孔和声音锁等。

人们对生物技术锲而不舍的研究使得指纹识别技术得到了突飞猛进,虽然手指顶端的指纹看起来并不起眼,但是它却可以精准的识别出人的身份。现代科技的进步带动了指纹识别技术的快速发展,制造出来的指纹图像读取工具也越来越小,更加方便携带。再加上智能手机平板电脑的广泛应用,从而能够简单的比较两个指纹,此外,匹配算法的可靠性一直在增强,识别指纹的技术变得越来越常见。[3] 1.2 进行指纹识别的原理 指纹一般指的就是手指最顶一节的纹路,一个完美的指纹图像是由黑白的二进制构成的图像。然而,通常获得指纹的途径是通过按压手指取得的, 因此,由于某些外部原因和手指本身的皮肤和状况等因素的影响,有时候获取到的指纹不是很符合要求。此外通过机器对手指进行数字化时,由于光照问题也会产生其他的物理影响。产生的这些影响使得灰度图像不可以直接用于配对。

所以一定要选择指纹的特征来对它进行识别。[4] 正常情况下指纹的描述有2种特征:
1、全局特征。顾名思义就是要对整个纹路结构进行描述,下图1-1就是指纹的3种全局特征,假如把手伸开,仔细注意看的话,就可以看到指纹的纹路是不相同的,但总的来说一共归纳为3种,分别是:斗形纹就是观察起来像一根绳子绕圈圈的;
箕形纹就是弯弯看起来很多个半圆形叠加的;
一条一条排列像弓一样的纹路就是弓形纹;
所有人的指纹不仅整体形状会有差异,其他的也会不相同。

图1-1 指纹三种形状图 2、 局部特征,看局部这两个字就知道说的是指纹的一部分,要针对这一部分拥有象征性的特点展开刻画,通过类型、方向、曲率、质量等这些特点来进行重点刻画。经过以上分析所知类型其实就是当前对指纹分类的特征点,这些特征点有许多种类型,前面所讲到的所有的特征点在人的指纹中的存在也是不一样的,人体指纹特点出现最多的是短纹,它的出现率高达60%,第二个是分叉点百分之二十多的概率。

基于局部纹理功能定义的许多详细功能,假如一起应用所有的这一些功能,则很难自动,快速地提取它们并将它们与其他特征区分开,自动指纹识别系统通常用到的是分叉点跟断点这两个主要功能进行识别,剩下的特性, 可以将它们组合起来表示。

1.3 设计系统的目的和意义 随着时代的进步,人们迫切需要一个更加安全可靠的安防和身份识别系统,以前的一些个人密码这些太麻烦,万一哪天忘记了就相当与没有了,加上一些身份识别的东西跟人体不是形影不离的,这些东西会被不法分子伪造,被盗和破译,无法完全满足现代社会经济活动和社会需求的安防。相对而言,每个人的指纹都是特定的,又跟识别者本身不可分割,所以指纹识别的安全系数要比其他的传统方法高很多。截至今日,还没有发现任何的两个人具有相同的指纹,指纹识别技术不管是从哪个方面讲都将是我们未来生活最需要的东西,因此在未来的新时代我们的指纹使用次数将会大大的增加,我们的生活会因为指纹技术的发展而更加的方便和安全。[5] 单片机技术的应用现在已经是非常的成熟了,仔细观察的话就会发现它已经被广泛的应用到了我们的生活之中,比如:运动手环,火灾报警器等,经过了大学四年的学习,特别是学习了跟单片机相关知识后,觉得非常有必要活学活用,把它从书本上应用到生活之中,所以本次设计了一个用单片机来控制指纹识别开锁的系统,但愿做出的作品能够应用在生活之中。

1.4 系统工作流程 1、系统开机:给它插上电源,这时候就可以看到指示灯亮起红色,屏幕也会因为通电点亮,液晶屏幕显示出:“请输入密码”字样,输入按键之后,液晶屏幕会显示出:“请按指纹”字样,然后接着就能看到识别的地方会有背景灯亮起,这时候就可以实行下一步动作进行开锁。如果系统识别到的指纹是正确的,接下来继电器就会开始动作,那么锁将会打开,进行指纹识别开锁的人就可以来到屋内,锁被顺利打开的时候屏幕就会有:“门已打开”的显示;

如果识别的指纹不存在或者说存在但不成功,继电器则不会有任何动作,门锁不会打开,开锁者自然就没有办法进到屋内,同时屏幕显示出:“没有搜索到指纹 请按任意键继续”的字样。

2、管理者模式:输入键盘A键后进入操作模式,屏幕显示“请输入密码”,这时候按下设置好的初始密码,密码正确的话就进入到管理者模式,如果密码错误,则会显示“密码错误,请重新操作”。在管理者界面下能够实现增加多个开锁指纹、删掉用不到的指纹、手动开锁和修改进入操作页面的密码功能。输入“1”就可以添加系统的开锁指纹,液晶屏幕会显示出“请按手指”字样,将拇指端部按在指纹收集器上,多次按压录入,屏幕显示“指纹采集成功”并给采集到的指纹编号。按下数字“2”的删去指纹模式,液晶屏幕会显示出“请输入删去的指纹号”的字样,按下删除的指纹编号即可删除。在某些意外的情况下,假如遇到什么紧急状况,这时启用手动开锁功能,门锁也会顺利打开。最后修改密码功能可以对密码进行更改,保存后就可以进入主菜单页面的6位密码。

整个系统的设计框图如图1-3所示 4*4矩阵按键以及继电器和指示灯 指 纹 模 块 LCD 12864 STC89C52 单 片 机 图1-3 系统总体框架图 第2章 硬件介绍和设计 2.1 单片机及最小系统 2.1.1 STC89C52单片机的介绍 单片机其实可以当作嵌入式微控制器来使用,拿它跟普通的电脑微处理器来做对比的话,体积小方便携带就是它的优势,可以放置在仪器内部,但它的内存量少,输入输出接口简单,功能低。对于单片机而言现在简直就是个百鸟争鸣的时间段,现在有很多在这方面有技术的企业差不多都开发了单片机,使得单片机的种类甚多有。所有的这些都有独特的属性并相互补充,为单片机应用提供了更多的选择[6]。

现在学习所用到的单片机几乎都是将中央处理器(CPU)、只读程序存储器(ROM)、随机存取数据存储(RAM)、并行和串行通信接口,定时电路、时钟电路、中断系统集成在单个芯片上,而有部分单个芯片上集成了LCD(液晶)驱动电路,这样一个单片机就拥有了更多的单元电路,它的功能随着单元电路的增多会更加强大[7]。

使用到的52单片机的性能如下:
它的工作电压是3.3V~5.5V,工作的时候频率一般为48MHz。

它的通用输入输出端口有32个,当复位时:P1 / P2 / P3 / P4要上拉准双向端口,P0端口作为漏极开路输出,可以进行总线扩展,可以不增加上拉电阻,一般使用I / O端口时,都是要增加上拉电阻。

ISP/ IAP,没有专用的编程器,没有专用的仿真器。

它一共拥有计时器T0,T1,T2,这三个类型的定时器或者计数器。

STC89C52RC单片机的工作模式:
外部中断可以唤醒它的掉电模式,可以应用到如水表等设备中。

下图2-1本次采用的单片机引脚功能说明。

图2-1 STC89C52引脚图 VCC:连接电源电压 VSS:接地 P0口:真正的双向口,输出锁存,输入缓冲,能驱动4个TTL负载。

P1口:输入要先置1,无高阻态,能驱动4个TTL负载。   P2口:
I/O与P1口一样,当有片外存储器时,作地址线使用。

P3端口:每个位还可以用于第二个功能,第二功能的定义见表2-1。

表2-1 STC89C52 P3口的第二功能 液晶显示器和通讯子程序两个主要部分组成了此设计的主程序。

主程序的工作过程:第一步是对各种硬件功能模块进行初始化, 开启液晶显示屏,键盘扫描,指纹模块建立通讯。

2.1.2 系统外部晶振的设计 晶体振荡器又被称为晶振,在整个单片机系统的运用里面它是不可或缺的,时钟频率可以由它和单片机的内部电路连结来产生,而且产生的时钟频率还会影响着单片机相关的所有指令的执行速度。

在平时的工作环境中,部分晶振在一定范围内可以使用外部电压来调节。

晶振跟晶体在一块工作的时候,这个工作的晶体能够把电能跟机械能转变成共振,可以提供稳定,精确的单频振荡。[8] 系统所需要的基本时钟信号是由单片机的晶振来完成的,正常使用下,系统跟晶振是共用的。系统所需的时钟频率是由晶振跟锁相环电路一起匹配提供的。,通过连接到同一晶体的不同锁相环可以提供给不同的子系统分别对应着不同频率的时钟信号。

本次设计选择11.0592MHz的晶振作为系统的振荡源,STC89C52具备的高增益反相放大器可以构成振荡器,因此我们可以通过连接晶体、XTAL1和XTAL2作为反馈元件,和C1和C2组成并联谐振电路,这样就可以组合成一个自激振荡器,在此电路中采用的是值为30PF的电容,如图2-2外部晶振电路。

图2-2 外部晶振电路 我们选择了11.0592MHz的晶体振荡器,振荡周期约为1us。

机器周期差不多是0.1us,经过计算这个晶体能够满足本系统的要求,晶振跟单片机两者的间隔不能太大,不然的话容易无法接收信号。

2.1.3 复位电路的设计 单片机电路初始化到指定状态可以由置位和复位来完成。一般是在单片机的RST引脚上焊接一个电阻和一个电容来形成复位电路,想要电路实现复位,这时候就需要做到复位电平的持续间隔一定要大于单片机的两个机器周期[9]。

复位电路是由上电和按键2个复位合成的 1、 上电复位:这次的系统设计中单片机是通过高电平来进行复位的,绝大多数都是接一个电容器在VCC和RST引脚之间,最后在GND脚接上一个电阻来完成。电容器的值基本都是10uF,电阻器采用的阻值是10K。

2、 按键复位:按键复位是通过复位电容器跟开关并联组成的。按下系统中的复位键时,复位电路中的电容器将会放电,由于电容器充电,RST也被拉至高电平,它将在一段时间内保持高电平,这样就可以复位单片机。

在这个系统中使用的复位电路如图2-3所示.在电源开启的时刻,当这整个电路中如果RC电路有电流入,那么它就会充电,而这时候RST引脚处会有正脉冲。只须能够保证RST端持续有较高的电平大于两个周期,单片机就可以实现复位。在这里选用的电容器的值是10uF,电阻选用10K。

图2-3 复位电路 2.2 液晶屏幕显示模块 液晶,全称是液态晶体,是一种相态,因其具备特殊的理化与光电特性,1950年左右开始液晶显示技术开始慢慢发展起来。

LCD的主要原理是通过电流刺激液晶分子产生点、线和表面以简化描述,通常将不同的LCD屏幕直接称为LCD屏幕。该液晶尺寸小,功耗低,实际操作简单,它不好的地方就是工作温度的范围过小,才0~55摄氏度,储存温度是-20~60摄氏度,因此在设计相应的液晶产品时,必须慎重考虑并选择合适的液晶2.2.1 12864系列液晶的引脚功能 12864中有20个引脚。下表是引脚的具体说明。

表2-2 引脚功能定义 2.2.1 控制器接口说明 1、初步操作时序如下表:
表2-3读写输入输出 2、状态字说明 表2-4状态字说明 一定要先执行读写检测,保证STA7为0以后,才可以对控制器进行读写操作。实质上,由于单片机的操作速度比液晶控制器的响应速度慢,因此 不需要执行读/写检测或仅需很短的延迟。

2.2.2 12864引脚与单片机连接图 下图为12864与单片机的接口连接图。

图2-4 12864引脚与单片机连接图 一开始就要初始化用户编辑的显示程序,经过初始化后模块就可以正常使用了。在指令没有发送给模块以前,单片机的模块内部必须是在非忙碌情况下,最后按照接收到的指令在屏幕上放出有关的内容。

1. 在这里需要知道RS写入的是命令还是数据。

2. 读/写控制端子设置为写模式。

3. 把数据或命令发送到数据线。

4.给E一个高脉冲,它就会把数据发送到LCD控制器然后接着完成写操作。

2.3 按键控制部分电路 如果按钮未关闭,则电压将显示高电平或低电平。

高电平和低电平指示不能同时打开,一个打开的情况下另一个会关闭。

有没有被按下可以用检测电平的高低状态来确保。

电路中必须添加去除电平抖动的方法,图2-5就是按键抖动的示意图,可以用软件或硬件来消抖,硬件一般通过使用双稳态电路或滤波器去抖动电路来移除。

平时执行延迟程序的时候都是用软件去抖动,这样就可以确保第一次按下某个键时是否仍然是关闭状态,如果一直是关闭状态的话,第一步要确保已按下该键以消除抖动和干扰的影响。

设计键界面的方法有独立键和矩阵键盘两种。

独立按钮的每个按钮都是单独的,而且每个按钮一定要连接到输入线。

输入线的电平一旦被检测到,就可以清楚知道按钮状态。

此方法具备灵活的电路配置和简单的软件结构,但是具体计算后发现这个办法I/O消耗大,所以此方法绝大多数用于按键少或其他控制作用很简单的地方。由于此设计中有许多键,因此由于系统的可靠性和键盘设计的简单性而采用矩阵键。本次系统的按钮电路如图2-6所述,按下按钮的程度很低,我们使用软件去抖来减少对微控制器的影响。

有键按下 前沿抖动 按键确定 后沿抖动 图2-5 按键闭合及断开前后的电压 检测矩阵键盘的办法有非常多种,一般最主要的几种的是:逐点扫描法,逐行扫描法,全局扫描法。

在这个设计中检测采用的时逐行扫描法,P1.4-P1.7是当作列线,P1.0-P1.当作行线来工作的。工作步骤如下:
1. 如何知道有没有在键盘上按下了任意按键,这时候将所有的行线设置为输出端口后持续输出低电平;
最后把其中的所有列线作为输入端口,这时候如果读取到有任何一行列线是低电平状态,就表明其中有按钮被按下了。

2.确认按钮的位置。在知道有任何一个按键被按下之后(执行按键去抖动处理之后),下一步是通过依次将每一行设置为输出低电平(其余行输出高电平)来确定按下了哪个按键,然后逐列检查每个列的级别情况。假如其中有某列是低电平的话,按行线和列线输出都是低电平的那个交叉键。

3.当知道所有的键位置之后,里面所有的键都会进行编号,即该键被编码。程序设计中通常使用计算方法和查表方法对密钥进行编码。本示例使用计算法编码。

图2-6按键电路 2.4 系统指纹模块 2.4.1 指纹模块的简单介绍 在本次系统设计中使用的是型号为ZFM60的指纹模块,指纹模块电路示意图如下:
图2-7 指纹模块接口图 系统采用的指纹模块中拥有DSP芯片,还拥有着对外部指纹进行指纹特征采集的CMOS芯片,下图所示是指纹模板,指纹采集详细的步骤是:先对采集的指纹进行拍照扫描,根据识别到的指纹特征合成模板,最后的一步就是指纹输入成功了。

图2-8 指纹模版 指纹模板是用来对按压的指纹进行“拍照”,每一次在指纹模块中按压输入指纹信息的时候,CMOS芯片都会执行简单处理,并且接着会输出0和1两种记录的具体信息,最后这些信息会被存储FLASH芯片里。

当模块处于识别模式,指纹模块的第一要务就是让CMOS芯片收集正在识别的指纹,最后把收集到的指纹信息跟储存在FLASH芯片中的信息作对比。

看看是否存在,如果存在,它将返回指纹号。

这样,我们可以通过单芯片计算机或计算机执行指纹识别和注册。

具体的指纹模块介绍如下:该指纹模块的型号为:ZFM60,其中包含:
1.光学头2,通信线3,DSP芯片4,稳压芯片5,FLASH芯片6,CMSO传感器等组件。

2.4.2 指纹模块引脚接法 指纹模块引脚功能:
如表2-4所示:
表2-5指纹识别模块引脚功能 2.4.3 指纹模块的命令 本系统的设计中,可以通过单片机的串口给指纹模块发送跟接收命令来执行,首先给模块发送信息,等待模块返回给需要单片机进行处理的数据,以此来确认命令有没有被执行。

最常见的有下面这几条命令: 1、判断模块有没有连接,可以通过启动的时候执行模块握手。其中的命令如下所示:
验证口令:
指令包格式:
应答包格式:
需要注意的是:
口令对的时候确认码是00H;

收包错误时的确认码为01H;

口令错误的时候确认码是13H。

2、指纹模板的产生一般要输入图像、接着识别其生成特征、然后合成指纹模板最后的一步是存储指纹模板。

录入指纹时用的指令:
指令包格式:
应答包格式:
需要注意的是:
当确认码是00H的时候,说明这时候已经成功的录入了指纹图像;

当确认码是01H的时候,那就说明收包不对;

当确认码是02H的时候,那就说明传感器上并没有手指;

当确认码是03H的时候,那就说明录入的图像已经失败了。

图像生成特征 Img2Tz指令:
指令包格式:
应答包格式:
需要注意的是:
生成完好图像特征时确认码是00H;

收包错误的时候确认码是01H;

指纹图像不清晰没有办法生成特征的时候确认码是06H;

指纹图像没有问题,特征点不是很多的时候确认码是07H。

完成特征模板RegMode1指令:
功能:特征模板需要用到Charbuffer1和2中的特定文件。

指令包格式:
应答包格式:
需要注意的是:
模板合成的确认码是00H;

收包不对时的确认码是01H;

两个指纹合成错误的时候确认码是0aH。

指纹存储模板 Store指令:
指令包格式:
应答包格式:
需要注意的是:
储存成功的确认码是00H;

收包错误的时候确认码是01H。

完成这四个过程和命令,我们已经输入了指纹,重复以上步骤,我们可以输入其他指纹。

3.首先将指纹识别切换到识别模式,然后连续检测光学收集头上是否出现指纹。

如果有,请扫描指纹并将其与库中的指纹进行比较。

如果是,请读出指纹数。

模块将自动检测是否有指纹,假如有的话,就会发送下面的命令:
搜索指纹Search指令:
指令包格式:
应答包格式:
需要注意的是:
找到指纹时的确认码是00H;

寻找不到的时候确认码是09H;
如果找到,它将返回相应的指纹号,否则,将返回0。

第3章 系统软件的设计 3.1 系统程序工作分析 在这一整个系统里,系统中的单片机是当作控制器来使用的。指纹识别模块和12864LCD、按键程序的开发是我们开发整个应用程序中重要的两个点。开发这个程序最重要的一点是建立一系列供主程序任意时候调用的C语言函数子程序。我们用到的是Keil编程软件进行编写程序所需要的代码,该软件可以简单的做到对程序的编写和测试,代码文件是否成功,成功的代码文件运用开发软件烧写到单片机里,给单片机接上电源后,里面的主程序就会实施初始化。根据电路的功能要求,如果按下了相应的按键,这时候的主程序最重要的一点是对LCD进行初始化并且要同时检测按键[10]。

指纹识别模块和12864LCD按键程序的开发是我们开发整个应用程序重要的两个点 3.2 串口初始化 由于使用串行端口与模块进行通信,因此必须限定好单片机和模块的串行工作速度和数据包格式。

SCON是一个用来设置串行端口工作模式,接收发送控制的特殊功能寄存器。

表3-1 SCON寄存器地址位 SM0和SM1是用来提供四种选择功能模式的:
表3-2 串行口工作方式 PCON里面只有一个SMOD与串口工作有关 :
表3-3 PCON寄存器 SMOD(PCON.7)波特率倍增器。

在串口模式1~3中,波特率跟SMOD有关。

当SMOD = 1时,波特率加倍。

复位时,SMOD = 0。

为了能够让指纹模块跟单片机实现通信,两者的波特率一定要是相同的,因为指纹模块的波特率是固定的9600bps,所以此时需要在编程时将单片机的波特率设置为9600bps。

在使用串行端口之前,首要任务就是把它初始化,至关重要的一项工作是把定时器更改为1,波特率产生,串口控制和中断控制:详细工作流程如下:
1.先清楚的知道T1的工作方法;

2.算出T1的初始值,然后把它加载到TH1和TL1。

3.启动T1;

4.确认串口控制;

5.串口在中断模式的话,要进行中断设置。

下面是串口初始化程序:
3.3 主程序流程 根据框架,我做出了下图的整个程序的操作流程图。

程序的检查过程:一开始先初始化所有的模块,检测有没有被按下的按键,如果有,就先去判断哪个键被按下了,然后判断是否调用相应的子程序。

主程序主要由LCD显示屏,按键程序和通讯子按键程序三部分组成。

整个程序的工作步骤是,一开始先把所有的硬件功能初始化,其中有液晶,键盘扫描,指纹建立通讯模块。

图3-1 主程序流程图 3.3.1键盘管理程序设计流程 键盘模块的工作流程图如图3-2所示:
图3-2 键盘程序流程图 3.3.2 液晶模块程序设计流程 显示模块顾名思义就是起到显示作用的,可以把接收到的相关内容显示出来。

图3-3 显示流程图 3.3.3 通信程序设计流程 下面的图片是串口通信发送数据和接收的工作图,如图3-4。

图3-4 串口通信数据发送、接收流程图 3.4 运用Keil编程程序 做好前期的准备工作之后,开始进行程序的编写。首先应建立一系列的C语言子程序供主程序进行调用。此次设计是用Keil软件对单片机进行编程。Keil可以编译C源代码和汇编源代码,拥有高效易于理解的汇编代码,生成的大多数语句都是非常高效的生成代码。[11]移动目标文件跟库文件可以被Keil软件连接使用,并且还可以创建HEX文件跟调试目标程序。

Keil软件的具体使用方法:
1、 首先打开本次的编写软件,进行一个新的工程创建,可以把它命名为“Fingerprint”,接着选择本次系统设计用到的单片机。

2、再打开一个新的text文件,然后把它的名字改为main.c,接着在名为Target 1的子文件里找到Source Group 1,把main.c文件导入其中。

3、按下下面图片中红色方框内的表示,接着会出现一个对话框,最后把单片机的工作频率增添进去里面,即为9600MHz。[12] 图3-5 设置波特率 4、点击Output标签,在Create HEX前的方框内勾选,这样可以生成hex文件以便输入单片机中[13]。

5、用C语言创建源程序。

6、修改源程序中的错误。

7、测试,链接应用。

第4章 调试及实验结果 4.1指示灯跟继电器的调试 一开始先给整个系统供电,可以观察接上电源后的指示灯有没有亮起,以此来判断整个系统的电路是否正常。[14]当电源正常之后,就开始测试单片机有没有损坏,在编写软件上编写测试指示灯跟单片机的程序,烧写完成之后,看指示灯有没有按照测试预期的想法进行工作,如果是按照预期想法工作的话,那么指示灯跟继电器都是可以正常工作的。

把测试需要用到的程序输入液晶,对液晶进行调试的时候千万要注意:液晶显示屏上的小方块显示,导致初始化过程异常,部分初始化应是指令接收不正确,根据初始化标准程序设置步骤,或修改指令之间存在时间延迟。

液晶屏幕经过调试后的结果为:
图4-1 液晶显示 4.2 按键和指纹模块的的调试 烧入写好的程序,接下来测试按键和指纹模块能否正常工作,操作顺序如下:
1、接入电源时,指示灯被点亮。

2、输入“*”键,液晶会出现“请按指纹”,指纹模块背景灯亮起,然后把拇指放到指纹模块亮灯处就能够进行指纹识别了。

3、如果识别到的指纹是正确指纹,继电器就会工作,门锁将打开,可以顺利进入。接下来任意输入一个键,液晶显示将会返回原始画面。假如无法识别到是否有按压指纹或者指纹是错误的,门会无法打开,想进入的人就会进不了,此时输入任意键回到原始界面,可以继续进行指纹识别。

4、在初始画面输入按键A,屏幕显示“请输入密码”,这时候输入6位初始密码可以进入到操作员模式,B键是删除键,可以用来删除添加的数字,D键其实就是确认键,输完密码点击确认即可成功打开设置页面。

5、在操作员模式下,输入按键“1”可以增加指纹,在指纹模块亮起的地方按压手指,如果录入指纹成功,屏幕会显示“指纹录入成功,编号00X”,录入失败则会显示“指纹采集失败,请重新操作”就可以继续录入直到录入成功为止。

6、按下按钮“2”就可以对存储的指纹进行删减操作,只要输入删去的指纹号就可以完成这一步的工作。

7、当模块无法进行识别的时候,可以输入“3”手动打开门锁,不需要识别指纹。

8、输入“4”键可进行修改初始管理密码。

上述的所有程序都过一遍遇到不符合标准的,那么就要重新再检查一次,直到作品没有其他的任何问题为止。

假如一开始测试的时候就没有什么问题的话,就说明所有的工作都是正确的,整个作品也达到了预期。

4.3指纹识别正确率测试 以上测试步骤完成后,对指纹识别的正确率做了一个测试,分别对指纹添加时的识别和开锁时的指纹识别情况做了个测试,测试结果如下图: 图4-2指纹识别测试 第5章 总结与展望 5.1总结 此篇文章主要是讲,如何运用自身所学的知识,来设计和实现一个单片机为核心具备有指纹识别开门功能的系统,整个设计综合了指纹识别、液晶和单片机等知识的运用。指纹识别系统的电路器件的每一部分都是基于单片机设计的,用Keil软件进行代码编写,最后用STC软件给单片机进行烧写,整个设计可以实现指纹开锁和相关的一些功能,实物可以应用到入户大门,电脑背包之类的。以上即为本设计的主要内容,指纹模块还有很多东西待开发,为了使人们生活便利,本设计还要接着创新完善。

5.2展望 随着未来科技的发展。指纹解锁将会迅速的普及,基于单片机的指纹识别密码锁的设计,这里的设计工作中存在一些未解决的问题,在实际应用中需要不断积累和完善。

1、 本次论文只是初步设计了一个指纹密码开锁功能,各项功能还不够全面,可以进一步的深入加强研究 2、 此系统的指纹识别灵敏度和正确率都有待提高。

参考文献 [1] L.Coetzee, et al. Fingerprint Recognition in Low Quality Images. Pattern Recognition.1993,vol.26:1441-1460. [2] TIAN Jie, CHEN Xinjian, et al. Recent progress in fingerprint recognition. Progress in Natural Science. 2006, vol.03:231-240. [3] 赵玉兰,姜春风,方修丰.指纹识别技术在煤矿门禁系统中的应用与实现[J].煤炭技术.2010,29(11):132-134. [4] 赵晓玲.单片机在指纹保险柜中的应用[J].微计算机信息.2006,20(20):134-136. [5] 刘小华,王燕生.指纹识别技术的发展[J].光学技术.1998,23(04):78-80. [6] 郭天祥.新概念51单片机C语言教程[M].北京:电子工业出版社,2009:60-400. [7] 张毅刚.单片机原理与应用[M].北京:高等教育出版社,2006:56-234. [8] 赵建领.51单片机开发与应用技术详解[M].北京:电子工业出版社,2009:75-124. [9] 陈光新.自动指纹识别技术及其应用[J].江苏船舶.2004,24(03):32-35. [10] Kazuharu Yamato, et al. Problems of Fingerprint Look up Devices and How to Resolve Them. Gazo Denshi Gakkaishi.1995,vol.24:382-391. [11] 郑春来,韩团军,李鑫.编译软件Keil在单片机教学中的应用[J].高教论坛.2009,15(12):96-97. [12] Prata.S.C Primer Plus中文版[M].北京:人民邮电出版社,2005:74-99. [13] 吴凌燕.基于Proteus的单片机仿真设计[J].仪表技术.2011,17(07):31-37. [14] 唐钱辉,丁明亮.Proteus ISIS 和Kei l在单片机教学中的应用[J].重庆电力高等专科学校学报.2006,8(04):46-49.

推荐访问:密码锁 单片机 指纹