为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于RFID的门禁控制系统设计

2019-09-18 15页 doc 1MB 13阅读

用户头像

is_179289

暂无简介

举报
基于RFID的门禁控制系统设计基于RFID的门禁控制系统设计摘要智能门禁系统在自动化应用中十分普遍,它为人们日常生活提供便利和保障人们的生活安全,随着社会和经济的发展需要,智能识别技术开始运用于许多行业,特别安全系数特别高的行业(银行、机密机构)、门控行业等,智能门禁系统的便利性和安全性让它越来越受到重视。本设计分析了RFID门禁系统的国内外发展现状、未来发展趋势和目前主要存在的问题,提出了基于RFID门禁控制系统的设计方案。先阐述了RFID门禁控制系统的组成、系统的基本工作原理,分析了系统的硬件电路设计、软件设计过程,对硬件子电路的选型设计、子程序设计、...
基于RFID的门禁控制系统设计
基于RFID的门禁控制系统摘要智能门禁系统在自动化应用中十分普遍,它为人们日常生活提供便利和保障人们的生活安全,随着社会和经济的发展需要,智能识别技术开始运用于许多行业,特别安全系数特别高的行业(银行、机密机构)、门控行业等,智能门禁系统的便利性和安全性让它越来越受到重视。本设计分析了RFID门禁系统的国内外发展现状、未来发展趋势和目前主要存在的问题,提出了基于RFID门禁控制系统的设计。先阐述了RFID门禁控制系统的组成、系统的基本工作原理,分析了系统的硬件电路设计、软件设计过程,对硬件子电路的选型设计、子程序设计、串口通讯程序设计等作了详细的介绍。门禁系统采用AT89C52单片机作为控制核心,由MFRC500读卡控制单元、射频天线电路、看门狗复位电路、报警电路、电控锁控制电路组成。在仿真通过键盘输入模拟读卡器数据读入,系统通过输入密码与设定密码对比,实现对通道进出权限的控制(密码输入进门的控制);在异常情况下(非法侵入、门超时未关)自动报警、手动报警。关键词:RFID门禁系统;射频技术;智能控制;MFRC500AbstractTheintelligententranceguardsystemisverycommoninautomationapplications,itprovidesconvenienceandguaranteepeople'slifesafetyofpeople'sdailylife,alongwiththedevelopmentofsocietyandeconomy,theintelligentrecognitiontechnologyhasbeenusedinmanyindustries,especiallythesafetycoefficientofparticularlyhighindustry(bank),gatedindustry,convenienceandsecurityintelligentaccesscontrolsystemtomakeitmoreandmoreattention.AnalysisofthedesignoftheRFIDaccesscontrolsystemathomeandabroad,thefuturedevelopmenttrendandmainproblems,putforwardadesignschemeofaccesscontrolsystembasedonRFID.Firstelaboratedthebasicprinciple,systemcompositionofRFIDaccesscontrolsystem,analyzesthesystemhardwarecircuitdesign,softwaredesign,hardwaredesign,selectionofthesubcircuitsubroutinedesign,serialcommunicationprogramdesignindetail.AccesscontrolsystemusingAT89C52microcontrollerascontrolcore,theMFRC500cardcontrolmodule,RFcircuit,watchdogresetcircuit,alarmcircuit,electriccontrollockcontrolcircuit.Throughthekeyboardinputanalogcardreaderreadsdatainthesimulationsystem,usingapasswordandthepasswordcomparison,controltheimportpermissiononthechannel(controlpassworddoor);inexceptionalcircumstances(illegalintrusion,notclosingthedoorovertime)automaticalarm,manualalarm.Keywords:RFIDsystem;RFID;intelligentcontrol;MFRC500I摘要IIAbstract1第1章绪论11.1课题研究的背景及意义21.2门禁系统的发展及国内外研究状况31.3门禁系统发展趋势与主要存在的问题5第2章门禁控制系统的总体设计52.1门禁系统的构成52.2门禁系统模块总体设计73.1门禁系统工作原理和电路设计主框图93.2各部分外围电路设计19第4章门禁系统软件设计194.1软件设计模块框图214.3子程序设计流程图27第5章程序调试275.1程序调试与编译28第6章protues仿真286.1欢迎界面仿真296.2密码输入开门仿真316.3开门/关门仿真316.4手动报警仿真326.5取消按键模拟326.6门锁延时未关、非法入侵模拟34参考文献35附录A系统原理图37附录B仿真图38附录C程序清单67致谢第1章绪论1.1课题研究的背景及意义1.1.1课题研究的背景从古到今,人们保护自己的财产都是通过传统的锁,来控制进出人员,几千年下来都是沿用这种方法,这种普通的门锁始终离不开钥匙,必须要用与之配对的钥匙,门锁多了钥匙就是一大串,即不便于携带又容易丢失,造成不必要的损失,普通门锁又很容易通过其它手段打开,安全性差。在现代都市里更注重安全、美观和便利,公司的形象体现了管理者的气度与品位,也是对客户尊重和对公司自身实力的体现。如果在现代化办公大楼的门上挂一把“铁将军”,那是多么的别扭,显得与都市格格不入。但是,如果通过某种特殊的“钥匙”,当然“钥匙”可以做成卡片、可爱的布娃娃或者手机挂坠,即符合人们审美观念又方便携带,“钥匙”一晃,门自动打开,犹如王者归来,那将是一种全新的感受,在注重安全情报的今天,必须有一种无可替代、模仿和复制的身份识别技术才能达到安全要求。1.1.2课题研究的意义随着经济的发展和社会需要,传统门锁不能满足现代人们的安全需要,正是在这种需求的刺激下产生了智能门控系统,它集合了电子、机械、光学、生物识别、计算机技术和通信技术等新技术开发出来的。智能门禁系统就是智能ID卡识别和机械门锁的集合,用计算机实行智能化的管理控制,弥补了很多传统门锁的不足之处。根据居民小区、安全部门等不同的安全级别要求,在小区、重要会所等出入口安装智能门禁系统,所有的信息采集与记录由计算机控制中心操作,可以实时采集人员出入信息,并且可以在一些特殊情况下提供证据,目前门禁系统打大力推广,已经取得了较好的经济和社会效益。射频识别技术(RadioFrequencyIdentification:RFID)是一种非接触式的自动识别技术,它通过无线射频识别IC卡内的信息,整个过程无需人工操作和监管。RFID无线射频技术具有防磁、防水、耐高温、使用寿命长、读取距离大、标签数据可以加密(更改)、存储数据容量等优点。在这种背景下,本课题提出了基于RFID门禁控制系统的设计方案,具体分析和研究了其中的控制系统部分。智能门禁控制系统作为人身安全和财产安全的重要措施之一,对其的研究具有深远的进步意义1.2门禁系统的发展及国内外研究状况1.2.1门禁系统的发展所谓门禁系统,就是对出入人员的控制,早期门禁系统的基本功能就是在何时何地控制控制何许人出入,以及实现报警和人员出入信息记录,以此保障人身和财产安全。随着科技和社会要求飞速发展,门禁系统也开始向自动化、智能化发展。近年来,随着计算机技术和网络控制系统在社会各个领域的发展,门禁系统结合计算机技术和网络技术,显示出了它强大的发展空间和美好的运用前景,伴随着电子锁的发展,非接触式的智能IC卡、通过输入密码认证门禁控制系统开始走进人们的生活。随着接非触式智能IC卡门禁系统的应用,市场运用范围,人们对门禁各方面提出了更多要求,比如信息载体(IC卡)便于携带、安全性高、操作简单等。由于IC卡具有无机械磨损、维护方便、操作简单等特点,具有美好的发展前景,因此受到越来越多的关注。1.2.2门禁系统国外研究状况欧美门禁系统市场开始进入成熟阶段,其产业分工明确,如美国的HID公司、Hl-dala公司、德国的Destele公司。生产控制器的公司只研究生产控制器和软件程序。由于市场的不断成熟发展,人们在感受到门禁系统带来的便利性和使用性后,可以自行购买零部件组装而成一套完整的门禁系统。从目前门禁系统的发展趋势和运用前景来看,磁卡和接触式门禁系统开始逐渐退出市场,非接触式门禁系统以它优越的性能和运用领域开始主导门禁系统市场。IC卡在国外很早就得到重视并且开始大量的投入研究,特别是在美国和欧洲,但在近几年才开始非接触式IC卡方面的研究使用。非接触式IC卡、读卡器设计和生产关键技术掌握在欧美国家和部分亚洲国家中,单只有美国能实现大批次的设计生产。当今世界上非接触式IC卡主流产品是飞利浦(Philips)公司的Mifare技术,己经被制定为国际ISO/IEC14443TypeA标准。欧洲及其他发展中国家的一些IC卡、读卡器制造商都以Mifare技术为标准进行设计生产。1.2.3门禁系统国内研究状况我国本土厂商(如爱迪尔、华本、芯微)等已经成功研发了指纹识别芯片,国内对门禁系统的研究已经从认识研究阶段发展到自主研究阶段,而在系统的结构方面,国内的门禁系统的核心就是控制器,门控器大多由国外企业开发研制,但国内大部分厂家对门禁系统的研究任然处于仿制阶段,没有对门禁系统核心技术惊醒自主研究开发。1.3门禁系统发展趋势与主要存在的问题1.3.1门禁系统的发展趋势根据中国安防网2013统计数据,国内门禁系统市场规模预计达到33亿人民币,所占比列额巨大,与门禁防盗报警系统、视频监控系统安防系统“三大台柱”。按市场来说,在20门以下的小项目中,国内厂商占主要份额,而在100门及以上的大项目中,国有企业只能占到25%的市场份额。在这短暂的十年里,我国的门禁控制系统的研究发展速度很快,特别是近几年来,我国的年发卡量均超亿张,年增长率达到30%~40%,成为IC卡发展运用最多的国家之一。我国IC卡开始成为推动世界IC卡发展的主要动力。门禁系统不断地革新发展,门禁系统产品在功能开发和安全要求上开始满足个领域需求,现在各门禁厂商开始着力于发展产品附加价值,如视频识别、监控系统、电子巡更、访客服务记录等。在今后的安防系统中,门禁系统将与工程商、软件开发商甚至保安公司、物业等进行越来越多元化的合作,在不同和运用场合和适应不同的控制要求,门禁系统将进化成为更加智能的新生命。1.3.2门禁系统主要存在的问题1、兼容、标准化:系统兼容的概念包括两种情况,一是相同系统中不同技术板块的结合;二是不同系统、不同技术板块的结合。多系统兼容主要体现在按照使用对象的不同档次划分,不同类别、不同技术的系统模块结合。由于标准不统一而导致的兼容、标准化问题的产生,这使得使用者在进行自主购买安装时出现问题,必须有专业人士指导运用才能避免这个问题,但是过程繁琐,所以在这部分还需要相关部门来制定标准。2、抗干扰能力:抗干扰能力是目前门禁控制系统中主要存在的问题。在产品质量和行业标准方面有待改进,而在实地施工中,雷暴多发区域、线材选择不当、布线不规范等导致的各种干扰问题。3、降低研制成本:门禁系统在销售、工程安装、服务方面的成本费用较高,随着产品标准化、行业标准化的进程,工程安装服务、服务社会化,产品研制成本需要逐步降低。。1.3.3本文主要研究的问题本文根据目前国内门禁系统的发展,做出了基于RFID的门禁系统的研究设计,论文在探讨了基于RFID门禁系统的发展现状主要存在的问题,研究了读卡天线的设计和总线数据传输结构,设计系统的硬件电路设计和软件设计,门禁系统工作的电路原理图、仿真图的绘制,设计主程序流程图和子程序模块,并进行联机调试。本文的结构安排:第1章绪论。主要论述设计的背景及其意义、国内外研究现状与现实存在的问题。第2章门禁控制系统的总体设计。主要论门禁系统的构成及门禁系统模块概述。第3章门禁系统硬件电路设计。主要讲述门禁系统基本工作原理和、设计框图及外围模块电路(射频读写模块、天线模块、通讯模块、看门狗、液晶、存储)等的设计。第4章门禁系统软件设计。主要讲述软件设计框图、主程序设计流程和各个子程序模块的设计。第5章系统调试。主要讲述了程序的编译与调试。第6章protues仿真。主要讲述密码输入、密码输入错误、密码输入成功、手/自动报警、开门/关门的仿真结果门禁控制系统的总体设计2.1门禁系统的构成门禁系统工作站上运行门禁控制服务程序,门禁控制服务程序的任务就是实现数据的传输功能,它的主要任务就是将读卡器采集的信息传输到中央处理器。实现RS485和TCP/IP通讯协议的转换,直接控制门禁读卡器的动作的并不是门禁工作站本身,而是向下它是通过RS485总线通过轮寻的方式与门禁读卡器控制器进行信息交互。实时记录从门禁读卡器采集数据的时间与内容,它是通过局域网以TCP/IP协议与管理中心服务器进行的通讯,传递门禁读卡器的读卡内容及管理中心服务器的各种控制命令。同时它是通过RS485总线通过轮寻的方式与门禁读卡器进行实时信息交互,根据服务器发出的动作指令控制门锁的闭合,从而达到智能控制门锁的目的。2.2门禁系统模块总体设计依据上述功能的分析,系统中模块分别为:数据采集模块、数据处理模块、数据存储模块、显示模块、串口发送/接收模块、密码输入模块、报警机制模块和门锁控制模块。基于MFRC500门禁控制系统是以无线射频读写器为核心,非接触式IC卡作为信息媒介的一套智能控制系统。门禁控制系统的工作原理是先由中央AT89C52控制MFRC500射频识别读写器,读写器再驱动天线电路进行读取非接触式IC卡的载体信息,(CPU)AT89C52根据所得数据控制输出量,经放大电路放大后分别作用于控制门锁继电器和读取门磁信号,且整个系统与上位PC机之间进行实时通讯,获得工作指令以及数据传输系统状态等。图2.2系统总体设计模块2.2.1系统设计基本原则智能门禁控制系统作为现代发展的的安全技术防范手段之一,控制系统自身具有隐藏性、实时性等特点,在众多领域得到普遍运用。智能门禁控制系统处于安全防范技术的尖端项目之一,应具有实用性、实时性、完整性、安全性、可扩展性、稳定性、易维护性等特点。1.系统的实用性智能门禁控制系统的设计功能应符合实际要求,在对于不同客户对象要求的情况下,还要设计满足客户信息。门禁系统是一项集成性应用系统,设计应该符合实际应用的需要。如果在设计系统时盲目的追求高端性、超前性,就会与现实要求背道而驰,偏离系统设计的最初目的。2.系统的实时性智能门禁控制系统中任何一个系统环节出现错误或停机将直接影响到整个系统的正常运作,门禁系统各子系统应尽可能不出现错误环节、停机情况,以保证整个工作运行。3.系统的完整性智能门禁控制系统设计要求保证功能完善,设备齐全,管理方便,是设计应考虑的一个因素。4.系统的安全性智能门禁控制系统中个子模块的正常运行的同时,还应达到合中国或国际有关的安全标准,并能在恶劣环境下正常工作,系统信息传输及使用过程中不易被盗取等方面。5.系统的可扩展性智能门禁控制系统的技术不断革新和发展,客户需求也在发生变化,因此门禁系统的设计与实施应考虑到将来可扩展的其它功能的实际需要,比如可以随着用户的需求可以灵活增减或更新各子系统,满足不同时期的不同需求,保持长时间领先地位,成为智能建筑的典范。6.系统的稳定性智能门禁控制系统和我们的日常生活和财产安全密切相关,门禁系统的基本职能是保护人身和财产的安全,系统开始投入使用就要求连续不间断的运行,确保信息采集不会中断,所以系统稳定性对于门禁控制系统来说就显得非常重要。第3章门禁系统硬件电路设计3.1门禁系统工作原理和电路设计主框图智能门禁控制系统由供电电源电路、备用电源充电电路、报警电路、电控锁电路、看门狗复位电路、单片机AT89C52及其外围电路等模块组成。系统总体硬件电路如图3.1所示:图3.1系统总体硬件电路由于系统主要由CPU、时钟芯片、MFRC500、四位开关量输入/输出、看门狗以及RS485通信模块等组成。门禁系统的常规工作方式是当有IC卡进入读卡器工作范围时,由CPU控制MFRC500读卡器控制芯片,再由读卡器驱动天线对IC卡进行信息读写操作,再根据所得的数据对其它硬件电路模块,如存储模块、时钟模块等,进行相应的响应操作,最后,再通过RS485总线与PC机之间进行实时数据通信,把采集到的人员数据传输给上位机。在门禁控制系统中,中央处理器CPU采用Atmel公司的AT89C52,是因为AT89C52开发简单,运行稳定。存储模块芯片采用24C64,用于存储系统实时采集到的的数据、事件和日期记录。为了防止系统“死机”,使用X25045作为看门狗复位主控芯片,芯片内置读写存储模块,可用来存储一些系统参数。与上位机的通信采用RS485实时通信模式,通信距离可以达到1km左右。图3.1.1MFRC500与AT89C52的接口电路MFRC500是非接触式通信中高集成读卡模块芯片,该芯片采用13.56Mhz的工作频率工作模式。该读卡IC系列采用领先的的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。发送器部分通过电磁感应原理,不需要增加有源电路就能够直接驱动近操作距离(100mm)。接收器部分设计采用一个坚固而有效的解调和解码电路,用于接收ISO兼容的应答器信号。数字部分处理ISO帧的错误检测。此外,它还支持快速加密算法用于验证MIFARE系列产品,为系统数据传输的安全性、保密性提供技术支持,待信息传输至MFRC500端时,进行解调处理,解调成系统能识别的信号。如图3.1.1为MFRC500与CPU的接口原理图,本系统采用中断工作模式,即中央处理器利用MFRC500提供中断信息对其进行控制,根据系统的需要,可以采用查询方式对MFRC500进行读写操作控制。3.2各部分外围电路设计3.2.1看门狗模块门禁系统是一个连续不间断运行的系统,单片机在运行过程中可能受到外界的电磁干扰造成程序紊乱,或者陷入死循环,所以在智能门禁控制的设计时加入了看门狗自动复位电路设计。在该系统中看门狗电路采用X25045芯片,将定时器、电压实时监控和串行读写存储集成一体的专用复位芯片。当系统发生故障时,会超过设定的时间限定值,电路中的看门狗复位电路将通过复位端向中央处理器发出复位信号,当单片机收到到传输过来的高电平时,将系统重新启动。它的电压实时监控功能还可以保护系统免受过高/低电压的影响,当电源的电压降到允许的范围之下时,门禁控制系统将自动复位,直到电源电压返回到稳定值为止,X25045芯片的引脚如图3.2.1所示。图3.2.1看门狗X25045接线图对X25045的控制操作主要通过CS、SO、SCK和SI端口进行实时串行通信完成的。其中SCK端是外部输入的时钟同步信号。当芯片定改指令、数据时,时钟前沿将SI引脚信号输入;在读取数据时,时钟后沿将数据位输出到SO引脚上。数据的输入/输出都是高位在先。芯片内部共有6条指令,WREN和WRDI是写使能开关的开/关指令、RDSR和WRSR是状态寄存器的读/写指令、READ和WRITE是存储单元的读/写指令。AT89C52内部没有硬件接口,因此本系统利用了单片机的P1.0、P1.1、P1.2、P1.3四个端口和软件模拟读写时序的方式与X25045通信。3.2.2串行E2PROM存储电路设计门禁系统所用到的读卡器在系统上具有一定的独立工作性,读卡器与上位机PC并不是实时通讯,而是每隔一定的时间向读卡器徐询问一次读卡信息,这是读卡器才把读取的信息传输给上位机PC,存储内容自动清空以便于下次打卡信息存储。运用过程中,使用人员的进出的频繁度直接决定读卡器内存要求。存储器有并行存储器和串行存储器之分,其中并行存储器存储容量较大,数据传送速度快、效率高,但芯片体积大、而且长时间的工作会造成大量打发热,管脚多、需要占用CPU大量的I/O口,外部扩展复杂。然而串行存储器体积小,与CPU接口简单,一般只要占用CPU的2至3个I/O端口。在由上比较,此次设计中我们选用串行存储器。由于存储容量过小,可用于存放兼容系统参数,因此在此设计中选用AT24C64,它与更高容量的存储器(如AT24C128/256)兼容,出现问题是易于更换。AT24C64由SCL、SDA引脚进行串行通信的读写存储器。AT24C64与CPU的接口电路见图3.2.2:图3.2.224C64接线图AT24C64与CPU连接的2根线是:(1)SCL接CPU的P2.2,同步时钟输入。(2)SDA接CPU的P2.1,串行数据输入/输出。这两根线连接须接上拉电阻。(3)WP接地,写保护脚,WP=0芯片允许读写操作。(4)A0,A1,A2接地,芯片地址引脚,都要接固定电平。3.2.3报警电路设计在本设计中,当出现非法入侵、门锁延时未关或输入的密码不正确时,会进行报警。报警电路采用蜂鸣器和LED灯(红)作为报警电路执行器件,将蜂鸣器与LED灯(红)并联连接,正端连接到+5V系统电源,负端连接到三级管的发射极,集电极接地,基极连接到1k电阻的一端另一端连接到单片机的P2.7引脚上。当单片机发出动作指令1时,在蜂鸣器响的同时LED(红)灯亮。在整个电路运用中三级管起到开关作用,与三级管相连电阻是为了防止电流过大而烧毁三级管。同理与LED灯相连的340Ω电阻也是起保护LED灯的作用,防止瞬间电流过大造成蜂鸣器和LED灯(红)烧毁,报警电路原理图如图3.2.3所示。图3.2.3报警电路接线3.2.4门控电路设计本设计的门控电路用LED(绿)灯进行模拟,当IC卡进入到无线射频工作区域时,读卡器驱动天线读取IC卡信息,病传输给单片机进行信息对比,单片机信息对比完毕发出开门指令时,LED(绿)灯亮,且门锁自动打开;将继电器正端通过340Ω电阻连接到+5V电源,另一端接到三极管集电极,三极管基极连接到单片机的P2.6引脚上,将LED(绿)灯与继电器并联。当给P2.6引脚送0时,继电器开启,LED(绿)灯亮,送1时,继电器关闭,LED(绿)灯灭。门控电路原理图如图3.2.4所示:3.2.4门控电路原理图3.2.5实时时钟芯片DS1302电路设计此次设计中需要对信息采集、动作操作时间进行准确记录,所以要用到时钟芯片。这里采用DALLAS公司推出的涓流充电时钟芯片DS1302,它拥有31个字节的静态RAM和实时时间,通过简单的串行接口连接可以与单片机进行实时时钟通信。提供秒、分、时日、日期、月及年份信息,每月的天数和闰年的天数都会系统自动调整计算。时钟操作可通过AM/PM指示决定采用24或12小时格式。DS1302时钟芯片与单片机之间的信息传递通过简单地同步串行的方式进行通信,仅需用到RES复位、I/O数据线、SCLK串行时钟.时钟的读/写数据以一个字节或多个个字节、最高可达满状态的31字节的字符组方式通信。图3.2.5实时时钟芯片DS1302接线图DS1302的引脚图及外围的电路如上图2.4.4c所示,X1X2接12KHz晶振,为时钟芯片提供时钟脉冲。复位脚RESET、数据I/O及串行时钟引脚SCLK,VCC1,VCC2接电管脚,Vcc2接+5V系统电源,Vcc1接系统备用电源。对与单片机的时间进行实时通信采用串行通信方式,RESETT为通信允许信号,当RESET=1允许进行实时通讯,RESET=0时禁止通信;I/O为双向串行数据传送信号,SCLK为串行数据的位同步脉冲信号。实时时钟芯片DS1302通过RESET、SCLK和I/O三个管脚与单片机实现两芯片间的实时数据传送。3.2.6RS485通讯模块设计在单片机内部使用的是TTL电平,由于TTL电平的抗干扰能力和驱动能力有限,不能使用TTL电平来进行长距离的数据通信,因此在需要长距离的通信时需要转换成其他的电平。实际使用时常常使用RS485通讯总线来进行长距离的通信,RS485总线采用的平衡差分传输,具有较好的的抗干扰能力,且传输距离可以达到1200M,总线上最多可以连接128个单片机系统控制单元,传输速度可以达到250KB/S,适合用于多机通信。门禁控制系统主控芯片AT89C52与上位机PC采用RS485通信协议进行实时数据传输,在数据传输是将单片机的TTL电平转换成RS485的电平信号,然后进行远距离的传输。在本次设计智能门禁控制系统时选用的是MAXIM公司生产的MAX485芯片,MAX485是RS485通讯低功耗终端收发器件,它设计安装有驱动器和接收器,采用+5V系统电源为MAX485供电,工作电流在120至500uA低电流自动关机模式,驱动器自带有过载保护功能用,当出现过载时将自动切断电源保护系统,笨次设计用它来实现门禁控制单元与上位机的实时信息传输。在该系统中MAX485将AT89C52需要发送的TTL数字信号转换成RS485信号传输到上位机,上位机在接收端在将RS485传输过来的信号转换成TTL数字信号,从而实现远距离的数字信息通信,MAX485的连接如图3.2.6所示。MAX485的R0引脚为接收器信号输出,RE是接收器输出使能端口,GNG为当该引脚为低时接收器状态为输出信号,DI为驱动器的输入引脚,Vcc接+5V系统电源,DE为驱动器的输入使能端口,A+为接收器的输入和驱动器的输出端口,B+为反向的接收器输入和驱动器输出端口。图3.2.6RS485通讯模块接线图在系统电路设计时,A+和B+端要接一个终端电阻,设计是采用120K的电阻,MAX485芯片有8个引脚,其中需要一个I/O口对MAX485的数据发送进行控制。当该I/O口为1时,MAX485能发送数据,当为0时,MAX485处于监听状态,只能接收数据。3.2.7射频卡读卡器的天线设计MFRC500通过控制天线引脚TX1、TX2,以此来驱动的天线以13.56MHz电磁频率将电磁波发送出去,在无线射频电磁波覆盖的范围内采用RF场的负载调制进行响应,天线接收到IC卡的响应信号、内置信息经与过天线匹配电路送到MFRC500接收引脚RX,MFRC500芯片内部接收器将天线传输过来的信号进行解调、译码,并根据寄存器预先设定的程序进行相关信号处理,然后将解调完毕的数据发由并行接口传输到中央处理器,为了获取稳定、可靠的射频返回信号,天线部分的电路设计非常关键。在此次设计中,利用电感耦合式无线识别系统的读写器天线产生磁通量,磁通量用利用电磁感应向非接触式IC卡(用户持卡)提供感应电源,并且与建立IC卡与读卡器之间的信息读取连接。读卡器天线的构造需要满足天线线圈的电流足够大,用于产生最大的磁通量,便于IC卡的读取和尽可能的扩大磁通覆盖范围和功率要合理匹配,将产生磁通量的可用能量利用率提升到最高;由于Mifare卡是无源非接触式IC卡,其能量是通过天线电磁感应产生,卡形状的制定,限定卡中不能封装较大天线,间接的导致IC卡接收的能量较小,从而限定读卡器天线读写距离,一般在100mm以内。表3.2.7天线大小与读写器距离关系表 大小(mm) 读写距离(mm) 50*50 7 65*54 10 85*54 12 85*85 8表中是在标准无金属等其他因素干扰下测出的值,实际应用中的读写距离是此距离的两到三倍,在本此射频读卡器天线设计中,天线采用65mm×54mm,为方形天线。图3.2.7射频卡读卡器天线接线图3.2.8供电电源变压稳压电路及备用电源充电电路在本次门禁系统设计中供电电源电路是为单片机、电磁锁、报警电路等周边电路提供+12V、+5V系统电源,为了防止断电出现门不能开启造成不必要的损失,在电路设计是加入了12V铅蓄电池,可以在系统断电后自动切入使用。初始电源由市电220V交流电提供,经过24V的变压器、整流滤波电路和LM7812和LM7805变压稳压芯片,产生稳定的供电磁锁的+12V电源和单片机电路的+5V电源。在电路图中,其中直流继电器用来在系统断电后,市电供电电源和备用蓄电池电源的断电自动切换。当常用市电电源正常时用常用电源,系统断电后自动切换到备用蓄电池电源,由12V蓄电池为系统供电。电路框图如图3.2.8-1所示:图3.2.8-1系统供电电源原理图如下图所示,LM305是可调集成稳压器,它可以提供1.25至33V电压输出、3A的电流输出输出。当开始充电时,充电器的输出电压为14.5V此时充电电流限制到在2A左右,随着电池电压的升高,充电电流逐渐减小,在充电电流减小到15mA时,充电器转换到一个较低的充电电压,以防止过充。随着向电池的继续充电,充电电流持续减小,而输出电压则从14.5V降低到12.5V左右,此时将终止充电,同时晶体管V1导通,驱动发光二极管D1点亮,表示电池已经充足电。图3.2.8-2备用电源充电电路原理图3.2.9系统抗干扰设计由于门禁系统设计要求稳定性高、信息安全性能高,然后门禁系统的工作环境有课能是在恶劣坏境下,在这种恶劣环境系统工作要求具有很强的抗干扰能力,包括噪声干扰和电磁干扰或其它未知干扰。,因此在设计中电路的抗干扰能力需要考虑到,对电路进行抗干扰设计。在设计该系统时采用了以下一些方式来达到抗干扰的目的。(1)接地在门禁系统电路PCB(印制板)设计时,电源线的地线的布局将直接决定电磁干扰的影响程度,在常见的电磁干扰中大多数都是由于PCB上的电源线和地线产生,而且地线的合理设计比电源线的设计更加重要和关键,当地线上有电流通过时就会产生电压,在地线上形成环路电流,从而产生地线的噪声干扰,在设计中需要注重这个问题。(2)去耦在设计PCB(印制电路板)时,通常需要在电路的各个关键部位配置合适的去耦电容,通常需要采用去偶设计的电路包括电源的去偶和芯片的去偶。1)在设计PCB(印制电路板)时,在电源与接地之间连接一个去耦电容,一是可以为集成电路蓄能,二是可以过滤高频噪声,在电源与信号的入口合理的设计的去耦电容,可以防止信号的干扰,大电容可以过滤信号里的低频干扰成分,小电容则可以过滤掉信号里的高频干扰成分;2)芯片的去偶,在每个集成电路芯片的电源端和接地端之间都应该设计一个0.01μF瓷片电容,可以滤除电源端与接地端之间的高频噪声;第4章门禁系统软件设计门禁控系统的核心处理单元是单片机,在设计中中选用Atmel公司的AT89C52系列单片机,采用Keil编程软件编程,程序经过编译无误后,通过仿真完成各部分控制的功能如键盘扫描、1602LDC显示、密码输入开门、手动开门、关门、手动声光报警、门延时未关或非法入侵声光报警、密码三次输入错误声光报警等功能。根据门禁控制系统仿真要实现的功能。主程序将按顺序一直的执行,当有按键输入发生时,程序将按照编程设定运行相关子程序,并通过按下的键号值,在内部进行处理运算,输出预置显示结果并且输出相应的状态信号。在进行软件设计时,从按键扫描开始设计,经由Keil编译无误后,生成HEX文件,调入protues仿真。4.1软件设计模块框图图4.1软件模块框图4.2主程序设计流程图主程序设计流程图。YNNNNYNYYNYYY图4.2主程序设计流程图4.3子程序设计流程图4.3.1DS1302子程序单片机通过串行方式控制DS1302和读写数据,数据传输时由AT89C52向DS1302写入控制指令,控制字节如图4.3.1-1所示,当控制指令的最高有效位(位7)为1时,允许对DS1302写入数据信息;最低有效位(位0)表示命令类型,为0表示进行写操作,为1表示进行读操作,DS1302的复位特征和时钟控制要求复位(RST)输入有两种功能,一是接通控制逻辑,允许控制指令写入移位寄存器,二是终止字节数据传输。在DS1302运行过程中,当置RST为高电平时,将初始化传输数据,操作状态变为允许操作。如果在传送过程中RST置为低电平,将停止正在传输的数据,同时数据输入/出引脚变为高阻态。在运行时,在Vcc大于2V之前,RST需要保持低电平,当RST为高电平时,SCLK需要为低电平。数据数据输入/出口向DS1302写入数据时,数据在控制字节输入后的在下一个时钟周期的上升沿写入。数据读写时序如图4.3.1-2所示。图4.3.1-1DS1302控制字节图4.3.1-2DS1302读写时序4.3.2LCD显示子程序显示程序的主要功能是对当前的门控状态显示及执行AT89C52发出的显示指令,1602液晶模块的读写操作,屏幕和光标的操作都是通过指令编程来实现的。LCD1602液晶模块有11条内部控制指令(表4.3.2)。当系统向LCD1602液晶显示器发出控制指令时,LCD1602内部函数会预先判断操作指令类型,再进行相应的读/写操作。表4.3.2LCD1602控制指令 序号 指令 RS R/W D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 * 3 置输入模式 0 0 0 0 0 0 0 1 I/D S 4 显示开/关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 S/C R/L * * 6 置功能 0 0 0 0 1 DL N F * * 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到(CGRAM或DDRAM) 1 0 要写的数据内容 11 从CGRAM或DDRAM读数 1 1 读出的数据内容LCD1602内部11条控制指令:指令1:清屏指令,将DDRAM的内容清空,此时液晶屏幕将不显示任何字符。指令2:光标归位指令,将光标返回显示器的左上方,同时,地址计时器的值设置为0。指令3:模式设置指令,设定当写入数据后光标是否移动,如选择移动则设置贯标的移动方向。指令4:显示开关控制指令,设置光标显示功能,包括光标开/关、闪烁。指令5:显示屏或光标移动方向指令,控制光标移动和显示屏是否移动。指令6:功能设定指令,设定数据总线位数、显示的行数及字形。指令7:设定CGRAM地址指令,设定下一个数据将要存入DDRAM的地址。指令8:DDRAM地址指令,设定下一个数据将要要存入CGRAM的地址。指令9:读取忙信号或AC地址指令,高电平表示系统忙碌状态,此时模块不能接收命令或数据,如果为低电平表示系统不忙碌状态。指令10:数据写入DDEAM或CGRAM指令,让显示屏显示预先设定的字符。指令11:从CGRAM或DDRAM读出数据的指令,读取内存中的存储数据由于液晶显示模块是一个慢显示器件,在系统每发出一个控制指令时,系统首先判断是否忙碌,如果不忙碌则执行词条命令,如果是忙碌状态则取消此条控指令。图4.3.2是1602的内部显示地址:图4.3.2-1LCD1602内部显示地址在液晶模块的初始化程序设计中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,1602液晶模块内部的字符发生存储器(CGROM)预先存储了160个不同的点阵字符图形,LCD1602液晶显示模块显示程序流程图:图4.3.2-2LCD1602显示程序设计流程图LCD1602显示程序详见附录4.3.34X4键盘扫描程序设计独立式键盘只适合按键较少的场合,否则占用端口太多。按键较多时,可采用行列式键盘电路,但行列式键盘的管理程序较复杂,需要采用键盘扫描技术。常见的键盘扫描方式有扫面法、线反转法、状态矩阵法等。图4.3.34X4矩阵键盘图4.3.3描述了其编程原理,在此次设计中采用线反转法(Line-Reverse)。I/O断线分为行线和列线,按键跨接在行线和列线上,按键按下时,行线和列线将发生短路。线反转法扫描的过程如下:(1)先从P1口的高4位输出低电平(列),低4位输出高电平(行)即P1=0x0f。再从P1口读取键盘状态。这时,如果低4位中只要有一位出现“0”,说明此行有按键按下。各行有按键按下时,P1口读取的数值依次是0EH、0DH、0BH、07H。(2)再从P1口的低4位输出低电平(行),高4位输出高电平(列)即P1=0xf0。再从P1口读取键盘状态。这时,如果高4位中只要有一位出现“0”,说明此行有按键按下。各行有按键按下时,P1口读取的数值依次是E0H、D0H、B0H、70H。(3)将两次读取的特征值组合对比,得到当前“按键的特征码”。键盘是由无数个按键组成的,它是单片机最简单的输入设备。键在闭合和断开时会存在抖动现象。键的抖动时间一般为5ms至10ms,抖动可能造成一次按键的多次闭合、释放问题,单片机应用中常采用软件延时5ms至10ms的办法来消除抖动的影响。4.3.4密码输入及判断子程序此段程序段键盘扫描扫描结果与系统初始化密码对比,两程序实现了该系统最重要的两个功能,在系统设计时,为保护客户信息,设置的密码为“*”样式,当密码输入正确时,屏幕将显示密码等待界面,并且产生电锁接通信号,再延时10s关断;在三次密码输入错误的时候将显示密码输入错误界面,同时输出报警信号。NY图4.3.3密码输入及判断程序流程图第5章程序调试5.1程序调试与编译Keil软件是目前最流行开发MCS-51系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器在内的完整开发方案,通过一个集成开发环境将这些部分组合在一起,本文中调试用的是KeiluVision3版本。5.1.1建立工程项目运行KeiluVision3程序后,点击Project->NewProject菜单,输入工程名称,这里为cx3.uv2,在弹出的对话框中选择目标CPU,Keil支持的CPU很多,这里我们选择Atmel公司的AT89C52芯片,确定后可以发现工程窗口出现“Target1”和下一层“Sourcegroup1”的文件层次,我们只要在Sourcegroup1下添加我们编写的程序。如图5.1.1图5.1.1建立工程cx3图5.1.2程序编译结果5..1.2程序编译调试在编好程序后就要进行编译调试,本文所用的各个子程序附在了附录中,首先在Project->Optionfortarget‘target1’的对话框中完成工程的详细设置。在设置好工程后即可编译链接,图5.1.2为程序编译结果:protues仿真本次设计运用protues的ISIS7.8sp2,在软件环境下画出电路仿真图,在检查仿真图无误后,将设计的程序在KeilC51μVision3开发集成环境上编译成机器语言,进入Proteus的ISIS,鼠标左键点击菜单“Debug”,选中“useromotedebugermonitor”,便可实现KeilC与Proteus连接调试。首先在Proteus中双击单片机AT89C52,将KeilC下编程生成的cx3.HEX文件导入到AT89C52中,可在Proteus中单击全速仿真运行按钮,实时观察,能观察到芯片上每一个引脚的电平变化,红色代表高电平,蓝色代表低电平。6.1欢迎界面仿真欢迎界面为系统开始界面,按键“欢迎”按键,出现此界面:图6.1欢迎界面仿真6.2密码输入开门仿真本程序设置的初始六位密码是666666,经键盘密码输入,再密码输入完毕后系统自动对比,输入正确或错误时,均有相应声音提示、LED指示和显示屏显示。6.2.1密码输入功能开始界面仿真当按下“密码输入/重新输入”按键后,LCD1602上显示:图6.2.1密码输入功能仿真界面6.2.2密码输入进度仿真在键盘上按键0至9时,每输入一位密码LCD1602上都会有相应的密码进度显示:图6.2.2密码输入进度仿真6.2.3密码输入结果仿真1、当6位密码输入完成,系统自动进行比较等待(图6.2.3-1)。图6.2.3-1密码输入完成对比界面当密码输入错误一次时显示(图6.2.3-2A),报警一声提示,同时显示再次输入(图6.2.3-2B):图6.2.3-2A密码一次错误显示图6.2.3-2B提示再次输入密码输入3次错误仿真(图4.2.3-3),显示屏显示错误信息,持续报警。图4.2.3-3密码输入3次错误显示密码输入正确仿真(图4.2.3-4),显示屏显示正确通知、客户信息,同时门锁打开,延时10秒自动关闭。图4.2.3-4A显示正确通知图4.2.3-4B显示客户信息6.3开门/关门仿真当按下“开门”按键时,显示屏显示欢迎信息(图6.3.1),门锁自动打开(图6.3.2)。图6.3.1显示欢迎信息图6.3.2门锁打开当按下“关门”按键时,显示屏显示问候信息(图6.3.3),门锁自动关闭(图6.3.4)。图6.3.3显示问候信息图6.3.4门锁关闭6.4手动报警仿真当按下“报警”按键时,显示屏显示报警信息(图6.4.1),同时进行声光报警(图6.4.2):图6.4.1显示报警信息图6.4.2声光报警6.5取消按键模拟当按下“取消”按键时,密码输入取消,清除显示信息(图6.5)。图6.5取消按键按下的取消效果6.6门锁延时未关、非法入侵模拟当按下“模拟门磁按键时”(图6.6.1),显示屏显示报警信息(图6.6.2),同时持续声光报警(图6.6.3)。图6.6.1按下模拟门锁延时未关/非法入侵按键图6.6.2显示报警信息图6.2.3持续声光报警结论我的论文题目是“基于RFID的门禁控制系统设计”。刚开始时不知道从哪儿开始入手,完全没有头绪,甚至产生了放弃了的念头,但最后还是坚持下来了,应为我知道不能遇到困难就放弃,必须就去挑战它!事情的挑战越大,就越能锻炼人,我要去克服自己薄弱环节,去战胜困难。从最初的安全没有设计头绪,慢慢的查资料、请教老师,当有了初步的设计思路后开始自行设计,中途很多次错误很更改,在老师和同学的帮助下及时改正,知道最后完成整个毕业设计。设计初期任务是网上搜集资料、了解课题设计内容与基本原理,写文献综述。在韦兴平老师的指点下,开始进行初期准备工作,主要通过网络、图书馆搜集相关学术论文、中文期刊、书籍等进行阅读,看到好的设计方案和独特见解时用笔记记录下来参考。通过近一个月的课题了解,搜集了一大堆与毕业设计相关的资料,我舍去一些无关的内容,保留了有参考价值的资料作为参考资料,直到将文献综述完成,我将任务书内容列成提纲,好每个任务的时间,更加完善精确资料,为论文的正式撰写做好准备。同时将想法与韦实时老师进行沟通。接下来,开始整理资料、分析研究,对比,并制作了课题设计的方案,并进行相关电路的设计工作和软件的设计工作。为了画出比较合格的完成程序编程、电路原理图、仿真图。我仔细复习和学习了C语言、keil软件、protues及protel99软件的使用,掌握了许多的画图技巧和编程技巧。此次毕业设计的设计过程是我的一次再学习,再提高的过程,掌握了更多单片机的知识、C语言编程技巧、软件使用技巧等,对所学过的知识更加巩固和提高,更加增长了见识,锻炼了实际操作能力、合作能力。在设计中我充分地运用了大学期间所学到的知识,经过自己的努力,将硬件设计基本完成后,并加入了自己观点。在此期间,我多次与韦老师面对面沟通,听取老师好的建议,积极采纳,改正错误。在整个毕业设计的过程中认识到了不管做什么事都要有良好的心态,要有以一种必胜的心态去完成,对于中途出现的任何问题都要及时改正,通过有效的途径去快速解决,当事情难度超出自己能力范围是,要学会动用资源,请教别人,直到解决问题,这样会达到事半功倍的效果。此次毕业设计是大学最后的考核,它为我的大学四年划上了一个完美的句号,在今后的生活工作中应该具有不怕困难、坚持不懈、吃苦耐劳的精神,正所谓“不逼自己一把不知道自己有多优秀”,这也算是一次意志的磨练,是对我实际能力的一次提升,会对未来的学习和工作有很大的帮助。参考文献[1]陈国栋基于射频识别技术的门禁系统研究与设计[D].硕士论文 长沙:中南大学,2005.01.01[2]黄菊生基于智能IC卡的网络门禁系统设计与开发[D].硕士论文 长沙:湖南大学,2003.10.10[3]MFRC500HighlyIntegratedISO14443AReaderICDesignDataSheet.PhilipsSemiconductor,2002[4]MifareRStandardICCardDesignDataSheet.PhilipsSemiconductor,2002[5]王爱英.智能卡技术[M].北京:清华大学出版社,2000,10:1-3,211-217,313-322[6]何将三陈国栋基于MFRC500的射频识别读写器设计[J]单片机与嵌入式系统应用2004.11[7]单承赣,柴斌,姚磊高集成度TYPEA读写器芯片MFRC500及其应用[J]国外电子元器件2004.8[8]宋红梅.非接触式IC卡门禁考勤管理系统[J].机车车辆工艺,2002(4):25-28[9]周立功.Mifare标准IC卡MFIICS50功能说明书.http://www.zlgmeu.com,2002[10]王恒奎等.非接触式智能卡系统及若干关键技术[J].电子技术应用,1999.12.36[11]黄智伟,陈和采用射频识别技术的门禁系统设计[J].电子工程师,2001,21(1).134-136[12]沈树群,沈宁超.射频识别技术及其应用[J].国际自动识别技术研讨会论文集,1997.42-52[13]李朝清.PC机及单片机数据通信技术[M].北京:北京航空航天大学出版社,2000.10-22,33-60[14]杨军,沈毅PC机与单片机的多机通讯[J].郑州纺织工业学院学报,1998,9.83-84,87[15]曲东才,刘持胜,刘爱元等.通用微型机与MCS-51系列单片机的数据通讯技术[J].微计算机信息,1998,14(3).24-26[16]周立功MFRC500.http://www.zlgmeu.com,2002[17]Philips.MifareCoreModule(MCM)MFCM500Specification.DATASHEET,2002[18]尹红,唐煌.单片机RS485多机通讯的实现[J].计算机应用,1999,19(1).52-54[20]余永权.ATMEL89系列单片机应用技术[M].北京:北京航空航天大学出版社,2002[21]沈红卫.单片机应用系统设计实例与分析[M].北京:北京航空航天大学出版社,2003附录A系统原理图附录B仿真图附录C程序清单/*******************************包含头文件********************************/#include<reg52.h>#include<intrins.h>#include<math.h>#include<stdio.h>voidlcd_init();voidlcd_pos(unsignedcharpos);voidlcd_wdat(unsignedchardat);voidPassword_importation(void);sbitrst=P2^5;sbitsclk=P2^6;sbitio=P2^7;sbitrs=P2^2;sbitrw=P2^1;sbitep=P2^0;sbitREL=P2^4;//输出信号,0为开门sbitbeep=P2^3;//报警0为报警sbitdoorcontact=P3^7;//门磁0为非正常#defineucharunsignedchar#defineuintunsignedintintface,face1,face,face2,face3,face4,face5,face6;/******************************显示数据表*********************************/unsignedcharcodedis0[]={"xihuadaxue!"};unsignedcharcodedis00[]={"lvjiawei"};unsignedcharcodedis000[]={"INPUTAGAIN!"};unsignedcharcodedis0000[]={"WARNING!!!"};unsignedcharcodedis00000[]={"CONTINUE........."};unsignedcharcodediskeep[]={"FRENDS"};unsignedcharcodedistouch[]={"KEEPTOUCH!"};unsignedcharcodedis1[]={"WELCOME!"};unsignedcharcodedis2[]={"LVJIAWEI:>"};unsignedcharcodedis3[]={"PLEASE"};unsignedcharcodedis4[]={"INPUTCODE:"};unsignedcharcodedis5[]={"THECODE:"};unsignedcharcodedis6[]={"________"};unsignedcharcodedis7[]={"THECODE1:"};unsignedcharcodedis8[]={"*"};unsignedcharcodedis9[]={"THECODE2:"};unsignedcharcodedis10[]={"**"};unsignedcharcodedis11[]={"THECODE3:"};unsignedcharcodedis12[]={"***"};unsignedcharcodedis13[]={"THECODE4:"};unsignedcharcodedis14[]={"****"};unsignedcharcodedis15[]={"THECODE5:"};unsignedcharcodedis16[]={"*****"};unsignedcharcodedis17[]={"THECODE6:"};unsignedcharcodedis18[]={"******"};unsignedcharcodedis50[]={"PLEASEWAIT!"};unsignedcharcodedis51[]={"WAITPLEASE!"};unsignedcharcodedis52[]={"SORRY!"};unsignedcharcodedis53[]={"CODEERROR!"};unsignedcharcodedis54[]={"RIGHTCODE"};unsignedcharcodedis55[]={"UAREWELCOME!"};unsignedcharcodedis56[]={"CODEERROR"};unsignedcharcodedis57[]={"THREETIMES!!!"};unsignedchartab_time[];unsignedchartab_1302[];unsignedchartab_ymdw[];unsignedcharnumface=0;unsignedcharnumface1=0;unsignedcharnumface2=0;unsignedcharnumface3=0;unsignedcharcodeturepassword[6]={6,6,6,6,6,6};//原始密码unsignedcharkey_data=0;unsignedcharpassword[]={0,0,0,0,0,0};unsignedcharerrortimes=0;ucharNumber=0;intnum;/函数名:延时程序/voiddelay1ms(intz)//延时为1ms当delay(1000)为1000为一秒{intx,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}voidopendoor(void){delay1ms(10);REL=0;}voidclosedoor(void){delay1ms(10);REL=1;}voidcancel(void){delay1ms(100);lcd_wcmd(0x01);//清屏face1=0;//第一位密码输入标志清零face2=0;//第二位密码输入标志清零face3=0;//第三位密码输入标志清零face4=0;//第四位密码输入标志清零face5=0;//第五位密码输入标志清零face6=0;//第六位密码输入标志清零}voidkeeptouch(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(diskeep[i]!='\0'){lcd_wdat(diskeep[i]);//显示字符i++;}lcd_pos(0x44);//设置显示位置i=0;while(distouch[i]!='\0'){lcd_wdat(distouch[i]);//显示字符i++;}face=1;//输入0个门号标识符while(P1!=0x0f);}voidwelcome(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis1[i]!='\0'){lcd_wdat(dis1[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis2[i]!='\0'){lcd_wdat(dis2[i]);//显示字符i++;}face=1;//输入0个门号标识符while(P1!=0x0f);}voidloading(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis0[i]!='\0'){lcd_wdat(dis0[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis00[i]!='\0'){lcd_wdat(dis00[i]);//显示字符i++;}face=1;//输入0个门号标识符while(P1!=0x0f);delay1ms(4000);return;}voidinputagain(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis3[i]!='\0'){lcd_wdat(dis3[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis000[i]!='\0'){lcd_wdat(dis000[i]);//显示字符i++;}face=1;//输入0个门号标识符while(P1!=0x0f);delay(2000);return;}voiderror3times(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis56[i]!='\0'){lcd_wdat(dis56[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis57[i]!='\0'){lcd_wdat(dis57[i]);//显示字符i++;}delay1ms(500);//延时为0.5ms}voidpassword_OK(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis54[i]!='\0'){lcd_wdat(dis54[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis55[i]!='\0'){lcd_wdat(dis55[i]);//显示字符i++;}delay1ms(1000);//延时为1msloading();}voidpass_error(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis52[i]!='\0'){lcd_wdat(dis52[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis53[i]!='\0'){lcd_wdat(dis53[i]);//显示字符i++;}beep=0;delay1ms(500);beep=1;inputagain();}voidpass_over(void){unsignedchari;lcd_init();//初始化LCDdelay1ms(10);lcd_pos(0x01);//设置显示位置i=0;while(dis50[i]!='\0'){lcd_wdat(dis50[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis51[i]!='\0'){lcd_wdat(dis51[i]);//显示字符i++;}delay1ms(2000);//延时为2ms}voidPass_face6(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis17[i]!='\0'){lcd_wdat(dis17[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis18[i]!='\0'){lcd_wdat(dis18[i]);//显示字符i++;}face6=1;//输入了6个密码字符标志while(P1!=0x0f);}voidPass_face5(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis15[i]!='\0'){lcd_wdat(dis15[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis16[i]!='\0'){lcd_wdat(dis16[i]);//显示字符i++;}face5=1;//输入了5个密码字符标志while(P1!=0x0f);}voidPass_face4(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis13[i]!='\0'){lcd_wdat(dis13[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis14[i]!='\0'){lcd_wdat(dis14[i]);//显示字符i++;}face4=1;//输入了4个密码字符标志while(P1!=0x0f);}voidPass_face3(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis11[i]!='\0'){lcd_wdat(dis11[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis12[i]!='\0'){lcd_wdat(dis12[i]);//显示字符i++;}face3=1;//输入了3个密码字符标志while(P1!=0x0f);}voidPass_face2(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis9[i]!='\0'){lcd_wdat(dis9[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis10[i]!='\0'){lcd_wdat(dis10[i]);//显示字符i++;}face2=1;//输入了2个密码字符标志while(P1!=0x0f);}voidPass_face1(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis7[i]!='\0'){lcd_wdat(dis7[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis8[i]!='\0'){lcd_wdat(dis8[i]);//显示字符i++;}while(P1!=0x0f);face1=1;//输入了1个密码字符标志}voidcodeinput(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis3[i]!='\0'){lcd_wdat(dis3[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis4[i]!='\0'){lcd_wdat(dis4[i]);//显示字符i++;}face=1;//输入0个门号标识符while(P1!=0x0f);}ucharkeyscan(void){ucharkeycode=0xff;ucharkeycode1,keycode2;P1=0xf0;if(P1!=0xf0){delay(100);if(P1!=0xf0){keycode1=P1;P1=0x0f;keycode2=P1;keycode=keycode2|keycode1;switch(keycode){case0xff:keycode=00;break;case0xee:keycode=0;break;case0xde:keycode=1;break;case0xbe:keycode=2;break;case0x7e:keycode=3;break;case0xed:keycode=4;break;case0xdd:keycode=5;break;case0xbd:keycode=6;break;case0x7d:keycode=7;break;case0xeb:keycode=8;break;case0xdb:keycode=9;break;case0xbb:keycode=10;break;case0x7b:keycode=11;break;case0xe7:keycode=12;break;case0xd7:keycode=13;break;case0xb7:keycode=14;break;case0x77:keycode=15;break;}}}returnkeycode;//键值返回}voidwarning(void){while(1){beep=0;delay1ms(500);beep=1;delay1ms(500);beep=0;}}voidwarningshow(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis56[i]!='\0'){lcd_wdat(dis56[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis0000[i]!='\0'){lcd_wdat(dis0000[i]);//显示字符i++;}face=1;//输入0个门号标识符while(P1!=0x0f);}voidwarningshow1(void){unsignedchari;lcd_init();//初始化LCDdelay(10);lcd_pos(0x01);//设置显示位置i=0;while(dis00000[i]!='\0'){lcd_wdat(dis00000[i]);//显示字符i++;}lcd_pos(0x42);//设置显示位置i=0;while(dis0000[i]!='\0'){lcd_wdat(dis0000[i]);//显示字符i++;}face=1;//输入0个门号标识符warning();while(P1!=0x0f);}voidpasswordcomparison(void)//密码比较函数{ucharNumber=0;while((password[Number]==turepassword[Number])&(Number<6))//密码比较{Number++;//计数值加1}if(Number>=6)//密码正确{password_OK();//调用密码输入正确提示函数REL=0;delay1ms(10000);//10秒后自动门关闭REL=1;//继电器开启,0为开门beep=1;//输入正确,1为非报警Number=0;}else{pass_error();//输出“密码错误的显示”errortimes++;if(errortimes==3){error3times();REL=1;//继电器关闭,1为关门warning();//闪烁报警1次warningshow();errortimes=0;}}}/主函数/voidmain(void){unsignedchark;ds1302_init();ds1302();//实时时钟芯片时间读入{while(1){if(doorcontact==0&&REL==1){warningshow1();}elseif(face6==1){pass_over();//6位密码输入等待界面passwordcomparison();//密码比较face6=0;}else{k=keyscan();if((k>=0&&k<=9)&&(face==1))//密码第一位1{key_data=k;password[0]=key_data;key_data=0;face=2;Pass_face1();}elseif((k>=0&&k<=9)&&(face==2)&&(face1==1))//密码第二位{key_data=k;password[1]=key_data;key_data=0;face1=2;Pass_face2();}elseif((k>=0&&k<=9)&&(face==2)&&(face1==2)&&(face2==1))//密码第3位{key_data=k;password[2]=key_data;key_data=0;face2=2;Pass_face3();}elseif((k>=0&&k<=9)&&(face==2)&&(face1==2)&&(face2==2)&&(face3==1))//密码第4位{key_data=k;password[3]=key_data;key_data=0;face3=2;Pass_face4();}Elseif((k>0&&k<9)&&(face==2)&&(fece1==2)&&(face2==2)&&(face3==2)&&(face4==1))//密码第5位{key_data=k;password[4]=key_data;key_data=0;face4=2;Pass_face5();}Elseif((k>=0&&k<=9)&&(face==2)&&(face1==2)&&(face2==2)&&(face3==2)&&(face4==2)&&(face5==1))//密码第6位6{key_data=k;password[5]=key_data;key_data=0;face5=2;Pass_face6();}elseif(k==15)//密码输入界面{codeinput();//codeinput显示函数}elseif(k==14)//欢迎界面{welcome();//welcom显示函数}elseif(k==13)//开门界面{welcome();opendoor();//opendoor控制函数}elseif(k==12)//关门控制{keeptouch();closedoor();//close关门控制}elseif(k==11)//取消控制{cancel();//cancel取消控制}elseif(k==10)//报警控制{warningshow1();}}}}}致谢本文是在导师韦兴平老师的悉心指导下完成的,由衷的感谢我的导师韦兴平老师,感谢他在这次毕业设计中对我无私的关怀和教诲,他为我指出了之前设计的不足和缺点,并且为我指明设计新思路,遇到问题能及时为我解答。在此次设计中,在韦老师的悉心指导下,我不仅学到了严谨的学习工作作风、扎实的科研精神,还从老师身上学到了为人处世之道,不放弃,不言弃的态度,所有的这些都是今后工作和生活的宝贵财富。感谢一直以来与我一起努力奋斗的的室友,和他们一起走过四年的风雨,一起为此次设计奋斗,他们给予我积极的配合和无私的帮助,在愉快的学习环境中顺利的完成课题,一起为大学四年画上完美的句号。真诚的感谢我的家人和朋友们,谢谢你们所给予我的支持和关爱!2014年5月于西华大学综合数据处理模块读卡器处理模块密码处理模块读卡模块存储模块门控模块报警模块显示模块存储模块门控模块报警模块显示模块主程序DS1302时间记录键盘扫描LCD1602实时显示门磁扫描键值输入键值对比实时报警密码对比开始延时报警门磁状态K=10K=12K=14K=13K=15键盘扫描实时记录DS1302时钟芯片密码输入及自动判断K=11欢迎界面手动开门手动关门操作取消手动报警开始液晶初始化设置第一行数据显示地址显示第一行数据延时设置第二行数据显示地址显示第二行数据延时、清屏结束显示:PLEASEWEITWAITPLEASE键盘输入6位密码显示:PIEASEINPUTCODE:密码输入按键系统初始化显示:CODEREEORTHERETIMES!实时声光报警3次密码输入错误密码******字样实时显示显示:SORRYCODEERROR!显示:RIGHTCODEUAERWELCOME开锁通电_1234567891.vsd4位开关量输入RS-485总线接口看门狗时钟PC机处理器ATC89C524位开关量输出E2PROMMFRC500液晶屏天线进/出门磁信号两路按钮信号接触点锁驱动通讯灯工作灯
/
本文档为【基于RFID的门禁控制系统设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索