基于单片机的射频卡读卡器设计
扫描二维码
随时随地手机看文章
摘要:射频卡成功地将无线射频识别技术与IC卡技术结合起来,有效解决了无源和免接触难题。基于单片机和射频识别技术,并以门禁系统为应用实例,给出了一种新型射频卡读卡器的设计方案。该方案以单片机为主控器件,依照卡机之间的通信协议控制读/写模块,实现对射频卡的读/写、控制等完备操作。结合硬件原理图和软件流程图,给出了射频卡读卡器的设计思想和实现过程。实际使用表明,该设计方案可行,读写器工作稳定,操作方便,抗干扰能力强。
关键词:射频卡;单片机;门禁系统;读卡器
射频卡是继磁卡之后的新一代数据卡,它利用双向无线电射频技术与读写设备进行数据交换,具有智能读写和加密通信的功能,与传统的接触IC卡、磁卡相比,射频卡具有非接触、无磨损、操作方便,读写频率高,使用寿命长,安全防冲突等优点。本文以门禁系统为应用实例,设计了一种以TI公司的疏耦合IC卡Tag-itHF-I为识别对象,以8031单片机为微控制器,以TI公司的S6700读/写模块为核心部件的射频卡读卡器。它能完成对Tag-it HF-I卡的所有读/写及控制工作,并且还可以方便地嵌入如考勤、收费等其他多种自动识别系统,成为系统的一部分。
1 工作原理
射频卡与读写器之间通过耦合元件实现射频信号的空间耦合,在耦合通道内,根据时序关系实现能量的传递和数据的交换,然后由后台计算机对读卡器读取的数据进行存储以及管理分析等操作。具体实现上,射频卡内含有天线、ASIC、集成LC谐振电路。谐振电路的频率与读卡器发射频率相同为13.56 MHz,工作时的能量由读卡器天线发射无线电载波信号耦合到卡片内的天线产生。微控制器8031单片机依照ISO/
IEC15693-3通信协议,编写控制程序,以完成对S6700读/写模块的控制。S6700读/写模块实际上是单片机与射频卡之间进行信息交换的媒介,射频卡上的数据读写均需通过S6700读/写模块来传递。传递不同类型的指令给S6700读/写模块,就能实现对S6700读/写模块的控制,进而完成对射频卡的读/写、控制等操作。
2 系统组成
射频卡读卡器的硬件电路主要包括以下几个部分:单片机系统、射频卡读/写模块、通信电路、射频卡、读写器天线电路和各种指示信号电路。由于文中射频卡读写器是以门禁系统为应用平台,考虑到门禁系统需要用到一些手动操作来完成用户与机器的简单沟通,所以设计中增加了键盘电路和LCD液晶显示电路。其原理框图如图1所示。实际应用中可以依据不同的自动识别系统根据需要增删相应的电路。
2.1 读/写模块S6700
本文使用的S6700读/写模块是射频卡实现无线通信的核心模块和关键接口芯片,支持13.56 MHz的多种射频通信协议,具备闲置、掉电、安全功率三种供电模式,电源电压为3~5.5 V,发送电流为80~120 mA,射频调制系数为10%或100%可选,通过三线制串行接口总线(Din,Dout,Sclock)与单片机通信。具体工作时,通信端口Sclock口、Din口、Dout口分别与单片机P2口的低3位P2.O,P2.1,P2.2口相连。在Sclock同步时钟作用下,通过Din引脚接收单片机信息,按照射频通信协议ISO/IEC15693-3编码后,予以调制系数为100%或10%的调制。接收时,由Rxinput引脚输入天线获取的射频卡信息,经整流二极管包络检测,进而滤波、放大、解码后,在Sclock同步时钟作用下,通过Dout引脚送单片机。
2.2 LCD液晶显示电路
LCD选用的是金鹏电子有限公司的OCMJB系列液晶显示器,共有14个引脚。在接口电路连接上,直接将单片机的P0口作为数据口与LCD的8位数据端口相连,P2口的P2.3,P2.4作为控制口分别与LCD的REQ口与BUSY口相连。
2.3 键盘扫描电路
需要10个数字输入键,外加一个确认键和一个退格键,总共12个按键,做成3×4键盘。键盘扫描通过系统分配的3条列线和4条行线,采用逐行扫描或逐列扫描的办法。在接口电路连接上,单片机分配P1口的低四位作为行线,P1.4,P1.5,P1.6口作为列线,共同实现对键盘的扫描。
2.4 外部中断电路
当外界通过INT0口或INT1口向系统连续输入2个时钟周期的低电平时,系统便会发出一个中断信号。在设计中,通过两个按键发出外部中断,按键的一脚与单片机的中断入口(INT0,INT1)相连,另一脚接地。
3 系统软件设计
读卡器的软件设计是在MCS51调试环境中开发的,MCS51调试环境支持C语言和汇编语言。整个软件设计主要包括射频卡读写控制程序、键盘控制程序、液晶显示程序等。考虑到本文读卡器是以门禁系统为应用实例,增加了添加用户、挂失、更改密码3个辅助功能。
3.1 射频卡读/写控制程序设计
在本次设计中选用的射频卡是TI公司的疏耦合IC卡Tag-it HF-I,遵循ISO/IEC15693-3通信协议。读/写控制程序的具体过程如流程图2所示。
时间寄存器主要用来设置数字解码器的采样点,在对射频卡进行其他操作前,需先对时间寄存器进行初始化。卡机通信需在一定的时间内完成,若在规定的时间内读卡器检测不到应答信号,则认为无卡,具体通过TIME0定时器在规定的时间内检测SOF信号来实现。所以,首先要初始化TIME0定时器,并对TIME0开中断,将读命令串写入命令发送缓冲区,另外需要计算命令串的CRC验证码(循环验证码),接着存放命令串,最后调用发送模块将其一起发送。发送命令时钟由单片机控制,接收时钟由读卡器控制,因此在发送完命令串后接着要将时钟控制权交还给读卡器,定时器TIME0开始计时,检测射频卡发回的开始位信号,如果在规定时间内检测不到信号,定时器TIMER0便会发生溢出信号,CP U相应溢出中断,进入TIME0的中断服务子程序,将无卡标志位NOCARD置1,程序就会跳回,重新开始定时检测。当在计时范围内检测到SOF信号时,按照返回数据格式,接收数据标志(Flags)字节、安全状态字节等相应字节的数据,最后接收结束位EOF。若数据标志的最后一位为1,表明发送命令有误,射频卡会发送错误类型标识字节,否则射频卡会依次发送数据,调用接收模块,将接收的数据依次存放于接收缓冲区,用于对用户信息的核对。
在射频卡读/写控制程序中,命令发送模块和数据接收模块是射频卡读/写的关键所在。命令发送模块首先必须发出起始位SOF信号,然后发送具体的命令串。命令串的发送分为3部分:命令字发送;数据字发送;校验字节发送。命令字的发送必须是高位在先,而数据字发送则是低位在先,CRC校验码放在命令串最后,同命令串一起发送。命令串的传送通过移位实现,再通过DIN口逐位发送。在命令发送结束后,还要发送一个结束位EOF。接收模块在接收时必须先把时钟控制权交给读/写模块,接收时每次按位接收一个字节的内容,采样间隔为10μs,必须在规定的时间内完成接收工作,否则认为接收出错。程序通过定时器TIMER1实现计时,当计时到时IMER1发出溢出中断信号,CPU响应溢出中断,进入TIMER1中断服务子程序,将接收错误标志位VICCERROR置1,表示发生错误。程序在接收完一个字节的内容后判断VICCERROR的状态,如果发生错误,程序跳回,重新发送读命令。
3.2 液晶显示控制程序
LCD是通过P0口与P2口的P2.3,P2.4共同完成控制的。其中P0口作为数据口,P2.3,P2.4口作为控制口。首先通过P2.3口将REQ清零,准备向LCD写入数据,然后通过P2.4口读出LCD的BUSY口的状态。如果LCD为空闲状态,便可向LCD写入数据。向LCD写入数据需先将数据送到LCD数据线,然后给REQ一个上升沿,将数据线上的内容写入LCD。
3.3 键盘控制程序
键盘扫描通过P1口完成,先给第1列加低电平其余位皆为高电平,检查第1列是否有键按下,没有则检查第2列,再没有,检查第3列,第3列仍没有,返回重新检查第1列,依次循环检查。当有键按下时将键码存下,再重复检查若干次,实现去抖。最后通过查表得到有效键值返回。
3.4 辅助功能程序
射频卡读出的信息由2部分组成,首先是一串用户识别码,可在添加用户功能中向射频卡写入,其次就是一个字节的用户代号,设计用户代号主要是考虑用户挂失所用,在对用户信息验证时,先对用户代码验证,然后对用户识别码进行验证,其中任何一环节出现错误,则认为是非法用户,无法开启门锁。在具体设计上,“添加用户”主要通过向用户的新卡中写入合法的用户信息识别码来实现。此项功能属于用户的私人操作,在操作前必须经过密码验证,密码验证通过后,再由用户输入此卡对应的编号。挂失功能也是本文设计中的一个必备功能,它主要通过设置用户状态标志字来实现,在程序设计中给每一个用户分配一个字节的用户状态标志字,通过验证状态字来判断是处于正常状态还是挂失状态。同添加用户功能一样,该功能亦属于用户私人操作,也要经过密码验证。上述2项辅助功能都需经过密码验证,因此对密码的保密性、可更改性都提出了较高的要求,在本文设计中同样设置了“更改密码功能”,用户更改密码的前提是输入正确的用户密码,然后由用户连续两次输入格式和数据完全相同的密码,最后将新密码替换原先的旧密码。
4 结语
本文设计的射频卡读卡器是应工程实际需求而专门设计,采用单片机为主控器件,充分结合硬件、软件优势,采用低功耗、体积小、集成度高的元器件,减小了系统体积、重量、功耗,提高了编程灵活性。应用实践证明:该读卡器设计合理可行,具有工作可靠、操作方便、成本低廉、响应速度快、抗干扰能力强等优点。另外,该读卡器可以方便地与包括PC在内的串口设备连接,易于针对不同的的应用对象嵌入到其他各种射频识别应用系统中,拓展能力强,应用前景十分广阔。