资源描述:
《基于单片机的非接触式ic卡的读写本科毕设论文.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
利用单片机实现非接触式IC卡读写本科毕业论文(设计)题目:基于单片机的非接触式IC卡的读写51 利用单片机实现非接触式IC卡读写学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。本人完全意识到本声明的法律后果由本人承担。作者签名:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保障、使用学位论文的规定,同意学校保留并向有关学位论文管理部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权省级优秀学士学位论文评选机构将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。本学位论文属于1、保密□,在_________年解密后适用本授权书。2、不保密□。(请在以上相应方框内打“√”)作者签名:年月日导师签名:年月日51 利用单片机实现非接触式IC卡读写摘要非接触式IC卡是IC卡领域的一项新兴技术,它是射频识别技术和IC卡技术相结合的产物。由于非接触式IC卡具有操作快捷、抗干扰性强、工作距离远、安全性高、便于“一卡多用”等特点,在自动收费、身份识别和电子钱包等领域具有接触式IC卡所无法比拟的优越性,具有广阔的市场前景。非接触式IC卡读卡器是非接触式IC卡应用系统的关键设备之一。本论文介绍了非接触式IC卡其特点、种类、国际标准、关键技术、典型应用和发展趋势,重点介绍了Philips公司的MIFARE技术,对MIFARE卡片和MIFARE非接触式IC卡的读写组件MFRC500进行了全面的阐述;在此基础上,论文详细地阐述了非接触式IC卡读卡器的硬件和软件设计,给出了每一部分的实际电路图和应用程序。读卡器的硬件设计包括数码管及LED状态显示电路、蜂鸣器驱动电路、MCU的连接、ZLG500AT读卡模块等几部分的设计,软件设计分为ZLG500AT模块的应用程序的设计和显示部分。关键词:IC卡、非接触式、ZLG500AT读卡模块、读卡器51 利用单片机实现非接触式IC卡读写AbstractContactlessICCardisonekindofnewtechnologyinthefieldofICcard,whichisthecombinationofRFtechnologyandICcardtechnology.BecausecontactlessICcardhassomeadvantagesovercommonICcardsuchasitshighworkingspeed,goodanti-jammingquality,longworkingdistance,therewillbeagoodprospectforitinmanyfieldssuchasautomaticpricing,identitydistinguishing,electricwalletandsoon.ThecontactlessICcardreaderisoneofthekeydevicesofacontactlessICcardsystem.AtfirstthispapergenerallyintroducestheICcard,includingitsfeature,type,internationalstandard,keytechnologyandtypicalusage.AfterthattheMIFAREtechnologydevelopedbyPHILIPSSemiconductorsisintroducedindetail.Basedonthese,thepaperdiscussesthedesignofthecontactlessICcardreaderindetail,includingthecircuitdesignandsoftwaredesign.Thereader'scircuitismadeupofpowersupplycircuit,LEDanddisplaycircuit,buzzerdrivecircuit,MCUinterfacecircuit,ZLG500ATread-writemoduleandsoon.ThesoftwaredesignincludesprogrammingofZLG500ATmoduleandprogrammingofmainprogram.KEYWORDS:ICCard,contactless,ZLG500ATread-writemodule,Cardreader51 利用单片机实现非接触式IC卡读写目录摘要3Abstract4目录5第一章绪论7§1.1前言7§1.2IC卡的分类8§1.3非接触式IC卡81.3.1非接触式IC卡的特点81.3.2非接触式IC卡的关键技术9§1.4IC卡的国际标准9第二章MIFARE技术11§2.1MIFARE1非接触式IC卡的功能组成112.1.1RF射频接口电路112.1.2数字电路模块12§2.2MIFARE1卡片的存储结构13§2.3MFRC500读写芯片简介14第三章硬件电路设计15§3.1系统整体设计15§3.2单片机最小系统介绍153.2.1AT89S52简介153.2.2单片机复位电路16§3.3MAX7219及数码管显示163.3.1MAX7219简介163.3.2MAX7219与单片接口电路18§3.4WBL500UG模块193.4.1概述193.4.2基本参数193.4.3引脚定义193.4.4编程说明203.4.5通讯命令2151 利用单片机实现非接触式IC卡读写§3.5蜂鸣器、工作状态指示灯与单片机接口213.5.1蜂鸣器驱动电路213.5.2工作状态指示灯电路22§3.6串口通信223.6.1MAX232芯片简介223.6.2硬件连接图23第四章软件设计24§4.1非接触式IC卡处理子程序流程图24§4.2显示子程序24§4.3读写卡的实现26第五章系统调试285.1串口通信285.2硬件系统调试285.3软件调试29第六章总结与展望30结束语31致谢32参考文献33附录A硬件电路图34附录B软件主程序3551 利用单片机实现非接触式IC卡读写第一章绪论§1.1前言IC卡的概念是70年代初提出来的[1],法国布尔(BULL)公司于1976年首先创造出IC卡产品,并将这项技术应用到金融、交通、医疗、身份证明等多个行业,它将微电子技术和计算机技术结合在一起,提高了人们生活和工作的现代化程度。在此后的十几年间,除法国的布尔公司之外,世界上先后有Motorola、TI、Thomson、Hitachi、OKI、Toshiba、Sharp、Atmel、Gemplus、Schlumberger、Philips等十几家公司相继投入了智能卡芯片和卡片成品的开发与生产,形成了一个世界性的新兴技术产业。当前,用于信息处理的卡片种类繁多,而且基本上都采用了较新的技术,IC卡脱颖而出的原因在于它对于磁卡、PET卡、光卡和凸字卡等其它种类的卡具有以下突出的特点:⑴存储容量大⑵安全性高。⑶对网络的要求不高。正是由于这些特点,使得IC卡从诞生至今虽然只有短短数年,但其市场却遍布世界各地。在全球智能卡蓬勃发展之际,中国于1993年提出了“金卡工程”。金卡工程是以电子货币应用为重点的各类卡基应用系统工程,是为了实现电子货币大范围流通的跨部门、跨地区和跨世纪的系统工程。在“金卡工程”提出至今15年来,我国IC卡应用发展迅猛,累计发卡约15亿张,据不完全统计,仅2003年一年,我国发行使用各类IC卡约5.4亿张左右[2]。IC卡目前已在商贸、交通、电信、医疗、卫生保健、社会保险、金融、税务、工商、公安、组织机构代码和城市公共事业管理等许多领域得到广泛应用,并取得了初步的社会和经济效益。它对提高现代化管理水平和人民的生活质量,推动整个社会信息化进程具有重要作用。本课题正是在这种环境下提出的。§1.2IC卡的分类IC卡可以按照多种方法进行分类[3],根据卡中所镶嵌的集成电路的不同可以分成以下三类:51 利用单片机实现非接触式IC卡读写(1)存储器卡(2)逻辑加密卡(3)CPU卡严格意义讲,只有CPU卡才是真正的智能卡[4]。§1.3非接触式IC卡1.3.1非接触式IC卡的特点非接触式IC卡无机械触点,通过无线方式与读写设备进行通讯,与接触式IC卡相比具有一下特点[5]:(1)操作快捷卡与读卡器之间为无线通讯,使用时无需插拔卡及固定方向。(2)高抗干扰性非接触式IC卡具有防冲突机制,在多张卡片同时进入读卡器工作范围时能够防止卡片之间出现数据干扰,允许多张卡片同时操作,相对接触式IC卡增加了“并行”处理能力。(3)配合具体应用具有多种工作距离非接触式IC卡中既有作用距离为几米、可用于高速公路收费系统[5]中的远距离卡,又有作用距离为几厘米、可用于电子钱包的近距离卡,使得系统配置灵活多样。(4)高可靠性非接触式IC卡与读卡器之间无机械接触,避免了由于接触读写而产生的各种故障,同时无需担心由于触点损坏或脱落而导致卡片失效,提高了应用的可靠性及设备和卡的寿命。(5)可适合于多种应用接触式IC卡的存储结构的特点使其可以一卡多用,能用于不同的系统,用户可以根据不同的应用设置不同的密码和访问条件[6]。(6)高安全性非接触式IC卡的序列号是唯一的,制造商在产品出厂前将此序列号固化于卡内芯片中,不可再更改,使用时非接触式IC卡于读卡器要进行三次相互认证,而且通讯过程中所有的数据都加密,卡内各个扇区都有自己的操作密码和访问条件。1.3.2非接触式IC卡的关键技术非接触式IC卡的工作特点使其在设计和制造过程中存在一些技术难点,主要集中在芯片制造和卡片封装上,这些关键技术是:51 利用单片机实现非接触式IC卡读写(1)射频技术非接触式IC卡是射频技术和IC卡技术相结合的产物,非接触式IC卡的射频技术有以下特殊要求:由于IC卡的尺寸限制,使大部分非接触式IC卡的内部不带电池,需要由读写设备通过无线方式供电,经过卡内的稳压电路产生芯片工作所需的直流电压。内部结构如图1-1:图1-1非接触式IC卡内部结构(2)低功耗技术对于卡内有电池和无电池的非接触式IC卡来说降低芯片功耗以提高卡片寿命和保证一定的工作距离都非常重要。卡内芯片一般采取低压低功耗CMOS工艺制造,并在电路设计中采用“休眠模式”等技术以降低功耗。(3)封装技术由于非接触式IC卡中需要封装天线、芯片和片外电容等部件,为确保卡片的大小、厚度、柔韧性,需要特殊的封装技术。(4)安全技术非接触式IC卡以卡用芯片的物理安全技术、卡片制造的安全技术和卡的通讯安全技术这三个方面的内容构成其强大的安全技术。§1.4IC卡的国际标准非接触式IC卡表面无触点,因此接口设备与非接触式卡的通信方式与接触式卡不同,提供电源的方式也不同,为此ISO/IEC根据接口设备与IC卡作用距离的不同而定义了三个国际标准,如表1-1所示:表1-1非接触式IC卡国际标准51 利用单片机实现非接触式IC卡读写标准卡类型作用距离(约)ISO/IEC10536密耦合0~10MMISO/IEC14443近耦合0~100MMISO/IEC15693疏耦合0~1000MM其中ISO/IEC14443又分为TypeA和TypeB两个标准。本课题开发的非接触式IC卡读写设备即是基于ISO/IEC14443TypeA标准的。51 利用单片机实现非接触式IC卡读写第二章MIFARE技术§2.1MIFARE1非接触式IC卡的功能组成如图2-1所示为MIFARE1S50非接触式IC智能射频卡的功能组成图[7]。图2-1MIFARE1S50非接触式IC智能射频卡的功能组成图整个卡片包含了两个部分,RF射频接口电路和数字电路部分。2.1.1RF射频接口电路在RF射频接口电路中,主要包括有波形转换模块。它可将卡片读卡器上的13.56MHZ的无线电调制频率接收,一方面送调制/解调模块,另一方面进行波形转换,将正弦波转换为方波,然后对其整流滤波,由电压调节模块对电压进行进一步的处理,包括稳压等,最终输出供给卡片上的各电路。POR模块主要是对卡片上的各个电路进行POWER-ON-RESET(上电复位),使各电路同步启动工作。51 利用单片机实现非接触式IC卡读写2.1.2数字电路模块(1)ATR模块:AnswertoRequest(请求之应答)当一张MIFARE1卡片处在卡片读卡器的天线的工作范围之内时,程序员控制读卡器向卡片发出REQUESTall(或REQUESTstd)命令后,卡片的ATR将启动,将卡片Block0中的卡片类型(TagType)号传送给读卡器,建立卡片与读卡器的第一步通信联络。(2)AntiCollision模块:防(卡片)重叠功能如果有多张MIFARE1卡片处在读卡器的天线的工作范围之内时,AntiCollision模块的防重叠功能将被启动工作。(3)SelectApplication模块:主要用于卡片的选择(4)Authentication&AccessControl模块:认证及存取控制模块在确认了上述的三个步骤,确认已经选择了一张卡片时,程序员对卡片进行读写操作之前,必须对卡片上已经设置的密码进行认证,如果匹配,则允许进一步的Read/Write操作。MIFARE1卡片上有16个扇区,每个扇区都可分别设置各自的密码,互不干涉。因此每个扇区可独立地应用于一个应用场合。整个卡片可以设计成“一卡通”形式来应用。三遍认证:如图2-2所示为三遍认证的令牌原理框图。图2-2三遍认证令牌原理框图(5)Control&ArithmeticUnit控制及算术运算单元:这一单元是整个卡片的控制中心。它主要进行对整个卡片的各个单位进行微操作控制,协调卡片的各个步骤;同时它还对各种收/发的数据进行算术运算处理,递增/递减处理,CRC运算处理,等等,是卡片中内建的MCU单元。(6)RAM/ROM单元:51 利用单片机实现非接触式IC卡读写RAM主要配合控制及算术运算单元,将运算的结果进行暂时存储,如果某些数据需要存储到EEPROM,则由控制及算术运算单元取出送到EEPROM存储器中;如果某些数据需要传送给读卡器,则由控制及算术运算单元取出,经过RF射频接口电路的处理,通过卡片上的天线传送给卡片读卡器。RAM中的数据在卡片失掉电源后(卡片离开读卡器天线的有效工作范围内)将被清除。同时,ROM中还固化了卡片运行所需要的必要的程序指令,由控制及算术运算单元取出去对每个单元进行微指令控制,使卡片能有条不紊地与卡片的读卡器进行数据通信。(7)CryptoUnit数据加密单元:该单元完成对数据的加密处理及密码保护。加密的算法可以为DES标准算法或其他。(8)EEPROMINTERFACE/EEPROMMEMORYEEPROM存储器及其接口电路:该单元主要用于存储数据。EEPROM中的数据在卡片失掉电源后(卡片离开读卡器天线的有效工作范围内)仍将被保持,用户所要存储的数据被存放在该单元中。MIFARE1卡片中的这一单元容量为8196bit(1Kbyte),分为16个扇区。§2.2MIFARE1卡片的存储结构M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63,存贮结构如下图所示[8]:图2-3MIFARE1卡片的存储结构第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改.每个扇区的块0、块1、块2可用于存贮数据。第0~4个字节为卡片的序列号,第5个字节为序列号的校验码;第6个字节为卡片的容量“SIZE”字节;第7,8个字节为卡片的类型号字节,即Tagtype字节;其他字节由厂商另加定义。51 利用单片机实现非接触式IC卡读写数据块有两种应用方法,一种是用作一般的数据保存用,直接读写。另一种用法是用作数值块,可以进行初始化值、加值、减值、读值的运算。系统配用相应的函数完成相应的功能。§2.3MFRC500读写芯片简介(1)概述MFRC500是应用于13.56MHz非接触式通信中高集成读卡IC系列中的一员[9]。该读卡IC系列利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。(2)特性u高集成度模拟电路用于卡应答的解调和解码;u缓冲输出驱动器使用最少数目的外部元件连接到天线;u近距离操作(可达100mm);u用于连接13.56MHz石英晶体的快速内部振荡器缓冲区;u时钟频率监视;u带低功耗的硬件复位;u软件实现掉电模式;u并行微处理器接口带有内部地址锁存和IRQ线;u自动检测微处理器并行接口类型;u易用的发送和接收FIFO缓冲区;u支持防冲突过程;u唯一的序列号;u片内时钟电路;u支持MIFAREPRO和ISO14443A(透明模式且T=“CL”);u支持MIFAREClasic;uCrypto1以及可靠的内部非易失性密匙存储器;u支持MIRFARE有源天线;u适合于高安全性的终端。51 利用单片机实现非接触式IC卡读写第三章硬件电路设计§3.1系统整体设计非接触式IC卡读写器系统的硬件由单片机、数码管显示器、非接触式IC卡读写模块、电源、RS232串口通信模块等构成(见图3-1)。PC机RS232CPU控制器IC卡状态显示灯天线模块数码管显示模块RC500模块图3-1非接触式IC卡读写器系统的硬件框图§3.2单片机最小系统介绍3.2.1AT89S52简介AT89C52单片机具有如下特点[10]:u与MCS-51产品兼容u具有8K可改写的Flash内u全静态操作:0Hz~24MHzu三级程序存储器加密u256字节内部RAMu32根可编程的I/O线u3个16位定时器/计数器u8个中断源u可编程接口51 利用单片机实现非接触式IC卡读写u低功耗空闲和调电模式3.2.2单片机复位电路单片机的复位都是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便可以实现初始化状态复位。为了保证应用系统可靠的复位,在设计复位电路时,通常使RST引脚保持10ms以上的高电平。只要RST保持高电平,则AT89S52就可以复位;当RST从高电平变为低电平以后,单片机从主程序开始执行程序。§3.3MAX7219及数码管显示3.3.1MAX7219简介MAX7219是双列直插式芯片[11],如图3-3所示,其中SEGA~SEGF是7段驱动输出端,直接驱动LED对应的7个段(SEGDP为小数点驱动输出端)。DIG7~DIG0分别接8个共阴显示器的阴极。参考MAX7219工作时序图(如图3-2):DIN是待显示信息的数据输入端,以串行方式移入内部的16位寄存器中寄存。CLK是时钟脉冲输入端(最大频率10MHz),在每个CLK脉冲上升沿的作用下,DIN端的1位数据被移入内部寄存器。LOAD端是装载数据输入端,在DIN端输入数据时,它应保持高电平。当一组数据(16bit)被移入内部寄存器后,由LOAD脉冲的上升沿锁定16位数据,最高位(D15)位首先被移入,然后按顺序移入,直至D0位被移入。图3-2 输入一组数据的工作时序图51 利用单片机实现非接触式IC卡读写图3-3 MAX7219引脚图MAX7219的所有功能与多样化操作模式都是通过内部寄存器的设定来实现的,其内部14个可寻址寄存器的功能及地址如表3-1所示[12]:表3-1MAX7219内部寄存器及地址功能地 址16进制编码D15-D12D11D10D9D8空操作X0000X0Dig0X0001X1Dig1X0010X2Dig2X0011X3Dig3X0100X4Dig4X0101X5Dig5X0110X6Dig6X0111X7Dig7X1000X8译码模式X1001X9显示亮度X1010XA扫描界限X1011XB停机X1100XC显示测试X1111XF 各内部寄存器含义如下:(1)空操作寄存器(地址X0H)。用于多片MAX7219级联,在不改变显示或不影响任意功能寄存器的条件下,它允许数据从DIN传送到DOUT。(2)51 利用单片机实现非接触式IC卡读写译码模式寄存器(地址X9H)。该寄存器的8位二进制数的各位分别控制8个LED显示器的译码模式。当高电平时,选择硬件译码模式(BCD-B码译码),当低电平时选择软件译码模式(即送来数据为字型码)。(3)显示亮度寄存器(地址XAH)。显示亮度可以用硬件和软件2种方法调节。通过对亮度寄存器中D3~D0位写入不同的数值可实现LED显示亮度的控制,从X0H到XFH共16级可调。(4)扫描界限寄存器(地址XBH)。用于设置LED显示器的实际扫描个数,由该寄存器的D2~D0位设定,当设定值为000B~111B时,表示显示器动态扫描个数为1~8。(5)停机寄存器(地址XCH)。当D0=0时,MAX7219处于停机状态,所有显示器消隐,寄存器数据保持不变,当D0=1时,处于正常工作状态。(6)显示测试寄存器(地址XFH)。当D0=0时,正常工作;当D0=1时,处于测试状态,在该状态下不管MAX7219处于什么模式,全部LED将按最大亮度显示。内部RAM地址X1H~X8H分别对应于DIG0~DIG7。3.3.2MAX7219与单片接口电路MAX7219在驱动8位以下LED显示器时,它的DIN、CLK、LOAD端分别接单片机P0~P3口中的任意三条口线,注意在三条线上对地应接几十至几百pF电容。在P0口作为DIN、CLK、LOAD信号线时还应接10kÙ左右的上拉电阻。在显示器与微处理器连接线较长时还应考虑干扰的影响。MAX7219和单片机的连接如图3-4所示。图3-4MAX219与单片机连接图51 利用单片机实现非接触式IC卡读写§3.4WBL500UG模块3.4.1概述射频读写模块是采用MIFARE技术的微型嵌入式非接触式IC卡读写模块[13]。内嵌ISO14443TYPEA协议解释器,并具有射频驱动和接收功能。可以简单实现对MIFARE卡的读写操作,读写距离可达100mm。只要通过PC机发送相应的通讯指令就可以实现对应的操作,对应的操作指令见3.4.5。3.4.2基本参数u工作电压:5vDCu工作电流:<100mAu通讯接口:rs232接口TTL电平u适用卡型:MIFAREONEu数据通讯:106KBPSu射频频率:13.56MHzu操作距离:<100mmu工作温度:-20---65度3.4.3引脚定义该模块尺寸为标准DIP32封装,天线配合模块一起使用,如图3-5所示:51 利用单片机实现非接触式IC卡读写天线模块:图3-5WBL500模块引脚图3.4.4编程说明在一次卡片的操作流程一定要按一下顺序执行:寻卡、密码校验、读或写卡、关闭卡片,如果任何一个操作出现错误,就应该立即关闭卡片。寻卡模式(00或者01),如果00模式,在执行了关闭指令之后,卡片必须离开感应区再进入感应区才能寻卡成功,如果01模式,那么在执行了停机指令之后,即时卡片未离开感应区也能感应成功:对卡片控制区的读写与数据读写相同,只是控制方式不同,同时要注意一定不要写错或者记住所写内容,否则有可能无法再对该区进行操作:在每一个命令执行后在执行下一个命令前应该有15ms的延时;在刚开始编程时,为了不写错卡片造成不能读写的环区,在对卡片密码区进行读写之前要将密码区的16个字节先写入一个数据块,再读出,如果写入正确,说明写入操作正确,就可以对密码区进行写操作了;命令延时最好10ms至20ms。51 利用单片机实现非接触式IC卡读写3.4.5通讯命令(1)通讯测试:下传命令:3C0400600000BCC0D(BCC为58)成功返回:3C0101BCC0D(BCC为3C)错误返回:3C0100BCC0D(2)寻卡下传命令:3C04017000(寻卡模式00或者01)00BCCOD成功返回:3C05四字节卡号00BCC0D错误返回:3C01FFBCC0D(3)密码验证下传命令:3C0E016C六字节密码认证模式绝对块号四字节卡号校验位0D成功返回:3C020000BCC0D错误返回:3C01FFC20D(4)读卡:3C0401660000BCCOD成功返回:3C1100DATA0---DATA15BCC0D错误返回:3C01FFBCC0D(5)写卡:3C13016700DATA0--DATA15BCC0D成功返回:3C020000BCC0D错误返回:3C01FFBCC0D(6)发光管亮一次:3C03016D55BCC0D(7)蜂鸣器响一声:3C03016B55BCC0D(8)关闭卡片:3C0401680000510D正确返回:3C02003E0D错误无返回。§3.5蜂鸣器、工作状态指示灯与单片机接口3.5.1蜂鸣器驱动电路由于单片机的I/O口驱动能力有限,一般不能直接驱动压电式蜂鸣器,因此选用NPN型晶体管组成晶体管驱动电路。蜂鸣器驱动电路如图3-6所示:51 利用单片机实现非接触式IC卡读写图3-6蜂鸣器驱动电路3.5.2工作状态指示灯电路要是指示灯亮只需要送低电平。指示灯电路如图3-7所示图3-7蜂鸣器驱动电路§3.6串口通信3.6.1MAX232芯片简介该产品是由德州仪器公司(TI)推出的一款兼容RS232标准的芯片[14]。主要特点[15]:u单5V电源工作uLinBiCMOSTM工艺技术u两个驱动器及两个接收器u±30V输入电平u低电源电流:典型值是8mAu符合甚至优于ANSI标准EIA/TIA-232-E及ITU推荐标准V.28uESD保护大于MIL-STD-883(方法3015)标准的2000V51 利用单片机实现非接触式IC卡读写图3-8max232引脚图3.6.2硬件连接图图3-9硬件连接图51 利用单片机实现非接触式IC卡读写第四章软件设计开始§4.1非接触式IC卡处理子程序流程图模块初始化寻卡密码验证N通过关闭卡片Y读卡或写卡关闭卡片图4-1IC卡处理子程序流程图结束51 利用单片机实现非接触式IC卡读写§4.2显示子程序#include#defineucharunsignedchar#defineuintunsignedint//定义Max7219端口sbitMax7219_pinCLK=P1^2;sbitMax7219_pinCS=P1^1;sbitMax7219_pinDIN=P1^0;voidDelay_xms(uintx){uinti,j;for(i=0;i=1;i--){Max7219_pinCLK=0;Max7219_pinDIN=DATA&0x80;DATA=DATA<<1;Max7219_pinCLK=1;}}//-------------------------------------------//功能:向MAX7219写入数据51 利用单片机实现非接触式IC卡读写//入口参数:address、dat//出口参数:无//说明:voidWrite_Max7219(ucharaddress,uchardat){Max7219_pinCS=0;Write_Max7219_byte(address);//写入地址,即数码管编号Write_Max7219_byte(dat);//写入数据,即数码管显示数字Max7219_pinCS=1;}voidInit_MAX7219(void){Write_Max7219(0x09,0xff);//译码方式:BCD码Write_Max7219(0x0a,0x03);//亮度Write_Max7219(0x0b,0x07);//扫描界限;4个数码管显示Write_Max7219(0x0c,0x01);//掉电模式:0,普通模式:1Write_Max7219(0x0f,0x01);//显示测试:1;测试结束,正常显示:0}voidmain(void){Delay_xms(50);Init_MAX7219();Delay_xms(2000);Write_Max7219(0x0f,0x00);//显示测试:1;测试结束,正常显示:0Write_Max7219(1,8);Write_Max7219(2,7);Write_Max7219(3,6);Write_Max7219(4,5);Write_Max7219(5,4);Write_Max7219(6,3);Write_Max7219(7,2);Write_Max7219(8,1);while(1);}51 利用单片机实现非接触式IC卡读写§4.3读写卡的实现完成所有的宏定义之后,初始化所有模块,让数码管显示均为0,之后经过延时,将8个数码管均显示为9。再经过延时,将数码管置0,此时调用Commu_test()函数,定义寻卡模式为01,如果成功返回,第一个数码管显示为1,否则显示为0。经过短延时,调用Search_Card(CardNo)进行寻卡,如果成功返回,第二个数码管显示为1,否则显示为0。再继续下达通讯命令进行密码验证,调用函数PSD_Verify(CardKey,CardNo),如果测试通过,得到正确的返回命令,将第三个数码管显示为1,否则显示为0。如果密码验证通过,进行读卡操作,读出卡片内部DATA0--DATA15的16个数据(IC卡的特点见1.3.2),利用第4、5、6个数码管显示3位数据(最大数据只能为256,否则会产生溢出),读卡成功,第四个数码管显示为1,否则显示为0。读卡完毕之后进行写卡操作(利用程序自定义的数组修改,修改数组内部数据即可实现写卡),写卡成功,第五个数码管显示为1,否则显示为0。如果写卡完毕,此时关闭卡片,关闭成功,第六个数码管显示为1,否则显示为0。调用Turnon_BELL(0X55)、Turnon_LED(0X55)函数控制蜂鸣器和LED的状态,操作成功对应第七个第八个数码管显示为1否则显示为0。至此对IC卡的一轮操作结束,进入下一步循环。51 利用单片机实现非接触式IC卡读写第五章系统调试5.1串口通信由于条件所限,本次调试时,没有使用仿真器,而是采用直接将程序烧录进单片机内部之后调试,每次编译之后必须通过串口下载程序,所以,串口通信是必不可少的一个环节。在制作串口通信的时候遇到了很多问题,比如在开始的时候由于接触的不多,对串口模块的原理图不是很了解,自己想当然的焊接原件,结果导致串口无法使用,后来通过查找资料,发现原来是电容的正负极焊接错误,经过重新焊接,在配合使用烧录软件的时候,发现还是无法使用,经过仔细检查觉得硬件电路不会存在问题,后来查找资料才知道是软件中的串口选择有问题,经过设置,软件能正常下载程序了,串口通信模块调试成功。在这个模块的调试过程中我学到了做任何事情要有充分的准备,不能通过自己的臆想去盲目判断,这样可能是事倍功半,磨刀不误砍柴工,做好准备工作也许我们就成功了一半!5.2硬件系统调试51 利用单片机实现非接触式IC卡读写在各个模块都组装完毕,串口模块调试成功之后,就开始了硬件调试。硬件调试分几个模块进行,首先调试的是八段数码管显示模块,由于这个模块和我们平常使用的不同,不是直接对IO口进行赋值操作,它只有5个接口,一个VCC,一个GND,一个DIN,一个CS,一个CLK,在接上电源之后发现没有任何反应,通过以前的方法编程烧录进单片机,把它的DINCSCLK分别连接在单片机的P2.0P2.1P2.2接口,发现也没用任何反应,后来仔细看模块的说明书,了解到其操作流程,经过仔细修改程序,发现能正常显示了,调试通过。接下来的就是WBL500模块,由于是无线发射和接收的模块,在将它与单片机相连接,然后再与天线连接完毕之后,用IC卡去感应,通过测量输出端的电压,发现电压始终没变化,也就意味着始终没有感应到IC卡的存在,经过检查,硬件的连接应该不会有问题,后来仔细查找资料,看说明书,原来,对一个IC卡的操作必须先给模块发送通讯命令,让其开始寻卡才能搜索卡而不是直接就自动搜索是否存在IC卡。后来通过给WBL500模块发送通讯指令,通过八段数码管显示状态,当有卡进入的时候有感应,调试通过。接下的就是蜂鸣器和LED的调试,这个比较简单,调试没有问题,调试通过。通过硬件的调试,我认识到了做任何事情的时候要细心、耐心。不能急躁冒进,慢工出细活,对于学术性的东西,急着做完的态度是认可的,但是我们在真正投入其中做学问的时候一定要一丝不苟,这种钻研的精神是我学到的宝贵的财富,将使我获益终生。5.3软件调试其实很多软件调试在制作硬件的时候,调试硬件的时候已经调试过了,比如八段数码管的显示,还有IC卡的感应基本功能已经能实现了,只有是对IC卡的读写操作还不能进行,不能通过数码管显示IC卡中的数据,通过仔细看说明,对IC卡的操作流程基本都是一样,要通过单片机给WBL500模块发送对应的通讯指令,所以,在程序上只要将通讯的指令修改,然后将应该显示的内容对应到数码管上进行显示就可以,通过反复的编译调试,基本实现了能对IC卡进行读写,然后在数码管上进行显示,调试完毕,毕业设计基本进入尾声。通过几天的软件调试,我学到了很多东西,不仅仅是专业知识,更多的是当我们在遇到一个自己可能并不了解的难题的时候克难奋进,勇于探索的精神,也许这也是我们地大人应该具备的大无畏的探索精神,这也会让我终生受用。51 利用单片机实现非接触式IC卡读写第六章总结与展望回顾非接触IC卡应用历程及其技术特点,展望未来,作者认为IC卡的发展有以下趋势:(1)建立合理的应用规范是非接触IC卡应用发展的有利保障为了持续有序的发展IC卡的应用技术,并且有效利用已有资源,避免重复浪费,提高应用的可靠性,通用性,降低成本,使应用发展井然有序,离不开规范的支持。目前不同行业也制定了或正在制定行业应用规范,这对本行业的IC卡应用有着功不可没的作用。但是,不同行业、领域之间的IC卡如何通用,这是一个亟待解决的问题。(2)非接触IC卡应用技术模块化是一发展趋势模块化设计为应用提供了便利,如非接触IC卡读写模块,将射频技术封装起来,作为商品出售,不但优化了设计,而且减少了外围电路,提高了可靠性和抗干扰性,为用户提供了方便的接口。(3)操作简便,价格低廉,应用灵活,安全、可靠性高是对非接触卡应用的需求趋势。(4)大容量、高保密、支持多应用是非接触IC卡适应市场的必然趋势随着非接触IC卡应用领域的不断扩大,对IC卡的容量、保密性和多应用的需求日益强烈。目前容量几十兆字节的IC卡已问世,随着电子工艺的不断提高,更大容量的IC卡也完全有可能成为明天的现实。非接触CPU卡等高安全性的卡片将会大大降低成本应用于我们的日常生活。这次毕业设计是个漫长的过程,其中遇到了很多大大小小的各种各样的问题,我慢慢积累和查阅资料以及和老师同学探讨,从最基本的单片机最小系统开始,慢慢接触比较陌生的WBL500模块,最后经过几个月的奋战,终于完成了毕业设计,这个过程中,我学到了很多东西,我也觉得自己成熟了很多,也许这也是我们这次做毕业设计的另一个目的,不仅仅是要求我们要必须进一步巩固专业知识,更是要求我们通过这次毕业设计让我们养成严谨的科学态度和克难奋进的工作精神,这次毕业设计我将会终生难忘,我从中学到的这些也会让我受益一生!51 利用单片机实现非接触式IC卡读写结束语非接触式IC卡技术先进,具有接触式IC卡、磁卡等其他卡类不可比拟的优势,应用范围广泛,能够在大多数场合代替接触式IC卡的使用。针对不同的应用场合,非接触式IC卡可以使用同一种IC卡,但是读卡器必须针对不同的应用场合单独设计。本课题开发成功了一种基于Philips公司MIFARE技术的非接触式IC卡读写器,它能够读写距离在20~100MM范围内的符合IEC/ISO14443TypeA标准的非接触式IC卡,作者独立完成了该读卡器的硬件和软件设计。该读卡器采用外接电源供电,LED状态显示,能够满足实际应用的需求。51 利用单片机实现非接触式IC卡读写致谢四年的大学生活转眼间就要过去,在我学生生涯即将结束时,我要向那些帮助过我的老师和同学表示深深的谢意。在毕业设计过程中,我遇到了很多困难,首先要感谢我的指导老师王新梅老师,她在百忙之中还时刻关注我们的毕业设计的动态,遇到困难的时候也细心的帮助我们耐心的解决,对硬件电路和软件的设计、修正以及论文的修改都提出了许多宝贵的意见,她时刻以认真严谨的科研作风和执着的追求精神影响和鼓励着我,我不仅进一步学到了扎实的专业知识,而且还学到一种勤奋严谨的治学精神和不怕困难、克难奋进的艰苦奋斗精神。此外,我还要感谢我的同学和朋友对我的无私的帮助,在他们的帮助,我的课题得以顺利地完成。路漫漫其修远兮,吾将上下而求索,虽然我们即将毕业了,踏上自己的人生路,但学无止境,在这次毕业设计中我学到的东西将会使我受用终生,是我一生中最珍贵的财富,非常感谢我的母校,非常感谢我的老师们,非常感谢我的同学们,愿我们的明天会越来越辉煌!51 利用单片机实现非接触式IC卡读写参考文献[1]王卓人,邓晋军,刘宗祥,IC卡的技术与应用,北京:电子工业出版社,1999。[2]杨肇敏,张忠会,初论非接触IC卡技术,计算机工程与应用,1999年第12期。[3]王爱英,智能卡技术,北京:清华大学出版社,2000。[4]周航慈,单片机应用程序设计技术,北京:航空航天大学出版社,2002。[5]PhilipsSemiconductors,CollectionofCurrentlyAvailableMIFAREApplicationNotes1-15。[6]PhilipsSemiconductors,MIFARECM500ComponentSetHardwareIntegration。[7]PhilipsSemiconductors,DesignofMFCM200Read/WriteAntennas。[8]陈启平,白敏丹,非接触式IC卡门禁系统,煤矿设计,1999年第6期。[9]李科让,一种实用的非接触式IC卡读写器的设计,微型机与应用,2001年第9期。[10]刘新一,谢陈跃,非接触式IC卡停车场收费管理系统,电子技术,1998年第10期。[11]朱兆优,公交非接触IC卡读写器的应用设计,单片机与嵌入式系统应用,2008年第9期。[12]何立民,MCS-51系列单片机应用系统设计-系统配置与接口技术,北京:航空航天大学出版社,1998。[13]马海峰,唐涛,非接触式IC卡及其发展和应用,电子技术,1998年第4期。[14]刘铮,章兢,非接触式IC卡中的射频识别技术,信息技术,2002年第4期。[15]赖麒文,8081单片机C语言彻底应用,北京:科学出版社,2002年。[16]丁元杰,单片微机原理及应用,北京:机械工作出版,1999。[17]KlausFinkenzeller(德),频识别技术,北京:北京电子工业出版社,2001。[18]朱兆优,王耀南,林刚勇,非接触IC卡应用系统设计,计算机自动测量与控制,2001年第五期。51 利用单片机实现非接触式IC卡读写附录A硬件电路图51 利用单片机实现非接触式IC卡读写附录B软件主程序#include/#include"intrins.h"#defineucharunsignedchar#defineuintunsignedintsbitUART_RX_BIT=P3^0;sbitUART_TX_BIT=P3^1;sbitMax7219_pinCLK=P2^2;sbitMax7219_pinCS=P2^1;sbitMax7219_pinDIN=P2^0;uintjge=0;ucharrxbuff[23],receive[23];uchartmpResult;ucharSearMode=0x01,CardBlock=0x04,KeyType=00;//全局变量//#defineokTF0//#defineTimer0_EnableTH0=TL0,TR0=1//#defineTimer0_DisableTR0=0voidInitUART(void){UART_RX_BIT=1;UART_TX_BIT=1;}voidDelay_xms(uintx){uinti,j;for(i=0;i=1;i--){Max7219_pinCLK=0;Max7219_pinDIN=DATA&0x80;DATA=DATA<<1;Max7219_pinCLK=1;}}//-------------------------------------------//功能:向MAX7219写入数据//入口参数:address、dat//出口参数:无//说明:voidWrite_Max7219(ucharaddress,uchardat){Max7219_pinCS=0;Write_Max7219_byte(address);//写入地址,即数码管编号Write_Max7219_byte(dat);//写入数据,即数码管显示数字Max7219_pinCS=1;}voidInit_MAX7219(void){Write_Max7219(0x09,0xff);//译码方式:BCD码Write_Max7219(0x0a,0x03);//亮度Write_Max7219(0x0b,0x07);//扫描界限;4个数码管显示Write_Max7219(0x0c,0x01);//掉电模式:0,普通模式:1Write_Max7219(0x0f,0x01);//显示测试:1;测试结束,正常显示:0}//voidIntTimer0()interrupt1//{//ok=1;//}51 利用单片机实现非接触式IC卡读写voiddelay104us(void){uchari;for(i=0;i<26;i++);}voiddelay52us(void){uchari;for(i=0;i<14;i++);}voiddelay10ms(ucharj){unsignedinti;uchark;for(k=0;k>=1;}while(i<8);UART_TX_BIT=1;//ok=0;//while(!ok);//Timer0_Disable;delay104us();}ucharReceichar(void)51 利用单片机实现非接触式IC卡读写{ucharich,i;ich=0;i=0;while(UART_RX_BIT);//Timer0_Enable;//ok=0;//while(!ok);delay104us();//delay52us();//maydeletewhile(i<8){ich>>=1;if(UART_RX_BIT){ich|=0x80;}i++;//ok=0;//while(!ok);delay104us();}UART_RX_BIT=1;//Timer0_Disable;returnich;}voidCommu_test(void){uchari;uchartxbuff[8];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x04;txbuff[2]=0;txbuff[3]=0x60;txbuff[4]=0;txbuff[5]=0;txbuff[6]=0;for(i=0;i<6;i++)txbuff[6]^=txbuff[i];txbuff[7]=0x0d;for(i=0;i<8;i++)51 利用单片机实现非接触式IC卡读写{Sendchar(txbuff[i]);}for(i=0;i<5;i++){rxbuff[i]=Receichar();}if(rxbuff[2]==0x01){Write_Max7219(1,1);//CardStatus=0x01;}}//-----------------------------------------------------------//command:3C04017000(寻卡模式00(IDLE)或01(ALL))00BCC0D//-----------------------------------------------------------voidSearch_Card(uchar*CardNum){//voidTurnon_BELL(uchartime);//voidTurnon_LED(uchartime);uchari,j;uchartxbuff[9];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x04;txbuff[2]=0x01;txbuff[3]=0x70;txbuff[4]=SearMode;//searchmodetxbuff[5]=0;txbuff[6]=0;for(i=0;i<6;i++)txbuff[6]^=txbuff[i];txbuff[7]=0x0d;for(i=0;i<8;i++){Sendchar(txbuff[i]);}//--------------------------------------//right:3C05四字节卡号00BCC0D51 利用单片机实现非接触式IC卡读写//Error:3C01FF(错误返回代码)BCC0D//---------------------------------------for(i=0;i<9;i++){rxbuff[i]=Receichar();if(rxbuff[i]==0x0d)if(i==8){Write_Max7219(2,1);//Turnon_BELL(0X55);//Turnon_LED(0X55);//CardStatus=0x01;for(j=0;j<4;j++)*CardNum++=rxbuff[2+j];}elsebreak;}}//密码验证://;下传命令:3C0E016C六字节密码00(A密码或B密码01)04(块号)四字节卡号BCC0D//;成功返回:3C020000BCC0D//;错误返回:3C01FF(错误代码)BCC0D//-------------------------------------------voidPSD_Verify(uchar*CardK,uchar*CardNum){uchari;uchartxbuff[23];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x0E;txbuff[2]=0x01;txbuff[3]=0x6C;for(i=4;i<10;i++)txbuff[i]=*CardK++;//card'skeystxbuff[10]=KeyType;txbuff[11]=CardBlock;for(i=0;i<4;i++)txbuff[12+i]=*CardNum++;51 利用单片机实现非接触式IC卡读写txbuff[16]=0;for(i=0;i<16;i++)txbuff[16]^=txbuff[i];txbuff[17]=0x0d;for(i=0;i<18;i++){Sendchar(txbuff[i]);}//--------------------------------------//right:3C020000BCC0D//Error:3C01FF(错误返回代码)BCC0D//---------------------------------------for(i=0;i<6;i++){rxbuff[i]=Receichar();if(rxbuff[i]==0x0d)if(i==5){Write_Max7219(3,1);//CardStatus=0x01;}elsebreak;}}//---------------------------------------//command:3C04016600(绝对块号)00BCC0D//----------------------------------------voidRead_Card(void){uchari;uchartxbuff[8];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x04;txbuff[2]=0x01;txbuff[3]=0x66;txbuff[4]=CardBlock;//searchmodetxbuff[5]=0;txbuff[6]=0;for(i=0;i<6;i++)txbuff[6]^=txbuff[i];51 利用单片机实现非接触式IC卡读写txbuff[7]=0x0d;for(i=0;i<8;i++){Sendchar(txbuff[i]);}//--------------------------------------//right:3C1200Data0~Data15BCC0D//Error:3C01FF(错误返回代码)BCC0D//---------------------------------------for(i=0;i<21;i++){rxbuff[i]=Receichar();receive[i]=rxbuff[i];if(rxbuff[i]==0x0d)if(i==4)break;if(i==20){Write_Max7219(4,1);jge=1;}}}//-----------------------------------------//command:3C13016700(绝对块号)DATA0~DATA15BCC0D//-------------------------------------------voidWriteCard(uchar*Data){uchari;uchartxbuff[23];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x13;txbuff[2]=0x01;txbuff[3]=0x67;txbuff[4]=CardBlock;//searchmodefor(i=0;i<16;i++)txbuff[5+i]=*Data++;txbuff[21]=0;for(i=0;i<21;i++)txbuff[21]^=txbuff[i];txbuff[22]=0x0d;51 利用单片机实现非接触式IC卡读写for(i=0;i<23;i++)Sendchar(txbuff[i]);//--------------------------------------//right:3C020000BCC0D//Error:3C01FF(错误返回代码)BCC0D//---------------------------------------for(i=0;i<6;i++){rxbuff[i]=Receichar();if(rxbuff[i]==0x0d)if(i==5)Write_Max7219(5,1);//CardStatus=0x01;elsebreak;}}//----------------------------------------//command:3C0401680000510DvoidTurnOff_Card(void){uchari;uchartxbuff[8];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x04;txbuff[2]=0x01;txbuff[3]=0x68;txbuff[4]=0;//searchmodetxbuff[5]=0;txbuff[6]=0x51;txbuff[7]=0x0d;for(i=0;i<8;i++)Sendchar(txbuff[i]);//--------------------------------------//right:3C0200003E0D//Error:3C01FF(错误返回代码)BCC0D//---------------------------------------for(i=0;i<6;i++){51 利用单片机实现非接触式IC卡读写rxbuff[i]=Receichar();if(rxbuff[i]==0x0d)if(i==5)Write_Max7219(6,1);//CardStatus=0x01;elsebreak;}}//----------------------------------------//command:3C03016D55060DvoidTurnon_LED(uchartime){uchari;uchartxbuff[7];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x03;txbuff[2]=0x01;txbuff[3]=0x6D;txbuff[4]=time;//timetxbuff[5]=0;for(i=0;i<5;i++)txbuff[5]^=txbuff[i];txbuff[6]=0x0d;for(i=0;i<7;i++)Sendchar(txbuff[i]);//--------------------------------------//right:3C0200003E0D//Error:3C01FF(错误返回代码)BCC0D//---------------------------------------for(i=0;i<6;i++){rxbuff[i]=Receichar();if(rxbuff[i]==0x0d)if(i==5)Write_Max7219(7,1);//CardStatus=0x01;elsebreak;}}51 利用单片机实现非接触式IC卡读写//----------------------------------------//command:3C03016B55060DvoidTurnon_BELL(uchartime){uchari;uchartxbuff[7];//CardStatus=0;txbuff[0]=0x3c;txbuff[1]=0x03;txbuff[2]=0x01;txbuff[3]=0x6B;txbuff[4]=time;//timetxbuff[5]=0;for(i=0;i<5;i++)txbuff[5]^=txbuff[i];txbuff[6]=0x0d;for(i=0;i<7;i++)Sendchar(txbuff[i]);//--------------------------------------//right:3C0200003E0D//Error:3C01FF(错误返回代码)BCC0D//---------------------------------------for(i=0;i<6;i++){rxbuff[i]=Receichar();if(rxbuff[i]==0x0d)if(i==5)Write_Max7219(8,1);//CardStatus=0x01;elsebreak;}}main(){uchari;ucharCardNo[4],CardKey[6],CardData[16]={1,2,3,5,78,97,56,212,178,23,2,1,0,77,56,45};InitUART();Init_MAX7219();51 利用单片机实现非接触式IC卡读写Delay_xms(2000);Write_Max7219(0x0f,0x00);for(i=0;i<6;i++)CardKey[i]=0xff;//for(i=0;i<16;i++)CardData[i]=i;for(i=0;i<4;i++)CardNo[i]=0;tmpResult=0xff;Write_Max7219(1,9);Write_Max7219(2,9);Write_Max7219(3,9);Write_Max7219(4,9);Write_Max7219(5,9);Write_Max7219(6,9);Write_Max7219(7,9);Write_Max7219(8,9);Delay_xms(1000);for(;;){for(i=0;i<8;i++){Write_Max7219(i+1,0);}//tmpResult=0xbf;Commu_test();//SetRes(CardStatus,1);delay10ms(1);//display(tmpResult);Search_Card(CardNo);//SetRes(CardStatus,3);delay10ms(1);//display(tmpResult);PSD_Verify(CardKey,CardNo);//SetRes(CardStatus,4);delay10ms(1);//display(tmpResult);51 利用单片机实现非接触式IC卡读写Read_Card();//SetRes(CardStatus,5);delay10ms(1);//display(tmpResult);WriteCard(CardData);//SetRes(CardStatus,6);delay10ms(1);//display(tmpResult);TurnOff_Card();//SetRes(CardStatus,7);delay10ms(1);if(jge==1){jge=0;for(i=0;i<16;i++){Write_Max7219(1,receive[i+3]%10);Write_Max7219(2,(receive[i+3]%100)/10);Write_Max7219(3,receive[i+3]/100);delay10ms(100);}}//display(tmpResult);Turnon_BELL(0X55);Turnon_LED(0X55);}}51 利用单片机实现非接触式IC卡读写学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期:年月日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。51 利用单片机实现非接触式IC卡读写作者签名:日期:年月日导师签名:日期:年月日51 利用单片机实现非接触式IC卡读写致谢时间飞逝,大学的学习生活很快就要过去,在这四年的学习生活中,收获了很多,而这些成绩的取得是和一直关心帮助我的人分不开的。首先非常感谢学校开设这个课题,为本人日后从事计算机方面的工作提供了经验,奠定了基础。本次毕业设计大概持续了半年,现在终于到结尾了。本次毕业设计是对我大学四年学习下来最好的检验。经过这次毕业设计,我的能力有了很大的提高,比如操作能力、分析问题的能力、合作精神、严谨的工作作风等方方面面都有很大的进步。这期间凝聚了很多人的心血,在此我表示由衷的感谢。没有他们的帮助,我将无法顺利完成这次设计。首先,我要特别感谢我的知道郭谦功老师对我的悉心指导,在我的论文书写及设计过程中给了我大量的帮助和指导,为我理清了设计思路和操作方法,并对我所做的课题提出了有效的改进方案。郭谦功老师渊博的知识、严谨的作风和诲人不倦的态度给我留下了深刻的印象。从他身上,我学到了许多能受益终生的东西。再次对周巍老师表示衷心的感谢。其次,我要感谢大学四年中所有的任课老师和辅导员在学习期间对我的严格要求,感谢他们对我学习上和生活上的帮助,使我了解了许多专业知识和为人的道理,能够在今后的生活道路上有继续奋斗的力量。另外,我还要感谢大学四年和我一起走过的同学朋友对我的关心与支持,与他们一起学习、生活,让我在大学期间生活的很充实,给我留下了很多难忘的回忆。最后,我要感谢我的父母对我的关系和理解,如果没有他们在我的学习生涯中的无私奉献和默默支持,我将无法顺利完成今天的学业。致谢四年的大学生活就快走入尾声,我们的校园生活就要划上句号,心中是无尽的难舍与眷恋。从这里走出,对我的人生来说,将是踏上一个新的征程,要把所学的知识应用到实际工作中去。回首四年,取得了些许成绩,生活中有快乐也有艰辛。感谢老师四年来对我孜孜不倦的教诲,对我成长的关心和爱护。学友情深,情同兄妹。四年的风风雨雨,我们一同走过,充满着关爱,给我留下了值得珍藏的最美好的记忆。在我的十几年求学历程里,离不开父母的鼓励和支持,是他们辛勤的劳作,无私的付出,为我创造良好的学习条件,我才能顺利完成完成学业,感激他们一直以来对我的抚养与培育。最后,我要特别感谢我的导师刘望蜀老师、和研究生助教吴子仪51 利用单片机实现非接触式IC卡读写老师。是他们在我毕业的最后关头给了我们巨大的帮助与鼓励,给了我很多解决问题的思路,在此表示衷心的感激。老师们认真负责的工作态度,严谨的治学精神和深厚的理论水平都使我收益匪浅。他无论在理论上还是在实践中,都给与我很大的帮助,使我得到不少的提高这对于我以后的工作和学习都有一种巨大的帮助,感谢他耐心的辅导。在论文的撰写过程中老师们给予我很大的帮助,帮助解决了不少的难点,使得论文能够及时完成,这里一并表示真诚的感谢。51