智能卡门禁系统设计
1 设计要求
智能卡的应用并不是简单的读写卡操作,而是一个综合性的工程项目。它不仅包括卡和读写模块的选择,还涉及到读写模块的控制、数据的传输、数据的处理和存储;既需要有硬件应用的知识、也还必须具有软件方面的能力。下面我们以一个完整的应用系统为例,详细地描述了各组成部分的设计要求、完成的功能及具体的实现方法。
智能卡门禁系统设计任务:
1. 智能卡门禁系统——门禁机模块的设计 (1) 非接触式IC卡读写头部分
主要内容:读头部分采用非接触智能卡读写模块,由读卡器读入数据并加以保存,智能卡按常规要具有加密和数据分区存储功能,读写头的读写距离在5-10厘米左右,必须具有掉电保护、精确时间记时和显示,3K—5K的临时数据存储。 (2) 门禁机主控模块 主要内容:智能门禁机主控模块是智能门禁机系统的核心部分,主要包括MCU、键盘、显示、电子时钟、外部数据存储器及掉电保护和看门狗电路,有精确时间记时和显示。
2. 智能卡门禁系统——系统管理模块的设计 (1) 系统管理主控模块设计 主要内容:设计门禁上层软件的主控模块,其主要实现的功能是最高权限卡对管理员和一般用户发卡,管理员对一般用户发卡。能对丢失的卡进行挂失,对找回的卡进行解挂,同时还要具备查找功能。
(2) 系统管理的数据库管理软件设计
主要内容:运用高级语言编程,制作数据库管理软件。采集下位机的数据并保存,然后管理采集到的数据,具有采集、数据更新、查询统计和报表的打印功能 3. 智能卡门禁系统——数据传输模块的设计
主要内容:完成中央控制电脑与门禁读写器之间的数据传输协议的设计,能实现主、从机的双向数据传输及一对一、一对多的数据传输。
2 总体方案
根据设计要求,整个智能卡门禁系统分为三大部分:其一是读写器部分,包括MCU、复位电路、时钟电路、显示电路、键盘、数据存储等主控模块及非接触IC卡读写模块和电锁驱动部分;其二是中央控制电脑的软件管理系统模块;其三是中央控制电脑与读写器之间的数据传输模块。其总体方案见图5.1。
图1 非接触式IC卡门禁系统框图
3 非接触式IC卡门禁机的设计
系统采用Philips公司的非接触智能IC卡Mifare 1卡,以M1卡作为用户卡,以用户卡的序列号SN(全球唯一)为依据控制门的开启。因为它是一个高频卡(工作频率为13.5MHZ),有较强的抗干扰能力、读写距离远(5MM—10MM)。
首先,在发卡系统(中央控制PC机)里把用户的卡号及个人信息输入系统数据库,并将该卡号作为合法卡号下载给所有门禁机。当有一张M1卡在门禁机的有效工作范围内时,系统会自动向卡发出命令,卡接收到命令后向门禁机反馈其SN, 门禁机判断收到的卡号是否合法,合法则驱动电磁门锁开门,并实时上传其开门记录;如果是非法卡(未经授权或已挂失的卡)则拒绝开门并上传报警信息。只有最高授权者(掌握授权密码)才可以发管理员卡,管理员必须用管理员卡方可登录发卡系统进行发卡/下传合法卡号、挂失、解挂、下传黑名单等操作。
附录二 门禁机硬件原理图
由于采用了Philips公司的非接触式Mifare 1卡,所以卡的读写模块也采用了以Philips公司最新推出的Mifare读写芯片MF RC500为核心开发的ZLG500A读写模块。
门禁机模块的硬件原理图见附录二。
通过AT89C52对ZLG500A的控制达到对卡的读写。系统结构简单,成本较低且具有信息量大和安全保密性好等特点。外围配有RS232转RS485接口能与PC机互连成网络,可以完成读卡、显示卡号和出入时间、身份识别、开锁以及保存和上传出入记录、下载黑名单、设置开门权限等功能。
门禁机模块的主控软件主要完成门禁机模块的初始化、卡的识别、开启门锁及保存有关数据和数据的传输等五大功能。其总体工作流程如图5.2所示:
初始化装载权限显示日历寻卡寻卡执行开门比较权限开放键盘设置时间设置权限合法吗?执行开门执行报警计录满否?取时间+卡号+BCC码发送数据写入24C64中数据指针加12计录数加1发送记录数清空24C64数据指针=0计录数=0
图3 非接触式IC卡门禁机总体工作流程
在完成整个门禁机模块的设计和制作前, 首先必须明确非接触式IC卡读写模块的功能特性、接口规范和控制方式。本系统选用MIFARE 1卡作为门禁钥匙,相应地,选用广州周立功公司的ZLG500A读写模块作为卡与门禁机交换数据的接口模块。
1. ZLG500A读写模块特性
1)功能特性
图5.3为ZLG500A非接触式IC卡读写模块,该模块采用最新PHILIPS高集成ISO14443读卡芯片—MF RC500,能读写RC500内EEPROM,提供三线SPI接口,并具有控制线输出口,能与任何MCU接口。此外,该模块四层电路板设计,双面表贴,EMC性能优良;并自带无源蜂鸣器信号输出,能用软件控制输出频率及持续时间。
J1 J2
图4 ZLG500A模块实物图
如图5.3所示J1 为与天线的接口J2 为与MCU 的接口,J1、J2的管脚排列和功能说明见表5.1:
表5.1 ZLG500A非接触式IC卡读写模块管脚说明(一)
管脚 J1-1 J1-2 J1-3 J1-4 J1-5 J1-6 管脚 J2-1 J2-2 J2-3 J2-4 J2-5 J2-6 J2-7 J2-8 符号 SCLK SDATA SS VCC RST GND CTRL BZ 类型 输入 双向 双向 PWR 复位 PWR 输出 输出 符号 GND TX1 GND TX2 GND RX 地 天线发送1 地 天线发送2 地 天线接收 描述 三线SPI 接口时钟线总是由外部MCU 产生 数据线可双向传输 传输启动线接MCU 外部中断 电源正端 内部MCU 复位端高电平有效 电源负端 控制线输出 蜂鸣器信号输出 描述 表5.1 ZLG500A非接触式IC卡读写模块管脚说明(二) ZLG500 模块可方便地与任何MCU 进行接口,如图5.4所示为ZLG500与MCS-51
P1.0P1.1SCLKSDATASSRSTCTRLBZMCS51P1.2P3.3ZLG500单片机
图5.4 ZLG500与MCS-51单片机接口图
的典型接口。SCLK、SDATA、SS为ZLG500A与MCU相联接的控制线,分别为片选SS、时钟线SCLK 和数据线SDATA。主控制器的MCU 和读卡模块内的MCU 通过此三线相连,三根线上的实际电平是双方口线状态逻辑线与的结果。
2) ZLG500三线串行读卡模块接口规范 (1) 接口原理
接口空闲时主机SS=1 SCLK=0 SDATA=0 从机SS=1 SCLK=1 SDATA=0 。其中SS和DATA是双向的而时钟线SCLK是单向的,即时钟只能由主控制器产生,该信号必须严格遵守时序规范,否则将出现通信错误读卡模块必须释放该线。
SS为数据发送使能,若一方有数据要发送给另一方,则该方控制SS线为低并在发送结束后将该线置高,接收数据方不得控制该线,双方必须遵守通信协议不得同时控制该线。
SDATA为数据线,由数据发送端控制数据,接收端必须释放该线。该线在一次传输开始时还同时作为数据接收端的响应信号。
(2)时序图
如图5.5所示,无论数据传输的方向如何,SPI 线上信号的波形总是如下;
Start from senderSSt1SCLKtHtLt2t3Stop from senderSDATAAck from receiverSender and receiver图5 ZLG500时序图
由图中可以看出,在SS为低的情况时,时钟和数据线上的信号才有效。且在SCLK为低时SDATA变化,在SCLK为高时SDATA应保持稳定。
以上传输中从数据发送器请求开始至数据接收器响应的时间是不确定的,取决接收器内的MCU 是否忙,有必要设置一个看门狗定时器对数据接收器的响应进行监视,一旦接收器响应,则MCU 必须根据数据传输的方向,严格控制以下几个时间,以确保数据传输无误。
t1—数据接收器响应至MCU 产生第一个SCLK 上升沿的时间。 t2—两个字节传输之间SCLK 低电平的持续时间。
t3—传输最后一个字节的最后一位的SCLK 信号的上升沿至SS 上升沿的时间。 tH—SCLK 信号的高电平持续时间。
门禁系统设计单片机AT89C52



