基于指纹IC卡的楼宇门禁系统的设计_第1页
基于指纹IC卡的楼宇门禁系统的设计_第2页
基于指纹IC卡的楼宇门禁系统的设计_第3页
基于指纹IC卡的楼宇门禁系统的设计_第4页
基于指纹IC卡的楼宇门禁系统的设计_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

摘要 随着科技的发展和人们生活水平的提高,现今中国社会的家庭物质财产比上一个十年有了质的飞跃。提高防盗意识,提升锁具的安全系数成为当务之急。过去沿用至今的传统的机械锁由于其构造的简单,以及已经许久没有技术更新,导致安全系数下降。被撬的事件屡见不鲜。反观电子锁,它的出现是当今智能时代来临的大势所趋,其保密性高,使用灵活性好,安全系数高。智能门锁就算被强行破门,在失窃的情况下也能配合其他智能设备,如监控,对嫌疑人的生物特征进行采集。对后期案件侦破有重大帮助。本设计旨在设计一款基于stc89c52单片机并且集成了指纹认证和IC卡认证的智能密码锁。本设计用stc89c52微控制处理器芯片作为主控,采用指纹识别模块,和IC卡认证模块组成的安全认证系统,可通过矩阵键盘输入的电子密码设置指纹密码解锁和IC认证两种解锁方式。采用LCD12864液晶进行显示和交互反馈。测试结果表明,本系统各项功能已达到本设计的所有要求。关键字:防盗安全,智能门锁,stc89c52单片机,IC卡

AbstractWiththedevelopmentofscienceandtechnologyandtheimprovementofpeople'slivingstandards,thematerialpropertyofthefamilyinChinahasmadeaqualitativeleapoverthepastdecade.Itisanurgenttasktoimprovetheawarenessofanti-theftandthesafetyfactoroflocks.Inthepast,thetraditionalmechanicallock,becauseofitssimplestructureandnotechnicalupdateforalongtime,leadstothedecreaseofsafetyfactor.Therearemanycasesofbeingprized.Incontrast,theemergenceofelectroniclockisthegeneraltrendofthecomingoftheintelligentage.Ithashighsecurity,goodflexibilityandhighsafetyfactor.Eveniftheintelligentdoorlockisbrokenbyforce,itcancooperatewithotherintelligentdevices,suchasmonitoring,tocollectthebiologicalcharacteristicsofthesuspectinthecaseoftheft.Itisofgreathelptotheinvestigationoflatercases.ThepurposeofthisdesignistodesignanintelligentpasswordlockbasedonSTC89C52,whichintegratesfingerprintauthenticationandICcardauthentication.Inthisdesign,STC89C52chipisusedasthemaincontroller,andfingerprintidentificationmoduleandICcardauthenticationmoduleareusedasthesecurityauthenticationsystem.FingerprintpasswordunlockingandICauthenticationcanbesetthroughtheelectronicpasswordinputbymatrixkeyboard.LCD12864liquidcrystalisusedfordisplayandinteractivefeedback.Thetestresultsshowthatallthefunctionsofthesystemhavereachedalltherequirementsofthedesign.Keywords:Antitheftsecurity,intelligentdoorlock,STC89C52singlechipmicrocomputer,ICcard广东东软学院本科生毕业设计(论文)目录第一章引言 21.1前言 21.2行业背景 31.3设计特点 3第二章系统设计 52.1硬件模块选择 52.2系统整体设计 8第三章系统硬件电路设计 93.1stc89c52最小系统设计 93.2LCD12864液晶显示器电路设计 103.3AS608指纹识别模块电路设计 123.4蜂鸣器电路的设计 133.5电磁继电器电路设计 143.6整体电路设计如下图 15第四章系统软件设计 164.1软件开发环境 164.2主函数设计 164.3指纹通信设计 194.4LCD12864显示设计 21第五章测试 22第六章结论 23参考文献 24致谢 25附录 26

第一章引言1.1前言随着科技的发展和人们生活水平的提高,现今中国社会的家庭物质财产比上一个十年有了质的飞跃。提高防盗意识,提升锁具的安全系数成为当务之急。过去沿用至今的传统的机械锁由于其构造的简单,以及已经许久没有技术更新,导致安全系数下降。被撬的事件屡见不鲜。反观电子锁,它的出现是当今智能时代来临的大势所趋,其保密性高,使用灵活性好,安全系数高。智能门锁就算被强行破门,在失窃的情况下也能配合其他智能设备,如监控,对嫌疑人的生物特征进行采集。对后期案件侦破有重大帮助。回顾锁的历史画卷,锁在中华文化中历史悠久,锁的历史最远可以追溯到中国五千年前的仰韶文化时期,在那时就已经有锁的诞生了,而在商周时期,锁也有比较多的文字记载。到了春秋和战国,因为战争多发,诞生并且促使了机关术的发展,从而促使锁的技术发展。发展速度可以说是突飞猛进。随后锁技术逐步发展,出现了诸如青铜锁,叶片锁,弹子锁等机械结构锁具。而我们目前常用的门锁便是弹子锁和叶片锁发展改进过来的。但是其实叶片锁和弹子锁技术早在公元8世纪便出现了。尽管通过现代机械工业设计思想对其进行了几次技术提升和结构升级,但是仍然可以说我们现在使用的锁具是一门非常非常“艺术”了。而我们熟知的对门锁最为了解的人有三类,相信都知道是哪三类了。那就是锁具设计师,小偷,开锁匠。而一个成熟的开锁匠,打开一把生活常用锁具,仅仅只需要几分钟。传统锁具之所以如此脆弱,是因为其实由纯机械结构构成的,无论在设计上如何提高复杂度,依旧无法避免锁与锁之间的趋同性。目前所有的锁具其实并未真正拥有防盗之能。所以智能门锁的兴起是必然的。只有通过生物特征数字加密才能做到独一无二的安全防护。1.2行业背景随着科学技术的进步。物联网技术出现了,智能硬件也在最近两年快速在民众中遍及,而技术的进步也大大降低了智能家居设备的生成成本。越来越多的家庭开始智能化生活,而随着科学技术的进步,门锁也已经从传统的铜制的纯机械结构的机械锁具,发展出夹杂着现代电子科技的各类门锁,甚至还有人脸解锁。智能门锁可以说是智能家居的入门类产品也是最重要的产品之一。智能门锁近几年发展可以说非常迅速,在多个行业不断技术探索下,智能门锁的未来越来越明显,发展趋势也逐渐明朗。近两年间,我国家用智能门锁开始了井喷式的大爆发,生物特征技术的快速发展也在迅速提高智能门锁的安全级别。而在众多的生物特征认证技术中,指纹认证可以说是最“老牌”的生物特征认证技术了,也是最稳定安全的认证技术之一。指纹识别的应用场景,大到银行取款,小道手机支付,可以说指纹是当下财产保护的特征认证主要手段之一。指纹识别作为最广泛的生物特征认证技术,早已经渗透进我们生活的点点滴滴。而除了指纹,生活中最常用的另一种身份认证手段便是IC卡认证了,无论是水卡、饭卡、还是校卡、身份证、银行卡都可以归类为IC卡,所以开发一款基于指纹认证的智能门锁,无论是安全系数,稳定性,市场性都是十分明智的选择。1.3设计特点本设计旨在设计一款基于stc89c52单片机并且集成了指纹认证和IC卡认证的智能密码锁。本设计以stc89c52微控制处理器芯片作为主控,采用AS608指纹识别模块,和IC卡认证模块组成的安全认证系统,可通过矩阵键盘输入的电子密码设置指纹密码解锁和IC认证两种解锁方式。采用LCD12864液晶进行显示和交互反馈。单片机又叫微控制器,MCU,它与普通的逻辑芯片相比有很大区别,它把一个最基础计算机硬件系统集成到一片芯片上,其具体包括,用于数据运算、处理的CPU、用于随机存储的RAM、只读的存储器ROM、以及I/O口和中断任务系统、还有定时器和计数器这些功能。可以说是一个完整的微型的计算机。单片机和计算机相比,缺少了许多的外部设备接口,和许多高级功能的拓展,但是正因为其丰富的可拓展性和可定制性,使它成为了当下智能硬件的主要应用芯片。一块芯片稍加拓展就成了一台基础计算机设备。单片机的体积很小、质量也很轻、价格十分便宜、为应用和开发提供了许多便利条件。 本次设计的基于指纹IC卡的楼宇门禁系统,主要由以下特点。用户可以通过指纹认证或者IC卡认证,进行开门的动作。用户可以在输入管理员密码后进行添加和删除新用户的信息。通过矩阵键盘输入管理密码。在进入管理员界面后可修改管理员密码。密码输入错误会进入锁死状态,然后蜂鸣器警报开启。

第二章系统设计2.1硬件模块选择2.1.1主控芯片的选择方案一:使用STM32F103微控制处理器。STM32F103微控制处理器芯片由意法半导体和生产设计的。STM32F系列是基于ARM的32位微控制处理器芯片,他主打的是中低端微控制处理器市场,而F103是这一系列中的入门级微控制处理器芯片。方案二:使用MSP430单片机。MSP430的微控制处理器是德州仪器公司设计的芯片。他具有很多优点,比如超低的功耗,超高的信号处理能力、而且它还集成了一套精简的指令集(RISC),这是其他常规单片机不具备的,美国的德州仪器公司将这多个特点的处理芯片集成了MSP430,MSP430是一款具有出色混合信号处理能力的MCU,和常规的单片机相比较,德州仪器(TI)公司在针对电信号处理的实际需求,在MSP430里集成了高精度的模拟、数字信号处理电路,将多个优良特点集成为一个高效的DSP处理器并且将一个单片机微处理器集成到MSP430的单个芯片上,提供单片机与DSP的优秀的综合设计方案。方案三:使用STC89C52RC单片机。STC89C52RC微控制处理器芯片一款8位的单片机微控制处理器芯片,他是STC公司设计的,STC89C52RC微控制处理器芯片是MCS-51指令架构内核,拥有51的优良传统特点,超低功耗、高性能。STC公司对MCS-51指令架构内核做了很多优秀的改良和升级,所以STC89C52RC微控制处理器芯片继承了老牌51单片机的所有功能和优点,还有很多51没有的创新功能。STC89C52RC内置了8K的Flash,足够存储一般大小的基本数据。STC89C52RC在性能上,它拥有不大不小常规的8位CPU。所以STC89C52在众多的嵌入式设计,特别是控制类的应用设计上频繁采用。方案分析:首先,stm32f103c8t6是一款32位的微控制处理器芯片。32位的结构也说明了它具有超高的运算性能。本设计的主控芯片并不需要负担大量的数字运算,所以可以选取更低成本的低数位的MCU。其次,MSP430单片机是混合信号处理的控制芯片。通常MSP430常用于信号处理DSP居多。并不常用在控制领域,所以不适合作为本设计的主控芯片。最后我们选定了stc89c52rc作为主控芯片。因为stc89c52作为老牌的单片机芯片。具有稳定,低功耗,而且8位的性能足以胜任本设计的指令处理工作。2.1.2按键模块的选择方案一:使用矩阵键盘。矩阵键盘是单片机设计中常用的外部输入设备。矩阵结构使得不能它像普通按键一样的中断检测方法。常用的的矩阵键盘检测方法一般是扫描法,常用的矩阵键盘一般列线识通过外接电阻再接单片机芯片的VCC口,然后行线接到单片机芯片的检测I/O口上。方案二:使用电容式感应触摸按键。触摸键盘具有扁平化,美观化的特点。但是在按键反馈上不及传统的键盘。方案分析:本设计我们采用了矩阵键盘作为输入设备,因为本设计对稳定性和安全性有很高的要求,电容式薄膜键盘会因为手指出汗,手湿,空气湿润等原因导致误触。但是矩阵键盘不但能很好地解决这个问题,而且矩阵键盘的按键回弹有力,能够更好地提供用户的反馈体验。2.1.3IC卡读写模块的选择方案一:使用的是型号MFRC522的读写模块。在IC卡的读写模块中,发射低电压,低成本,小尺寸的非接触读卡器芯片有很多,MFRC522读写模快是在13.56MHz频段的非接触近场通信频带的近场通信模块,这是具有一个集成了高端dsp处理能力的的IC卡读卡器。方案二:使用DK25L读写模块。DK25L读写模块是基于13.56MH2的高频卡读写模块,采用UART通讯接凵,兼容性好,通用性强。用户通过UART向模块发送简单指令可实现对NFC卡片进行读写操作,简单易用,用户可使用该模块高效快速开发NFC读写功能产品。方案分析:本次设计的IC卡模块,选择了更加成熟更加安全的MFRC522。因为他的体积更小。2.1.4显示模块的选择方案一:使用的是液晶显示器,型号LCD1602。LCD1602是电子设计中最常用的显示器件之一。它是由显示字符和图案的液晶显示屏(LCD)和驱动电路组成,以及驱动电路上一般带少量电阻和电容器件用作显示屏稳定工作的保障。方案二:使用液晶显示器,型号LCD12864。LCD12864也是电子设计中最常用的显示器件之一。它是由显示字符和图案的液晶显示屏(LCD)和驱动电路组成,以及驱动电路上一般带少量电阻和电容器件用作显示屏稳定工作的保障。LCD12864在设计之初就是带中文字库的。简单来说,LCD12864液晶显示屏是由宽128,高64的LCD液晶单元组成的一个液晶点阵。通过通入电流点亮对应的lcd液晶单元,可以绘制分辨率128*64的图像。并且内置的字库可以很灵活的绘制出文字交互界面。方案三:使用led数码管。led数码管是我们最早接触的显示器件。他是7个LED半导体发光元器件按照数字排列组成的“8”字型的器件,它可以显示数字1、2、3、4、5、6、7、8、9、0而且还支持显示部分英文字母,如A,E,C等等。方案四:使用LED有机半导体显示器,型号OLED12864。OLED技术是近年来科技发展的新产物。是另一种优良的显示材料。OLED1286是由显示用的OLED面板和驱动电路组成,以及驱动电路上一般带少量电阻和电容器件用作显示屏稳定工作的保障。方案分析:我们选定使用LCD12864模块作为本设计的主要显示反馈窗口。首先,智能门锁交互所要显示的字符元素繁多,有数字,中文,英文等等各种繁杂的字符。由此可见LED数码管显然并不适合本设计。我们再来看LCD1602液晶显示器和LCD12864液晶显示器怎么选择,显然LCD12864液晶显示器在显示像素上有更大的优势,对中文字符有天然的支持。内置了中文字库。反观LCD1602液晶显示器,在显示中文上有诸多不便。而且他最多显示两行的字符。而OLED12864显示屏OLED作为最新的显示技术,虽然有小巧高密度,高亮度等特点,但是他在日光下的可视性并没有传统的LCD液晶显示好,并且oled有烧屏的通病,智能门锁需要长时间工作。烧屏影响使用。所以LCD12864液晶显示器是最好的显示方案。2.1.5指纹模块的选择方案一:使用的是AS608指纹识别模块,它主要是指采用了杭州的晟元公司的AS608芯片进行指纹识别的信息处理,集成一个可供2次开发的指纹模块;所以,只要是基于AS608芯片的指纹模块,其控制电路及控制协议几乎是一样的,只是厂家和性能不同而已。方案二:使用的是正点原子ATK-301电容式指纹模块。方案分析:正点原子ATK-301电容式指纹模块,是用于学习使用的指纹模块,在产品应用上有着许多限制,并且相对于成熟的AS608指纹识别模块来讲,他的稳定性和安全性皆不达标。电容式指纹模块还有一的通病就是湿手,出汗等无法识别。所以我们选择AS608指纹识别模块。2.1.6数据存储芯片的选择方案一:通过使用单片机内部的EEPROM进行存储数据。STC89C52芯片内置4KB大小的EEPROM。方案二:AT24C02数据的存储芯片。方案分析:本次设计并不需要储存大量的数据和快速读写数据。只是作为记录一些用户标记使用,所以内置的EEPROM就足够了。并不需要外置一个专用的数据储存芯片。2.2系统整体设计通过上面的各模块选择论述,我们已经有一个准确设计框架了。本设计我们将采用stc89c52微控制器芯片作为本次设计的主控芯片。并且使用AS608指纹识别模块进行门锁的生物特征采集和识别。使用IC卡进行次身份认证手段。然后LCD12864液晶显示屏进行交互内容的显示和信息反馈,信息提醒。通过矩阵键盘进行用户信息编辑修改的交互输入设备。指纹智能门锁上电后stc89c52主控芯片便会对各个模块进行初始化,初始化完成后,LCD12864便会显示交互页面。通过矩阵键盘可对交互界面进行切换和进入不同的模式。可以进入管理员模式,并且输入管理员密码正确后,可以增删用户信息,修改管理密码。当指纹模块检测到正确用户指纹后,通过使用电磁继电器打开和关闭,模拟开门和关门的动作。图2.1是本设计的系统方案简图。图2.1系统方案

第三章系统硬件电路设计3.1stc89c52最小系统设计STC89C52RC微控制处理器芯片一款8位的单片机微控制处理器芯片,他是STC公司设计的,STC89C52RC微控制处理器芯片是MCS-51指令架构内核,拥有51的优良传统特点,超低功耗、高性能。STC公司对MCS-51指令架构内核做了很多优秀的改良和升级,所以STC89C52RC微控制处理器芯片继承了老牌51单片机的所有功能和优点,还有很多51没有的创新功能。单片机最小系统就是用最少的电子元器件构建芯片外围电路。使芯片组成一个最小的并且完整的计算机硬件系统。首先对于任何电子产品来说,电源供电电路是所有电子设计的首要任务。本设计是一个微电子智能产品,所以在电源选择上5V直流电就足够了。电源供给完成后,一个单片机芯片工作仍需要一个至关重要的部件——晶振。晶振是晶体振荡器的简称。单片机需要依靠晶振产生的规律的震荡波形进行构建统一的系统运行机制。本次选用的晶振为11.0592MHz的,因为11.0592MHz的晶振可以产生9600波特率0%误差。晶振电路如图3.1图3.1然后就是单片机复位电路设计,复位电路可以使单片机恢复到初始状态。本次设计有两种复位方式,可以上电复位,当上电的时候,电容电压不能突变,因为电容和RESET相连,所以激活STC89C52芯片。按键手动复位,当手动按下按键的时候电路导通,所以也能激活STC89C52芯片。复位电路如图3.2图3.2到这里STC89C52的单片机最小系统就搭建完毕了。完整的最小系统电路图如图3.3。图3.3STC89C52最小系统3.2LCD12864液晶显示器电路设计LCD12864是由显示字符和图案的液晶显示屏(LCD)和驱动电路组成,以及驱动电路上一般带少量电阻和电容器件用作显示屏稳定工作的保障。LCD12864在设计之初就是带中文字库的。简单来说,LCD12864液晶显示屏是由宽128,高64的LCD液晶单元组成的一个液晶点阵。通过通入电流点亮对应的LCD液晶单元,可以绘制分辨率128*64的图像。并且内置的字库可以很灵活的绘制出文字交互界面。LCD12864液晶显示器内置了中文字库。另外通过点阵绘制可以现实简图案。分辨率为128×64,指令操作十分简单,可快速构成全中文人机交互图形界面。图3.4为LCD12864的原理图。图3.4LCD12864原理图LCD12864的引脚相关说明3~VO就是调节对比度的,相当于调节每个点显示出来的深浅,虽然只有亮与不亮两种选择,但亮的模式下相当于可以调节每个点到底多亮。4~RS,为1的时候表示发送的发送的数据,为0表示发送命令。5~RW,就是控制我们是往LCD12864读数据(1)还是写数据(0),我们要控制LCD,当然是往里面写数据(0)。6~E,使能信号。17~RST复位脚。DB0~DB7用来传输我们的数据,一个字节八个位8线并行。详细可参考下表。图3.5LCD12864详细引脚图图3.6LCD12864操作时序图3.3AS608指纹识别模块电路设计AS608指纹识别模块主要是指采用了杭州的晟元公司的AS608芯片进行指纹识别的信息处理,集成一个可供2次开发的指纹模块;驱动指纹模块的按照以下格式发送指令或数据。指令/数据包共分为三类:1.包标识=01命令包;2.包标识=02数据包,且有后续包;3.包标识=08最后一个数据包,即结束包。所有的数据包都要加包头:0xEF0。矩阵键盘电路设计为了减少i/o口资源浪费,所以本次矩阵使用扫描的方式进行设计。如图3.7123进入管理456选择上一项789选择下一项退格0确定返回图3.73.4蜂鸣器电路的设计选择电磁蜂鸣器5V有源蜂鸣器,蜂鸣器大工作电流,所以单片机无法驱动。这样的设计间接驱动蜂鸣器开关晶体管。如图3.8蜂鸣器电路。图3.83.5电磁继电器电路设计图3.93.6整体电路设计如下图图3.10

第四章系统软件设计4.1软件开发环境软件开发环境选择keil5。Keil和IRA是嵌入式单片机领域最有名的IDE(集成开发环境)。其构建的开发完善度和开发体验都超越了许多芯片厂商提供官方的开发工具,因此keil是单片机开发必用的开发软件。4.2主函数设计主函数是整个系统的父级函数,是所有功能模块连接的关系网节点。本次设计的的主系统逻辑是单片机上电,进入运行状态后首先进行显示界面的初始化,然后打开串口通信,读取存储空间中的用户信息,然后初始化指纹模块和IC卡模块。在一切初始化都完成后程序正式进入主循环之中。通过主循环串联各个功能模块,通过判断各个功能模块的返回信息进行功能调用串联。部分关键代码如下。详细的循环逻辑结构也可以参考图4.1。/*********************************************************函数名称:voidmain()函数作用:主函数参数说明:*********************************************************/voidmain(){ uchari; a=keycan(); if(a==1) { AT24C02_write_date(200,0); AT24C02_write_date(201,0); AT24C02_write_date(202,0); } LCD12864_init(); //初始化LCD12864 UartInit(); //串口初始化 T2_init(); low_mima=AT24C02_read_date(200); //读取存储在AT24C02的密码 low_mima=low_mima*100+AT24C02_read_date(201); low_mima=low_mima*100+AT24C02_read_date(202); diaplay_mode0();//显示初始界面 while(1) { i++; a=keycan(); //矩阵键盘检测 chuli(); //矩阵键盘处理 if(mode==1) display_guanli(); else if(mode==2) //录入指纹 { if(zhiwen_f==1) cunchu(); //录入指纹 } else if(mode==3) //注销指纹 { if(zhiwen_f==1) shanchu(); //注销指纹 } else if(mode==0&&in_f==0)//正常解锁界面 { if(i>=150) { i=0; xunzhiwen();//指纹解锁 } } }}图4.1

4.3指纹通信设计指纹模块其实也是一个独立的单片机系统,只是有一个厂家提供的固件处理指纹信息。我们需要做的就是按照芯片厂商提供的接口进行二次开发。首先我们将收集到的指纹信息载入到模块中,然后将新的指纹信息进行对比。最终返回匹配结果。当结果不匹配是。就警告指纹错误。匹配正确就进行开门动作。关键驱动代码如下。详细代码可见附录。程序基本逻辑结构可以参考图4.3./********************************************************函数名称:voidxunzhiwen()函数作用:查找指纹参数说明:********************************************************/voidxunzhiwen(){ searchnum=search();//搜索指纹 if((searchnum>=1&&searchnum<=MAX)||searchnum==255)//最多MAX个指纹 { if(searchnum>=1&&searchnum<=MAX)//指纹识别成功 { temp[0]=searchnum%1000/100+0x30; temp[1]=searchnum%100/10+0x30; temp[2]=searchnum%10+0x30; temp[3]=''; LCD12864_display_string(3,2,temp);//显示卡号 LCD12864_display_string(3,3,"指纹解锁"); LCD12864_display_string(1,4,""); in_mima=0; //清除以输入的密码 num=0; //清除以输入的密码位数 input_f=0; //清除输入密码标志 jdq=0; //打开电磁锁 T2_num=0; //开启重新开始计时 TR2=1; } else//不正确的指纹 { LCD12864_display_string(3,3,"无效指纹"); didi(3); //报警三次 } delay1ms(500); //延时后自动清除显示内容 LCD12864_display_string(3,2,""); LCD12864_display_string(3,3,""); } }图4.3

4.4LCD12864显示设计 交互界面对于一个面向大众化的产品来说是不可或缺的重要组成部分。当程序进行初始化操作是显示界面进入欢迎界面。之后的界面切换,由组函数的指令来进行控制。主要程序结构就是判断主程序的指令。具体函数逻辑结构参考图4.4.图4.4

第五章测试测试工具:KEIL5软件。测试平台:Windows10,智能指纹门锁系统硬件智能指纹门锁系统软件由KEIL5开发平台软件进行编写,并且将编译好的固件通过PL2303下载器下载到51单片机中。然后我们进行智能指纹门锁系统的白盒测试。验证功能的完整性。观察智能指纹门锁运行的状态,然后进行反复的修改调试程序,最终得到一个完善的程序。在系统软件调试上主要遇到以下几个问题:(1)LCD12864显示出现花屏。解决方法:首先检查LCD12864液晶显示屏的接线是否牢固,是否有短路错接等问题。如果没问题。检查LCD12864液晶显示屏的驱动代码的时序是否有错误。是否在初始化是进行了显示数据初始化。如果无法排除错误。尝试更换一块新的LCD12864液晶显示屏。

第六章结论随着科技的发展和人们生活水平的提高,现今中国社会的家庭物质财产比上一个十年有了质的飞跃。提高防盗意识,提升锁具的安全系数成为当务之急。过去沿用至今的传统的机械锁由于其构造的简单,以及已经许久没有技术更新,导致安全系数下降。被撬的事件屡见不鲜。反观电子锁,它的出现是当今智能时代来临的大势所趋,其保密性高,使用灵活性好,安全系数高。智能门锁就算被强行破门,在失窃的情况下也能配合其他智能设备,如监控,对嫌疑人的生物特征进行采集。对后期案件侦破有重大帮助。本设计旨在设计一款基于stc89c52单片机并且集成了指纹认证和IC卡认证的智能密码锁。本设计用stc89c52微控制处理器芯片作为主控,采用指纹识别模块,和IC卡认证模块组成的安全认证系统,可通过矩阵键盘输入的电子密码设置指纹密码解锁和IC认证两种解锁方式。采用LCD12864液晶进行显示和交互反馈。测试结果表明,本系统各项功能已达到本设计的所有要求。在这次毕业设计的实践中我可以说获益良多。这是我第一次以产品研发的思维进行设计和制作电子产品。在最开始拿到题目的时候。对这个智能门锁还没有多少概念。在经历了漫长的资料查询和专业知识复习。我终于开始进行整体产品的框架设计,进行材料的选择。最后制作出一个简单的雏形。在不断的测试中,慢慢完善整个智能门锁。这次设计对我来说是一次机遇,也是一次挑战。在这次的设计过程中,我学到了很多东西,对电子工程师的工作流程工作思维也有了深刻的理解。通过这次的实践,我增强了动手能力。通过实际工程的设计也使我了解到书本知识和实际应用的差别。在实际应用中遇到很多的问题,这都需要我对问题进行具体的分析,并一步一步地去解决它。参考文献[1]石文轩,宋薇.基于单片机MCS-51的智能密码锁设计[M].武汉工程职业技术学院学报,2004,(01).[2]祖龙起,刘仁杰.一种新型可编程密码锁[J].大连轻工业学院学报,2002,(01).[3]叶启明.单片机制作的新型安全密码锁[J].家庭电子,2005,(10).[4]李明喜.新型存储柜锁的设计[J].机电产品开发与创新,2004,(03).[5]董继成.一种新型安全的单片机密码锁[J].电子技术,2004,(03).[6]杨茂涛.一种存储柜锁的实现[J].福建电脑,2004,(08).[7]瞿贵荣.实用存储柜锁[J].家庭电子,2000,(07).[8]ATmega.ATmega8L-8AC,2006,(01).[9]WirelessWorld,1998,vol、84,No、1509,p69.[10]王千.实用电子电路大全[M],电子工业出版社,2001,p101.[11]何立民.单片机应用技术选编[M],北京:北京航空大学出版社,1998.[12]李华.MCS-51系列单片机使用接口技术[M],北京航空航天大学出版社,1993.[13]彭为.单片机典型系统设计实例精讲[M],北京:电子工业出版社,2006.[14]潘永雄.新编单片机原理与应用[M],西安:西安电子科技大学出版社,2003.[15]童诗白,华成英,模拟电子技术基础[M],北京:高等教育出版社,2000.[16]阎石主.数字电子技术基础[M],北京:高等教育出版社,1998.[27]樊昌信,曹丽娜.通信原理[M],北京:国防工业出版社,2007.[28]李瀚荪.电路分析基础[M],北京:高等教育出版社1991.[19]郭海英.基于单片机的电子安全密码锁的设计[M].现代电子技术,2005,(13).[20]何希才,杜煜.实用电子电路设计[M].北京:电子工业出版社,1998.[21]康华光.电子技术基础(第四版)[M].北京:高等教育出版社,1998.[22]俞睆卿.智能家居终端的研究与设计[D]上海交通大学2008.[23]林旭东.智能家居系统相关技术及发展趋势[J].创新科技导报.2008.6.5-6.[24]李方.浅谈几种智能家居系统网络技术[J].计算机与网络.2006年.5(2).98-101.[25]陈文智.嵌入式系统开发原理与实践.清华大学出版社.2005.[26]贾宗璞,许合利.C语言程序设计.中国矿业大学出版社,2007.[27]谭浩强.C程序设计.清华大学出版社,2005.[28]余发山,王福忠.单片机原理及应用技术.中国矿业大学出版社,2008.[29]沈星星,丛露微.基于ZigBee的智能家具控制系统,论文选粹,2011第3期[30]冯培昌,周晓云,陈孝伟.无线传感器网络探讨[J].电气自动化.2005年.27(5).73-75.[31]周健明,江玲.ZigBee网络层关键技术研究与实现.黄石理工学院学报.2009.25

致谢在本文的撰写过程中,李俊杰老师作为我的指导老师,他治学严谨,学识渊博,视野广阔,为我营造了一种良好的学术氛围。置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许多待人接物与为人处世的道理。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。正是由于她在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。在此特向李俊杰老师致以衷心的谢意!向她无可挑剔的敬业精神、严谨认真的治学态度、深厚的专业修养和平易近人的待人方式表示深深的敬意!

附录/*************************************************************指纹密码锁补充说明:***************************************************************/#include<reg52.h> //头文件#include<LCD12864.h>#include<AT24C02.h>#include<KEY.h>#include<AS608.h>#include<T2.h>#defineucharunsignedchar //宏定义#defineuintunsignedint#defineulongunsignedlong/************************引脚定义************************/sbitbuzz=P3^7;//蜂鸣器sbitled=P0^0;//LED灯/************************变量定义************************/#defineMAX5//指纹最大数量#defineID_MAX3//输入ID最大位数ucharmode=0;//0正常解锁,1管理界面,2注册模式,3删除模式,4修改密码ucharmode_num=0;//管理界面选择项uintID=0; //存储输入编号IDucharn=0; //输入的位数bitzhiwen_f=0; //1=标记进入指纹采集uchara; //存储按键值ucharnum; //记录输入的密码位数bitin_f; //输入密码的标志bitreset_f; //重设密码的标志bitinput_f; //六位密码输完的标志ucharreset_num;//标记修改密码阶段,=1输入旧密码,=2输入新密码,=3再次输入新密码ulonglow_mima=0;//系统密码ulongin_mima=0;//暂存输入的密码ulongnew_mima=0;//暂存输入新密码uchartemp[5]="\0";//存储显示内容/********************************************************函数名称:voiddelayms(uintms)函数作用:毫秒延时函数参数说明:********************************************************/voiddelayms(uintms){ unsignedchari=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } }}/********************************************************函数名称:voiddidi(uchari)函数作用:蜂鸣器鸣叫参数说明:i为鸣叫次数********************************************************/voiddidi(uchari){ ucharj; for(j=0;j<i;j++)//循环i次,LED、蜂鸣器鸣叫几次 { led=0; //开启LED、蜂鸣器 buzz=0; delayms(20); led=1; //关闭LED、蜂鸣器 buzz=1; delayms(15); }}/********************************************************函数名称:voiddiaplay_mode0()函数作用:显示打卡主界面参数说明:********************************************************/voiddiaplay_mode0(){ LCD12864_display_string(1,1,"指纹密码锁"); LCD12864_display_string(0,2,"编号:"); LCD12864_display_string(0,3,"状态:");}/********************************************************函数名称:voidxunzhiwen()函数作用:查找指纹参数说明:********************************************************/voidxunzhiwen(){ searchnum=search();//搜索指纹 if((searchnum>=1&&searchnum<=MAX)||searchnum==255)//最多MAX个指纹 { if(searchnum>=1&&searchnum<=MAX)//指纹识别成功 { temp[0]=searchnum%1000/100+0x30; temp[1]=searchnum%100/10+0x30; temp[2]=searchnum%10+0x30; temp[3]=''; LCD12864_display_string(3,2,temp);//显示卡号 LCD12864_display_string(3,3,"指纹解锁"); LCD12864_display_string(1,4,""); in_mima=0; //清除以输入的密码 num=0; //清除以输入的密码位数 input_f=0; //清除输入密码标志 jdq=0; //打开电磁锁 T2_num=0; //开启重新开始计时 TR2=1; } else//不正确的指纹 { LCD12864_display_string(3,3,"无效指纹"); didi(3); //报警三次 } delay1ms(500); //延时后自动清除显示内容 LCD12864_display_string(3,2,""); LCD12864_display_string(3,3,""); } }/********************************************************函数名称:voidcunchu()函数作用:存储指纹参数说明:********************************************************/voidcunchu(){ LCD12864_display_string(0,3,"状态:"); if(ID>0&&ID<=MAX)//输入的存储指纹位置正确 { if(enroll()==1)//采集两次,生成1个指纹模板成功 { if(savefingure(ID)==1)//保存指纹成功 { LCD12864_display_string(3,3,"录入成功"); } else //保存指纹失败 LCD12864_display_string(3,3,"存储失败"); } else //采集指纹失败 LCD12864_display_string(3,3,"采集失败"); } else //输入指纹编号错误 LCD12864_display_string(3,3,"编号错误"); n=0; //清除输入编号位数 ID=0; //清除输入编号 zhiwen_f=0;//关闭指纹采集}/********************************************************函数名称:voidshanchu()函数作用:删除指纹参数说明:********************************************************/voidshanchu(){ LCD12864_display_string(0,3,"状态:"); if(ID>0&&ID<=MAX) //输入的存储指纹位置正确 { if(dellfingure(ID)==1)//删除指纹成功 { LCD12864_display_string(3,3,"删除成功"); } else //删除指纹失败 LCD12864_display_string(3,3,"删除失败"); } else { if(ID==999) //如果输入的是999表示清空指纹 { if(Clear_All()==1)//清空指纹成功 LCD12864_display_string(3,3,"清空指纹"); else //清空指纹失败 LCD12864_display_string(3,3,"清空失败"); } else //输入的是其它错误编号 LCD12864_display_string(3,3,"编号错误"); } n=0; //清除输入编号位数 ID=0; //清除输入编号 zhiwen_f=0;//关闭指纹采集 }/********************************************************函数名称:voiddisplay_guanli()函数作用:显示管理界面参数说明:********************************************************/voiddisplay_guanli(){ LCD12864_display_string(0,1,"管理系统界面"); LCD12864_display_string(0,2,"录入指纹"); LCD12864_display_string(0,3,"删除指纹"); LCD12864_display_string(0,4,"修改密码"); switch(mode_num) { case0:LCD12864_display_string(0,2,">>");break; case1:LCD12864_display_string(0,3,">>");break; case2:LCD12864_display_string(0,4,">>");break; default:break; }}/*********************************************************函数名称:voidchuli()函数作用:对所按下的按键进行处理参数说明:*********************************************************/voidchuli(){ if(key_f==1) //先判断是否有按键按下 { if((mode==2||mode==3)&&a<10)//如果输入ID状态,并且按下的是数字键 { if(n<ID_MAX)//判断是否为输入状态,并且输入未满最大整数位数,才可以继续输入 { if(n==0)//判断为编号第1位 { LCD12864_display_string(3,2,""); LCD12864_display_string(0,3,""); } LCD12864_display_char(3+n,2,a+0x30);//显示出输入的数字ASCII[a] ID=ID*10+a;//编号计算 n++; //编号输入位数+1 } } if((mode==0||mode==4)&&input_f==0&&a<10)//如果在in_f=1(输入密码状态),并且按下的是数字键 { if(in_f==1||mode==4) { if(num==0)//清除显示后、显示输入新密码 LCD12864_display_string(1,3,""); if(reset_f==1&&reset_num>1) //在重置密码时候输入新密码阶段 LCD12864_display_char(num+1,2,a+0x30);//显示输入的数字 else //其它情况下输入密码显示* LCD12864_display_char(num+1,2,'*');//显示“*” } else LCD12864_display_char(num+1,4,'*');//显示“*” in_mima=in_mima*10+a;//读入密码 num++; //密码输入次数加一 if(num==6) //六位密码输入完成 input_f=1; //标记六位密码输入完成 } if(a==10) //进入管理界面 { if(mode==0&&in_f==0)//输入密码 { num=0; //重置输入密码 in_f=1; in_mima=0; input_f=0;//清除密码输入完成标志 write_com(0x01);//清除显示 LCD12864_display_string(0,1,"请输入管理密码:");//显示输入密码 } } if(a==15)//返回上一级菜单 { if(mode>1) //在管理操作中 { reset_f=0; reset_num=0; write_com(0x01);//清除显示 LCD12864_clear12864(); mode=1; //回到管理选择界面 } else //非管理界面 { if(mode!=0||in_f==1)//如果在输入密码阶段 { write_com(0x01);//清除显示 mode=0; diaplay_mode0();//显示主界面 in_f=0; num=0; input_f=0; //清除密码输入完成标志 } } if(jdq==0) //如果电磁锁打开,按下该按键,手动关门 { jdq=1; //关闭继电器 T2_num=0; //清除计时 TR2=0; } } if(a==11)//选择上一项 { if(mode==1)//选择上一项管理 { if(mode_num==0) mode_num=2; else mode_num--; } } if(a==12)//选择下一项 { if(mode==1)//选择下一项管理 { if(mode_num>=2) mode_num=0; else mode_num++; } } if(a==13)//退格 { if(mode==0||mode==4)//在输入密码状态 { if(num!=0) { num--;//输入密码个数减1 if(in_f==1||mode==4) LCD12864_display_char(num+1,2,''); else LCD12864_display_char(num+1,4,''); in_mima=in_mima/10; input_f=0; } } if(mode==2||mode==3)//在ID编号输入状态 { if(n!=0) { LCD12864_display_char(2+n,2,''); n--; ID=ID/10; zhiwen_f=0; } } } if(a==14)//确定 { if(mode==1) //确定选择管理操作 { write_com(0x01);//清除显示 mode=mode_num+2; n=0; ID=0; zhiwen_f=0; input_f=0;//清除确定标志 num=0; in_mima=0; new_mima=0; switch(mode_num) { case0: LCD12864_display_string(0,1,">>录入指纹"); LCD12864_display_string(0,2,"编号:"); break; case1: LCD12864_display_string(0,1,">>删除指纹"); LCD12864_display_string(0,2,"编号:"); break; case2: reset_f=1; reset_num=1; LCD12864_display_string(0,1,"请输入旧密码:"); break; default:break; } } else { if(input_f==1)//密码输入完成确定 { if(reset_f==1)//修改密码区间 { if(reset_num==3)//再次输入新密码 { if(new_mima==in_mima)//两次输入的新密码一致 { low_mima=new_mima; AT24C02_write_date(200,low_mima/10000); AT24C02_write_date(201,low_mima%10000/100); AT24C02_write_date(202,low_mima%100); write_com(0x01); LCD12864_display_string(1,1,"密码修改成功"); LCD12864_display_string(1,3,"请妥善保管好"); } else { LCD12864_display_string(1,3,"密码修改失败"); } reset_num=0; reset_f=0; } if(reset_num==2)//输入新密码 { write_com(0x01); LCD12864_display_string(0,1,"请再次输入新密码"); new_mima=in_mima; reset_num++; } if(reset_num==1)//输入旧密码 { if(low_mima==in_mima)//输入的密码和旧密码一致 { write_com(0x01); reset_num++; LCD12864_display_string(0,1,"请输入新密码:");//显示输入新密码 } else { LCD12864_display_string(2,3,"密码错误"); //显示密码错误 reset_num=1; LCD12864_display_string(1,2,""); } } } if(in_f==1) //进入管理输入密码时候 { if(low_mima==in_mima)//输入的密码正确 { mode=1; write_com(0x01); in_f=0; } else { LCD12864_display_string(2,3,"密码错误"); //显示密码错误 LCD12864_display_string(1,2,""); } } if(mode==0&&in_f==0) { if(low_mima==in_mima)//输入的密码正确 { LCD12864_display_string(3,3,"解锁成功"); jdq=0; T2_num=0; TR2=1; } else { LCD12864_display_string(3,3,"密码错误"); //显示密码错误 didi(3); } LCD12864_display_string(1,4,""); delay1ms(500); LCD12864_display_string(3,3,""); } in_mima=0; num=0; //清除密码计数。重新计算输入的密码个数 input_f=0;//清除确定标志 } if((mode==2||mode==3)&&n==ID_MAX)//注册或删除指纹时编号输入完成后开启指纹检测 { zhiwen_f=1; } } } key_f=0;//清除按键标志 }}/*********************************************************函数名称:voidmain()函数作用:主函数参数说明:*********************************************************/voidmain(){ uchari; a=keycan(); if(a==1) { AT24C02_write_date(200,0); AT24C02_write_date(201,0); AT24C02_write_date(202,0); } LCD12864_init(); //初始化LCD12864 UartInit(); //串口初始化 T2_init(); low_mima=AT24C02_read_date(200); //读取存储在AT24C02的密码 low_mima=low_mima*100+AT24C02_read_date(201); low_mima=low_mima*100+AT24C02_read_date(202); diaplay_mode0();//显示初始界面 while(1) { i++; a=keycan(); //矩阵键盘检测 chuli(); //矩阵键盘处理 if(mode==1) display_guanli(); else if(mode==2) //录入指纹 { if(zhiwen_f==1) cunchu(); //录入指纹 } else if(mode==3) //注销指纹 { if(zhiwen_f==1) shanchu(); //注销指纹 } else if(mode==0&&in_f==0)//正常解锁界面 { if(i>=150) { i=0; xunzhiwen();//指纹解锁 } } }}

HYPERLINK电脑文件整理懒招从来都是不会经常整理文件的,不过时间一长,众多的文档分布在硬盘的各个角落,用目录进行整理保存,工作量大、查看起来也不方便且还会浪费不少的磁盘空闻;用压缩工具打包,尽管可以节约空间但是却无法直接编辑修改或查看压缩包中的文件。这些招,懒人怎么会用,他们自有妙招!再多再乱的文件也能整理得井井有条,关键是不费力哦!

懒招1,自动提取乱中取胜

小张起初将照片、Office文档、电影、音乐等文件一股脑地存放在某一个磁盘分区,刚开始文件少使用起来倒也方便,但随着时间的推移,文件数量剧增,每次找所需的文件都要瞪大眼睛,不过有了MY文档管理器(下载地址:)就不用担心了。

第一步,下载MY文档管理器,解压到任意目录,直接双击其中的可执行性文件即可使用。依次单击“节点操作→添加节点”,分别添加多个节点,如“办公文档”、“电影”等分类,这样做的目的是方便归类。

第二步,在小张的F盘中的TEST目录下有众多的RM、MP3、JPG、DOC、TXT格式的文件,现在他要把JPG格式的文件提取到“照片”类别中。依次单击“系统配置→文件过滤”选项,打开Dialog对话框,输入“*.doc”,单击“添加”按钮,意思是过滤掉所有类型为“.DOC”的文件。然后按照同样的方法,将“*.txt”、“*.rm”、“*.MP3”一一添加进来。

第三步,双击左侧窗格中的“照片”节点,然后依次单击“记录操作→导入记录树”命令,在打开的对话框中单击浏览按钮,打开“F:\test”目录,单击“确定”按钮之后就可以将格式为JPG的文件提取出来并添加到“照片”节点中了。

懒招2,不同的电脑统一的管理

小张是电爱的Fans,工作之余常常为杂志写稿,他写完的和正在处理的稿件一般都存在一个稿件文件夹里。不过时间一长,家里的电脑(PC1)和单位的电脑(PC2)上都有这个文件夹。时常需要通过移动硬盘(U盘)在两台电脑之间传递,使用和管理都很不方便。不过他现在用优盘就可以统一管理了。

第一步,将上文提到的那个MY文档管理器解压后直接拷贝到优盘上。把优盘插到PC1上,并运行软件,依次单击“记录操作→导入记录树”命令,在随后弹出的对话框中设置好“稿件”文件夹的根目录,将“导入深度”设置为“5”,单击“确定”后,稍等片刻,软件就把PC1上的“稿件”导入到MY文档管理器中。

小提示:通过这种方式导入到程序中的仅仅是文件的路径、文件名等属性信息,并不是文件本身。

第二步,把优盘插到PC2上,按照同样的方法导入PC2上的“稿件”文件。以后要编辑“稿件”里的文件,你自己根本不用记住哪台电脑的哪个路径,只要把优盘插入到电脑,运行MY文档管理器,就可以直接编辑了。

第三步,为方便在异地使用,小张决定为当前正在处理的稿件增加一个副本。在需要异地处理的稿件上右键单击,选择“复制文件到(自动添加副本)”命令,在弹出的对话框中将保存目录设置为优盘上的某个目录即可。这样,就可以在优盘上编辑PC1或PC2的稿件了。

小提示:对于PC1、PC2上的同名文件,MY文档管理器以不同的磁盘号+文件路径来标识文件记录,因此,对于不同电脑上的同名文件,甚至是路径和文件名完全相同的文件,程序也可以准确识别哪个是哪个。

懒招3多种文件批量移动

要将文件管理得井然有序,就免不了要进行复制、删除、移动等等操作,如果一个个进行操作,工作量是非常巨大的。这时我们就需要借助于BelvedereAutomated(下载地址:.com/assets/resources/2008/03/Belvedere%200.3.exe)进行批量操作了。例如我们想把“F:\test”目录中的所有照片移动到F盘中的“北京游照片”目录中,可以按以下方法进行。

第一步,建立“F:\test”目

温馨提示

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

评论

0/150

提交评论