版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、更多相关参考论文设计文档资源请访问毕业生毕业设计(论文)基于射频卡的多用户识别单元软件设计Software Design of Multi-user Identification Unit Based on the RF IC总 计: 27 页表 格: 10 个插 图 : 8 幅学 院(系): 电子与电气工程系 专 业: 电子信息工程 基于射频卡的多用户识别单元软件设计 摘 要本软件设计能够实现对非接触式IC卡进行读写的基础上进行多用户的识别。针对系统硬件设计,整个系统的软件设计主要包括主程序的设计、读卡器应用程序的设计、单片机控制电路的应用程序设计三个部分,每一部分都给出了具体程序并对程序进
2、行了详细的说明。关键词IC卡;非接触;射频识别;读卡器 Software Design of Multi-user Identification Unit Based on the RF ICAbstract: The software system is designed to implement to multi-user identification based on reading and writing of the contactless IC card. For the hardware design system,the entire software design syste
3、m includes programing of main program、programing of IC card reader and programming of MCU circuit .All these programs are presented and remarked.Key words: IC Card;Contactless;RFID;Card Reader目 录1 引言11.1 课题背景11.2 本课题的任务12 非接触式IC卡识别技术22.1 非接触式IC卡技术22.2 射频识别技术32.2.1 系统管理层32.2.2 接口层32.2.3 从动应答子系统(应答器)4
4、3 基于MIFARE非接触式IC卡的多用户识别单元的软件设计43.1 主程序设计43.1.1 工作流程43.1.2 主程序设计53.2 读卡器应用程序设计63.2.1 MFCM200指令63.2.2 MFCM200 指令程序设计73.3 单片机控制电路的应用程序设计113.3.1 LED状态显示程序设计113.3.2 蜂鸣器驱动程序设计123.3.3 RS232通信程序设计123.3.4 看门狗程序设计14结束语17参考文献17附录18致谢27本参考设计材料,包含项目源代码,设计说明书、任务书、报告书以及文献参考翻译等,完整的设计文件及源代码,资料请联系68661508。索要或访问更多相关参考
5、论文设计文档资源请访问1 引言1.1 课题背景 智能卡的名称来源于英文名词“Smart card”,又称集成电路卡,即IC卡(Integrated Circuit Card)。它将一个集成电路芯片镶嵌与塑料基片中,封装成卡的形式,其外形与覆盖的磁条相似。 IC卡的概念是70年代初提出来的,法国布尔(BULL)公司与1976年首先创造出IC卡产品,并将这项技术应用到金融、交通、医疗、身份证明等多个行业,它将微电子技术和计算机技术结合在一起,提高了人们生活和工作的现代化程度。 当前,用于信息处理的卡片种类繁多,而且基本上都采用了较新的技术,IC卡脱颖而出的原因在于它对与磁卡、PET卡、关卡和凸字卡
6、等其它种类的卡具有一下突出的特点:(1)存储容量大,其内部有RAM、ROM 、ROM、EEPROM等存储器,存储容量可以达到几兆甚至十几兆字节;(2)体积小、容量轻、抗干扰能力强、便于携带;(3)安全性高。IC卡从硬件和软件等几个方面实施其安全策略,可以控制卡内不同区域的存取特性。存储器本身具有控制密码,非法试图对之解密则卡片自毁,即不可进行读写;(4)对网络的要求不高。IC卡极高的安全可靠性使其在应用中对计算机网络的实时性、敏感性要求低,有利于在网络质量不高的环境中应用。正是由于这些特点,使得IC卡从诞生至今虽然只有短短数年,但其市场却遍布世界各地。IC卡目前已在商贸、交通、电信、医疗、卫生
7、保健、金融、税务、工商、公安、组织机构代码和城市公共事业管理等许多领域得到广泛应用,并取得了初步的社会和经济效益。它对提高现代化管理水平和人民的生活质量,推动整个社会信息化进程有重要作用。本课题正是在这种环境下提出的。1.2 本课题的任务非接触式多用户识别系统通过射频信号传输完成卡片、读卡器等设备之间的数据交换,实现多目标识别的功能。系统主要由控制器(PC机等)、读卡器终端和非接触式智能卡(A型或B型)组成。通常,读卡器与控制器之间通过串口进行通信,读卡器与智能卡之间通过高频接口,在某工作频率(如13.56MHz)下、以半双工方式传输数据。多用户射频识别系统实现的关键是一个非接触式IC卡读写器
8、的设计,它必须能够执行防重叠选择,读卡模块通过和上位机通信(RS232串口),由PC程序对选中的卡执行读卡命令,然后按照防重叠机理,执行多卡的读卡程序,完成多用户的识别。非接触式IC卡读卡器结构框图如图1所示。在本课题中,非接触式IC卡读卡器的设计是根据ISO14443 TypeA协议,并通过非接触式IC卡读写器核心读写模块MFCM200和单片机来实现的,主要侧重于软件的设计,整个系统的软件设计主要包括三个部分,即主程序的设计、读卡器应用程序的设计、单片机控制电路的应用程序设计。对读卡器应用程序的设计既是对MFCM200操作指令的程序设计;单片机控制电路的应用程序的设计包括LED状态显示程序设
9、计、蜂鸣器程序设计、RS232通信程序设计以及看门狗程序设计。该读卡器具有以下特点:(1)典型读写距离为20-25MM(2)配有RS232通讯接口,便于同上位机通讯(3)小巧,价格便宜图1 非接触式IC卡读卡器结构框图2 非接触式IC卡识别技术非接触式IC卡是射频技术与IC卡技术相结合的产物,它与接触式IC卡的最大区别是它没有机械触点,通过无线方式与读写设备进行通信,它成功解决了卡内无源和免接触这一难题。2.1 非接触式IC卡技术目前国际是具有代表性的两大非接触式IC卡技术是LEGIC技术和MIFARE技术。LEGIC技术是由瑞士KABA公司提供的非接触式IC卡读写技术,MIFARE技术是由P
10、HILIPS公司提供的非接触式IC卡读写技术。MIFARE技术是采用13.56MHZ的近距离非接触式IC卡通讯频率标准,在通讯安全上采用符合ISO9798国家标准的3次互感校验技术,以对卡和读写设备的合法性进行相互校验;在数据通讯上采用DSA算法对通讯数据进行加密,以确保卡上的数据不被非法的修改。MIRARE采用密码读写控制方式,即读写设备的监控程序要掌握相应的系统密码才能对IC卡内的数据进行不同操作(如读、写、增值、减值等)。其读写模块与监控计算机之间采用符合单片机外部总线标准的并行标准,读写过程可由监控程序逐步控制。在防冲撞功能上,MIFARE允许多卡同时进入读写范围,再由读写设备逐一处理
11、。2.2 射频识别技术射频识别技术是在射频技术、通信技术、计算机技术等现代信息技术发展的基础上与20世纪80年代中期问世的。自出现以来,由于它极大加速了信息的收集和处理,近年来获得迅速的发展。自传统的条码或磁条识别技术相比,射频识别技术具有非接触、作用距离远、精度高、信息的收集和处理快捷灵活及较好的应用环境适应性等一系列的优点,在工业自动化、商品控制、交通运输控管等众多领域得到广泛的发展。一个完整的射频识别系统通常包括两个部分,一是主动询问子系统(寻呼器),二是从动应答子系统(应答器)。其中主动询问子系统从基本功能上又可分为两个层次:系统管理层和接口层。从动应答子系统就是通常意义的用户射频识别
12、IC卡,即非接触式IC卡。射频识别系统的结构框图如图2所示。图2 多用户射频识别系统的结构框图2.2.1 系统管理层系统管理层一般设于IC卡发放、管理部门。主要负责射频IC卡的几种管理,完成IC卡内相关信息的处理,如读卡、写卡、卡内信息修改、IC卡注销、IC卡信息查询、打印、数据统计等等。另外,系统管理层还负责IC卡内信息的安全保密。系统管理层主机可为通用PC机、工作站或服务器等。2.2.2 接口层接口层负责射频识别IC卡和管理主机的信息交换和传输,其功能通常由非接触式IC卡读卡器或IC卡应用终端具体实现。接口层主要负责完成以下主要功能:IC卡进出控制、IC卡电源供给(对于无源非接触式IC卡)
13、、IC卡与应用终端之间信息联络与处理及与管理层主机通讯等。 非接触式IC卡读卡器通常包括收发模块、控制模块(单片机)、主控机和单片机之间的接口模块以及天线系统。相应涉及到射频无线收发技术、天线技术、单片机信息处理和控制技术。2.2.3 从动应答子系统(应答器)从动应答子系统即非接触式IC卡,是整个射频识别系统中关键的组成部分。通常应答器由耦合元件以及微电子芯片组成。应答器的主要组成、功能及应用特点如下:(1)具有信息存储、处理能力,它是射频识别系统真正的数据载体;(2)可接收、发射无线信号、外围器件少、功耗低、能在低电压下工作;(3)依据不同需要具有天线、射频/微波探测器、调制器、解调器、控制
14、逻辑及存储器等部件;(4)有的应答器具有电池或外接电源,有的没有电源,有寻呼器通过无线方式对其供电,其中无内部电源的应答器在非接触式IC卡上应用较多;(5)体积小巧、结构多样、有圆形、方形、笔形及片形等多种形状,适合不同应用;(6)多种工作距离。3 基于MIFARE非接触式IC卡的多用户识别单元的软件设计软件设计分为三部分,即主程序的设计、读卡器应用程序的设计、单片机控制电路应用程序设计。读卡器应用程序的设计即是对MFCM200操作指令的程序设计;单片机控制电路应用程序的设计包括LED状态显示程序设计、蜂鸣器程序设计、RS232通信程序设计以及看门狗程序设计。本课题中使用C语言进行程序设计,开
15、发环境采用Keil C51 V6.12。3.1 主程序设计3.1.1 工作流程 读卡器对MIFARE 卡片的完整操作过程,主要包括复位请求、防重叠、选卡、相互验证、读写卡、中止等操作。其执行顺序必须依次进行,不能颠倒。下面介绍对Mifare1卡的每一步操作。读卡器对MIFARE 卡片的操作流程如图3所示:(1)复位请求:当一张Mifare卡处在卡读写器的天线工作范围之内时。MCU将通过MFCM200发送一个复位请求,复位请求有两种,一种是request all,这指令是非连续性的读卡指令,只读一次;另一种是request std,这是连续性的读卡指令。当卡片收到该指令后,卡片内的ATR将启动。
16、并将卡片的Block 0中的卡片类型(TagType)号共2个字节传送给读卡器,从而建立卡片与读卡器的第一步通信联络,完成复位过程。 (2)防重叠:如果有多张Mifare卡片处在卡片读写器的天线工作范围之内,MFCM200能检测出来并通知到MCU。此时MCU通过防重叠算法来与每一张卡进行通讯。由于每一张Mifare卡片都具有其唯一的序列号而决不会相同,因此,MCU根据卡片的序列号来保证一次只对一张卡进行操作。(根据ISO14443协议,M1型卡传统的防重叠突算法是动态二进制检索树算法。它首先利用MANCHESTER编码“没有变化”的状态来检测碰撞位,然后把碰撞位设为二进制“1”,用SELECT
17、命令发送重叠前接收的部分卡片序列号和碰撞位,如果卡片开头部分序列号与其相同,则做出应答,不相同则没有响应。以此来缩小卡片范围,最终达到无重叠。)(3)选卡:通过以上两步以后,MCU选取一张卡的序列号进行通讯,即选卡。(4)相互验证:选定要处理的卡片之后,MCU确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,必须进行另一扇区密码校验。)(5)读写卡:读写操作是对卡的最后操作,包括读(Read)、写(Write)、增值(Increment)、减值(Decrement)、重储(Restore)和传送(Transfer)等操作。(6)中止
18、:当一系列的操作完成后,MCU发送一个停机命令给卡片,使其退出工作。图3 读卡器对MIFARE卡片的操作流程图3.1.2 主程序设计在非接触式IC卡读卡器程序设计中,主程序中包含了一个无限循环,读卡器对卡的所有操作都放在这个无限循环中,循环外只有读卡器初始化子程序。读卡器主程序框图如图4所示。图4 读卡器主程序框图主程序以调用读卡器初始化子程序开始,接着进行复位应答、防重叠、选择卡片、三次相互验证、读写卡等对卡片的操作以及显示等人机互操作,然后执行停机指令,完成对一张卡片的操作,之后进入下一个同样的循环。3.2 读卡器应用程序设计3.2.1 MFCM200指令 MCU对MIFARE非接触式IC
19、卡的控制是通过MFCM200来实现的,MFCM200是MCU和MIFARE非接触式IC卡之间的通信载体。MCU对MFCM200的控制是以MCU发出MFCM200的指令来达到的,MFCM200收到这些指令之后将执行这些指令。 MFCM200的指令主要有这样一些:Request std,Request all,Anticollision,Select,Load_Key,Authentication(Auth_la,Auth_lb),Read,Write,Increment,Decrement,Restore,Transfer,Halt等等。其中比较重要的是前8条指令,以及Halt停机指令等。MCU
20、 对MFCM200的某一指令操作不是简单的一条指令所能完成的,必须有一个程序的序列来完成,其中有MFCM200硬件内核寄存器的读与写以及根据读出的硬件内核寄存器的内容进行语言软件上的判断和设置。就连一条最简单的停机(Halt)指令也必须首先对MFCM200内部的诸多寄存器进行设置。不同的指令将设置不同的MFCM200内部寄存器以及应有不同的编程语言程序序列。3.2.2 MFCM200 指令程序设计MFCM200具体指令说明及程序设计如下:(1)“Answer to Request”(“Request”应答或复位应答)指令a 指令说明,如表1所示表1 复位应答指令指令 指令代码(hex)相关的出
21、错标志接收卡片上数据Answer to Request TE,BE TagtypeRequest std 26Request all 52Request指令将通知MFCM200在天线有效的工作范围(距离)内寻找MIFARE卡片。如果有MIFARE卡片存在,这一指令将分别与MIFARE卡片进行通信,读取MIFARE卡片上的卡片类型号TAGTYPE(2个字节),由MFCM200传递给MCU,进行识别处理。Request指令分为Request std 和Request all指令。 Request all指令是非连续性的读卡指令,只读一次,它可以防止MFCM200选择同一张卡片好几次。当某一张卡片在
22、MFCM200天线的有效工作范围(距离)内,Request all指令在成功读取这一张卡片之后,将一直等待卡片的使用者拿走这一张卡片,直到有新一张的卡片进入MFCM200之天线的有效工作范围(距离)内。当然,这里的“新一张的卡片”亦可以是刚刚拿开的那张卡片。Request std指令的使用和Request all指令刚巧相反,Request std指令是连续的读卡指令。当某一张卡片在MFCM200天线的有效工作范围(距离)内,Request std指令在成功地读取这一张卡片之后,进入MFCM200对卡片的其他操作。如果其他操作完成之后,又将MFCM200进入Request std指令操作,则R
23、equest std指令将连续性地再次进行读卡操作,而不管这张卡片是否被拿走。只要有一张卡片进入MFCM200之天线的有效工作范围(距离)内,Request std指令将始终连续性地再次进行读卡操作。b 指令程序设计,具体程序见附录。(2)“AntiCollision”防重叠指令a 指令说明,如表2所示表2 防重叠指令 指令指令代码(hex)相关的出错标志接受卡片上数据AntiCollision(防重叠) 93TE,BE Serial Number 如果有多于一张的MIFARE卡片在MFCM200之天线的有效的工作范围(距离)内,必须使用AntiCollision指令,使MCM能够在这一叠MI
24、FARE卡片中选择个别的一张卡片。 AntiCollision指令开始与一个“AntiCollision loop”(防重叠循环)。结束时,AntiCollision指令将提供给用户在这些卡片叠中选择的那张卡片的一个有效的40bit长的序列号SN(serial number),SN前四个字节是有意义的,第5个字节仅仅用于校验之用,而获得SN之后,一般地应在程序中对所接收到的SN进行校验,以确保数据的正确性。AntiCollision指令的启动必须是在完成了对STACON寄存器中的AC位的成功的设置之后。b 防重叠流程图如图5所示。图5 防重叠程序流程图在读写器天线所覆盖的范围之内有多个标签存在
25、时,读写器发送命令后,会引起响应冲突,从而导致通信失败。当读写器检测到冲突后,可使用命令来处理存在的冲突。通过发送命令可以记录读写器天线覆盖范围内的标签的UID(用户识别信息),然后利用UID的唯一性,读写器和各个标签分别建立独立的通道进行通信,从而消除冲突。读写器首先发送命令给标签,在命令的数据域和参数域中分别包含UID的掩码和掩码的长度,传送给标签的掩码要求是整字节,如果此掩码不是整字节的话将自动在高位补零。通过设置标志域的相应标志位,读写器可以设置接收标签响应的时隙为3或6,在各时隙中,读写器都可以接收标签返回的UID,读写器通过发送结束信号的UID和当前时隙序号的最低4bit加命令数据
26、域中的掩码进行比较,如果不匹配则无应答,如果匹配将送回自己的UID。在某一时隙可能出现多个标签同时做出响应,这时读写器要记下冲突的标签掩码和时隙计数器的值,以做进一步冲突处理。c 指令程序设计,具体程序见附录。(3)”Select Tag”选择卡片操作 a 指令说明,如表3所示表3 选择卡片指令 指令指令代码(hex)相关的出错标志接受卡片上数据Select Tag(选卡片) 93TE,BE,PE,CE Size在一个成功的AntiCollision指令之后,或在任何时候当程序员想实际地与已知序列号的卡片进行通信时,必须使用Select指令,以建立与所选卡的通信。Select指令成功地完成后,
27、MCU将得到MFCM200的DATA寄存器传送来的一个字节长的卡片容量信息-SIZE字节。b 指令程序设计,具体程序见附录。 (4)“Authentication”认证操作 a 指令说明,如表4所示表4 认证指令指令 指令代码(hex)相关的出错标志接收卡片上数据Authentication(认证) TE,BE,PE,CE / Auth_1a 60 Auth_1b 61在MCU将运算获得的数据准备存储到卡片上的存储器之前,或MCU希望能读取MIFARE卡片上的数据之前,程序员必须证明他的读/写请求操作是被允许的。这可以通过选择秘密地存储在MFCM200之RAM中的密码集(KEYSET)中的一组
28、密码来进行认证而实现。如果这一组密码与MIFARE卡片上的密码匹配,这一次的操作被允许进行。卡片上的存储器的每一个bolck(块)(128 bits)都分别指定了该BIOCK(块)的存取条件。这些条件是根据密码A或B(它们对整个sectors(扇区)始终有效)而定。MCU能够存储3个密码集KEYSET0,KEYSET1,KEYSET2。每一个KEYSET又包含了KEY A及KEY B等,以存取最高达32kbit内存容量的MIFARE卡片。用户必须在KEYSTACON(0BH地址)寄存器中指定一套密码,即设置KS0,KS1。如表5所示。表5 MFCM200密码集KS1KS0=00选择KEYSET
29、0KS1KS0=01选择KEYSET1KS1KS0=10选择KEYSET2KS1KS0=11选择KEYSET3 KEYADDR寄存器(0CH地址)中的AB位用于选择KEYA (当AB=“1”时)和KEYB(当AB=“0”时)。如表6所示。表6 KEYA、KEYB选择表AB=”1”选择KEYAAB=”0”选择KEYB KEYADDR寄存器(地址0CH)中的“AB”设置必须匹配“Authentication”命令(指令代码60和61hex),即,在“Authentication”命令中,60h代码用于认证KEYA;61H代码用于认证KEYB。b 指令程序设计,具体程序见附录。(5)“Load KE
30、Y”存取密码a 指令说明,如表7所示表7 存取密码指令 指令指令代码(hex)相关的出错标志接受卡片上数据Load KEY(存取密码) / AE / 在MFCM200中,每一个认证扇区(Authentication sector)中包含了一套传输密码TKEY(one transportation KEY )。这些密码在制造产品时,可以编程。它们可以被传输到系统的集合器(例如,用户开发的硬件系统)中,集合器负责存取新的用户定义的密码到MFCM200-WOM(密码只读存储器)中。此时,可以通过“Load KEY”指令来完成任务。对于一个单独扇区(sector)中的密码提取,则相应的传输密码必须被预
31、先指定。 b 指令程序设计,具体程序见附录。(6)“Read”读指令操作a 指令说明,如表8所示表8 读指令指令指令代码(hex)相关的出错标志接受卡片上数据Read(读) 30 TE,BE,PE,CE DataRead(读)指令允许MCU通过MFCM200来读取MIFARE卡片上完整的16个Bytes的数据块(Data blocks)b 指令程序设计,具体程序见附录。(7)“Write”写指令操作a 指令说明,如表9所示表9 写指令指令指令代码(hex)相关的出错标志接受卡片上数据Write(写) A0 TE,BE /“Write”写指令允许用户写数据到MIFARE卡片上(完整的16个Byt
32、es的数据块(DATA blocks))。只有在先“Authentication”认证指令完成后,才允许进行对要求的数据扇区或数据块(Block)进行“Write”写指令操作。b 指令程序设计,具体程序见附录。(8)“Halt”停机指令a 指令说明,如表10所示表10 停机指令指令指令代码(hex)相关的出错标志接受卡片上数据Halt(停机) 50 TE,BE /“Halt”停机指令将MIFARE卡片设置为“HALT MODE”。例如,卡片已经退出使用等。卡片将保持“HALT MODE”状态,直到被复位(例如:重新用于通信等)。b 指令程序设计,具体程序见附录。3.3 单片机控制电路的应用程序
33、设计单片机控制电路的应用程序设计包括LED状态显示程序设计、蜂鸣器驱动程序设计、RS232通信程序设计和看门狗程序设计四部分。3.3.1 LED状态显示程序设计LED状态显示程序设计比较简单,只需让MCU的P2.2I/O口输出“1”电位或者“0”电位,导通或截止晶体管即可使LED灯亮或熄。电路中的红灯为读卡器上电指示灯,读卡器上电红灯就亮,绿灯用于读卡器对卡操作成功指示,每次读卡器对卡操作成功,绿灯亮,程序主要控制读卡器中的绿灯。LED状态显示程序如下:Void led_on()P2_2=1;void led_off()P2_2=0;3.3.2 蜂鸣器驱动程序设计要让蜂鸣器发出声音,必须要让晶
34、体管不断ON/OFF交互变化,即P2.3不断的输出“1”电位和“0”电位。如果P2.3输出一直是“1”电位或一直是“0”电位,则蜂鸣器则将无法发出声音。程序设计除了要让蜂鸣器能够发出声音之外,还要让蜂鸣器能够连续发出不同音长及音调的声音,使蜂鸣器能够基于不同功能发出不同的报警信号。下面是蜂鸣器驱动子程序。参数说明 :count:发出声音的个数 soundlong:音长,声音的长短tone:音调,声音的高低,以KHz为单位void beep(unsigned char count,unsigned char soundlong,unsigned char tone)uchar idata i,j
35、,k,spfreg;spfreg=(1000/tone)/2;/方波的半周期转换方式,以KHz为单位for (i=0;i<count;i+)/发出声音个数循环 for(j=0;j<soundlong;j+)/音长循环for(k=0;k<spfreg;k+)P2_3=0;for(k=0;k<spfreg;k+)P2_3=1;delay_50us(2000);/每发出一个声音延迟100ms3.3.3 RS232通信程序设计(1) 通信协议设计本通信协议的设计思想是基于帧传输方式,即在向串口发送命令信号,应答信号和数据信号时是按帧的格式发送的。为了使数据快速可靠地传输,将每一
36、帧数据唯一对应一个命令帧,此时传输数据即执行命令具体如下:a 在PC读数据时,遵循“读命令-等数据-报告”,即PC下达一个命令,等待接收数据,再根据所接收数据正误向应用程序报告此命令的执行情况。b 在PC写数据时,遵循“写命令-等回应-报告”即PC下达一写命令(此时所要写的数据含于此命令中),等待MCU发来的已正确接收的回应信号,并向应用程序报告此命令执行完毕。c 如果在传输过程中PC或MCU所接收的任何一帧信号出现错误时,均会向对方发送重发此帧信号的请求,如果连续三次传输失败,则退出通信并向程序报告。(2) 通信程序设计a MCU串口初始化Void com_init()TMOD =0x20;
37、PCON =0x80;TH1 =0xfd;TL1 =0x00;SCON=0X50;TR1 =1;T1 =0;R1=0;b MCU串口通信程序流程图MCU串口通信程序流程图如图6所示。当串口接收到一帧数据,如果此帧数据正确,则会继续执行,如果是读命令,那么分析这个命令并开始执行,然后发数据帧,并退出等待下一帧命令;如果是写命令,则分析并取出数据信息,发正回应信号帧,然后退出等待下一帧命令;如果既不是读命令也不是写命令,那么放弃此帧数据,退出通信,并报告;如果在传输过程中所接收的任何一帧信号出现错误时,均会向对方发送重发此帧信号的请求,如果连续三次传输失败,则退出通信并向程序报告。图6 MCU串口
38、通信程序流程图3.3.4 看门狗程序设计随着AT89S51系列单片机的发展,其芯片价格在不断下降,但同时也带来了单片机芯片的抗干扰问题,当干扰信号进入系统时,常导致程序的跑飞,而程序跑飞的根本原因是由于程序计数器PC错位引起的。在程序存储器中,指令码与存放指令码的地址是一一对应的,PC的内容是要执行的指令码的址,若修改了PC的内容,打破单片机的取指操作,导致程序的非正常运行,甚至出现致命的故障。因此为了克服这一问题,在系统中采用看门狗电路监视程序的运行。若程序跑飞,则看门狗电路产生复位信号,使单片机重新返回程序正常运行状态。为此,本设计选用X5045芯片大大简化了硬件设计,提高了系统的可靠性,
39、减少了对印制电路板的空间要求,降低了成本和系统功耗,是一种理想的单片机外围芯片。(1)X5045工作原理X5045是一种集上电复位、看门狗、电压监控和串行EEPROM 四种功能于一身的可编程控制电路,它有助于简化应用系统的设计,减少电路板的占用面积,提高可靠性。a 上电复位X5045加电时会激活其内部的上电复位电路,从而使RESET引脚有效。该信号可避免系统微处理器在电压不足或振荡器未稳定的情况下工作。当VCC超过器件的Vtrip限值时,电路将在200ms(典型)延时后释放RESET以允许系统开始工作。b 低电压检测工作时,X5045对VCC电平进行监测,若电源电压跌落至预置的最小Vtrip以
40、下时,系统即确认RESET,从而避免微处理器在电源失效或断开的情况下工作。当RESET被确认后,该RESET信号将一直保持有效,直到电压跌到低于1V 。而当VCC返回并超过Vtrip达200ms时,系统重新开始工作。(2)看门狗电路的软件设计看门狗电路的软件设计设计的是硬件看门狗的喂狗子程序,使主程序中在需要的地方调用,若程序出问题,不能及时喂狗,则看门狗会产生复位信号给单片机。X5045芯片内包含有一个看门狗定时器,看门狗定时器的预置时间是通过X5045的状态寄存器的相应位来设定的。X5045状态寄存器共有6位有含义,其中WD1、WD0和看门狗电路有关,其余位和EEPR0M的工作设置有关。微
41、处理器可以通过指令来改变WD1和WD0这两个位,从而改变看门狗定时时间的长短。WD1=0,WD0=0,预置时间为14s。WD1=0,WD0=I,预置时间为06s。WD1=l,WD0=0,预置时间为02s。WD1=l,WD0=I,禁止看门狗工作。看门狗定时器监测/CS引脚的输入来判断微处理器是否工作正常。在设定的定时时间以内,微处理器必须在/CS引脚上产生一个由高到低的电平的变化,以清内部定时器,即“喂狗”;否则X5045将产生一个复位信号。喂狗的流程图如图7所示。图7 看门狗喂狗流程图当由于某种原因系统出现程序跑飞或死循环时,CPU就执行不到喂狗程序,因得不到喂狗信号,看门狗电路就会判断系统运
42、行出现故障,并发出复位信号。看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。编程时,可在软件的合适地方加一条喂狗指令,使看门狗的定时时间永远达不到预置时间,系统就不会复位而正常工作。当系统跑飞,用软件陷阱等别的方法无法捕捉回程序时,则看门狗定时时间很快增长到预置时间,迫使系统复位。(3)软件看门狗在51单片机中有两个定时器,可以用这两个定时器来对主程序的运行进行监控。可以对T0设定一定的定时时间,当产生定时中断的时候对一个变量进行赋值,而这个变量在主程序运行的开始已经有了一个初值,在这里本课题要设定的定时值要小于主程序的运行时间,这样在主
43、程序的尾部对变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。对于T1本系统用来监控主程序的运行,给T1设定一定的定时时间,在主程序中对其进行复位,如果不能在一定的时间里对其进行复位,T1 的定时中断就会使单片机复位。在这里T1的定时时间要设的大于主程序的运行时间,给主程序留有一定的的裕量。而T1的中断正常与本系统由T0定时中断子程序来监视。这样就够成了一个循环,T0监视T1,T1监视主程序,主程序又来监视T0,从而保证系统的稳定运行。如图8所示。图8 看门狗电路软件设计流程图看门狗复位电路监控程序的运行状态,在死机或“程序走飞”时可使系统自动恢复到正
44、常工作状态。看门狗具体使用方法如下:在程序初始化中向看门狗寄存器(WDTRST地址是OA6H)中先写入OlEH, 再写入OE1H即可激活看门狗。89C51的看门狗必须由程序激活后才开始工作。所以必须保证CPU有可靠的上电复位。否则看门狗也无法工作。看门狗使用的是CPU的晶振。在晶振停振的时候看门狗也无效。89C51只有14位计数器。在16383个机器周期内必须至少喂狗一次。而且这个时间是固定的,无法更改。当晶振为12M时每16个毫秒需喂狗一次。结束语非接触式IC卡技术先进,具有接触式IC卡,磁卡等其他卡类不可比拟的优势,应用范围广泛,能够在大多数场合代替接触式IC卡的使用。针对不同的应用场合,
45、非接触式IC卡可以使用同一种IC卡,但是读卡器必须针对不同的应用场合单独设计。 本课题开发成功了一种基于Philips公司MIFARE技术的非接触式IC卡读写器,它能够读写距离在20-25MM范围内地符合IEC/ISO14443 TYPE A标准的非接触式IC卡,该读卡器采用外接电源供电,具有蜂鸣器报警、LED状态显示和采用RS232接口同上位机通信的功能,能够很好地满足实际应用的需求。 本课题开发的非接触式IC卡读卡器也有不完善的地方,需要进行多方面的后续开发,扩充其应用范围,这主要涉及到以下几个方面:(1)为读卡器加装键盘应长距离通信的需要,将读卡器同上位机之间的通信由RS232通信改为R
46、S485通信(2)在本课题设计的非接触式IC卡读卡器中RS232通信方面只开发了MCU端的通信程序,没有开发上位机端的通信程序,这是需要完善的地方(3)对应用程序进行进一步等待优化,减少其大小,提高程序执行效率虽然本课题开发的非接触式IC卡读卡器还有需要完善的地方,但我坚信它有着非常好的发展潜力和市场前景。参考文献1 王卓人,邓晋军,刘宗祥.IC卡的技术与应用M北京:电子工业出版社,1999.2 熊立扉.非接触式IC卡技术J深圳大学学报(理工版),1998年9月第15卷,第2-3期.3 杨肇敏,张忠会.初论非接触式IC卡技术J计算机工程与应用 1999.12.4 王爱英.智能卡技术M北京:清华
47、大学出版社,2000.10.5 德Klaus Finkenzeller著,陈大才译.射频识别(RFID)技术M北京:电子工业出版社,2001.6.6 赖麒文.8051单片机C语言开发环境与务实M北京:科学出版社,2002.1.7 广州周立功单片机发展有限公司,PC-MCU串行通信的应用设计方法,广州.8 朱兆优,王耀南,林刚勇.非接触式IC卡应用系统设计J计算机自动测量与控制,2001.9(5).9 李科让.一种实用的非接触式IC卡读卡器的设计J微型机与应用,2001年第9期.10 刘铮,章兢.非接触式IC卡中的射频识别技术J信息技术,2002年第4期.11 马忠梅,籍顺心,张凯等.单片机的C
48、语言应用程序设计(第3版)M.北京:北京航空航天大学出版社,2003.12 李朝青.单片机原理及接口技术M北京:北京航空航天大学出版社,1999.13 游战清,李苏建无线射频识别技术(RFID)理论与应用M北京:电子工业出版社,200414 赵军辉.射频识别技术与应用M北京:机械工业出版社,2008.5.15 周晓光,王晓华.射频识别(RFID)技术原理与应用实例M北京:人民邮电出版社,2006.12.1.16 陆永宁. 非接触IC卡原理与应用M北京:电子工业出版社, 2006.9.1.17 钱逸秋. 单片机原理与应用M北京:电子工业出版社, 2002.附录/“Answer
49、 to Request”(“Request”应答或复位应答)指令/子程序 mif_request,具体程序如下:Char mif_request(uchar mode,unit*tagtype)uchar idata status;|WriteIO(STACON,_SOR|mif_control);/STACON 寄存器设置WriteIO(BAUDRATE,_BAUD);/BAUDRATE 寄存器设置WriteIO(ENABLE,_PEN|_PRE);/ENABLE 寄存器设置WriteIO(MODE,_MODE);/MODE 寄存器设置WriteIO(STACON,mif_control);
50、/STACON 寄存器设置WriteIO(RCODE,2);/RCODE寄存器设置WriteIO(BCNTS,7);/BCNTS 寄存器设置WriteIO(BCNTR,16);/BCNTR 寄存器设置If(mode&ALL) /根据参数mode确定要执行的指令WriteIO(DATA,_REQUEST);/执行Request all指令elseWriteIO(DATA,_REQUEST_ALL);/ 执行Request std指令WriteIO(TOC,TIMEOUT);/TOC寄存器设置If(status=ReadIO(STACON))&_DV)/读取STACON寄存器,如果
51、DV位=1则表示指令执行成功,进行下面操作WriteIO(TOC,0);/TOC寄存器设置If(status&(_TE|_BE)/如果发生溢出错误或位计数器出错*tagtype=0x00;/返回tagtype为0if(status&_TE)/如果发生溢出错误return(MI_NOTAGERR); 返回溢出错误标志else/否则返回位计数器出错标志delay_50us(10);/延迟500usreturn(MI_BITCOUNTERR);else/如果没有错误,返回tagtype字节 *tagtype=ReadIO(DATA);*tagtype|=ReadIO(DATA)8;r
52、eturn (MI_OK); Return (MI_IDLE);/ “AntiCollision”防重叠/Char mif_anticoll(uchar bcnt,ulong*snr) Uchar idata status,snr_chk,snr_chk_temp; Uchar idata I; WriteIO(BCNTS,bcnt+16); writeIO(BCNTR,0X28); WriteIO(STACON,_AC|mif_control); Delay_50us(1); WriteIO(DATA,0X93);/执行AntiCollision指令 WriteIO(DATA,(2+(bcn
53、t3)4) |(bcnt&0x07); For(i=0;i<(bcnt+7)/8;i+) WriteIO(DATA,*(char*)snr)+i); WriteIO(TOC,TIMEOUT); While(!(staus=ReadIO(STACON)&_DV); WriteIO(TOC,0); if(staus&(_TE|_BE) if(staus&_TE) return(MI_NOTAGERR); else delay_50us(10); return(MI_BITCOUNTERR); for(j=0,snr_chk_temp=0;j<4;i+)/
54、对返回的5个字节的前四个字节进行异或校验:相邻两个字节相互异或,得出的结果与下一个字节再异或。如果前四个字节的异或结果等于第五个字节,则接受的SN正确。 *(char*)snr)+i)=ReadIO(DATA); snr_chk_temp=(char*)snr)+i); snr_chk=ReadIO(DATA);if(snr_chk!=snr_chk_temp)/前四个字节的异或值不等于第五个字节,返回错误提示 return(MI_SERNRERR); return(MI_OK); /”Select Tag”选择卡片操作/char mif_select(ulong snr,uchar*size) uchar idata snr_chk,status,i: writeIO(ENABLE,PEN|_CEN|_CRE|_PRE); writeIO(BCNTS,56); writeIO(BCNTR,8);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年榆林榆阳区市选聘高校毕业生到非公企业(100人)笔试历年典型考点题库附带答案详解
- 黑龙江省鸡西市梨树区2025年数学三年级下学期期末检测模拟试题(含解析)
- 血液系统疾病护理试题测试卷附答案
- 2026电信笔试题库及答案
- 西部经理部5月安全培训考试测试卷及答案
- 2026电器维修资质考试题及答案
- 2026电气笔试题及答案
- 2026电力入场考试题及答案大全
- 2026年装配式混凝土施工安全考试题(附答案)
- 河道岸线生态修复施工操作规范
- BYD车间培训课件
- 道化学(火灾爆炸危险指数评价法)
- 赵佶《瘦金体千字文》高清
- DL-T5588-2021电力系统视频监控系统设计规程
- 电子元器件代理合同模板(精美合同协议模板)
- 农村电气安装培训
- 酒店明住宿清单(水单)
- (完整版)固体物理导论-答案-word版
- TUPSW微机控制电力专用不间断电源(UPS)系统使用说明书
- GB/T 22900-2022科学技术研究项目评价通则
- NB/T 10943-202210 kV及以下有源型电压暂降治理设备检测规程
评论
0/150
提交评论