资源描述
20
陕西国防学院机电工程学院毕业论文
基于单片机的门禁控制系统的设计
电气工程及其自动化
[摘 要]:本文介绍了一种用于门禁管理系统的射频读卡器的设计过程,实现卡上信息的识别和读取。主要完成了硬件的设计调试和部分软件的设计和调试工作。对于硬件部分,完成读卡器电路的设计和调试工作。本设计是利用T7122M—I工业级ID读卡模块实现的门禁控制器,主控部分采用AT89C51芯片,控制外围设备,有卡读入时先判断是否为管理卡或者用户卡,针对相应卡蜂鸣器做出相应回应。此系统具有存储一张管理卡和多张用户卡的功能,同时管理人员还可以通过按键更改管理卡,增加,删除用户卡等操作,门禁刷卡控制刷卡距离约为5—12CM。
[关键词]:AT89C51,门禁系统,读卡模块,智能
目 录
引言7
1 课题论述7
1。1 课题研究背景8
1。2 门禁系统的发展8
1。3 门禁系统的可行性分析9
1。4 门禁系统的设计要求9
1。5 系统设计要求10
2 门禁系统的方案论证10
2.1 门禁系统的总体方案10
2。2 门禁系统的各个方案论证11
2。2。1 单片机控制芯片模块11
2。2.2 键盘控制模块11
3 门禁系统的硬件部分12
3。1 主控芯片部分12
3.2 键盘控制部分13
3。3 蜂鸣器控制部分14
3。3。1蜂鸣器原理图14
3.3。2 工作原理和功能说明14
3.4 关于AT89C5114
3。4。1 管脚说明15
3。5 T7122M-I工业读卡模块15
3。5。1 T7122M—I的概述16
3.5。2 应用电路简图17
3。5.3 数据输出格式和输出波形17
3.5。4 功能说明17
4 门禁系统的软、硬件调试17
4。1 设计流程图20
4.2 硬件调试20
4。3 软件调试20
4。4 软、硬件设计注意事项20
结束语20
参考文献 21
附录123
致谢28
1
引言:
门禁系统已成为发达国家和地区最主要的保安系统之一,和传统的保安设备不同,它变被动的监控和报警为主动的控制,起到更高的安全作用。因此,门禁系统在保安设备领域中独领风骚、据美国权威机构调查统计结果:美国门禁设备销售占整个公共安全行业市场销售额的57.8%,闭路电视监控及其它报警设备销售总额仅占39。2%,另外台湾安全器材市场年度调查报告中,门禁销售增长率为25%,高出其它保安设备增长率十几倍。 安装门禁管理系统是对安全和效率的投资,现在我们推荐采用的门禁系统具有先进的功能,并结合中国的实际情况,具有很好的扩展性,安全性和实用性,能满足复杂的要求和适应未来的发展。
1 课题论述
1。1课题研究背景:
日益扩大的贫富差距使得发展中国家的犯罪率不断上升,社会各界对安防产品的需求也日益高涨。作为安防产业中的门禁类产品逐步发展成为智能化项目中常见的子系统之一,并在政府、企业、工厂、石化、汽车、造船、金融、医院、部队等领域中得到了广泛的应用。相关的统计资料显示,随着智能建筑、厂矿企业、银行等领域的市场需求快速递增,中国的安防门禁系统产品及配套设备市场的产业链实现了年均20%一25%以上的增长;国内门禁品牌企业近千家,70%的门禁厂商分布在珠江三角洲一带,整个产业链市场规模超过180亿人民币;受南北发展差异的影响,在中高端市场上,国外门禁厂商在华北区占有市场份额超过60%以上,在华东区占有55%的市场份额,在华南区占35%的市场份额,在西南占25%的市场份额。
出入口门禁安全管理系统是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,光学,计算机技术,通讯技术,生物技术等诸多新技术。它是解决重要部门出入口实现安全防范管理的有效措施。适用各种机要部门,如银行、宾馆、机房、军械库、机要室、办公间,智能化小区,工厂等[1]。
在数字技术网络技术飞速发展的今天门禁技术得到了迅猛的发展。门禁系统早已超越了单纯的门道及钥匙管理,它已经逐渐发展成为一套完整的出入管理系统。它在工作环境安全、人事考勤管理等行政管理工作中发挥着巨大的作用.
在该系统的基础上增加相应的辅助设备可以进行电梯控制、车辆进出控制,物业消防监控、保安巡检管理、餐饮收费管理等,真正实现区域内一卡智能管理。
1。2门禁系统的发展
门禁控制系统自上世纪 80 年代开始产生,由于其技术的实用性很快得到迅速发展,此以前门禁安全管理一直采用机械钥匙方式,但随着经济和社会的日益发展,简单的门禁安全管理已远远不能满足社会的需要,一种简单的电子门禁产品开始出现.初期的门禁系统仅仅是独立的磁卡系统,可以用编程卡或手持编程器进行设置和管理,后来随着计算机的快速发展,门禁控制系统逐渐开始由计算机来管理和控制,门禁系统也由单个的门禁控制发展到网络的计算机控制,门禁的管理功能也日见增多,系统的安全性日益完善.
今天的线网络门禁系统已经广泛采用计算机中央控制管理,门禁控制器采用智能分布式处理技术,网络通信广泛采用 RS-485/422 总线、 TCP/IP 远程调制解调器等方式,门禁软件的管理功能也更加强大。
注意到随着门禁控制技术的成熟和发展,门禁系统得到空前广泛的应用和普及,作为安全领域 3 大部分之一(门禁、监控、报警)门禁系统并不是孤立的系统,需要不断地发展和提高,满足安全领域多样性的发展需要。
指纹虹膜掌型生物识别门禁系统系统安全性高,但成本高,由于拒识率和存储容量等应用瓶颈问题而没有得到广泛的市场认同。现在国际最流行最通用的还是非接触 IC 卡门禁系统。非接触 IC卡由于其较高的安全性,最好的便捷性和性价比成为门禁系统的主流。
1.3门禁系统的可行性分析
系统的实用性;门禁系统的功能应符合实际需要, 不能华而不实。如果片面追求系统的超前性, 势必造成投资过大,离实际需要偏离太远。因此, 系统的实用性是首先应遵循的第一原则。同时,系统的前端产品和系统软件均有良好的可学习性和可操作性。特别是可操作性(便捷性),使具备电脑初级操作水平的管理人员,通过简单的培训就能掌握系统的操作要领,达到能完成值班任务的操作水平。
系统的稳定性;由于门禁系统是一项不间断长期工作的系统,并且和我们的正常生活和工作息息相关,所以系统的稳定性显得尤为重要.要求该产品系统要有五年以上市场的成功应用经验,拥有相应的客户群和客户服务体系。
系统的安全性;门禁系统中的所有设备及配件在性能安全可靠运转的同时, 还应符合中国或国际有关的安全标准, 并可在非理想环境下有效工作。强大的实时监控功能和联动报警功能,充分保证使用者环境的安全性。
系统的可扩展性;门禁系统的技术不断向前发展, 用户需求也在发生变化, 因此门禁系统的设计与实施应考虑到将来可扩展的实际需要, 亦即: 可灵活增减或更新各个子系统, 满足不同时期的需要, 保持长时间领先地位, 成为智能建筑的典范。系统设计时,对需要实现的功能进行了合理配置,并且这种配置是可以改变的,甚至在工程完成后,这种配置的改变也是可能的和方便的。系统软件根据开发商符合不同历史时期市场的需求进行相应的升级和完善,并为相应的应用客户进行软件升级。同时,可以扩展为考勤系统、会议签到系统、巡逻管理系统,就餐管理系统等一卡通工程。
系统的易维护性;门禁系统在运行过程中的维护应尽量做到简单易行.系统的运转真正做到开电即可工作, 插上就能运行的程度。而且维护过程中无需使用过多专用的维护工具.从计算机的配置到系统的配置,前端设备的配置都充分仔细地考虑了系统可靠性。并实施了相应的认证。我们在做到系统故障率最低的同时,也考虑到即使因为意想不到的原因而发生问题时,保证数据的方便保存和快速恢复,并且保证紧急时能迅速地打开通道。整个系统的维护是在线式的,不会因为部分设备的维护,而停止所有设备的正常运作。
系统的先进性;在保证稳定性 实用性 和 便捷性的前提下,门禁产品应该具备一定的先进性,以保证在今后的数年内不会被淘汰,并且可以满足门禁使用中的要求和需求[2]。
1。4 门禁系统的设计要求
出入口门禁控制系统采取以感应卡来取代钥匙开门的方式.使用者用一张卡可以打开多把门锁,对门锁的开启也可以有一定的时间限制。如果卡丢失了,不必更换门锁,只需将其从控制主机中注销。对何人何时何地惊醒详细跟踪,以实现中心对出入口德24小时控制、监视、及管理。
系统将ID卡技术,计算机控制技术与电子门锁有机结合,用ID卡替代钥匙,配合计算机实现智能化门禁控制和管理,有效的解决了传统门锁的使用繁琐和无法信息记录等不足,利用数据控制区采集的数据实现数字化管理科为内部人力资源的有效管理等带来意想不到的效果[3]。
电子钥匙:授权后的ID卡即可当做电子钥匙,将此电子钥匙感应前一晃,控制器对该卡进行身份验证,验证合法后即控制电子门锁自动打开。
开门权限:按门设置:可以根据持卡人身份权限设定有效开门区域(控制器号码)。系统可没有最高权限卡,该卡可以打开系统辖区内所有电子门锁.
自动报警:非法使用卡或强行打开门锁等非正常情况下系统会将自动发出报警信号,系统将自动记录非常状况的时间,门号、状态等详细信息,确保门锁安全和时候查证。
1。5 系统设计要求
(1)读卡功能
(2)添加管理卡功能
(3)增加、删除用户卡功能
(4)更改管理卡
(5)清除所有用户卡
(6)键盘控制管理卡操作
(7)蜂鸣器实现刷卡、按键提示
2 门禁系统的方案论证
2.1 门禁系统的总体方案
本系统由51系列单片机AT89C51、按键、蜂鸣器、T7122M—I读卡等模块构成。实现了存储一张管理卡和多张用户卡的功能:同时管理人员还可以通过按键更改管理卡,增加用户卡,删除用户卡,清空所有用户卡等,因为门禁刷卡控制刷卡距离随着补偿电容的改变而改变(补偿电容大约300PF),所以最大的刷卡距离约为5—12CM:对于非管理卡或用户卡,本门禁控制器不与响应:每个按键控制器都有相应的提示音进行操作。正常使用时,用户持卡靠近读卡天线,门禁控制器读入卡号,并与存储在内部的卡号比较,如果有相同的卡号,说明此卡合法,门禁机响以长音,提示成功,如果读卡失败,而不响应[4]。总体系统结构图如图1。
读 卡 模 块
门 禁 控 制 器
蜂鸣器
接口电路
下位PC机
图1门禁系统总体结构框图
2.2 门禁系统的各个方案论证
2。2.1单片机控制芯片模块
方案一:PIC16C84单片机芯片。它是8位CMOS EEPROM 微控制器.它有高性能的类似于RISC的指令,共有35条单字节的指令,所有的指令除程序分支指令需要两个指令周期外,都只需要一个指令周期。程序指令的宽度为14位,在芯片内有1K *14的EEPROM程序存储器。
方案二:AT89C51芯片.它是一种低功耗、高性能CMOS位微控制器,具有8K在系统可编程FLASH存储器。易失性存储与工业80C51产品指令和引脚完全兼容.在单芯片上,拥有灵巧的8位CPU和在系统可编程FLASH,使得AT89C51为嵌入式控制应用系统提高灵活、超有效的解决方案[5]。
基于以上所述,根据系统需要及所学知识本论文选方案二.
2。2.2键盘控制模块
方案一:独立式键盘,如图2。它是利用单片机I/O口读取的点评高低来判断 是否有键按下,这种方式的缺点是占用的I/O口数较多.且对键盘处理的时候涉及到了一个重要的过程,那就是键盘的抖动问题。
图2独立式键盘
方案二:基于串并转换电路的键盘形式,如图3.7SLS164是串并转化芯片,它把SDA(P27)上的串行数据转化为8位的并行数据,S1/S2/S3/S4/S5/S6/S7/S8作为键盘扫描线,P26位键盘数据回送线。键盘扫面时,从S1~S8一次输出低电平,然后检测P11(回送线),如果P11(回送线)为高电平则表示无键闭合,如果P26(回送线)等于0,将S1~S8上的数据经过简单处理得到对应的键值[6]。
P25端口给出时钟信号,P26端口(回送线)检测是否有低电平,如果有低电平,检测是哪个按键按下,送给单片机进行相应处理,采用基于串并转换电路的键盘形式,不仅节约单片机的I/O端口的使用,而且具有去抖动的功能.
图3 基于串并转换电路的键盘形式
方案三:行扫描的键盘形式,如图4。列线通过电阻接正电源,并将行线所接的单片机I/O口作为输出端,而列线所接的I/O口作为输出.当键盘没有按下时,则输入线就会被拉低,这样通过读入输入线的状态就可以得知是否有键按下了.
图4行扫描的键盘形式
基于以上所述,根据系统需要本次设计选择方案二.
3 门禁系统的硬件部分
3。1 主控芯片部分
1、原理图
以AT89C51处理器为核心控制外围设备,当T7122M读卡模块有检测到卡,判断是否管理卡或者用户卡,如果是管理卡,通过按键1,键2,键3,键4,蜂鸣器发出不同数量的响声,做出相应的处理,如果是用户卡,蜂鸣器响一声,门开。如果不是系统所识别的卡,单片机不做任何的回应[7]。
图5 主控部分原理图
3。2 键盘控制部分
采取串并转化电路的键盘形式
(1)原理图
图6串并转换电路的键盘形式
(2)工作原理
7SLS164是串并转化芯片,它把SDA(P27)上的串行数据转化为8位的并行数据,S1/S2/S3/S4/S5/S6/S7/S8作为键盘扫描线,P26为键盘数据回送线。
键盘扫描时,从S1~S8一次输出低电平,然后检测P26(回送线),如果P26(回送线)为高电平则表示无键闭合,如果P26(回送线)等于0,将SI~S8上的数据经过简单处理得到对应的键值[8].
(3)功能说明
KEY1:增加用户卡
KEY2:删除用户卡
KEY3:删除管理卡
KEY4:清除所有用户卡
3。3 蜂鸣器控制部分
3。3.1、蜂鸣器原理图如下所示:
图7 蜂鸣器原理图
3。3。2、工作原理和功能说明
工作原理:单片机通过P37来控制蜂鸣器的工作与关闭.
当P3.7=1时,PNP三极管关闭,蜂鸣器停止工作。
当P3.7=0时,PNP三极管导通,蜂鸣器开始工作.
从而单片机值需要P3.7输出0或1来控制鉴别蜂鸣器即可。
功能说明:(1)刷卡时蜂鸣器响一声,说明读到用户卡.
(2)刷卡时蜂鸣器响两声,说明读到管理卡。
(3)相应的按键时给予相应的提示音。
3.4 关于AT89C51
AT89C51是一种带4K字节FLASH存储器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机.AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本.AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[9]。
3。4。1、 管脚说明
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高.
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流.P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收. P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入.并因此作为输入时,P2口的管脚被外部拉低,将输出电流.这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号[10]. P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流.当P3口写入“1"后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3口管脚 备选功能P3。0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3。3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3。7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号. RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H—FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出[11].
3。5 T7122M—I工业级读卡模块
3.5.1、T7122M-I的概述
T7122M是非接触式射频ID卡专用读卡模块,采用先进的射频接收线路,嵌入Microchip微控制器,结合优秀的解码算法,对EM4100兼容式ID码接收、校验、输出。具有接收灵敏度高、工作电流小、单直流电源供电、高性价比等特点,适用于门禁、考勤、收费、防盗、巡更等各种射频识别应用领域。
生产中对于关键元器件如射频IC、振荡回路的电容、天线线圈等100%经过仪器测试,保证元器件的参数符合要求。天线线圈设计并非单一考虑读卡距离,而是综合考虑以下各种因素:当振荡回路谐振频率变化时,读卡距离受影响尽可能小;天线线圈中流过的电流不能太大,避免振荡电流元件超负荷运行;等待。总之,本读卡模块首先保证可靠性,再尽可能地增大读卡距离。经测试,本模块读同一张卡5万次不出错。
实际应用中,读卡线圈几乎无法避免外围金属的影响(如金属外壳、PCB板等影响),从而导致线圈电感量发生河大的变化,破坏电容和电感的谐振频率。在T7122M采用自动调整频率的方法来尽量接近谐振的频率,但是频改变仍可导致读卡距离变短。因此,在T7122M—I中不再采用自动频率调整电路,而采用外加补偿电容来补偿线圈电感量减小。在不同的机型中,因外壳、线圈窗口、周围的电路板的材料、位置、形状各不相同,所以对天线线圈的影响也不一样[12]。
3.5.2、应用电路简图
图8 同步串行输出应用简图
3。5。3、数据输出格式和输出波形
共输出48bits,即6个字节.第一字节为ID卡识别码,第二至第五字节为卡号,最后一个字节为前五个字节的校验。校验和运算变量类型为BYTE类型,运算过程进位被丢弃。低位先输出。输出波特率均为9600Bits/S。
图9 同步串行输出波形
3。5。4、功能说明
(1)通过读卡天线,刷卡时读取ID卡卡号。
(2)通过SO脚把卡号传到单片机芯片管教上.
(3)通过CP脚传送低电平说明有卡刷到。
4 门禁系统的软、硬件设计
4。1设计流程图
程序循环中主要工作为判断是否有卡刷,若有刷卡则判断是什么卡,然后进行相应的处理。单机门禁系统属于智能弱电系统中的一种安防系统。它作为一种新型现代化安全管理系统,集自动识别技术和现代安全管理措施为一体,通过在建筑物内的主要出入口、电梯厅、设备控制中心机房、贵重物品的库房等重要部门的通道口安装检测机构与执行机构,由控制机构在中央控制室中完成对各通道口的通行对象及通行时间等进行实时控制或设定程序控制,从而实现对出入口的控制[13]。
门禁系统的总流程图10:
开 始
定义堆栈区
AT89C51 定时器0、中断初始化
是否刷卡
是否有管理卡
添加该卡为管理卡,蜂鸣器响两声
蜂鸣器响三下
管理卡功能子程序
是否是用户
蜂鸣器响一声
图10 门禁系统的总流程图
管理卡功能子程序流程图如图11
是否有卡刷
蜂鸣器响一声,定时器T0启动
是否有按键
蜂鸣器响一声,添加用户卡
蜂鸣器响二声,删除用户卡
蜂鸣器响三声,删除管理卡
蜂鸣器响四声,清楚所有用户
定时5秒是否到
返 回
键1
键2
键3
键4
图11 管理卡功能子程序流程图
4。2系统的硬件调试
完成了硬件的设计、制作和软件编程之后,要是系统能够按设计正常运行,必须进行硬件调试和软件调试。
硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障.
(1)脱机检查。按照电路原理图用万用表逐步检测电路板中所有器件的各引脚,尤其是电源的链接是否正确;检查各开关按键是否能正常工作;为了保护芯片,应先对各IC座(尤其是电源端)电位进行检查,确定其无误后再插入芯片检查。
(2)联机调试。暂时拔掉AT89C51芯片,将仿真器插头插入AT89C51的芯片插座进行调试,检验键盘电路是否满足设计要求.可以通过一些简单的测试软件来查看接口工作是否正常。例如,我们可以设计一个能用按键控制蜂鸣器声响检测键盘电路的好坏.如果运行测试结果与预期不符,很容易根据故障现象判断故障原因并采取针对性措施排除故障[14].
4.3 软件调试
软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。
程序的调试应一个模块一个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,接口电路的控制是否正常等;最后初步将各子程序的现场保护与恢复.
调试的基本步骤如下:
(1)编写蜂鸣器程序,调试蜂鸣器是否会响。
(2)编写简单程序调试刷卡时是读卡模块是否有读入。
(3)编写键盘控制程序,调试是否有键盘按下及其按键值。
(4)编写添加、删除用户卡程序,调试是否能实现。
(5)编写更改管理卡,清除所有用户卡程序,调试是否能实现。
(6)总体调试,看能否实现存储一张管理卡,多张用户卡.通过按键能否实现添加、删除用户卡,更改管理卡,清除所有用户卡等设计要求。
4。4 软、硬件设计注意事项
(1)读卡模块T7122M-I外部电源接触不良或者严重的电磁干扰,则有可能偶然使读卡模块内部软件跑飞。
(2)天线周围如果有金属存在,则工作频率将受影响,读卡距离也受影响,严重时读卡反应迟钝,甚至不能读卡。避免的方法是所有的金属材料尽量离开天线线圈,特别是天线前面不能有金属封板。金属封板会屏蔽电磁波,致使打卡完全失效。天线后面如果有金属封板,则应该离开天线线圈至少3厘米以上。
(3)读卡模块与模板注意是否有共到。
(4)如果使用的电源性能不良,将引起电压不稳,纹波太大,对读卡距离产生影响。
(5)外界的电磁杂波也会对读卡产生干扰[15].
结论
本论文关于门禁控制器用于鉴别刷卡人员,管理人员出入.功能可实现存储一张管理卡、多张用户卡.AT89C51控制外围设备,T7122M工业级读卡模块识别管理卡或者用户卡,单片机给出信号,外围设备做出响应,通过按键开关可以进行各种卡管理操作,如更改管理卡、增加单个用户卡、删除单个用户卡,清空所有用户卡等。键盘控制部分,采用采取串并转化电路的键盘形式,这样的键盘形式具有去抖动,节约I/O端口资源的优势。
附录
系统程序
#include〈reg51。h>
#include〈intrins。h〉
sbit cp=p1^0;
sbit sck=p1^1;
sbit so=p1^2;
sbit beep=p3^7;
sbit KD_KEY=p2^6;
sbit KEY_SDA=p2^7;
sbit KEY_CLK=p2^5;
unsigned char chcardno[10][5]={0};
unsigned char cardok;
unsigned char j=0;
unsigned char count;
unsigned char a;
unsigned char cardno[5]={0};
unsigned char key_value;
unsigned char b=1;
//—----————-———-毫秒延时子程序--——--—————--—
Void delay2(unsigned char ms)
{ unsigned char i
While(ms——)
{
For(i=0;i<120;i++);
}
}
//--——-—————-—--蜂鸣器——-———-—--—-—-
unsigned char feid(void)
{
Beep=0;
Led5=0;
Delay2(250);
Beep=1;
Led5=1;
Delay2(250);
}
Void send(unsigned char a)
//判断是不是有键按下
{
unsigned char I;
for(i=0;i<8;i++)
{
If(_crol_(a,i)&8x80)
KEY_SDA=0;
KEY_CLK=0;
KEY_CLK=1;
}
}
unsigned char key(void)
// 判断是第几键按下
{
unsigned char buffer,display_bit,I;
buffer=0xff;//赋初值为0xff
delay2(250);//延时去抖动
display_bit=0xfe;//扫描键盘
for(i=0;i〈8;i++)
{
send(display_bit);
if(!KD_KEY)//是此键按下吗?
{
buffer=display_bit;//是,则保存其键值
return(i);
break;//退出
}
Display_bit=_crol_(display_bit,1);
//检测下一键
}
}
//———---—-—-—同步串行口接收一字节—-—--—-—
Unsigned char rxlbyte()
{
char i;
char rxdata;
for(i=9;-—i;)
{
Rxdata〈〈=1;
While(sck==0)//等待始终上升沿
Continue;
If(so==1) //读数据
++rxdata;
While(sck==1)
Continue;
}
Return rxdata;
}
//—--—-同步串行口接收-—-
unsigned char rx(void)
{
char i;
if(cp==1)//检测cp脚是否出现低电平
return;
EA=0; //屏蔽中断
for(i=25;-—i;) //保证cp的宽度大于时钟宽度
{
if (sck==0)
{EA=1;
Return;
}
}
While(sck==1) //等待时钟线出现低电平
Continue;
cardno[0]=rxlbyte(); //读第一个字节
cardno[1]=rxlbyte(); //读第二个字节
cardno[2]=rxlbyte();
cardno[3]=rxlbyte();
cardno[4]=rxlbyte();
cardno[5]=rxlbyte(); //读第六个字节
while(cp==0)
continue;
EA=1;
// 读卡结束,校验卡号
i=cardno[0]+cardno[1]+ cardno[2]+ cardno[3]+ cardno[4];
if(i= cardno[5])
{
Cardok=1;
}
}
//———--——-——--—管理卡程序—-—-———-—-———
Unsigned char zjz (void)
{char i=0;
While(1)
{
rx()
PO=0XFF;
if(cardok==1)//判断是否有刷卡
{
cardok=0;
if(chcardno[0][5];//设计为管理卡
{
feid();
feid();
chcardno[0][5]=cardno[5];//设计为管理卡
}
else
{
if(chardno[0][5]==cardno[5])//判断是否是管理卡
{
feid();
feid();
feid();
delay2(250);
while(1)
{
rx();
if(card==1)//判断是否有刷卡
{
feid();
cardok=0;
TR0=1;//起动定时器0
Count=0;
Break;
}
}
}
else
{
for(a=1;a〈=b;a++)
(
If(chcardno[a][5]==cardno[5])
//判断是否是用户
{
feid();
break;
}
}
}
}
}
}
}
//-————-————-—--——定时器子程序-—--——-—-——-—
Void timerl(void) interrupt 3
{
TH0=(65536—50000)/256;
TL0=(65526—50000)%256;
Count++;
key_vlue=key();
switch(key_value)
{
case 0: //按键1
feid();
chcardno[b][5]=card[5];//添加用户卡
cardno[5]=0;
b++;
break;
case 1: // 按键2
feid();
feid();
for(a=1,a<=b;a++)
{
If(chcardno[0][5]==cardno[5])
{
Chcardno[0][5]=chcard[b][5];
//删除用户卡
}
}
Break;
Case2: //按键3
feid();
feid();
feid();
feid(
展开阅读全文