第5章智能卡应用系统第5章智能卡应用系统5.1课程设计——智能卡门禁系统设计5.2课程训练——一卡通系统的综合应用5.3典型智能卡应用系统5.4智能卡应用系统开发的一般方法思考题第5章智能卡应用系统5.1课程设计——智能卡门禁系统设计5.1.1设计要求1.智能卡门禁系统——门禁机模块的设计1)非接触式IC卡读写头部分主要内容:读写头部分采用非接触式IC卡读写模块,由读卡器读入数据并加以保存。智能卡按常规要具有加密和数据分区存储功能,读写头的读写距离在5~10cm左右,必须具有掉电保护、精确时间计时和显示及3~5KB的临时数据存储功能。第5章智能卡应用系统2)门禁机主控模块主要内容:智能门禁机主控模块是智能门禁机系统的核心部分,主要包括MCU、键盘、显示、电子时钟、外部数据存储器及掉电保护和看门狗电路,有精确时间计时和显示。第5章智能卡应用系统2.智能卡门禁系统——系统管理模块的设计1)系统管理主控模块的设计主要内容:设计门禁上层软件的主控模块,其主要实现的功能是最高权限卡对管理员和一般用户发卡,管理员对一般用户发卡。它要能对丢失的卡进行挂失,对找回的卡进行解挂,同时还要具备查找功能。2)系统管理的数据库管理软件的设计主要内容:运用高级语言编程,制作数据库管理软件。它采集下位机的数据并保存,然后管理采集到的数据,具有采集、数据更新、查询统计和打印报表功能。第5章智能卡应用系统3.智能卡门禁系统——数据传输模块的设计主要内容:完成中央控制电脑与门禁读写器之间的数据传输协议的设计,能实现主、从机的双向数据传输及一对一、一对多的数据传输。第5章智能卡应用系统5.1.2总体方案根据设计要求,整个智能卡门禁系统分为三大部分:其一是读写器部分,包括MCU、复位电路、时钟电路、显示电路、键盘、数据存储等主控模块及非接触式IC卡读写模块和电锁驱动部分;其二是中央控制电脑的软件管理系统模块;其三是中央控制电脑与读写器之间的数据传输模块。其总体方案见图5.1。第5章智能卡应用系统复位电路时钟电路(DS1302)数据存储电路主控MCU单片机芯片(89C52)传输模块RS485MCM500模块天线电锁出门按钮键盘液晶显示射频卡中央控制电脑图5.1非接触式IC卡门禁系统框图第5章智能卡应用系统5.1.3非接触式IC卡门禁机的设计系统采用Philips公司的非接触式MIFARE1(M1)卡,以M1卡作为用户卡,以用户卡的序列号SN(全球惟一)为依据控制门的开启。因为它是一个高频卡(工作频率为13.5MHz),有较强的抗干扰能力,读写距离远(5~10cm)。首先,在发卡系统(中央控制电脑)里把用户的卡号及个人信息输入系统数据库,并将该卡号作为合法卡号下载给所有门禁机。当有一张M1卡在门禁机的有效工作范围内时,系统会自动向卡发出命令,卡接收到命令后向门禁机反馈其SN,门禁机判断收到的卡号是否合法。如果合法,则驱动电磁门锁开门并实时上传其开门记录;如果是非法卡(未经授权或已挂失的卡),则拒绝开门并上传报警信息。只有最高授权者(掌握授权密码)才可以发管理员卡,管理员必须用管理员卡方可登录发卡系统进行发卡/下传合法卡号、挂失、解挂、下传黑名单等操作。第5章智能卡应用系统由于采用了Philips公司的非接触式MIFARE1卡,因此卡的读写模块也采用了以Philips公司最新推出的MIFARE读写芯片MFRC500为核心开发的ZLG500A读写模块。门禁机模块的硬件原理图见附录B。此系统通过AT89C52对ZLG500A的控制达到对卡的读写。系统结构简单,成本较低且具有信息量大和安全保密性好等特点。外围配有RS232转RS485接口,能与PC机互连成网络,可以完成读卡、显示卡号和出入时间、身份识别、开锁以及保存和上传出入记录、下载黑名单、设置开门权限等功能。第5章智能卡应用系统NY装载权限初始化显示日历寻卡管理员卡?比较权限合法吗?NY执行报警NY执行开门记录满否?发送数据发送记录数清空24C64数据指针=0记录数=0执行开门开放键盘设置时间设置权限取时间+卡号+BCC码写入24C64中数据指针加12记录数加1图5.2非接触式IC卡门禁机总体工作流程第5章智能卡应用系统1.ZLG500A读写模块特性1)功能特性图5.3为ZLG500A非接触式IC卡读写模块,该模块采用最新Philips的高集成ISO14443读卡芯片——MFRC500,能读写RC500内EEPROM,提供三线SPI接口,并具有控制线输出口,能与任何MCU接口。此外,该模块采用四层电路板设计,双面表贴,EMC性能优良;并自带无源蜂鸣器信号输出,能用软件控制输出频率及持续时间。第5章智能卡应用系统图5.3ZLG500A模块实物图J1J2第5章智能卡应用系统表5.1ZLG500A非接触式IC卡读写模块引脚说明引脚符号描述J1-1GND地线J1-2TX1天线发送1J1-3GND地线J1-4TX2天线发送2J1-5GND地线J1-6RX天线接收(a)J1引脚说明第5章智能卡应用系统(b)J2引脚说明引脚符号类型描述J2-1SCLK输入三线SPI接口时钟线总是由外部MCU产生J2-2SDATA双向数据线可双向传输J2-3SS双向传输启动线接MCU外部中断J2-4VCCPWR电源正端J2-5RST复位内部MCU复位端高电平有效J2-6GNDPWR电源负端J2-7CTRL输出控制线输出J2-8BZ输出蜂鸣器信号输出第5章智能卡应用系统ZLG500A模块可方便地与任何MCU进行接口,如图5.4所示为ZLG500A与MCS-51单片机的典型接口。SCLK、SDATA、SS为ZLG500A与MCU相连接的控制线,分别为时钟线SCLK、数据线SDATA和片选SS。第5章智能卡应用系统MCS-51P1.0P1.1P1.2P3.3ZLG500ASCLKSDATASSRSTCTRLBZ图5.4ZLG500A与MCS-51单片机的接口图第5章智能卡应用系统2) ZLG500A三线串行读卡模块接口规范(1)接口原理:接口空闲时主机SS=1,SCLK=0,SDATA=0;从机SS=1,SCLK=1,SDATA=0。其中SS和DATA是双向的,而时钟线SCLK是单向的。SCLK只能由主控制器产生,该信号必须严格遵守时序规范,否则将出现通信错误,读卡模块必须释放该线。SS为数据发送使能,若一方有数据要发送给另一方,则该方控制SS线为低并在发送结束后将该线置高,接收数据方不得控制该线,双方必须遵守通信协议,不得同时控制该线。SDATA为数据线,由数据发送端控制数据,接收端必须释放该线。该线在一次传输开始时还同时作为数据接收端的响应信号。第5章智能卡应用系统(2)时序图:SSStartfromsenderSCLKAckfromreceiverSDATASenderandreceiverStopfromsendert1tLtHt2t3图5.5ZLG500A的时序图第5章智能卡应用系统由图中可以看出:在SS为低的情况时,时钟和数据线上的信号才有效;且在SCLK为低时SDATA变化,在SCLK为高时SDATA应保持稳定。以上传输中,从数据发送器请求开始至数据接收器响应的时间是不确定的,这取决于接收器内的MCU是否忙。有必要设置一个看门狗定时器对数据接收器的响应进行监视,一旦接收器响应,则MCU必须根据数据传输的方向,严格控制以下几个时间,以确保数据传输无误:第5章智能卡应用系统t1——数据接收器响应至MCU产生第一个SCLK上升沿的时间。t2——两个字节传输之间SCLK低电平的持续时间。t3——传输最后一个字节的最后一位的SCLK信号的上升沿至SS上升沿的时间。tH——SCLK信号的高电平持续时间。tL——SCLK信号的低电平持续时间。在数据传输的方向不同时,对时间t1~t3、tH和tL都有各自不同的要求。第5章智能卡应用系统(3)通信协议:MCU与ZLG500A的通信必须先由MCU发送命令和数据给ZLG500A开始,ZLG500A执行命令完毕后,将命令执行的状态和响应数据发回MCU。开始通信前,收发双方必须处于空闲状态。首先由MCU发出SS下降沿信号,然后等待ZLG500A在SDATA线上的响应。若在50ms内未检测到此信号,则退出本次传输;若正确响应,则MCU可将命令和数据发送出去。然后MCU等待ZLG500A发回的状态和响应数据,即等待SS线上的下降沿信号。若在50ms内未检测到此信号,则退出本次传输;若正确检测到SS信号,则可以接收状态和数据。第5章智能卡应用系统ZLG500A初始化的子程序如下:SCLKBITP1.0SDATABITP1.1SSBITP1.2RSTBITP3.3ZLG500A:SETBRST;ZLG500A内部复位LCALLDELAY_50msCLRRSTLCALLDELAY_50msSETBSS;处于空闲状态CLRSDATA第5章智能卡应用系统CLRSCLKMOV58H,#11HMOV59H,#11HMOV5AH,#11HMOV5BH,#11HLCALLCONFIG;配置LCALLREQUEST;发送请求LCALLANTICOLL;防碰撞;***********IFHAVECARD***********MOVA,52HCJNEA,#04H,SA123;A=04表示没有卡存在LJMPSA234第5章智能卡应用系统SA123:RETSA234:LCALLREAD_BLOCK;从存储器中读取数据LCALLDELAY_100msMOVR2,#20MOVR0,#58HMOVR1,#80HLCALLCOMPARE;进行卡号的比较和验证REL13:SETBFLAGLCALLREL123JBFLAG,REL13RET第5章智能卡应用系统上述程序中,CONFIG子程序为ZLG500A的复位和配置子程序,是由MCU向ZLG500A发出的不带数据的命令程序;REQUEST子程序是MCU向ZLG500A发出的带一个字节数据的命令程序,主要是检查在有效范围内是否有卡存在;ANTICOLL子程序是防冲突操作,必须在执行了REQUEST命令后立即执行。MCU与ZLG500A之间的通信一般遵循如下的数据格式。MCU向ZLG500A发出的命令模式的格式如下:SeqNrCommandLenData[0…N]BCC第5章智能卡应用系统INFO[0]INFO[n]其中:SeqNr为1Byte,表示数据交换包的序号;Command为1Byte,表示命令字符;Len为1Byte,表示数据的长度;Data[0…N]为LenByte,表示数据字节;BCC为1Byte,表示一个字节的BCC校验。第5章智能卡应用系统SeqNrstatusLenData[0…N]BCCINFO[0]INFO[n]其中:SeqNr为1Byte,表示数据交换包的序号;Status为1Byte,表示状态字符;Len为1Byte,表示数据的长度;Data[0…N]为LenByte,表示数据字节;BCC为1Byte,表示一个字节的BCC校验。按照上述数据格式传输编制的CONFIG、REQUEST和ANTICOLL子程序的清单如下:;**************CONFIG***********************第5章智能卡应用系统CONFIG:MOV60H,#00H;数据交换包的序号MOV61H,#52H;配置命令字符代码MOV62H,#00H;数据的长度为0LCALLBCC_SUM0;BCC校验子程序MOV63H,A;BCC_SUMMOVA,#00HMOVR2,#04HMOVR0,#60H;发送首地址LCALLSPI_SENDMOVR0,#30H;接收起始地址LCALLSPI_RCVRET;***************REQUEST***********************第5章智能卡应用系统REQUEST:MOV60H,#00H;数据交换包的序号MOV61H,#41H;请求命令字符代码MOV62H,#01H;数据的长度为1MOV63H,#01H;请求模式的数据mode=