版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本科论文本科生毕业设计(论文)使用授权声明沈阳城市学院有权保留并向国家有关部门或机构送交毕业设计(论文)的复印件和磁盘,允许毕业设计(论文)被查阅和借阅。本人授权沈阳城市学院可以将本科毕业设计(论文)的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复印手段保存、汇编毕业设计(论文)。设计(论文)作者签名:日期:指导教师签名:日期:目录TOC\o"1-2"\h\u7733摘要 II4639Abstract III14030引言 1246151总体方案设计 350871.1设计要求 3183371.2方案比较与论证 3258672硬件介绍和设计 5129102.1单片机及最小系统 5108382.2液晶显示模块 6285672.3按键控制部分电路 7290112.4指纹模块 8118612.5继电器模块 9196143系统软件设计 10240753.1系统程序工作分析 10246663.2主程序流程图 108543.3LCD显示模块程序设计流程 12295923.4Keil编程 14210924硬件调试 16137574.1电路的焊接 1684894.2程序的烧写 1683014.3小灯的调试 1761994.4液晶的调试 18249684.5指纹模块、按键的调试 1832568结论 1922063参考文献 2010848附录1原理图 229979附录2PCB图 2330804附录3源程序 2422206致谢 33摘要世界在不断发展,人们的追求也在不断提高。传统的家庭防盗锁不再能满足人们的需求,因为其的构造与制作比较简单,安全性能不能得到很好的保障。现在的电子产品已经更趋向于安全化、智能化、小型化。因此在这个行业内只要谈及到控制芯片,那么首先想到的就是单片机。传统的机械式系统已经不能符合当今时下的发展需求,已经逐渐被安全性能强、体积小的电子式系统所取代。本系统所采用的控制器是单片机,型号是STC89C52单片机,采用的指纹存储系统是通过自购实现的。比对流程和结果则通过液晶显示出来,开锁的动作需要用到直流继电器与发光二极管来模拟。本系统摒弃了传统系统体积大、性价比低、传输速度慢等缺点,非常适合家庭或者公司使用。结果表明,本设计制造由于结构简单,所以成本较低,性能也十分优良。通过软件与硬件方面的调试并进行仿真实验,在技术上完全可行。预期功能可以全部实现,本设计很好地实现了指纹密码锁在生活中的应用,也可以做出很好的推广。关键词:指纹;芯片;单片机AbstractWiththedevelopmentofscienceandtechnology,theprogressofsociety,peoplearemoreandmorepursuingthequalityoflife.Thetraditionalhomesecuritylockcannolongermeettheneedsofpeople,becauseitsstructureandproductionisrelativelysimple,thesecurityperformancecannotbewellguaranteed.Nowtheelectricproductsaremoresecurity,intelligenceandminiaturization.Therefore,aslongaswetalkaboutthecontrolchipinthisindustry,thefirstthingwethinkaboutisthesinglechipcomputer.Thetraditionalmechanicalsystemcannotmeetthecurrentdevelopmentneeds,hasgraduallybeenreplacedbytheelectronicsystemwithstrongsafetyperformanceandsmallvolume.Thecontrollerusedinthissystemissinglechipmicrocomputer,themodelisSTC89C52singlechipmicrocomputer,andthefingerprintstoragesystemisrealizedbyselfpurchase.ThecomparisonprocessandresultsaredisplayedbyLCD,andtheunlockingactionneedstobesimulatedbyDCrelayandled.Thissystemabandonstheshortcomingsoftraditionalsystem,suchaslargesize,lowcostperformance,slowtransmissionspeed,andsoon.Itisverysuitableforfamiliesorcompanies.Theexperimentalresultsshowthatthedesignandmanufactureissimpleinstructure,lowincostandexcellentinperformance.Throughthedebuggingofsoftwareandhardwareandthesimulationexperiment,itisfeasibleintechnology.Theexpectedfunctioncanberealized.Thisdesignwellrealizestheapplicationoffingerprintpasswordlockinlife,makingfingerprintidentificationtechnologymoreandmoremature.Keywords:Fingerprintidentification;Singlechipmicrocomputer;Acombinationlock引言科技是在不断的进步的,欺骗人的手段同样也是在不断进步的,所以传统的防盗系统在现今社会来讲已经有一些落后了。人们都有一些固有思维,总认为密码银行卡等等是最具安全性的,是安防系统最有效的验证身份的信物,但是仔细分析来看,这些信物验证的不是人本身,而是该人拥有的物品。在当今社会中,持有物品的本人只要物品的有效性得到了确认,其持有者本身的身份也就得到了证实。但是,若是物品造成了丢失或出错就会相应导致物品主人的身份无法认证,并且在当今时代各种物品都是会被伪造的,所以这种通过物品来确认人的身份的办法是存在明显的漏洞的。随着网络科技的飞速发展,各种各样的密码伴随着人们的生活,如银行密码、开机密码、社交网站登陆密码等,密码已经逐渐成为我们身份认证的标志。但是随着科技水平的提高,密码的弊端逐渐显露,容易被人遗忘和窃取,其无论是在安全性还是智能化方面都不再能满足人们的需求。如今如门锁、汽车、保险柜的钥匙也同密码一样,面临着被更新换代的局面,这些传统的安全防盗系统的安全性越来越不能得到保障。但是随着人们安保意识的加强,安全防盗系统是人们生活中必不可少的,每个人都要进行个人身份和权限的确认,同时也希望确认的方式能够快捷方便。认识到这个问题后,生物识别技术逐步走进了大众的视野,每个人都有自己独特的生理特征和独特的行为,这样人们可以把这些特点用来进行防盗。生理特征相较于密码、钥匙来说安全性能更高,具有不可复制性,有专家推论300年内都不会出现两个指纹完全相同的人(以全球60亿人口计算),这样一来人们就不用再费心去记各种复杂的密码,出门也就不用携带众多的钥匙了。拿当今电子商务的安全认证来说,如果使用安全性极高的生物特征认证方式,就可以有效杜绝假冒当事人的诈骗事件了。生物特征的应用范围很广泛。如今日常生活中用到的如电饭煲、汽车、洗衣机等都需要微处理器来控制,这是与单片机分不开关系的,单片机具有控制性能强、可靠性高等优点,如今作为控制器的技术已经发展得十分迅猛。因此本设计选择了使用单片机控制,完成指纹识别操作这一课题。在实践中将课堂中所学的知识利用起来,充分发挥二者结合的优势长处。生物识别技术包含的范围很广泛,很多的生理特性和特点都可以用来进行识别,由于不同生物识别技术之间存在着差异,指纹识别是其中较有优势的一种识别方式,也可以大规模的投入市场应用,这项新技术的研发有效缓解了当今世界的安保压力,及时接替了传统安保系统的重担。一方面,市场上充斥着很多低价位的取样产品,他们可以快速的取样。这样也加快了指纹识别系统的发展。这项新技术已经应用到很多的产品上,包括人们现在使用的手机,大部分都已经安装了指纹解锁的功能,人们所使用的门锁大部分也都已经采取了指纹解锁的功能。目前我国在这一领域并没有一个强有力的品牌和厂家可以推出自己的产品,并且去占有一定的市场份额,虽然有一些也已在研发这样的产品,但他们大多数都是通过直销的方式为政府机关、金融企业提供产品,并没有放开全国性业务。可以看出这项产品的技术还是没有攻克,还需要更加努力。现在指纹锁无论是技术还是工艺方面占据优势的是德国与韩国。国内的工艺水平较低,主要以组合安装为主,如岭南锁系。国内的大部分指纹锁产品由于技术水平不够只是占据了低端市场。国外的产品在我国占据了很多的高端市场进行销售,由此可见国内外品牌的利润相差悬殊。随着公众对于传统门锁需要更新换代的呼声越来越高,国内企业在这样巨大的市场需求下纷纷开始研制指纹安防产品,但是目前的这种情况并没有得到有效的改观。电子锁、单片机、指纹模块、ADC键盘、液晶显示屏、时钟是本设计的几个主要部分构成,在整个系统当中,指纹当然是整个系统最重要的重中之重,在第一章中介绍如何选择这个方案以及如何构思。第二章介绍是怎么设计所需要的电路的。第三章介绍设计系统软件。第四章介绍实物制作与调试。1总体方案设计本设计采用的核心处理器为STC89C52单片机,其是一种直流供电电压的8位微控制器单片机,电压为2.0V至3.8V,内部具有大存储量的内存空间。其在原有基础上进行了许多改进,相较于传统的51单片机单位时间内消耗功率更少。STC89C52单片机是许多嵌入式控制系统的理想选择,因为其的效率和灵活度都较高,具有平滑的8位CPU和可编程闪存系统。总体框图如图1.1图1.1系统总体框架图1.1设计要求1)开机,按下开机键以后,根据显示屏的指示,我们将手指进行放入。这里需特别注意,在本系统中识别成功的标志是绿灯亮起。如果没有识别成功,则绿灯不会亮起,需要进行第二次识别。2)管理员模式:正确输入六位数的密码方可进入到管理员模式,如果密码不正确则不能进入管理员模式。管理员模式是帮助用户在初始状态下录入指纹,以及在必要时候删除或更改指纹。本系统还具备修改密码的功能。同时,管理员模式还可以进行危急情况下的应急开锁功能。1.2方案比较与论证方案一:控制数字电路本法的优势就是设计简单,经济实惠。一共需要输入十六个按键,但是其中有十二个按键是有效的密码按键。当其他人输入密码错误三次以上,则系统会自己锁定。同时还有备用电源,备用电源的作用就是当停电时,备用的电源可以支持系统正常的工作。其如图1.2所示:图1.2数字密码锁方案方案二:控制主体是单片机首先,设备的编程方式是灵活的:为了提高使用的安全性和节约用户的成本,用户在更换程序时,可以直接擦拭之前输入的程序,重新写入程序下载到设备中,这样在编程过程中用户就可以根据自己的需求来进行程序设计。其次可以添加多个组件的I/O端口是非常灵活的,可以实现其他机械锁不能完成的功能,比如可以显示时间和温度,还可以添加远程控制等功能。若是在其他机械锁中也想实现这种效果,则需要增加额外的组件。准确性是至关重要的,它是保障安全性的前提,如果想要实现稳固的安全保障,精度就要达到一定的要求。单片机的准确性还是合乎标准的,以其为核心的控制方案在实现基本功能的基础上,还可以增加一些额外的功能。进行比较后发现单片机方案还是有很大发展空间的,不仅可以满足基本需求还能一定程度上增加一些额外的功能,同时系统升级也比较便利。所以在权衡利弊后我们选择以单片机为核心的控制方案。2硬件介绍和设计2.1单片机及最小系统 该系统中最小的模块是单片机的最小系统如图2.1所示。图2.1单片机最小系统2.1.1STC89C52单片机介绍单片机就是将各个方面的集成电路进行集合,并且具有自我计算能力的集成电路。它其中有中央处理功能,有存储功能,还有输入和输出功能。STC89C52单片机的特点是能耗低、简单实用、经济价值高。内部存储空间大,并且可以随意编程,出现错误可以进行随意改变。2.1.2外部晶振的设计该种振荡器在系统中的作用十分重要。振荡的频率越快,则单片机运行的速度越快;振荡的频率越慢,则单片机运行的速度越慢。普通的已经可以在本设计中使用,更高级别的暂时在本次设计中还用不到。在该系统中本设计选择的是电容值为30PF的振荡器。时钟电路如图2.2所示。图2.2外部晶振电路本设计所选择的晶振频率是可以满足单片机进行正常使用的,所以该设计十分合理。它的振荡周期是约为1us。2.1.3复位电路的设计在实际的操作中,设计有时候需要将电路进行复位,也就是将电路调整到一个固定的状态,简称为复位。单片机也有自己的复位电路,在本次设计中需要用到。一般的复位电路分为两个部分。一个部分是充上电源以后可以进行复位,另一个部分是通过按键对其进行复位。(1)上电复位:在本系统中就是通过电容将电压降低到低电压,作用就是可以将系统和单片机进行系统复位。(2)按键复位:在本系统中,通过按动开关S1,即可对系统进行复位。复位电路如图2.3所示。图2.3复位电路2.2液晶显示模块液晶显示屏的技术成熟于上个世纪,它的特点是显而易见的,所占的空间少,体积小。工作环境适用广,在极高的温度和极低的温度下都可以保持正常的运行,同时价格低,易于大批量生产,也易于在本次系统中进行选择使用。2.3按键控制部分电路在本系统操作当中,断开的显示就是高电平。反之,如果系统显示是低电平,则表明正常的连接。通过这个特点,我们就可以判断按键是按下还是没有按下。同时在本系统中我们还考虑到了消除干扰信号的问题,本设计加入了一个抖动电平。按键电路如图2.4所示。图2.4按键闭合及断开前后的电压按键的设计,本设计选择了独立按键和矩阵式按键两种方案进行比较。独立按键的优点是独立配置,简单方便耐用,经济价值实惠,但是它比较浪费资源。所以在面对本设计按键较多的复杂情况下,本设计选择矩形按键,如图2.5所示。矩形按键的优点是系统具有可靠性,键盘设计也较为简单。按键按下呈低电平,并采用软件消抖来减少对单片机影响。图2.5按键电路如上图所示,交叉点就是我们按键的位置。当按键时,通过电平的变化可以得知按键的变化。在此次实验中所采用的方法是扫描法。当按键为按下时,则可以通过万用表检测出为低电平。如果想要确定是按下的哪个按键,那么只需要检测其他按键为高电平,低电平的那个就是按下的按键。2.4指纹模块2.4.1指纹模块简介AS608是本设计的指纹模块型号,其电路图如图2.6所示。图2.6指纹模块指纹模块里边也有相应的填充芯片,外面用来验证指纹生物特征的是CMOS芯片,图2.7所示就是一个用户的指纹模板,若想生成指纹模板需要进行两次的指纹特征认证。首先用户需要进行指纹扫描,在指纹模块识别到指纹的生物特征后会形成一个合成模板,也就是建立属于用户的指纹库文件。这就是指纹模块的具体运作流程。图2.7指纹模版这个模块的作用主要就是记录下每一个人手指的样子,并且将记录下来的样子进行存储。工作的流程就是当它进行识别指纹时,识别到的指纹会与数据库中的指纹进行比对,如果可以比对的上则识别成功。主要技术指标:供电电压:交流电3.8~7.0V背光颜色:红色亮灯方式:亮和闪烁供电电流:工作电流:<65毫安峰值电流:<95毫安指纹图像录入时间:<0.5秒2.4.2指纹模块命令单片机的接口发送与接受命令是指纹模块能够成功运行的关键。指纹模块首先接受串口发送来的命令,之后再传回数据。若想知道命令有没有成功地执行,则需要观察单片机对数据的处理程度。2.5继电器模块由指纹模块和密码设置模块接收上位机的信号,单片机收到指令开始工作。如果密码输入正确或者指纹识别成功,则控制门锁电路的继电器工作,控制门锁打开,同时显示模块显示锁已开,延时一段时间后电子锁本身电路工作,从而实现开锁功能。继电器模块如图2.8所示。图2.8继电器电路3系统软件设计3.1系统程序工作分析本系统中所采用的控制器是单片机,其连接两个模块,一个是按键的程序。另一个是指纹的程序。其模式主要是主程序能够随时调用作为子程序的C语言函数(指纹识别模块和液晶)。在本文所设计的程序中,对单片机进行编程的方式是利用到了Keil单片机软件开发环境。首先将源程序拆分成几个模块分别进行编写,最后整理成一个最终文件,这刚好符合模块化的程序设计。我们可以比较大限度地进行程序的编写和调试,代码文件通过后可以下载到单片机,这都得力于开发环境的宽松,可以对软件进行仿真调试。主程序的初始化工作应该伴随着单片机的上电完成。主程序需要对液晶初始化,同时要检测按键,这都是基于电路的功能要求。3.2主程序流程图下图3.1所示为根据分析后所制订的主程序设计流程。若要对程序进行巡检,第一个模块首先会进行初始化状态设置,之后系统会判断是否有按键进行按下以及哪个按键进行按下。液晶、通讯子程序、按键程序是构成主程序的重要组成部分。若要完成一个完整的主程序工作,首先则要对各种硬件功能模块进行初始化。(这其中包括液晶显示、键盘扫描、指纹模块)图3.1主程序流程图3.3LCD显示模块程序设计流程这个模块的主要功能就是为了在液晶屏幕上显示收到指令的程序数据内容。程序流程如图3.2所示图3.2程序流程图3.3.1指纹模块通讯协议说明该模块在收到和发出信号的时候,都采用的是接收数字信号的模式。需要注意一点,在接收信号和发出信号的同时,高字节的信号要在低字节信号之前进行发出。模块需要接收上位机发出的指令,与此同时,它会自己计算出一个结果,将该指令传递到下一个模块。这里我们要引出一个新的概念叫应答包,应答包可以处理以上接收信号,并且做出判断和指令传输到下一个模块。与此同时接收到正确的指令以后将会执行相应的操作,如果接收到的是错误指令,则不会进行相应的操作。3.3.2指纹模版的采集存储对同一用户的相同指纹连续收集两次,收集的图像存储在缓冲区ImageBuffer,之后图像会转化成指纹的生物特征,从而可以将该指纹存储到存储库当中。这样一个简单操作的过程就是指纹的采集。该系统的指纹库一共可以存储采集大约五百个左右的指纹,并且可以对每一个指纹进行独立编号,编号的方式就是录入的先后顺序,分为一二三,一直到五百。指纹采集程序图如图3.3所示。图3.3指纹采集程序3.3.3指纹比对程序设计该系统在进行指纹是否是正确的比对操作时,首先会将录入的指纹与自己储存的指纹库当中的指纹进行比较。对指纹库当中的指纹进行搜索,搜索出来的指纹与相应的指纹进行比较,如果比对成功则代表指纹输入成功,如果比对失败则代表输入不成功。搜索的方式为从一到五百依次进行指纹搜索。指纹比对程序图如图3.4所示图3.4指纹比对程序3.4Keil编程上文显示所有的硬件都已经选择好,接下来就需要开发指纹模块、液晶、按键,而进行开发的核心就是电路中的主控制器单片机。主程序需要对子程序进行调用,所以首先应建立C语言一系列的子程序。采用Keil用于单片机的编程。C源码可以被Keil编译并汇编源程序,其的优点就在于可以快速生成代码,且生成的汇编代码通俗易懂。[11]该软件的优点为简单操作实用,经济实惠,编程能力十分强大。流程:(1)创建一个命名为“Fingerprint”的新工程。(2)新建一个命名为main.c的text文件,然后在Target1的子文件SourceGroup1中添加main.c文件。(3)在弹出下一个对话框之后,在Xtal后输入9600,即单片机的工作频率为9600MHz。设置波特率如图3.5所示。图3.5设置波特率(4)点击Output标签,勾选CreateHEX前的方框,这样可以生成hex文件以便输入单片机中。(5)编程(6)修改错误(7)测试并且使用4硬件调试4.1电路的焊接4.1.1焊前准备如果想要做好引线成型等装配前的准备工作,同时要熟悉焊接的先后顺序。并且按照图纸严格的进行焊接,不允许超过图纸自己焊接。程序所遵循的顺序就是先焊电阻,后焊电容。之后才是二极管,三极管等等,主要就是先小后大,先易后难。在焊接电容时,我们要清楚的一点是不要搞错电容的正负极。在焊接二极管时,不要搞错二极管的阴阳极,同时时间也不要超过太长,大概是一秒钟左右为最好。焊接三极管时不要搞错三个引线的位置,同时焊接的时间要最短,为的是加快散热。对于集成电路的焊接,一定要严格按照图纸来进行焊接,各个型号和引脚的位置都要符合图纸中所出示的位置。多余的引脚不要保留,应该用剪刀将它剪去。4.1.2注意事项:1)为了让屏幕能够正常显示、保持完好,不能对正在处理机械振动的模块施加外力。2)为了保护屏幕的完整光滑,不能用手或坚硬工具划、按压、磨擦显示屏。3)如果发生意外情况导致屏幕碎裂,液晶化学材料流出,要严禁皮肤与液晶接触,如果不慎接触要即刻用酒精和水清洗。4)如果显示屏有异物,可以用棉球蘸取少量的石油苯来轻轻擦拭屏幕,不能使用对偏光片不利的可溶有机体来清洗显示屏。5)要注意高压静电,其中放出的电流将损坏模块中的CMOS电路。6)模块的放置环境对温度和湿度都有严格的要求,温度不能过高,保持在35度一下,湿度也要保证好,如果湿度多大,很多的元器件将会失灵。7)模块的存储环境要远离太阳直射的地方。4.2程序的烧写本设计采用的是STC-ISP,该软件的特点是操作简单易于学习,编程发现错误以后可以尽快的修改,因此应用十分广泛。烧写程序如图4.1所示。图4.1烧写程序调试通过的代码文件通过STC_ISP_V480下载到单片机。STC_ISP_V480使用步骤为:打开STC-ISP,在MCUType栏目下选中单片机STC89C52RC。选中COM端口,波特率选择9600。点击“打开文件”按钮并在对话框内找到要下载的HEX文件。点击download/下载,根据提示给单片机上电,即可完成程序烧写。在对单片机进行增加电源之前,首先应该将主程序的初始化也完成。按照对电路的功能化要求,主程序在有对应的按键按下时,要执行相应的操作,且必须要对按键检测,液晶也要初始化。4.3小灯的调试当按下电源键的时候,灯是否亮起,则证明该电路是否已经正常的运行。之后要做的工作就是进行单片机的测试。首先导入单片机一段程序。该程序如果可以正常运行时,小灯是可以正常的亮起。如果此时小灯没有按照我们的程序正常亮起,则证明单片机是有问题的,需要把它拆下来进行维护和更换。4.4液晶的调试首先我们导入测试程序,并且对该系统进行通电。通过调节液晶显示器后面的调节按钮。这时在屏幕的正中央出现了一个小方格,这是液晶显示屏出现了一定问题,所以不能正常地接收和发出指令。可以按照标准化的步骤对其进行调试如图4.2所示。图4.2调试过程4.5指纹模块、按键的调试首先将之前所编写好的程序进行导入。1)打开电源,观察电源的指示灯是否亮起。2)按“*”键,等待液晶显示屏上出现让用户输入指纹的指示。方法就是当有人把手指放到上面的时候,小灯也会正常的亮起。3)如果指纹被系统识别成功,则灯亮起以后使用者可以打开。如果用户的指纹没有被识别成功,此时则需要重新进行输入,三次输入失败以后系统将会进行报警。4)该系统还可以进行输入密码、删除密码以及管理员进行操作的模式。5)进入管理员模式,此时我们可以进行密码的输入。密码是由六位数字进行组成,如果我们输错可以进行删除。6)对于已经录入的密码,如果我们想要删除这个密码,进入管理员模式以后也可以对其进行相应的删除。如果以上步骤不符合要求需要重新检查程序,直到实物可以正常工作为止。如满足上述要求时,实物就算调试完成,达到设计要求。结论在本篇文章中主要展示了一个指纹识别系统,它的控制核心就是单片机。单片机进行控制指纹识别模块识别我们的指纹,液晶显示屏显示数字和文字。通过按键可以精准的进行信号的识别与确认,最后LED指示灯也可以让用户一目了然操作是否成功。文章首先介绍了指纹识别系统的原理,还进一步介绍了识别系统所应用的各种硬件电路,系统使用Keil软件进行编程,将软件编程好以后,本设计通过检测将正确的软件导入到单片机中,使整个系统可以正常的运行。研制成功以后,此设计不仅可以运用到家里的门锁上面,还可以运用到商场的贵重物品上,应用的前景十分广泛。本设计由于还有很多硬件软件待开发,以上只是本设计的大致内容,为了能使人们的信息安全得到保障,并且充分为受众提供便利,还需要更多的相关从业者投入到其中来进行创新完善。参考文献[1]L.Coetzee,etal.FingerprintRecognitioninLowQualityImages.PatternRecognition.1993,vol.26:1441-1460.[2]TIANJie,CHENXinjian,etal.Recentprogressin
fingerprint
recognition.ProgressinNaturalScience.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]KazuharuYamato,etal.ProblemsofFingerprintLookupDevicesandHowtoResolveThem.GazoDenshiGakkaishi.1995,vol.24:382-391.[11]郑春来,韩团军,李鑫.编译软件Keil在单片机教学中的应用[J].高教论坛.2009,15(12):96-97.[12]Prata.S.CPrimerPlus中文版[M].北京:人民邮电出版社,2005:74-99.[13]吴凌燕.基于Proteus的单片机仿真设计[J].仪表技术.2011,17(07):31-37.[14]唐钱辉,丁明亮.ProteusISIS和Keil在单片机教学中的应用[J].重庆电力高等专科学校学报.2006,8(04):46-49.[15]林三宝.高效焊接[M].北京:机械工业出版社,2012:45-78.[16]杨朋飞,聂亮,陈靖,蔡长龙.基于STC89C52单片机的指纹密码锁系统设计与实现[J].传感器与微系统,2020,39(05):81-83+86.[17]唐瑞,于娟.基于单片机的指纹密码锁系统设计[J].科技与创新,2016(12):12-13.[18]林立,张俊亮.单片机原理及其应用[M].北京:电子工业出版社,2009.[19]陈光新.自动指纹识别技术及其应用[J].江苏船舶,2004,21(3).[20]赵玉兰,姜春风,方修丰.指纹识别技术在煤矿门禁系统中的应用与实现[J].附录1原理图附录2PCB图附录3源程序#include<reg52.h>#include<intrins.h>#include"matrix_key_4x4.h"#include"LCD12864.h"#include"24c0x.h"#include"finger.h"#include"JQ6500_KEY.h"unsignedcharpas[6]={1,5,8,1,5,8};//存储密码数组unsignedcharpas_power[6]={1,5,8,1,5,8};//强制密码(忘了密码时,这个密码作为强制密码可以生效)unsignedcharpas_tmp_[6]=1;//临时输入的密码存储地方unsignedcharfinger_del_num[3]={9,9,9};//存储要删除的指纹号#defineC_KEY_V10//密码界面进入按键#defineB_KEY_V11//修改密码界面进入按键#defineD_KEY_V12//删除输错的密码按键#defineQ_KEY_V13//确认按键#defineX_KEY_V14//星号键--用于进入指纹设置界面#defineM_KEY_V15//米号键--用于退出指纹设置界面sbitrelay=P3^6;//继电器IO口引脚unsignedcharkey_value=20;//存储矩阵键盘键值unsignedcharpas_check(unsignedcharpassword[6],unsignedcharpas_input[6]);//密码对比函数unsignedcharget_6_bit_pas(unsignedcharpas_tmp[6]);//获取六位密码voidkeyboard_password_deal();//矩阵键盘密码处理函数voidchange_password();//修改密码函数voidinit_pas_data();//上电初始化密码数据函数voidir_password_deal();//红外密码处理函数unsignedcharir_get_6_bit_pas(unsignedcharpas_tmp[6]);//获取红外键盘六位密码voidir_change_password();//利用红外键盘修改密码函数voidfinger_idtf();//指纹识别函数voiddelay(unsignedinti){ while(i--);}//短延时函数voidbeep_short(unsignedinti){beep=0;delay(i);beep=1;}//蜂鸣器短鸣函数//首界面函数voidlcd_first_interface(){ LcmClearTXT(); PutStr(0,1,"密码门禁系统"); PutStr(3,0,"按指纹解锁"); PutStr(2,0,"按键C:输入密码"); PutStr(1,0,"按键B:修改密码");}//主函数voidmain(){ fingerprint_init();//指纹模块初始化 jq6500_init(); LcmInit(); //LCD12864初始化 LcmClearTXT(); //LCD12864清屏 init_pas_data();//上电初始化密码数据函数 lcd_first_interface();//首界面函数 while(1){ key_value=get_key();//获取矩阵键盘键值 keyboard_password_deal();//矩阵键盘密码处理函数 finger_idtf();//指纹识别与处理函数 }}//指纹识别函数voidfingerprint_identification(){unsignedcharIDs1,IDs2,IDs3; LcmClearTXT(); PutStr(1,1,"请按手指开锁"); delay(50000); SFG_identify(); while(confir_code==2){SFG_identify();} if(confir_code==0){ LcmClearTXT(); PutStr(1,2,"门已打开"); jq6500_Mkey_play(2); IDs1=PageID/100; IDs2=PageID/10%10; IDs3=PageID%10; PutStr(2,1,"编号为:"); WriteCommand(0x8D); //指定第三行显示位置 WriteData(0x30+IDs1); WriteData(0x30+IDs2); WriteData(0x30+IDs3); relay=0;delay(50000);delay(50000);delay(50000);delay(50000);relay=1; }elseif(confir_code==9){ LcmClearTXT(); PutStr(1,1,"没搜索到指纹"); PutStr(2,1,"请重新按手指"); jq6500_Mkey_play(3); beep=0;delay(50000);delay(50000);beep=1;}else{ LcmClearTXT(); PutStr(1,1,"请勿移开手指"); PutStr(2,1,"或重新按手指"); delay(50000);delay(50000); }}//录入指纹voidfinger_add(){ unsignedcharIDa1,IDa2,IDa3; LcmClearTXT(); PutStr(1,2,"请按手指"); finger_wak=0; while(finger_wak==1); SFG_getimage(); while(confir_code!=0){SFG_getimage();delay(100);} SFG_genchar();UART_Init(); SFG_fastsearch();while(confir_code==1){SFG_fastsearch();} if(confir_code==0){ LcmClearTXT(); PutStr(1,1,"该指纹已存储"); delay(50000);delay(50000);delay(50000); }elseif(confir_code==9){ SFG_enroll(); while(confir_code==2){SFG_enroll();} LcmClearTXT(); if(confir_code==0){ IDa1=PageID/100;IDa2=PageID/10%10;IDa3=PageID%10; PutStr(1,1,"指纹采集成功"); PutStr(2,1,"编号为:"); jq6500_Mkey_play(2); WriteCommand(0x8D); WriteData(0x30+IDa1);WriteData(0x30+IDa2);WriteData(0x30+IDa3); beep=0; }elseif(confir_code!=0){ PutStr(1,1,"指纹采集失败"); PutStr(2,1,"请重新操作"); jq6500_Mkey_play(3); } } delay(50000);delay(50000);delay(50000);beep=1;}//清空所有指纹--应用函数voidfinger_clear_all(){ SFG_empty(); LcmClearTXT(); if(confir_code==0){ PutStr(1,1,"删去所有指纹"); PutStr(2,3,"成功"); jq6500_Mkey_play(2); }else{ PutStr(1,1,"删去所有指纹"); PutStr(2,3,"失败"); jq6500_Mkey_play(3); } delay(50000);delay(50000);delay(50000);}unsignedcharget_3_bit_finger_del_num(unsignedcharpas_tmp[3]){ unsignedcharflag_cn=0; unsignedcharkey_v=20; LcmClearTXT(); PutStr(0,1,"请输入指纹号"); WriteCommand(0x93); //指定第三行显示位置 while(flag_cn<3){ key_v=get_key(); if(key_v<10){WriteData(0x30+key_v);pas_tmp[flag_cn++]=key_v;} if(key_v==D_KEY_V){if(flag_cn>0)PutStr(2,flag_cn--,"");} } PutStr(2,1,"请输入确认键"); while(get_key()!=Q_KEY_V); return1;}//根据指纹录入编号删除指纹voidfinger_del(unsignedintnum){ SFG_deletchar(num); if(confir_code==0){ LcmClearTXT(); PutStr(1,1,"删去指纹成功"); }else{ LcmClearTXT(); PutStr(1,2,"删去指纹失败"); } delay(50000);delay(50000);delay(50000);}voidfinger_deaL(){ LcmClearTXT(); PutStr(0,0,"按键1:录入指纹"); PutStr(1,0,"按键2:删去指纹"); PutStr(2,0,"按键3:清空指纹"); PutStr(3,0,"按键#:退出"); while(key_value!=M_KEY_V){ key_value=get_key(); if(key_value<4&&key_value>0){ switch(key_value){ case1:finger_add();break; case2:get_3_bit_finger_del_num(finger_del_num);finger_del(finger_del_num[0]*100+finger_del_num[1]*10+finger_del_num[2]);break; case3:finger_clear_all();break; } LcmClearTXT(); PutStr(0,0,"按键1:录入指纹"); PutStr(1,0,"按键2:删去指纹"); PutStr(2,0,"按键3:清空指纹"); PutStr(3,0,"按键#:退出"); } }}//指纹识别与处理函数voidfinger_idtf(){ finger_wak=0; if(finger_wak==1){ LcmClearTXT(); PutStr(0,1,"指纹唤醒"); fingerprint_identification(); while(finger_wak==1); lcd_first_interface(); } if(key_value==X_KEY_V){ LcmClearTXT(); //LCD12864清屏 PutStr(1,1,"输入6位密码"); get_6_bit_pas(pas_tmp_); if(pas_check(pas,pas_tmp_)==1||pas_check(pas_power,pas_tmp_)==1){ finger_deaL(); }else{ PutStr(3,2,"密码错误"); jq6500_Mkey_play(3); //beep=0; delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);delay(50000); beep=1; } lcd_first_interface(); }}//初始化内部eeprom用于读取之前保存的距离限制值voidinit_pas_data(){ unsignedcharis_first_init1=at24c0x_read(0x20); unsignedcharis_first_init2=at24c0x_read(0x21); unsignedchari=0; if((is_first_init1+is_first_init2)==8){ for(i=0;i<6;i++){pas[i]=at24c0x_read(i);} }else{ at24c0x_write(0x20,0x01); at24c0x_write(0x21,0x07); for(i=0;i<6;i++){ at24c0x_write(i,pas[i]);} }}//按键密码处理函数voidkeyboard_password_deal(){ //密码验证开始 if(key_value==C_KEY_V){ LcmClearTXT(); //LCD12864清屏 PutStr(1,1,"输入6位密码"); get_6_bit_pas(pas_tmp_); if(pas_check(pas,pas_tmp_)==1||pas_check(pas_power,pas_tmp_)==1){ PutStr(3,2,"门已打开"); jq6500_Mkey_play(2); relay=0; delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);delay(50000); relay=1; }else{ PutStr(3,2,"密码错误"); jq6500_Mkey_play(3); //beep=0; delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);delay(50000); beep=1; } lcd_first_interface(); }elseif(key_value>=0&&key_value<=9){ jq6500_Mkey_play(1); } //密码验证结束 //修改密码开始 change_password(); //修改密码结束}//修改密码函数voidchange_password(){ unsignedcharnew_pas1[6]=0; unsignedcharnew_pas2[6]=0; unsignedchari=0; if(key_value==B_KEY_V){ LcmClearTXT(); //LCD12864清屏 PutStr(1,1,"输入6位密码"); get_6_bit_pas(pas_tmp_); if(pas_check(pas,pas_tmp_)==1||pas_check(pas_power,pas_tmp_)==1){ LcmClearTXT(); //LCD12864清屏 PutStr(1,1,"请输入新密码"); jq6500_Mkey_play(1); get_6_bit_pas(new_pas1); LcmClearTXT(); //LCD12864清屏 PutStr(1,1,"再输入新密码"); jq6500_Mkey_play(4); get_6_bit_pas(new_pas2); if(pas_check(new_pas1,new_pas2)){ LcmClearTXT(); //LCD12864清屏 PutStr(1,1,"密码修改成功"); jq6500_Mkey_play(2); for(i=0;i<6;i++){ pas[i]=new_pas1[i]; at24c0x_write(i,pas[i]); } }else{ LcmClearTXT(); //LCD12864清屏 PutStr(1,1,"两次输入密码"); PutStr(2,2,"不一致"); jq6500_Mkey_play(3); } delay(50000);delay(50000);delay(50000); }else{ PutStr(3,2,"密码错误"); jq6500_Mkey_play(3); //beep=0; delay(50000);delay(50000);delay(50000);delay(50000);delay(50000);delay(50000); beep=1; } lcd_first_interface(); }}//得到六位密码unsignedcharget_6_bit_pas(unsignedcharpas_tmp[6]){ unsignedcharflag_c=0; unsignedcharkey_v=20; while(flag_c<6||key_v!=Q_KEY_V){ key_v=get_key(); if(key_v<10&&flag_c<6){pas_tmp[flag_c++]=key_v;PutStr(2,flag_c,"*");} if(key_v==D_KEY_V&&flag_c>0){PutStr(2,flag_c--,"");} } return1;}//六位密码比较输出unsignedcharpas_check(unsignedcharpassword[6],unsignedcharpas_input[6]){ inti=0; for(i=0;i<6;i++){ if(password[i]!=pas_input[i]){return0;} } return1;}致谢在本次毕业设计过程中,我也遇到了很多的困难和问题,但都正常的解决了。应该感谢谢莹老师和冯雅丽老师的论文指导,因为在整个过程当中他们对我提供了很大的帮助和很多意见性上的指导。他们都对我进行了无私的指导和帮助,有的同学手把手教我焊电路板,由于我不熟练,在操作过程当中造成了元器件的损坏。但是,我并没有气馁。还有的同学帮我调试程序,有时一个程序要连续调好几个小时,他们很有耐心,一边调试一边给我讲程序的道理,我获益匪浅。另外,在校图书馆查找资料的时候,也找到了很多对于本篇论文有帮助的书籍。还要感谢指导老师及学长不厌其烦的帮助我进行论文的修改和改进。还有我大学四年来教导过我的所有老师,为我打下了专业知识的基础,帮助我本次论文顺利的完成。感谢本次毕业设计所涉及到的各位学者。本文引用了许多学者的研究文献,这些给了我很多的思路和启发。同时也让我对自己的论文产生了一个明确的思路。最后还是感谢大学四年里在绿岛帮助过我的同学和老师,希望在未来的日子里,我们可以共同进步,砥砺前行。
论文的研究方法和手段有哪些
(1)调查法
调查法是科学研究中最常用的方法之一。它是有目的、有计划、有系统地搜集有关研究对象现实状况或历史状况的材料的方法。一般是通过书面或口头回答问题的方式获得大量数据,进而对调查中收集的大量数据进行分析、比较、总结归纳,为人们提供规律性的知识。
(一)典型例子
调查法中最典型的例子是问卷调查法。它是通过书面提问收集信息的一种方法,即调查人员编制调查项目表,分发或邮寄给相关人员,询问答案,然后收集、整理、统计和研究。
(二)研究步骤
1.确定调查课题
确定题目时要注意选题是否具有研究的必要性和可能性,同时要注意选题切忌太大,也要避免无意义的重复劳动。
2.制定调查计划
要明确调查课题、调查目的、调查对象、调查范围、调查手段、调查步骤、时间安排。
3.收集材料
收集材料时要尽可能保持材料的客观性,尽可能采取多种手段或途径。
4.整理材料
将收集到的材料进行整理,以便后续总结归纳、形成结论。
5.总结研究
对整理完的材料进行分析、总结、归纳,得出一般性的结论。
(三)特点
调查法相对其他研究方法来说较为耗时耗力,但也有其优势,即获得的一手资料信息真实具体,能够对研究对象有更加准确、清晰的认识。
(2)观察法
观察法是指人们有目的、有计划地通过感官和辅助仪器,对处于自然状态下的客观事物进行系统考察,从而获取经验事实的一种科学研究方法。
(一)典型例子
皮亚杰的儿童认知发展理论就是通过观
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 私立华联学院《数据结构C1》2023-2024学年第一学期期末试卷
- 私立华联学院《产品模型制作》2023-2024学年第一学期期末试卷
- 挂篮施工合同范例
- 买方供货合同范例
- 茶供销合同范例
- 弱电供销合同范例
- 吉林2024年吉林省省属高校招聘8人笔试历年参考题库频考点试题附带答案详解
- 商场整体转让合同范例
- 社区车棚订制合同范例
- 公厕维修水电合同范例
- 古希腊文明智慧树知到期末考试答案章节答案2024年复旦大学
- 模具(塑胶件)成本估算表
- 5S的开展进程——现代企业现场的5S管理
- 分部分项工程划分表模板
- XXXX年SGS供应商质量管理培训专用教材
- CAXA考试试题库
- [爆笑小品校园剧本7人]爆笑小品校园剧本
- 中央级水利单位国有资产管理暂行办法
- 相亲相爱一家人简谱
- 农村祠堂上梁说辞
- 电气控制课程设计 消防水泵plc电气控制系统设计
评论
0/150
提交评论