射频IC卡读写器简析

合集下载

ACR122UIC卡龙杰读写器介绍

ACR122UIC卡龙杰读写器介绍

ACR122UIC卡龙杰读写器介绍ACR122U跳转到:导航, 搜索什么是ACR122?ACR122是一款在频率为13.56MHz的射频技术上开发出来的的连机智能卡读写器,符合ISO/IEC18092(NFC)标准。

它不仅支持Mifare卡和符合 ISO 14443标准的 A类和B类卡,而且还支持NFC 以及FeliCa非接触式技术。

此外,ACR122 是一款符合CCID 标准的USB热插拔设备,是个人身份安全认证以及网上小额支付等应用领域的理想选择。

此外,它还可以广泛地应用于访问控制、电子支付、公交电子票务、高速公路收费系统、网络验证、物流以及供应链管理等领域。

ACR122是一款USB全速设备(12 Mbps),能以212 Kbp、242Kbp的速度读取NFC标签,因而这款设备相对于同类设备而言,其读写速度更快而且效率更高。

操作则根据非接触标签而定,最大可达5cm。

为了提高安全系数,您可选择在ACR122中配置一个符合ISO7816-3标准的 SAM 卡槽。

此外,ACS还可以提供ACR122模块,便于嵌入到大型的设备中,比如POS终端、门禁设备以及自动贩卖机等等。

ACR122特征•USB 全速 (12 Mbps)•支持USB•热插拔•双色LED状态指示灯•内置天线•NFC读写器符合ISO/IEC18092 (NFC)标准以212 Kbps, 242Kbps速度读取NFC标签•非接触式智能卡读写器支持FeliCa卡支持符合ISO 14443 标准的A类和B类卡- MIFARE卡 (Classics, DESFire)•符合CCID标准•通过CE和FCC认证•通过RoHS认证•用户可控蜂鸣器•SAM 卡槽(可选)ACR122U典型应用•网上银行及网上购物•电子商务•e电子钱包•余额查询•网络访问•客户积分优惠•身份验证票务•网上博彩•停车场收费系统•自动收费系统•公共交通•门禁系统•考勤自动•贩卖机•非接触式公用电话•物流及供应链管理。

Mifare 1 IC卡性能介绍

Mifare 1 IC卡性能介绍

Mifare 1 IC卡性能介绍关键词:Mifare 1 非接触式IC卡射频卡射频识别技术LC串联谐振读写器一、概述PHILIPS的Mifare 1非接触式IC卡又称射频卡,是世界上最近几年发展起来的一项新技术,它成功地将射频识别技术和IC卡技术结合起来,解决了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破。

1、可靠性高非接触式IC卡与读写器之间无机械接触,避免了由于接触读写而产生的各种故障。

此外,非接触式卡表面无裸露的芯片,无须担心芯片脱落、静电击穿、弯曲损坏等问题,既便于卡片的印刷,又提高了卡片的使用可靠性。

2、操作方便,快捷由于非接触通讯,读写器在15cm范围内就可以对卡片操作,所以不必插拔卡,非常方便用户使用。

非接触式卡使用时没有方向性,卡片可以任意方向掠读写器表面,即可完成操作,这大大提高了每次使用的速度。

3、防冲突非接触式卡中有快速防冲突机制,能防止卡片之间出现数据干扰,因此,读写器可以“同时”处理多张非接触式IC卡。

这提高了应用的并行性,无形中提高了系统工作速度。

4、可以适合于多种应用非接触式卡的存储结构特点使它一卡多用,能应用于不同的系统,用户可根据不同的应用设定不同的密码和访问条件。

5、加密性能好非接触式卡的序列号是唯一的,制造厂家在产品出厂前已将此序列号固化,不可再更改。

非接触式卡与读写器之间采用双向验证机制,即读写器验证IC卡的合法性,同时IC卡也验证读写器的合法性。

非接触式卡在处理前要与读写器进行三次相互认证,而且在通讯过程中所有的数据都加密。

此外,卡中各个扇区都有自已的操作密码的访问条件。

二、M1系统参数非接触式IC卡容理为8K位,数据保存期为10年,可改写10万次,读无限次。

M1卡不带电源,自带天线,内含加密控制逻辑电路和通讯逻辑电路,卡与读写器之间的通讯采用国际通用的DES和RES 保密交叉算法,具有极高的保密性能。

² 通信速率:106KB波特率² 防冲突:同一时间可处理多张卡² 读写距离:在150MM内能方便、快速地传递数据² 半双工通讯方式² 在无线通讯过程中通过以下机制来保证数据完整² 支持多卡操作² 材料:PVC² 尺寸:符合ISO10536标准² 无电池:无线方式传递数据和能量² 芯片加工技术:采用高速的CMOS EEPROM工艺² 组成部分:一个芯片和一个简单的线圈² 安全性:三次相互认证(ISO/IEC DIS9798-2)通讯中所有数据加密以防止信号截取每一扇区有相互独立的密码每张卡的序列号是全球唯一的有32位。

射频识别卡读写模块的设计与应用 摘 要

射频识别卡读写模块的设计与应用 摘 要

射频识别卡读写模块的设计与应用摘要I摘要随着电子信息技术的发展,智能卡(IC 卡)已经在我们的生活中随处可见。

射频识别卡正逐渐取代传统的接触式IC 卡,成为智能卡领域的新潮流。

研究、开发射频识别卡的读写技术与读写设备,对其推广有着重要的实际意义。

本文首先介绍了射频识别卡及射频识别系统的工作原理。

为了使应用系统的开发人员无需掌握复杂的射频识别技术就可快速开发射频识别卡应用产品,本文基于模块化的设计思想设计开发了射频识别卡Mifare1 的读写模块。

该读写模块不仅能完成对射频识别卡的控制和读写操作,而且可供用户在其基础上进行二次开发。

文中详细讨论了读写模块的具体实现。

硬件部分介绍了系统的组成、MCU 与读写芯片的接口设计与硬件电路的实现。

软件部分重点阐述如何实现射频识别通信的底层驱动,并在此基础上将卡片的操作用函数形式封装,以供用户调用。

函数的封装严格按照软件工程的要求,具有硬件无关性,方便用户二次开发。

然后,给出了读写模块的两个应用实例:RFID卡通用读写卡器及带网络接口的考勤机,简要的介绍了其设计方法和用途。

最后,对本文所做工作进行了总结,并给出今后研究工作的展望。

关键词:射频识别,IC卡,读写设备作者:徐丽华指导老师:王宜怀ABSTRACT The Design and Application of Read/Write Module of RFID CardIIABSTRACTWith the rapid development of electronic information technology ,smart cards (IC card) are now very popular in our life. Radio Frequency Identification (RFID) card is becoming a new fashion in the application field of smart card, replacing the traditional contacting IC card. So it is of great practical significance to study the technology of RFIDCard and develop the read/write device of RFID card for its generalization.The common concept of the RFID card and the basic working principle of RFID system are explained chiefly in the first part of this paper. Then, a read/write module ofMifare1 RFID card is developed, based on the modular designing mind. The users of application system may develop their practical products rapidly with our modulewithoutunderstanding the details of RFID technology. The read/write module can not only do thecontrol and read/write operations of the RFID card, but also can be redeveloped. The wayto implement the read/write module is discussed in detail, including two parts, the hardware and the software. The former part includes the constitutes of the system, the design of the interface between MCU and the chip of RFID module, and the realization ofthe hardware circuits. And the latter mainly introduces how to drive the RFID communication and encapsulate the operation of the card into functions which can be transferred by the customers conveniently. The functions are irralated with hardware bydoing its encapsulation according to the rules of software engineering.Then, two application examples based on read/write module are given, one is a generalread/writedevice and the other is a check-in machine with network interface.At last, all the work are summarized and a research prospect of the subject in future is promised .Keywords:Radio Frequency Identificatiion(RFID),IC card,read/write device,Author:Xu LihuaSupervisor:Wang Yi huai射频识别卡读写模块的设计与应用目录目录摘要 (I)ABSTRACT (II)第一章概述 (1)1.1 射频识别卡 (1)1.1.1 关于射频识别技术 (1)1.1.2 智能卡(IC卡) (1)1.1.3 射频识别卡 (2)1.1.4 RFID卡的优点 (2)1.1.5 RFID卡的应用 (3)1.1.6 RFID卡读写设备 (3)1.2 关于本课题 (3)1.2.1 RFID卡读写模块构思 (4)1.2.2 读写模块设计思路 (5)1.3 本文工作与论文结构 (6)1.3.1 本文工作 (6)1.3.2 论文结构 (7)第二章相关理论与技术 (8)2.1 射频识别卡的基本原理与相关技术 (8)2.1.1 射频识别系统的基本原理 (8)2.1.2 射频识别系统的分类 (9)2.1.3 能量传送 (10)2.1.4 数据传送 (10)2.1.5 数据完整性 (12)2.1.6 数据安全性 (12)2.2 RFID卡的国际标准 (13)2.2.1 RFID卡的国际标准 (13)2.2.2 近耦合IC卡国际标准ISO/IEC 14443 (13)2.3 RFID卡-Mifare (14)2.3.1 Mifare 1卡的特性 (15)2.3.2 Mifare 1芯片的逻辑结构 (15)2.3.3 存储器组织结构 (16)2.3.4 对Mifare 1的读写控制 (16)第三章读写模块硬件设计 (19)3.1 硬件系统组成 (19)3.2 芯片选型 (20)3.2.1 嵌入式微控制器MCU (20)3.2.2 射频读写芯片 (21)3.3 微控制器MC68HC908GP32 (22)3.3.1 GP32特性 (22)3.3.2 GP32主要功能模块 (23)3.4 射频读写芯片MF RC500 (23)目录射频识别卡读写模块的设计与应用3.4.1 MF RC500的功能结构 (23)3.4.2 MF RC500的引脚说明 (24)3.4.3 MF RC500的寄存器 (25)3.4.4 MF RC500的并行接口 (25)3.5 读写模块硬件说明 (26)3.5.1 GP32与MF RC500的连接 (27)3.5.2 天线及相关电路的设计 (28)3.6 硬件测试 (29)3.6.1 GP32微控制器系统的测试 (29)3.6.2 GP32对MF RC500的控制 (30)3.6.3 MF RC500的天线测试 (31)第四章读写模块软件设计 (32)4.1 软件设计概述 (32)4.1.1 软件功能概述 (32)4.1.2 软件开发环境 (33)4.2 读写模块中的在线编程技术 (33)4.3 软件设计中与主控芯片相关部分 (34)4.4 GP32对MF RC500的基本操作 (36)4.4.1 访问MF RC500寄存器 (36)4.4.2 MF RC500的FIFO缓冲区机制 (39)4.4.3 MF RC500的命令 (40)4.5 与Mifare 1的射频识别通信 (41)4.5.1 Mifare 1的状态及射频通信处理流程 (41)4.5.2 卡片识别及选中过程 (42)4.5.3 密码验证过程 (50)4.5.4 对MF1存储区的操作 (52)4.6 读写模块的接口函数 (54)4.6.1 读写模块的底层通信函数 (54)4.6.2 读写模块的高级接口函数 (55)第五章应用实例 (57)5.1 通用读写卡器 (57)5.1.1 通用读写卡器系统组成 (57)5.1.2 通用读写卡器硬件说明 (58)5.1.3 通用读写卡器MCU方程序 (59)5.1.4 通用读写卡器PC机方函数库 (61)5.1.5 通用读写卡器应用 (61)5.2 带有网络接口的考勤机 (62)5.2.1 嵌入式网络接口技术 (62)5.2.2 读写卡模块和嵌入式网络接口的结合 (62)5.2.3 关键技术说明 (63)5.2.4 服务器方测试软件 (65)第六章总结 (66)致谢 (67)射频识别卡读写模块的设计与应用目录参考文献 (68)附录1 MC68HC908GP32结构框图 (70)附录2 MF RC500的寄存器 (71)附录3 MF RC500的命令集 (72)附录4 读写模块函数说明 (74)攻读学位期间公开发表的论文 (77)射频识别卡读写模块的设计与应用第一章概述1第一章概述射频识别卡技术是近几年发展起来的一项新技术,它成功地结合射频识别技术和IC 卡技术解决了无源(卡中无电源)和免接触的难题,是电子信息技术领域的一大突破。

RD800M射频读写器射频读写器射频读写器射频读写器

RD800M射频读写器射频读写器射频读写器射频读写器

RD800M射频读写器使用说明书接触式IC卡读写器简介第一章 RD系列非接触式RD系列非1.1概述RD800M 非接触式IC卡读写器读写非接触射频卡由主机天线串行接口等组成通过RS232串行接口及485接口能实现同PC机及相关设备的连接带有SAM卡操作可实现安全发卡及满足安全领域的需要随机提供各种平台的驱动开发包附带的演示程序实现访问射频卡的全部功能并带有自动测卡操作RD800M非接触式IC卡读写器是开发非接触式IC卡相关产品及系统集成必备的前端处理设备其丰富完善的接口函数可方便地应用于工商电信邮政税务银行保险医疗及各种收费储值查询等智能卡管理应用系统中支持的卡型! PHILIPS公司的 MF1 S50MF1 L10! SIEMENS公司的SLE44R35SLE44R31可支持的函数接口! MS-DOS操作系统下的TURBO C BORLAND C MicroSofte C FOXBASE FOXPRO FOR DOS CLIPPER 5.x版等! Windows3X下的16位开发平台如Visual Basic 3.0Delphi 1.0Power Builder4.0Visual FoxPro 3.0Visual C++ 1.52等! Windows 9x/2k/NT/Xp下的32位开发平台如Visual Basic Delphi Power Builder Visual FoxPro Visual C++C++ Builder等及这些开发平台的高版本! SCO UNIX下的C语言开发! RedHat Linux 驱动开发特点! 工作频率 13.56MHZ支持Mifare标准! 标准的ESD协议RS232串行接口,485远距离通讯接口! 波特率从9600至115200bit/s自动侦测! 单电源5V供电提供电路保护! 高速访问射频卡通信速率为106Kbit/s! 数据加密和双向验证! 与射频卡标准操作距离25mm! 防冲突可同时读取多张射频卡! SAM卡操作读写符合T=0和T=1协议的CPU卡! 提供了丰富的二次开发平台和范例1.22读写器装箱清单.标准软盘1张保修单1张读写器1台串口线1条电源线1条装箱单1张5V稳压电源一个选件485通讯网卡485通讯线检查完毕后请详细阅读使用说明书和有关文档1.33读卡器连接方式.串口方式将串口线一端插入读卡器一端插入计算机的串行口接上5V稳压电源485方式将485网卡接在计算机的串行口将485连线水晶头一端接在读写器另一端接在485网卡的接口上接上5V稳压电源485的连线制作方式见附录一1.4开机情况读写器联接正常后打开电源读写器蜂鸣一声数码管全部显示0.5秒后显示时间1.55程序安装.步骤! 将读写器连接在计算机通讯口上并接上电源开机情况判断有没有连接正确根据开机! 连通计算机和读写器接法请参照读写器连接方式据! 开机进入WINDOWS3.X/95/98/2000/XP中! 将随机软盘或光盘插入驱动器中运行Rd800M.EXE即可注意安装软件在根目录下建立缺省名为\RD800的目录所有驱动软件均在此目录下安装完毕后请请仔细阅读说明书1.66软件.RD800M读写器的软件包括三部分演示软件库函数和应用范例a. 演示软件a.IC卡读写器功能演示软件WINDOWS版RFDEMO.EXE您可以用该软件来测试您的读写器有没有连接正确或测试您的卡的卡类型或进行一些卡功能测试注意在开发过程中请检查自己的读写卡过程有没有正确用该演示程序来验证是一个好办法b. 库函数b.! C语言接口函数库(Borland C Microsoft C)! FOXPRO FOR DOS(2.6) 接口函数库! WINDOWS 32位动态库请根据您的开发环境来选用正确的库函数相信应用范例可能帮您的忙c. 应用范例c.包括Visual Basic Power Builder Borland DELPHI VFP FORPRO FOR DOS等d.软件目录\Rd800\Manual.pdf 本文档\rfdemo.exe Windows下的演示程序\32dll\*.* 32位的Windows函数库\c.lib\*.* Dos下的C语言函数库\clipper\*.* Clipper开发语言的函数库\dosdemo\*.* Dos下的演示程序\examples\*.* 各种开发语言的例程序\foxpro.dos\*.* Foxpro For Dos语言的开发函数库1.77技术指标.! 通讯接口RS232 485! 串口的波特率9600 BPS 115200 BPS! 电源DC5V10%! 最大功耗100 mW! 环境温度0∼ 50 C! 相对湿度30% ∼ 95%! 外型尺寸长x宽x高: 145mm×110mm×30mm! 重量1公斤左右第二章读写器驱动函数说明2.1函数使用规则(1) 首先要调用通讯口初始化函数dc_init其返回值为设备标识符它将作为其它函数 ()的调用参数((3)调用WINDOWS 32位动态库时程序退出之前要执行dc_exit (HANDLE icdev) 函数关闭串口释放句柄icdev否则再次初始化串口将出错((4) 函数调用错误类型请参照函数错误类型代码所有函数的错误代码均以负数形式返回Foxpro For Dos例外((5) 动态库的位置应该在声明的相应目录中或缺省的目录当中否则会有无法寻找到动态库的错误(6)函数的十六进制HEX方式调用中传入和读出的字符数组是以十六进制字符串的方式进行的其余参数调用方式相同所以在函数详细说明中不再列出范例注意函数详细的使用方法参考Rd800\EXAMPLES目录下提供的范例2.22函数说明2.32位动态库的函数说明注意:以下函数名的大小写必须严格区分,否则无法调用1HANDLE dc_init(int port,long baud)说明初始化串口的函数参数说明__int16 port 通讯口号port=0,1,2,3baud 波特率 9600 到 115200返回调用成功则返回设备描述符 >=0举例HANDLE icdev;icdev=dc_init(1,9600);/*初始化com2口*/2__int16 dc_exit(HANDLE icdev)说明关闭串口的函数参数说明HANDLE icdev dc_init返回的设备描述符返回成功返回 0举例dc_exit(icdev);3__int16 dc_card(HANDLE icdev,unsigned char _Mode,unsigned long *_Snr);说明寻卡函数能返回在工作区域内某张卡的序列号参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Mode 设置卡的模式可以是IDLE或ALL有关_Mode的解释请参阅halt()函数说明IDLE=0, ALL=1unsigned long *_Snr 存放找到的卡的序列号的地址返回成功则返回0举例__int16 st;unsigned long snr;st=dc_card(icdev,IDLE,&snr);4 __int16 dc_authentication(HANDLE icdev ,unsigned char _Mode, unsignedchar _SecNr)说明验证某一扇区密码的函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Mode 该参数决定验证密码的方法_Mode=0: 用KEYSET0和KEYA验证_Mode=1: 用KEYSET1和KEYA验证_Mode=2: 用KEYSET2和KEYA验证_Mode=4: 用KEYSET0和KEYB验证_Mode=5: 用KEYSET1和KEYB验证_Mode=6: 用KEYSET2和KEYB验证unsigned char _SecNr 要验证密码的扇区号(0)返回成功则返回0举例__int16 st;st=dc_authentication(icdev,0,0);附加说明每张卡上有A密码和B密码可根据实际需要确定是否使用B密码这由卡的存取控制位来决定(由上面的表可参阅)此外读写器中可以存放三套密码以备读写器有多种用途,用来校验具有不同密码的卡可用load_key()来分别装入只有装入后才能使用验证密码函数验证5__int16 dc_halt(HANDLE icdev)说明中止卡操作函数参数HANDLE icdev dc_init返回的设备描述符;返回成功则返回0举例__int16 st;st=dc_halt(icdev);附加说明使用card()函数时有个 _Mode参数,如果模式选择为0则在对卡进行读写操作完毕后执行halt();则该卡进入HALT模式只能当该卡离开操作区域并再次进入时读写器才能够再次操作它6__int16 dc_read(HANDLE icdev,usigned char _Adr,unsigned char *_Data)说明读函数一次必须读一个块参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 所读数据的地址_Adr=(0-63)unsigned char *_Data 指向存放被读数据的地址返回成功则返回0举例__int16 st;static unsigned char data[16]st=dc_read(icdev,0,data);7__int16 dc_read_hex(HANDLE icdev,usigned char _Adr,unsigned char *_Data)说明16进制读函数一次必须读一个块参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 所读数据的地址_Adr=(0-63)unsigned char *_Data 指向存放被读数据的地址返回成功则返回0static unsigned char data[32]st=dc_read(icdev,0,data);/*读出数据格式如write_hex*/8__int16 dc_write(HANDLE icdev,unsigned char _Adr,unsigned char *_Data)说明写函数, 一次必须写一个块参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 所写数据的地址_Adr=(1-63)unsigned char *_Data 指向存放要写数据的地址块长度=16返回成功则返回0举例__int16 st;static unsigned char data[16]/* 给data赋值*/st=dc_write(icdev,1,data);/*写入块1*/9__int16 dc_write_hex(HANDLE icdev,unsigned char _Adr,unsigned char *_Data) 说明16进制写函数, 一次必须写一个块参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 所写数据的地址_Adr=(1-63)unsigned char *_Data 指向存放要写数据的地址块长度=16返回成功则返回0举例__int16 st;unsigned char data[32]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";/* data赋值为16个0xaa*/st=dc_write_hex(icdev,1,data);/*写入块1*/10__int16 dc_increment(HANDLE icdev,unsigned char _Adr,unsigned long _Value) 说明增值函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 所增值的地址_Adr=(1-63)unsigned long _Value 要增加的值返回成功则返回0举例__int16 st;unsigned long value;/* 给value赋值*/value=1;st=dc_increment(icdev,1,value);/*将块1的值增加value*/11__int16 dc_decrment(HANDLE icdev,unsigned char _Adr,unsigned long _Value) 说明减值函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 要减值的地址_Adr=(1-63)unsigned long _Value 要减少的值返回成功则返回0unsigned long value;/* 给value赋值*/value=1;st=dc_decrement(icdev,1,value);/*将块1的值减少value*/12__int16 dc_initval(HANDLE icdev,unsigned char _Adr,unsigned long _Value)说明初始化值函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 要初始化值的地址_Adr=(1-63)unsigned long _Value 要初始化的值返回成功则返回0举例__int16 st;unsigned long value;/* 给value赋值*/value=1000;st=dc_initval(icdev,1,value);/*将块1的值初始化为value*/附加说明作为数值处理的块是以特殊格式存贮的所以必须用初始化值函数初始化初始化之后方可进行读减加的处理13__int16 dc_readval(HANDLE icdev,unsigned char _Adr,unsigned long *_Value)说明读值函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 要读值的地址_Adr=(1-63)unsigned long _Value 存放读出值的地址返回读出值存放在*_Value中举例__int16 st;unsigned long value;st=dc_readval(icdev,1,&value);/*读出块1的值放入value*/14__int16 dc_transfer(HANDLE icdev,unsigned char _Adr)说明传送函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Adr 要传送的地址返回无举例__int16 st;st=dc_transfer(icdev,1);附加说明见dc_restore()的附加说明15__int16 dc_restore(HANDLE icdev,unsigned char _Adr)说明回传函数将_Adr地址的值传入卡的内部RAM参数说明HANDLE icdev dc_init返回的设备描述符unsigned char *_Adr 要进行回传的地址返回无st=dc_restore(icdev,1);附加说明用户可以用此函数将某一块内的数值传入内部RAM然后用transfer()函数传送到另一块中去就达到了块与块之间数值传送的目的16__int16 dc_load_key(HANDLE icdev,unsigned char _Mode,unsigned char SecNr,unsigned char * _Nkey)说明装入密码函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Mode 同函数 authentication()unsigned char _SecNr 同函数 authentication()unsigned char *_Nkey 包含了要写入硬件系统RAM中的卡密码返回成功则返回0举例//key A and key Bunsigned char tk[2][7]= { {0xa0,0xa1,0xa2,0xa3,0xa4,0xa5},{0xb0,0xb1,0xb2,0xb3,0xb4,0xb5}};/*装入1扇区的A密码0套*/if((dc_load_key(icdev,0, 1,tk[1]))!=0){printf("Load key error!");return;}附加说明而*_Nkey是与卡中的密码相应的密码可以是密码A或密码B是根据存取控制用户可以装入相应的密码并验证17__int16 dc_load_key_hex (HANDLE icdev,unsigned char _Mode, unsigned charSecNr,char * _Nkey)说明装入密码(用一串16进制表示)函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Mode 同函数 authentication()unsigned char _SecNr 同函数 authentication()unsigned char *_Nkey 包含了要写入硬件系统RAM中的卡密码返回成功则返回0举例//key Aunsigned char tk[]= "a0a1a2a3a4a5"/*等同于{0xa0_.0xa5}*//*装入1扇区的A密码|0套*/if((dc_load_key_Hex(icdev,0, 1,tk))!=0){printf("Load key error!");return;}附加说明而*_Nkey是与卡中的密码相应的密码可以是密码A或密码B是根据存取控制用户可以装入相应的密码并验证18int dc_beep(HANDLE icdev,unsigned int _Msec)说明蜂鸣函数使读写器发出蜂鸣声参数说明HANDLE icdev dc_init返回的设备描述符unsigned int _Msec:蜂鸣时间的长短单位是10毫秒返回成功则返回0举例int st;st=dc_beep(icdev,10);/*鸣叫100毫秒*/19. int dc_high_disp(HANDLE icdev,unchar offset,unchar displen,unchar *dispstr); 说明数码显示.参数说明HANDLE icdev dc_init返回的设备描述符unchar offset:要显示字符串的偏移地址范围1到8unchar displen:要显示的长度,长度为0时清屏unchar * dispstr:要显示的字符串高半字节为8时小数点亮返回成功则返回0举例int st;uchar dispstr[5]={0x89,0x0a,0x8c,0x01,0x02}st=dc_high_disp(icdev,1,5,dispstr); //从1开始显示 ”9.ac.12”20.int dc_request(int icdev,unsigned char _Mode,unsigned int *TagType)说明寻卡请求参数说明HANDLE icdev dc_init返回的设备描述符unsigned char _Mode:寻卡模式附加说明_Mode:=0 选择IDLE模式一次只读一张卡=1 选择ALL模式一次可读多张卡=2 只对卡序列号等于_Snr的卡操作unsigned int *Tagtype:指向返回的卡类型的数值返回成功则返回0举例int st;unsigned int *tagtype;st=dc_request(IDLE,tagtype);21.int dc_anticoll(int icdev,unsigned char _Bcnt,unsigned long *_Snr)说明防止卡冲突参数说明 HANDLE icdev dc_init返回的设备描述符unsigned char _Bcnt:unsigned long *_Snr:指向返回的卡序列号返回成功则返回0举例int st;unsigned long *snr;st=anticoll(0,snr);22int dc_select(int icdev,unsigned long _Snr,unsigned char *_Size)说明选卡函数从多个卡中选取一特定序列号的卡参数说明HANDLE icdev dc_init返回的设备描述符unsigned long _Snr:卡序列号;unsigned char *_Size:指向返回的卡容量的数据.返回成功则返回0举例:int st;unsigned long snr=239474;unsigned char size;st=dc_select(snr,&size);23int dc_gettime(HANDLE icdev,unsigned char *time)说明取时间函数用于读取设备时间参数说明HANDLE icdev dc_init返回的设备描述符unsigned char * time:返回的时间串time格式各占两字节year,week,month,day,hour,minitue,second年星期几月日小时分秒返回成功则返回0相关函数dc_gettimehex(HANDLE icdev,char *time)返回HEX串举例:int st;unsigned char timestr[20];st=dc_gettime(icdev,timestr);24int dc_settime(HANDLE icdev,unsigned char *time)说明设置时间函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char * time:要设置的时间串返回成功则返回0相关函数dc_settimehex(HANDLE icdev,char *time)以十六进制串方式设置时间举例:int st;unsigned char timestr[20];memcpy(timestr,”01020122170740”); //01年1月22日星期二17点7分40秒st=dc_settimehex(icdev,timestr);25int dc_setbright(HANDLE icdev,unsigned char bright)说明设置亮度函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char bright:要设置的显示亮度值 0-15;返回成功则返回0举例:st= dc_setbright( icdev,9);26int dc_ctl_mode(HANDLE icdev,unsigned char mode)说明控制显示函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char mode: 0 计算机控制显示 1 读写器控制显示,显示设备时间;返回成功则返回0举例:int st;st= dc_ctl_mode ( icdev,0);27int dc_disp_mode(HANDLE icdev,unsigned char mode)说明显示格式函数参数说明HANDLE icdev dc_init返回的设备描述符unsigned char mode:0 显示年-月-日1 显示时-分-秒;返回成功则返回0举例:int st;st= dc_ disp _mode ( icdev,0);28int dc_cpureset(HANDLE icdev,unsigned char *rlen,unsigned char *databuffer)说明SAM卡上电复位函数参数说明HANDLE icdev dc_init返回的设备描述符rlen返回复位信息的长度databuffer保存返回的复位信息返回成功则返回0相关函数dc_cpureset_hex 以HEX的方式保存返回信息举例:int st;unsigned char rlen, recdata[100];st= dc_cpureset ( icdev,&rlen,recdata);29int dc_cpuapdu(HANDLE icdev,unsigned char slen,unsigned char *senddata,unsigned char *rlen,unsigned char *recdata)说明SAM卡APDU应用协议数据单元信息交换函数该函数封装了T=0和T=1操作. 参数说明HANDLE icdev dc_init返回的设备描述符slen: 发送到SAM卡的信息senddata:保存要发给SAM卡的信息rlen返回复位信息的长度recdata保存返回的复位信息返回成功则返回0相关函数dc_cpuapdu_hex 以HEX的方式执行举例:unsigned char slen,rlen,sneddata[100], recdata[100];slen=5;senddata[0]=0x00;senddata[1]=0x84;senddata[2]=0x00,senddata[3]=0x00;senddata[4]=0x04;st= dc_cpuapdu ( icdev,slen,senddata,&rlen,recdata);30int dc_cpuapdusource(HANDLE icdev,unsigned char slen,unsigned char *senddata,unsigned char *rlen,unsigned char *recdata)说明SAM卡APDU应用协议数据单元信息交换函数该函数不封装用户需自行判断协议类型并组织数据发送参数说明HANDLE icdev dc_init返回的设备描述符slen: 发送到SAM卡的信息senddata:保存要发给SAM卡的信息rlen返回复位信息的长度recdata保存返回的复位信息返回成功则返回0相关函数dc_cpuapdusource_hex 以HEX的方式执行举例: T=1协议卡的操作int st;unsigned char slen,rlen,sneddata[100], recdata[100];slen=5;senddata[0]=nad;senddata[1]=pcb;senddata[2]=5,senddata[3]=0x00;senddata[4]=0x84;senddata[5]=0x00;senddata[6]=0x00;senddata[7]=0x08;for(st=0;st<8;st++)senddata[8]^=senddata[st]; //计算异或和st= dc_cpuapdusource ( icdev,slen,senddata,&rlen,recdata);31int dc_cpudown(HANDLE icdev)说明SAM卡下电函数参数说明HANDLE icdev dc_init返回的设备描述符返回成功则返回0举例:int st;st= dc_cpudown ( icdev);32int dc_swr_eeprom(HANDLE icdev,int offset,int lenth,unsigned char* send_buffer)说明写存储EEPROM的函数范围0-1597参数说明HANDLE icdev dc_init返回的设备描述符offset偏移地址length长度send_buffer存储数据内容返回成功则返回0举例:int st;data[0]=0x12;data[1]=0x34;data[3]=0x56;st= dc_swr_eeprom ( icdev323data);33int dc_srd_eeprom(HANDLE icdev,int offset,int lenth,unsigned char* read_buffer) 说明读存储EEPROM的函数范围0-1597参数说明HANDLE icdev dc_init返回的设备描述符offset偏移地址length长度read_buffer读出数据内容返回成功则返回0举例:int st;unsigned char data[10];st= dc_srd_eeprom ( icdev3210data);34. int dc_disp_str(HANDLE icdev,unchar *dispstr);说明数码显示.参数说明HANDLE icdev dc_init返回的设备描述符unchar * dispstr:要显示的字符串由数值字符’0’-‘F’和.组成数值字符数不超过8个显示自动居后dispstr长度为0时显示全灭返回成功则返回0举例int st;st=dc_high_disp(icdev,” 123.45”); //显示 ”123.45”FoxPro for Dos函数库.PLB1init(_Comstr,_Baudrate);说明初始化串口函数参数说明_Comstr 是一个字符串为COM1或COM2_Baudrate 是一个整数用来设置通信波特率如960019200_ 直到115200皆可一般为115200返回调用成功则返回 0举例st=init("COM1",115200);2exit();说明恢复串口函数参数说明无参数返回无举例exit();3card( _Mode);说明寻卡函数能返回在工作区域内某张卡的序列号参数说明 _Mode是一个整数设置卡的模式可以是0(IDLE)或1(ALL),有关_Mode的说明请参阅halt()函数说明返回返回9字节字符串第一个字节表示执行状态后8字节为序列号举例snr=card(0);4pass( _Mode, _SecNr)说明验证某一扇区密码的函数参数说明_Mode是一个整数决定验证密码的方法_Mode=0: 用KEYSET0和KEYA验证_Mode=1: 用KEYSET1和KEYA验证_Mode=2: 用KEYSET2和KEYA验证_Mode=4: 用KEYSET0和KEYB验证_Mode=5: 用KEYSET1和KEYB验证_Mode=6: 用KEYSET2和KEYB验证_SecNr是一个整数为要验证密码的扇区号(0)返回成功则返回0举例用A密码和0套密码去验证扇区0st=pass(0,0);附加说明每张卡上有A密码和B密码可根据实际需要确定是否使用B密码这由卡的存取控制位来决定(由上面的表可参阅)此外读写器中可以存放三套密码以备读写器有多种用途,用来校验具有不同密码的卡可用load_key()来分别装入只有装入后才能使用验证密码函数验证5halt(void);说明中止卡操作函数参数无返回成功则返回0举例st=halt();附加说明使用card()函数时有个 _Mode参数,如果模式选择为0(IDLE),则在对卡进行读写操作完毕后执行halt(),则该卡进行halt模式只能当该卡离开操作区域并再次进入时读写器才能够再次操作它;如果为1ALL则可以对卡继续操作6readasc( _Adr);说明读函数一次必须读一个块,长度为16个字节参数说明 _Adr是一个整数为所读数据的地址_Adr=(0-63)返回成功则返回所读数据的第一个字符为'0',否则请参考错误值从第二个字符开始16个字节为该块的数据举例读块0中的数据并将数据存放在变量value中value=read(0);7readhex( _Adr);说明读函数一次必须读一个块,长度为16个字节参数说明 _Adr是一个整数为所读数据的地址_Adr=(0-63)返回成功则返回所读数据的第一个字符为'0',否则请参考错误值从第二个字符开始32个字节为该块用16进制表示的数据举例读块0中的数据并将数据存放在变量value中value=readhex(0);8writeasc( _Adr,_Data);说明写函数, 一次必须写一个块参数说明_Adr是一个整数为所写数据的地址_Adr=(1-63)_Data是一个字符串存放要写数据返回成功则返回0举例将存放在字符串data中的数据写到块1中st=write(1,data)9writehex(_Adr,_Data)说明写函数一次必须写一个块参数说明icdev: init 返回的设备描述符_Adr: 所写数据的地址1-63*_Data: 指向存放要写数据的地址,存放16个用16进制表示的字符,长度为32返回成功则返回0举例:st=writehex(1, "ffffffffffffffffffffffffffffffff");10incval( _Adr, _Value);说明增值函数参数说明_Adr是一个整数为所增值的地址_Adr=(1-63)_Value是一个整数为要增加的值长度为4字节返回成功则返回0举例块1增加数值value;st=incval(1,value);11decval( _Adr, _Value);说明减值函数参数说明_Adr是一个整数为要减值的地址_Adr=(1-63)_Value是一个整数为要减少的值长度为4字节返回成功则返回0举例块1减去数值valuest=decval(1,value);12initval( _Adr, _Value);说明初始化值函数参数说明_Adr是一个整数为要初始化值的地址_Adr=(1-63)_Value是一个整数为要初始化的值长度为4字节返回成功则返回0举例将块1的值初始化为valuest=initval(1,value);附加说明作为数值处理的块是以特殊格式存贮的所以必须用初始化值函数初始化初始化之后方可进行读减加的处理13readval(_Adr);说明读值函数参数说明 _Adr是一个整数为要读值的地址_Adr=(1-63)返回读出值整数举例读出块1的数值并存放在变量value中value=readval(1);14transf(_Adr);说明传送函数参数说明_Adr是一个整数为要传送的地址返回无举例将寄存器的内容传送到块1中st=transf(1);附加说明见restore()的附加说明15restore(_Adr);说明回传函数将_Adr地址的值传入卡的内部RAM参数说明_Adr是一个整数为要进行回传的地址返回无举例将块1的内容回传到寄存器中st=restore(1);附加说明用户可以用此函数将某一块内的数值传入内部RAM然后用transfer() 函数传送到另一块中去就达到了块与块之间数值传送的目的16loadkey(_Mode,_SecNr,Key);说明装入密码函数参数说明_Mode 同函数 pass()_SecNr 同函数 pass()Key包含了要写入硬件系统RAM中的卡密码返回成功则返回0举例Key=Chr(160)+Chr(161)+Chr(162)+Chr(163)+Chr(164)+Chr(165)st=loadkey(0,1,Key);17loadkeyh(_Mode,_ SecNr,Key);说明装入密码函数参数说明_Mode 同函数 pass()_SecNr 同函数 pass()Key包含了要写入硬件系统RAM中的卡密码返回成功则返回0举例Key="a0a1a2a3a4a5"st=loadkeyh(0,1,Key);18.beep(_Msec);说明蜂鸣函数使读写器发出蜂鸣声参数说明_Msec:蜂鸣时间的长短单位是10毫秒返回成则返回0举例 st=beep(10);/*鸣叫100毫秒*/19.light(_onoff);说明控制信号灯.参数说明_onoff:1亮灯,0灭灯返回成功则返回0举例st=light(1);/*信号灯亮*/20.dispstr(str);说明数码显示.参数说明str:要显示的字符串返回成功则返回0举例st=dispstr("12.345");/*显示1234.5*/CLIPPER 函数库.LIB1initcom(com,baud);说明初始化串口函数参数说明com 是一个整数, 0 表示串口一,1 表示串口二baud 是一个整数用来设置通信波特率0表示9600,1表示 115200返回调用成功则返回 0举例st=initcom(0,0);2closecom();说明恢复串口函数,退出程序时一定要使用该函数.参数说明无参数返回无举例exit();3card( _Mode,snr);说明寻卡函数能返回在工作区域内某张卡的序列号参数说明 _Mode是一个整数设置卡的模式可以是0(IDLE)或1(ALL),有关_Mode的说明请参阅halt()函数说明snr 是一个字符串返回成功则返回0举例st=card(0,snr);4auth( _Mode, _SecNr)说明验证某一扇区密码的函数参数说明_Mode是一个整数决定验证密码的方法_Mode=0: 用KEYSET0和KEYA验证_Mode=1: 用KEYSET1和KEYA验证_Mode=2: 用KEYSET2和KEYA验证_Mode=4: 用KEYSET0和KEYB验证_Mode=5: 用KEYSET1和KEYB验证_Mode=6: 用KEYSET2和KEYB验证_SecNr是一个整数为要验证密码的扇区号(0)返回成功则返回0举例用A密码和0套密码去验证扇区0st=auth(0,0);附加说明每张卡上有A密码和B密码可根据实际需要确定是否使用B密码这由卡的存取控制位来决定(由上面的表可参阅)此外读写器中可以存放三套密码以备读写器有多种用途,用来校验具有不同密码的卡可用load_key()来分别装入只有装入后才能使用验证密码函数验证5halt(void);说明中止卡操作函数参数无返回成功则返回0举例st=halt();附加说明使用card()函数时有个 _Mode参数,如果模式选择为0(IDLE),则在对卡进行读写操作完毕后执行halt(),则该卡进行halt模式只能当该卡离开操作区域并再次进入时读写器才能够再次操作它;如果为1ALL则可以对卡继续操作6read( _Adr,data);说明读函数一次必须读一个块,长度为16个字节参数说明 _Adr是一个整数为所读数据的地址_Adr=(0-63)data是一个字符串返回成功则返回0举例st=read(0,data);7readhex( _Adr,data);说明读函数一次必须读一个块,长度为16个字节参数说明 _Adr是一个整数为所读数据的地址_Adr=(0-63)返回成功则返回0举例st=readhex(0,data);8write( _Adr,_Data);说明写函数, 一次必须写一个块参数说明_Adr是一个整数为所写数据的地址_Adr=(1-63)_Data是一个字符串存放要写数据返回成功则返回0举例将存放在字符串data中的数据写到块1中st=write(1,data)9writehex(_Adr,_Data)说明写函数一次必须写一个块参数说明icdev: init 返回的设备描述符_Adr: 所写数据的地址1-63*_Data: 指向存放要写数据的地址,存放16个用16进制表示的字符,长度为32返回成功则返回0举例:st=writehex(1, "ffffffffffffffffffffffffffffffff");10incval( _Adr, _Value);说明增值函数参数说明_Adr是一个整数为所增值的地址_Adr=(1-63)_Value是一个整数为要增加的值长度为4字节返回成功则返回0举例块1增加数值value;st=incval(1,value);11decval( _Adr, _Value);说明减值函数参数说明_Adr是一个整数为要减值的地址_Adr=(1-63)_Value是一个整数为要减少的值长度为4字节返回成功则返回0举例块1减去数值valuest=decval(1,value);12initval( _Adr, _Value);说明初始化值函数参数说明_Adr是一个整数为要初始化值的地址_Adr=(1-63)_Value是一个整数为要初始化的值长度为4字节返回成功则返回0举例将块1的值初始化为valuest=initval(1,value);附加说明作为数值处理的块是以特殊格式存贮的所以必须用初始化值函数初始化初始化之后方可进行读减加的处理13readval(_Adr,data);说明读值函数参数说明 _Adr是一个整数为要读值的地址_Adr=(1-63)data是一个字符串返回成功则返回0举例value=readval(1,data);14loadkey(_Mode,_SecNr,Key);说明装入密码函数参数说明_Mode 同函数 auth()_SecNr 同函数 auth()Key包含了要写入硬件系统RAM中的卡密码返回成功则返回0举例Key=Chr(160)+Chr(161)+Chr(162)+Chr(163)+Chr(164)+Chr(165)st=loadkey(0,1,Key);15loadkeyh(_Mode,_ SecNr,Key);说明装入密码函数参数说明_Mode 同函数 auth()_SecNr 同函数 auth()Key包含了要写入硬件系统RAM中的卡密码返回成功则返回0举例Key="a0a1a2a3a4a5"st=loadkeyh(0,1,Key);16.beep(_Msec);说明蜂鸣函数使读写器发出蜂鸣声参数说明_Msec:蜂鸣时间的长短单位是10毫秒返回成则返回0举例 st=beep(10);/*鸣叫100毫秒*/17.light(_onoff);说明控制信号灯.参数说明_onoff:1亮灯,0灭灯返回成功则返回0举例st=light(1);/*信号灯亮*/! 32位Windows库.DLL函数错误代码返回值负数错误类型0x1016通讯错误0x1117超时错误0x2032打开端口错误0x2133获得端口参数错误0x2234设置端口参数错误0x2335关闭端口出错0x2436端口被占用0x3048格式错误0x3149数据格式错误0x3250数据长度错误0x4064读错误0x4165写错误0x4266无接收错误0x5080不够减错! FoxPro for Dos函数库.PLB特殊函数错误代码readasc,readhex,card 三个函数返回值是字符串其中第一个字符表示执行的状态返回值字符类型0x2F47/通讯错误0x30480执行成功0x31491没有卡在范围内0x34524校验错误0x3A58:卡没有校验0x3F63?写错误0x4064@加错误0x4165A减错误0x4266B读错误0x4E78E数据格式错误! C语言及FoxPro for Dos函数库.PLB普通函数错误代码返回值类型-1 初始化串口错0xFF255通讯错误0x0 0执行成功0x1 49没有卡在范围内0x4 52校验错误0x1058卡没有校验0x1563写错误0x1664加错误0x1765减错误0x1866读错误0x1E30数据格式错误。

射频IC卡读写器的设计开发

射频IC卡读写器的设计开发

[收稿日期]20080301 [作者简介]陈晓静(1980),女,2001年大学毕业,讲师,现主要从事智能化仪器仪表方面的研究工作。

射频IC 卡读写器的设计开发 陈晓静 (长江大学电子与信息学院,湖北荆州434023) 荣 峰 (四机赛瓦石油钻采设备有限公司,湖北荆州434023)[摘要]介绍了以MFRC500为基站芯片,以MIFARE1射频IC 卡为读写对象,以A T89S51单片机为控制器的射频IC 卡读写器设计方法。

详细阐述了读写器系统设计的重点和难点———软件部分的设计流程和主要函数实现的工作原理,并且在最后给出调试方法及观察到的波形。

经实践证明,读写器软硬件设计均正确,具有实际借鉴价值。

[关键词]射频IC 卡;单片机;MFRC500;MIFARE1卡[中图分类号]TP311151[文献标识码]A [文章编号]16731409(2008)02N10903 射频IC 卡具有免接触和便于实现一卡通等优良特性,在停车场管理、门禁管理和公交收费等需要身份识别和电子货币的场合中得到了广泛应用。

射频IC 卡读写器作为IC 卡读写的重要设备,对其进行研制具有现实意义。

笔者将以M FRC500[1]为基站芯片,以M IFARE1[2]射频IC 卡为读写对象,以A T89S51单片机[3]为控制器构建射频IC 卡读写器。

1 系统组成和无线通信过程介绍图1为射频IC 卡读写器设计框图。

IC 卡读写器的控制芯片是A T89S51单片机,单片机以M FRC500为通信基站来与M IFARE1卡进行通信。

另外,单片机也可以通过RS 2485、U SB 或者无线传输等接口与上位机进行通信,还可以配备键盘和显示器作人机接口。

滤波和阻抗匹配电路的形式和具体参数都可以查阅M FRC500的数据手册得到。

天线也有多种设计方法如环形、圆形等,一般手持式的读写器可使用环形天线,读写距离最大可达10cm 。

M FRC500和卡的通信过程采取半双工方式,单片机向卡发送的读写等命令首先要经过M FRC500调制,再经高频滤波和阻抗匹配电路,通过天线把电能转换成电磁波被MIFARE1卡接收。

射频卡读写器设计原理分析

射频卡读写器设计原理分析

Abtat a i e un ycr , l a e o — n c y S ad to s o p t c nlg , s c :R do ̄ q ec a as cH dnnc t t t eI r.Iji m ue t h o y r d o o a s l C’ c nc re o
p roma c . RF a d r a e i n efc vc e te c mp t r whih s nd h c r are n e rn e f c r e d r s i tra e de ie wh n h o u e c e s t e a d c ris o c re p n i g o e a in t a d.Isf n t n i i l rt o u e e o d r T i a e ay e e o r s o d n p r t o RF c r o t u c o ssmia o a c mp trr c r e . h sp p ra l z st i n h d sg i cp e a d a p iai n o a d r a e a ig t e RF c r e d r mo e n u ba l. e in prn i l n p lc to f RF c r e d r by t kn a r a e d li r n a1 h d p ro ec r u p s ad.
文 章 编 号 :09— 5 2 2 1 )0—02 0 10 2 5 (00 1 12— 2
射 频 卡 读 写器 设 计 原 理 分 析
姜 波
( 黑龙江省 电子信息产品监督检验 院 ,哈尔滨 109 ) 50 0

要 :射频 卡 ,又称非接 触 式 I ,智 能卡 。它把 计 算机技 术、射 频技 术与微 电子技 术 结合 c卡

浅谈公交IC卡读写器的应用及设计

浅谈公交IC卡读写器的应用及设计

浅谈公交IC卡读写器的应用及设计摘要:采用PHILIPS公司的Mifare卡作IC卡,设计以射频技术为核心,以单片机为控制器的IC卡读写器在公交自动收费系统中的应用。

具有安全、实用、方便、快捷、可靠性高的特点,解决了城市公共交通服务行业既频繁又琐碎的收费管理问题,有广泛的应用前景。

关键词:单片机非接触式IC卡读写器一、IC卡读写器概述目前经常接触到的IC卡有两种:接触式的和非接触式的IC卡.目前在社会上常见的是接触式IC卡。

它具有存储量大(以兆为单位),保密功能强(有多重密码设置和认证功能),可实现一卡多用。

但是,这类卡的读写操作速度较慢,操作也不方便,每次读写时必须把卡正确地插入到读写器的口槽才能完成数据交换,这样,在公交、考勤等需要频繁读写卡的场合就很不方便,而且读写器的触点和卡片上IC卡的触脚暴露在外,容易损坏和被污染脏而造成接触不良。

非接触式IC卡根据射频电磁感应原理产生的,它的集成电路不向外引出触点,它除了有上述接触式IC卡的电路外,还带有射频收发电路及其相关电路。

非接触型IC卡也称为射频卡。

因此,在公交、门禁、校园、企事业等人事管理、娱乐场所等方面开始得到广泛的应用。

下面以PHILIPS公司的Mifare卡为主、介绍城市公交自动售票IC卡读写器的实现方法。

二、工作原理非接触式IC卡读写器以射频识别技术为核心,读写器内主要使用了1片Mifare卡专用的读写处理芯片--MMM微模块。

它是一个小型的最大操作距离达20~30mm的Mifare读/写设备的核心器件,其功能包括调制、解调、产生射频信号、安全管理和防碰撞机制。

这是与射频卡实现无线通信的核心模块,也是读写器读写Mifare卡的关键接口芯片。

在这个电容另一端,接有一个单向导电的电子泵,将电容内的电荷送到另一个电容内存储。

当电容器充电达到2V时,此电容就作为电源为卡片上的其他电路提供工作电压,将卡内数据发射出去或接收读写器发出的数据并保存。

射频识别系统读写设备基本原理简介

射频识别系统读写设备基本原理简介

射频识别系统读写设备基本原理简介[摘要]本篇文章重点介绍了射频识别系统读写设备的实现原理。

射频标签读写设备是射频识别系统的两个重要组成部分(标签与读写器)之一。

射频标签读写设备根据具体实现功能的特点也有一些其他较为流行的别称,如:阅读器(Reader),查询器(Interrogator),通信器(Communicator),扫描器(Scanner),读写器(Reader and Writer),编程器(Programmer),读出装置(Reading Device),便携式读出器(Portable Readout Device),AEI 设备( Automatic Equipment Identification Device)等。

通常情况下,射频标签读写设备应根据射频标签的读写要求以及应用需求情况来设计。

随着射频识别技术的发展,射频标签读写设备也形成了一些典型的系统实现模式,本章的重点也在于介绍这种读写器的实现原理。

从最基本的原理角度出度,射频标签读写设备一般均遵循如图所示的基本模式。

读写器即对应于射频标签读写设备,读写设备与射频标签之间必然通过空间信道实现读写器向射频标签发送命令,射频标签接收读写器的命令后做出必要的响应,由此实现射频识别。

此外,在射频识别应用系统中,一般情况下,通过读写器实现的对射频标签数据的无接触收集或由读写器向射频标签中写入的标签信息均要回送的应用系统中或来自应用系统,这就形成了射频标签读写设备与应用系统程序之间的接口API(Application Program Interface)。

一般情况下,要求读写器能够接收来自应用系统的命令,并且根据应用系统的命令或约定的协议作出相应的响应(回送收集到的标签数据等)。

读写器本身从电路实现角度来说,又可划分为两大部分,即:射频模块(射频通道)与基带模块。

射频模块实现的任务主要有两项,第一项是实现将读写器欲发往射频标签的命令调制(装载)到射频信号(也称为读写器/射频标签的射频工作频率)上,经由发射天线发送出去。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、简介
射频IC卡读写器,属于读写IC卡的RFID射频技术机具设备,根据卡片类型的不同,分为接触式、非接触式、双界面读卡器。

接触式IC卡读写器基本遵循ISO7816协议的国际标准,非接触式的则遵循ISO14443或者15693协议接口标准。

读写器一般通过通讯线连接接到电脑,通讯方式以USB接口为主(分有驱和无驱),RS232和RS485接口的读卡器,仍然具有一定的用户数量。

二、技术参数举例
型号:LTXHFUSB-02
工作频率:13.56MHz;
IC卡读写器支持协议:ISO14443A;
通讯接口:USB接口,操作简单,可以当作串口操作;
读卡距离:小于10cm;
支持卡类型:mafare 1 S20,mafare 1 S50, mafare 1 S70,ISO14443 TypeA等;
工作电压:直流5V(USB直接取电);
工作电流:<100mA;
工作模式:用户可自己设置成主动读卡模式和被动读卡模式;
功能:支持读卡号ID,读写卡,扇区加密,增值减值(钱包)等;
工作温度:-30℃-80 ℃;
外观尺寸:143×110×28mm;
串口波特率:可选,默认9600Bit/S;
操作系统:Windows 98、2000、2003、XP、Windows 7/8、Linux、Andriod等;
显示:双色LED;
蜂鸣器:内置。

三、使用说明
1、通讯接口要满足项目的需求;
2、读卡器设备的频率,要满足项目使用的频率规范;
3、了解读距和防碰撞指标,读距指标要明确什么天线和标签下测试的;防碰撞要明确什么标签在什么排列方式下多长时间内全部读完;
4、模拟情况下连续测试设备的稳定性,确保能长时间的稳定工作;
5、了解读卡器的最大发射功率和配套选型的天线,是否辐射超标;
6、看读卡器具备的天线端口数量,根据应用是否需要多接口的读写器;
7、一个RFID应用系统除了和读写器有关外,还和标签、天线、被贴标物品材质、被贴标物品运动速度、周围环境等相关,在确定设备前最好能模拟现场情况进行测试和验证,确保产品真是能满足应用需求。

四、读卡距离
影响射频IC卡读写器读卡距离的因素较多,因采用不同的协议,不同的天线设计、周围的环境(主要是金属物)和不同的卡片等,都会影响到实际的读卡距离。

如果读卡器读卡距离过长,会造成读卡不稳定或失败。

同时过近的两个读卡器也会互相干扰,读卡器之间的距离保持在25cm以上。

读卡的方式,建议用卡片正对着读卡器自然靠近,用卡片从侧面快速划过的读卡方法不可取,不保证刷卡成功。

五、实物图举例。

相关文档
最新文档