




已阅读5页,还剩47页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1目录1、绪论.22、现状分析.23、射频卡(IC卡)的识别系统1射频识别系统的工作原理.42S50非接触式IC卡性能简介(1)主要指标.5(2)结构.6(3)工作原理.7(4)M1射频卡与读卡器的通讯.84、射频读卡模块RC522(1)RC522简介.9(2)RC522引脚图.10(3)管脚描述.11(4)芯片相关功能介绍.12(5)II总线接口.125、STC8989C52芯片介绍(1)芯片特点.13(2)引脚图.14(3)STC8989C52单片机的相关引脚介绍.156、LCD1602芯片.177、软件部分.188、心得.509、参考文献.5010、仿真图.512一、绪论射频识别(RadioFrequencyIdentification,简称RFID)技术是20世纪90年代开始兴起的一种天线的,非接触方式的自动识别技术,是近几年来发展的前沿科技项目。该技术主要是利用无线射频方式进行非接触式的通信,实现对被识别物体的自动识别。射频识别技术的显著优点在于非接触性,因此完成识别工作时无需人工干预,能够实现识别自动化且不易损坏;可识别高速运动物体并可同时识别多个射频标签,操作快捷方便;射频标签不怕油渍、灰尘污染等恶劣的环境,且可以穿透非金属物体进行识别,抗干扰能力强。RFID技术与互联网、通讯等技术相结合,可实现全球范围内物品跟踪与信息共享。研究RFID产业对提升社会信息化水平、促进经济可持续发展、提高人民生活质量、增强公共安全与国防安全等方面产生深远影响,具有战略性的重大意义。射频卡又叫非接触式IC卡,诞生于90年代初,是世界上最近几年发展起来的一项新技术,它成功地将射频识技术和IC卡技术结合起来,解决了无源(卡中无电源)和免接触这一难题,是电子器件领域的一大突破。由于存在着磁卡和接触式IC卡不可比拟的优点,使之一经问世,便立即引起广泛的关注,并以惊人的速度得到推广应用。射频卡与接触式IC卡相比较,非接触式卡具有以下优点:可靠性高,操作方便,快速,防冲突非接触式卡中有快速防冲突机制,能防止卡片之间出现数据干扰,可以适合于多种应用加密性能好。随着社会的不断向前推移,人们生活水平的不断提高,也就意味着人们的消费水平也有了很大的提高,商家的收费系统也有很大的改进,应用于生活中许多消费控制系统中,如汽车消毒收费系统,公交刷卡,售饭收费系统,门禁,电梯刷卡系统,交通收费,停车收费等。二、现状分析在国外,美国加州技术创新博物馆正使用射频卡识别技术来拓展和增强参观者的参观体验。他们给前来参观的访问者每人一个RFID(射频识别技术)标签,使其能够在今后其个人网页上浏览此项展会的相关信息;这种标签还可用来确定博物馆的参观者所访问的目录列表中的语言类别。该博物馆成立于1990年。自成立以来,就成为了硅谷有名又受欢迎的参观地,并吸引了很多家庭和科技爱好者前来参观访问。每年大约能3接待40万参观者。从参观者所做出的积极良好的反应看来,使用RFID标签是成功的。在未来的某一天,美国的技术创新博物馆可能会开发出一种展示品,用来探测RFID技术对于整个世界的影响,他们正在努力地研究着。国内,已经广泛应用于银行、电信、交通、公共安全等社会各领域,得到了快速的发展。国内智能卡市场销售量近12.8亿张,同比增长26.8%;销售额达53.7亿元,同比增长15.3%。智能卡市场销量出现大幅增长的主要原因在于,一是移动通信卡市场的增长拉动了整体市场的增长;二是城市一卡通、居住证、社保卡等领域市场快速发展,也推动了整体市场的增长。作为最大应用领域的移动通信卡市场在亚太市场快速增长的带动下实现了销售量的增长,此外金融服务领域在全球EMV迁移的拉动下实现了10%以上的增长。在身份识别领域,全球电子护照的发行及中国居住证制度的实施也保证了该领域的增长空间。整体来看,智能卡的传统应用领域仍左右全球智能卡市场的发展。以城市一卡通、社保卡、银行IC卡为代表的中国智能卡新兴应用领域发展势头强劲其中城市一卡通目前广泛应用于城市公共交通、高速公路自动收费、智能大厦、各种公共收费、智能小区物业管理、考勤门禁管理、校园和厂区一卡通系统中,这些应用中门禁一卡通近年来得到较快的增长。产品性价比不断提高近年来,智能卡“一卡多用”渐成市场发展趋势,智能卡功能不断提升。与此同时,智能卡生产规模的扩大又促使其价格不断下降,产品性价比不断提高。以移动通信SIM卡为例,虽然产品性能不断提高,但价格呈理性的下降趋势,可以说,目前SIM卡是国内最具性价比的智能卡应用领域。从中国智能卡市场竞争格局来看,目前市场前十位中除金雅拓、金邦达、捷德属外资企业以外,其余均为本土厂商,其中东信和平、握奇数据、大唐微电子等企业在国际市场中也具有一定的竞争实力。从智能卡芯片市场的竞争格局来看,随着中国本土集成电路设计企业的迅速成长,智能卡芯片市场已经摆脱了原来严重依赖国外半导体厂商的局面,有些国内厂商已经可以设计、生产具有与国外产品相同功能的智能卡芯片,而一些国外芯片企业也因为成本和盈利因素放弃了部分领域智能卡芯片的开发。如今中国智能卡芯片厂商已经形成了中外两种竞争格局,其中国外企业以三星、意法、英飞凌、NXP、瑞萨等为代表,国内则以大唐微电子、华虹设计、复旦微电子、中电华大、同方微电子等为代表。在智能卡模块封装环节则有中电、上海伊诺尔、山东山铝、上海长4丰等知名企业,如今中国智能卡产业已经形成芯片设计、芯片制造、模块封装、智能卡制作开发的完整产业链。三、射频卡(IC卡)的识别系统1射频识别系统的工作原理射频识别(RFID)系统为无源系统,即射频卡内不含电池,射频卡的能量是由读写器发出的射频脉冲提供。非接触式射频卡系统是基于射频法的系统。射频法是运用L-C振荡回路工作的RFID系统工作过程如下:(1)读写器在一个区域内发射能量形成电磁场,区域大小取决于发射功率、工作频率和天线尺寸。(2)射频卡进入这个区域时,接收到读写器的射频脉冲,经过桥式整流后给电容充电。电容电压经过稳压后作为工作电压。(3)数据解调部分从接收到的射频脉冲中解调出命令和数据并送到控制逻辑,控制逻辑接受指令完成存储、发送数据或其他操作。(4)如需要发送数据,则将数据调制后从收发模块发送出去。(5)读写器接收到返回的数据后,解码并进行错误校验来决定数据的有效性,然后进行处理,读写器发送的射频信号除提供能量外,通常还提供时钟信号,使数据保持同步。2、芯片:PhilipsMIFARE1S50S50非接触式IC卡性能简介(M1)(1)主要指标容量为8K位EEPROM分为16个扇区,每个扇区为4块,每块16个字节以块为存取单位每个扇区有独立的一组密码及访问控制每张卡有唯一序列号,为32位具有防冲突机制,支持多卡操作无电源,自带天线,内含加密控制逻辑和通讯逻辑电路数据保存期为10年,可改写10万次,读无限次工作温度:-2050(湿度为90%)工作频率:13.56MHZ5通信速率:106KBPS读写距离:10cm以内(与读写器有关)(2)结构M1卡片的存储容量为8192bitX1位字长(即1KX8位字长),采用EEPROM作为存储介质,整个结构划分为16个扇区,编为扇区015。每个扇区有4个块(Block),分别为块0,块1,块2和块3。每个块有16个字节。一个扇区共有16ByteX4=64Byte。每个扇区的块3(即第四块)包含了该扇区的密码A(6个字节)、存取控制(4个字节)、密码B(6个字节),是一个特殊的块,称为控制块,。其余三个块是一般的数据块。数据块有两种应用方法,一种是用作一般的数据保存用,直接读写。另一种用法是用作数值块,可以进行初始化值、加值、减值、读值的运算。系统配用相应的函数完成相应的功能。但扇区0的块0是特殊的,是厂商代码,已固化,不可改写。扇区存储结构M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为063,存贮结构如下图所示:表1存储结构绝对地址存放厂商代码已固化密码A存取控制密码B密码A存取控制密码B6块0数据块0扇区0块1数据块1块2数据块2块3控制块3块0数据块4扇区1块1数据块5块2数据块6块3控制块7块0数据块60扇区15块1数据块61块2数据块62块3控制块63数据块可作两种应用:用作一般的数据保存,可以进行读、写操作。用作数据值,可以进行初始化值、加值、减值、读值操作。每个扇区的块3为控制块,包括了密码A(6字节)、存取控制(4字节)、密码B(6字节)具体结构如下:A0A1A2A3A4A5(密码A)FF078069(存取控制)B0B1B2B3B4B5(密码B)每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中的每个块(包括数据块和控制块)的存取条件是由密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位定义如下:密码A存取控制密码B块0:C10C20C30块1:C11C21C31块2:C12C22C327表2控制位定义三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。块0、1、2的存取控制与块3的存取控制不同(a)数据块(块0、块1、块2)的存取控制如下:表3控制位(X=0,1,2)访问条件(对数据块0,1,2)C1XC2XC3XReadWriteIncrementDecrementtransferRestore000KeyABKeyABKeyABKeyAB010KeyABNeverNeverNever100KeyABKeyBNeverNever110KeyABKeyBKeyBKeyAB001KeyABNeverNeverKeyAB011KeyBKeyBNeverNever101KeyBNeverNeverNever111NeverNeverNeverNever(b)控制块块3的存取控制与数据块(块0、1、2)不同,它的存取控制如下表4密码A存取控制密码BC13C23C33ReadWriteReadWriteReadWrite000NeverKeyABKeyABNeverKeyABKeyAB010NeverNeverKeyABNeverKeyABNever100NeverKeyBKeyABNeverNeverKeyB块3:C13C23C338110NeverNeverKeyABNeverNeverNever001NeverKeyABKeyABKeyABKeyABKeyAB011NeverKeyBKeyABKeyBNeverKeyB101NeverNeverKeyABKeyBNeverNever111NeverNeverKeyABNeverNeverNever(3)工作原理卡片的电气部分只由一个天线和ASIC组成。天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中。ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个8K位EEPROM组成。工作原理:读写器向M1卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,其频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内有了电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容内的电荷送到另一个电容内储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接取读写器的数据。(4)M1射频卡与读写器的通讯复位答应RequestRequestRequest防冲突机制AnticollisionLoopAnticollisionLoop选择卡片SelectTagSelectTag选择卡片三次相互验证AuthenticationAuthentication读块Read读块Read写块WriteWrite块WriteWriteWriteWrite块Write加值incrementincrementincrement减值decremententdecrement中止Halt9图1复位应答(Answertorequest)M1射频卡的通讯协议和通讯波特率是定义好的,当有卡片进入读写器的操作范围时,读写器以特定的协议与它通讯,从而确定该卡是否为M1射频卡,即验证卡片的卡型防冲突机制(AnticollisionLoop)当有多张卡进入读写器操作范围时,防冲突机制会从其中选择一张进行操作,未选中的则处于空闲模式等待下一次选卡,该过程会返回被选卡的序列号。选择卡片(SelectTag)选择被选中的卡的序列号,并同时返回卡的容量代码。10三次次互相确认(3PassAuthentication)选定要处理的卡片之后,读写器就确定要访问的扇区号,并对该扇区密码进行密码校验,在三次相互认证之后就可以通过加密流进行通讯。(在选择另一扇区时,则必须进行另一扇区密码校验。)对数据块的操作读(Read):读一个块;写(Write):写一个块;加(Increment):对数值块进行加值;减(Decrement):对数值块进行减值;存储(Restore):将块中的内容存到数据寄存器中;传输(Transfer):将数据寄存器中的内容写入块中;中止(Halt):将卡置于暂停工作状态;四射频读卡模块RC522(1)射频读卡模块RC522简介MFRC522是应用于13.56MHz非接触式通信中高集成度读写卡系列芯片中的一员。是NXP公司针对“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。MFRC522利用了先进的调制和解调概念,完全集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持ISO14443A的多层应用。其内部发送器部分可驱动读写器天线与ISO14443AMIFARE卡和应答机的通信,无需其它的电路。接收器部分提供一个坚固而有效的解调和解码电路,用于处理ISO14443A兼容的应答器信号。数字部分处理ISO14443A帧和错误检测(奇偶&CRC)。此外,它还支持快速CRYPTO1加密算法,用于验证MIFARE系列产品。MFRC522支持MIFARE更高速的非接触式通信,双向数据双向传输速率高达424kbits。作为13.56MHz高集成度读写卡系列芯片家族的新成员,MFRC522与和MFRC500MFRC530有不少相似之处,同时也具备诸多特点和差异。它与主机间的通信采用连线较少的串行通信,且可根据不同的用户需求,选取SPI、I2C或串行UART(类似RS232)模式之一,有利于减少连线,缩小PCB板体积,降低成本。11(2)引脚图3231302928272625MFRC522123456782423222120191817910111213141516VCPVDDDVDDDVSSPVSSNRSTPDMFINFMOUTTX1SDAIRQTX1TVSSSVDDTVDDTX2TVSSAVDDVMIDOSCOUTOSCINAUX2AUX1AVSSRXEAD7D6D5D4D3D2D1图2(3)管脚描述注:I输入O输出电源表5符号类型描述OSCINI晶振输入:振荡器的反向放大器的输入。它也是外部产生的时钟的输入(fosc=27.12MHZ).IRQO中断请求:输出,用来指示一个中断事件。12SIGINI信号输入SINOUTO信号输出TX1O发送器1:传送调制的13.56MHZ的的能量载波信号TVDDPWR发送器电源:给TX1和TX2的输出级供电TX2O发送器2:传送调制的13.56MHZ的的能量载波信号TVSSPWR发送器地:给TX1和TX2的输出级供电D0IOD1IOD2IOD3IOD4IOD5IOD6IOD7IO数字地不同接口地数据管脚(测试端口IICSPIUART)SDAI串行数据线EAI外部地址:该管脚用来编码IIC地址I2CIIIC使能DVDDPWR数字电源AVDDPWR模拟电源AUX1OAUX2O辅助输出:这两个管脚用于测试AVSSPWR模拟地RXI接收器输入:接受管脚RF信号管脚VMIDPWR内部参考电源:该管脚提供内部电压NRSTPDI不复位和掉电:管脚为低电平时,切断内部电源吸收,关闭振荡器,断开输入管脚与外部电路的连接。管脚的上升沿来启动内部复位阶段。OSCOUTO晶振输出振荡器的反相放大器的输出TESTPIN不连接:三态管脚13PVDDPWR管脚电源PVSSPWR管脚电源地(4)芯片相关功能介绍电池微控制器RSC522射频卡读卡器非接触式卡图3读卡器卡(数据从MFRC522发送到卡)读卡器一方的调制,位编码卡读卡器(接受卡的数据)卡一方的调制,位编码(5)I2C总线接口UCRS522配置连线I2CEAD1-6上拉网络上拉网络SDASCL图4接口遵循I2C总线规范V2.1.在标准,快捷,高速的模式中,MFR522可作用于从接收器或从发送器。SDA是一个双向数据线,通过一个电流源或上拉电阻接到正电压。如果不传输数据SDA和SCL均为高电平。MFR522有一个三态输出级来执行线与功能。五STC89C52芯片介绍(1)MCS-51系列单片机在超低功耗和功能集成等方面有明显的特点。具备适合应用在电池供电的便携式装置、超长时间连续工作的设备等领域的特点,14更具有开发方便、可以现场编程等优点。STC89C52RC内置8K的Flash存储器和512字节RAM,具有3个16位计数器和一个标准的串行通信口,支持ISP程序下载方便程序的调试,此外它还具有良好的温度特性、稳定性和性价比。(2)引脚图512345678910111213141516171819204039383736353433323130292827262524232221T2P1.0T2EXP1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXDP3.0TXDP3.1INT0P3.2INT1P3.3T0P3.4T1P3.5WRP3.6RDP3.7XTAL2XTAL1GNDVCCP0.0AD0P0.1AD1P0.2AD2P0.3AD3P0.4AD4P0.5AD5P0.6AD6P0.7AD7EAVPPALEPROGPESNP2.7A15P2.6A14P2.5A13P2.4A12P2.3A11P2.2A10P2.1A9P2.0A815(3)如图4所示为STC89C52RC单片机的管脚图。VCC(40引脚):电源电压VSS(20引脚):接地P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向IO口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在FlashROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向IO口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。此外,P1.0和P1.1还可以作为定时器计数器2的外部技术输入(P1.0T2)和定时器计数器2的触发输入(P1.1T2EX)。在对FlashROM编程和程序校验时,P1要接收低8位地址。P2端口(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向IO端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVXDPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVXR1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。P3端口(P3.0P3.7,1017引脚):P3是一个带内部上拉电阻的8位双向IO端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。16P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。在对FlashROM编程或程序校验时,P3还接收一些控制信号。P3口除作为一般IO口外,还有其他一些复用功能,如表6所示:表6RST(9引脚):复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。ALEPROG(30引脚):地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚(PROG)也用作编程输入脉冲。在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。这一位置“1”,ALE仅在执行MOVXP或MOV指令时有效。否则,ALE将被微弱拉高。这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。PSEN(29引脚):外部程序存储器选通信号(PSEN)是外部程序存储器选通信号。当AT89C51RC从外部程序存储器执行外部代码时,PSEN在每个机器周期被激活两次,而访问外部数据存储器时,PSEN将不被激活。引脚号P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)17EAVPP(31引脚):访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,EA必须接GND。注意加密方式1时,EA将内部锁定位RESET。为了执行内部程序指令,EA应该接VCC。在Flash编程期间,EA也接收12伏VPP电压。XTAL1(19引脚):振荡器反相放大器和内部时钟发生电路的输入端。XTAL2(18引脚):振荡器反相放大器的输入端。六LCD1602芯片(1)工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2即可以显示两行,每行16个字符液晶模块(显示字符和数字)。(2)引脚图1812345678910111213141516VSSVCCVORSRWEDB0DB1DB2DB3DB4DB5DB6DB7BLABLKLCD1602(3)1602采用标准的16脚接口,其中:第1脚:VSS为电源地第2脚:VCC接5V电源正极第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。19第6脚:E(或EN)端为使能(enable)端高电平(1)时读取信息,负跳变时执行指令。第714脚:D0D7为8位双向数据端。第1516脚:空脚或背灯电源。15脚背光正极,16脚背光负极。7、软件设计MAIN.C#includereg52.h#includemain.h#includemfrc522.h#includeM1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令4字节金额(低字节在前)4字节金额取反4字节金额1字节块地址1字节块地址取反1字节块地址1字节块地址取反unsignedcharcodedata24=0 x12000unsignedcharcodeDefaultKey6=0 xFF0 xFF0 xFF0 xFF0 xFF0 xFF校验密码unsignedcharg_ucTempbuf20unsignedcharidataMLastSelectedSnr4unsignedcharidataRevBuffer30unsignedchardataSerBuffer20unsignedchardatamoney20=00000000000000050最后的50就是卡上的金额可以修改voidcom(unsignedcharcom)voiddat(unsignedchardat)voiddelay(unsignedcharx)bitValidunsignedcharstatus系统初始化voidInitializeSystem()P0=0 xFFP1=0 xFFP3=0 xFFET2=080c52比80C51多一个定时器T2ET2为定时计数器2的溢出中断允许位20T2CON=0 x04外部中断1的中断触发方式控制位边沿触发方式下降沿有效触发PCON=0 x80电源控制寄存器波特率的选择位SOMD,波特率在原来的基础上加倍SCON=0 x70串行口控制寄存器SM0SM1=01工作与方式110位异步收发TMOD=0 x21TMOD=0 x22定时器工作于方式2,波特率发生方式TH1=BAUD_9600波特率为9600位每秒方式2的波特率为定值TL1=TH1自动重装TH1=TL1TR1=1波特率发生器TH0=0 x60TL0=0 x60通过初值设定可知初值TR0=0定时器运行控制位ET0=0中断允许位ET1=0EA=1中断允许总控制位EX0=1外部中断0中断允许位IT0=1外部中断0触发方式控制位边沿触发方式下降沿有效触发TR2=0定时器2起停控制位ES=1串行口中断允许位Valid=0LED_GREEN=1设置LED的显示初值LPcdReset()PcdAntennaOff()PcdAntennaOn()M500PcdConfigISOType(A)用T2做延时子程序21voidmain()unsignedcharbaudt=0flag=5InitializeSystem()LCDinit()xs()while(1)status=PcdRequest(0 x26&RevBuffer2)寻卡if(status=MI_OK)status=PcdAnticoll(&RevBuffer2)防冲撞memcpy(MLastSelectedSnr&RevBuffer24)if(status=MI_OK)status=PcdSelect(&RevBuffer2)选定卡片if(status=MI_OK)status=PcdAuthState(0 x601DefaultKeyMLastSelectedSnr)校验卡密码if(status=MI_OK)status=PcdRead(0 x01&RevBuffer2)读卡if(status=MI_OK)status=PcdWrite(0 x01money)写卡if(status=MI_OK)com(0 x85)dat(money1510+0)dat(money15%10+0)if(t=0)bell=0t=1money15-22com(0 xc5)dat(money1510+0)dat(money15%10+0)elsestatus=PcdRequest(0 x26&RevBuffer2)寻卡if(status!=MI_OK)t=0flag-if(flag=0)bell=1flag=5子程序RC522.C#include#includereg52.h#includemain.h#includemfrc522.h#include#defineMAXRLEN18voidcom(unsignedcharcom)23voiddat(unsignedchardat)voiddelay(unsignedcharx)功能:寻卡参数说明:req_codeIN:寻卡方式0 x52=寻感应区内所有符合14443A标准的卡0 x26=寻未进入休眠状态的卡pTagTypeOUT:卡片类型代码0 x4400=Mifare_UltraLight0 x0400=Mifare_One(S50)0 x0200=Mifare_One(S70)0 x0800=Mifare_Pro(X)0 x4403=Mifare_DESFire返回:成功返回MI_OKcharPcdRequest(unsignedcharreq_codeunsignedcharpTagType)charstatusunsignedintunLenunsignedcharucComMF522BufMAXRLENunsignedcharxTestClearBitMask(Status2Reg0 x08)WriteRawRC(BitFramingReg0 x07)xTest=ReadRawRC(BitFramingReg)if(xTest=0 x07)LED_GREEN=0elseLED_GREEN=1while(1)SetBitMask(TxControlReg0 x03)ucComMF522Buf0=req_codestatus=PcdComMF522(PCD_TRANSCEIVEucComMF522Buf1ucComMF522Buf&unLen)if(status=MI_OK)LED_GREEN=0elseLED_GREEN=1if(status=MI_OK)&(unLen=0 x10)24pTagType=ucComMF522Buf0(pTagType+1)=ucComMF522Buf1elsestatus=MI_ERRreturnstatus功能:防冲撞参数说明:pSnrOUT:卡片序列号,4字节返回:成功返回MI_OKcharPcdAnticoll(unsignedcharpSnr)charstatusunsignedcharisnr_check=0unsignedintunLenunsignedcharucComMF522BufMAXRLENClearBitMask(Status2Reg0 x08)WriteRawRC(BitFramingReg0 x00)ClearBitMask(CollReg0 x80)ucComMF522Buf0=PICC_ANTICOLL1ucComMF522Buf1=0 x20status=PcdComMF522(PCD_TRANSCEIVEucComMF522Buf2ucComMF522Buf&unLen)if(status=MI_OK)for(i=0i4i+)25(pSnr+i)=ucComMF522Bufisnr_check=ucComMF522Bufiif(snr_check!=ucComMF522Bufi)status=MI_ERRSetBitMask(CollReg0 x80)returnstatus功能:选定卡片参数说明:pSnrIN:卡片序列号,4字节返回:成功返回MI_OKcharPcdSelect(unsignedcharpSnr)charstatusunsignedchariunsignedintunLenunsignedcharucComMF522BufMAXRLENucComMF522Buf0=PICC_ANTICOLL1ucComMF522Buf1=0 x70ucComMF522Buf6=0for(i=0i4i+)ucComMF522Bufi+2=(pSnr+i)ucComMF522Buf6=(pSnr+i)CalulateCRC(ucComMF522Buf7&ucComMF522Buf7)ClearBitMask(Status2Reg0 x08)26status=PcdComMF522(PCD_TRANSCEIVEucComMF522Buf9ucComMF522Buf&unLen)if(status=MI_OK)&(unLen=0 x18)status=MI_OKelsestatus=MI_ERRreturnstatus功能:验证卡片密码参数说明:auth_modeIN:密码验证模式0 x60=验证A密钥0 x61=验证B密钥addrIN:块地址pKeyIN:密码pSnrIN:卡片序列号,4字节返回:成功返回MI_OKcharPcdAuthState(unsignedcharauth_modeunsignedcharaddrunsignedcharpKeyunsignedcharpSnr)charstatusunsignedintunLenunsignedchariucComMF522BufMAXRLENucComMF522Buf0=auth_modeucComMF522Buf1=addrfor(i=0i6i+)ucComMF522Bufi+2=(pKey+i)for(i=0i6i+)ucComMF522Bufi+8=(pSnr+i)memcpy(&ucComMF522Buf2pKey6)memcpy(&ucComMF522Buf8pSnr4)27status=PcdComMF522(PCD_AUTHENTucComMF522Buf12ucComMF522Buf&unLen)if(status!=MI_OK)|(!(ReadRawRC(Status2Reg)&0 x08)status=MI_ERRreturnstatus功能:读取M1卡一块数据参数说明:addrIN:块地址pDataOUT:读出的数据,16字节返回:成功返回MI_OKcharPcdRead(unsignedcharaddrunsignedcharpData)charstatusunsignedintunLenunsignedchariucComMF522BufMAXRLENucComMF522Buf0=PICC_READucComMF522Buf1=addrCalulateCRC(ucComMF522Buf2&ucComMF522Buf2)status=PcdComMF522(PCD_TRANSCEIVEucComMF522Buf4ucComMF522Buf&unLen)if(status=MI_OK)&(unLen=0 x90)memcpy(pDataucComMF522Buf16)for(i=0i16i+)(pData+i)=ucComMF522Bufielsestatus=MI_ERR28returnstatus功能:写数据到M1卡一块参数说明:addrIN:块地址pDataIN:写入的数据,16字节返回:成功返回MI_OKcharPcdWrite(unsignedcharaddrunsignedcharpData)charstatusunsignedintunLenunsignedchariucComMF522BufMAXRLENucComMF522Buf0=PICC_WRITEucComMF522Buf1=addrCalulateCRC(ucComMF522Buf2&ucComMF522Buf2)status=PcdComMF522(PCD_TRANSCEIVEucComMF522Buf4ucComMF522Buf&unLen)if(status!=MI_OK)|(unLen!=4)|(ucComMF522Buf0&0 x0F)!=0 x0A)status=MI_ERRif(status=MI_OK)memcpy(ucComMF522BufpData16)for(i=0i16i+)ucComMF522Bufi=(pData+i)CalulateCRC(ucComMF522Buf16&ucComMF522Buf16)status=PcdComMF522(PCD_TRANSCEIVEucComMF522Buf18ucComMF522Buf&unLen)if(status!=MI_OK)|(unLen!=4)|(ucComMF522Buf0&0 x0F)!=0 x0A)status=MI_ERR29returnstatus功能:命令卡片进入休眠状态返回:成功返回MI_OKcharPcdHalt(void)charstatusunsignedintunLenunsignedcharucComMF522BufMAXRLENucComMF522Buf0=PICC_HALTucComMF522Buf1=0CalulateCRC(ucComMF522Buf2&ucComMF522Buf2)status=PcdComMF522(PCD_TRANSCEIVEucComMF522Buf4ucComMF522Buf&unLen)returnMI_OK用MF522计算CRC16函数voidCalulateCRC(unsignedcharpIndataunsignedcharlenunsignedcharpOutData)unsignedcharinClearBitMask(DivIrqReg0 x04)WriteRawRC(CommandRegPCD_IDLE)SetBitMask(FIFOLevelReg0 x80)for(i=0ileni+)WriteRawRC(FIFODataReg(pIndata+i)WriteRawRC(CommandRegPCD_CALCCRC)30i=0 xFFdon=ReadRawRC(DivIrqReg)i-while(i!=0)&!(n&0 x04)pOutData0=ReadRawRC(CRCResultRegL)pOutData1=ReadRawRC(CRCResultRegM)功能:复位RC522返回:成功返回MI_OKcharPcdReset(void)MF522_RST=1_nop_()MF522_RST=0_nop_()MF522_RST=1_nop_()WriteRawRC(CommandRegPCD_RESETPHASE)_nop_()WriteRawRC(ModeReg0 x3D)和Mifare卡通讯,CRC初始值0 x6363WriteRawRC(TReloadRegL30)WriteRawRC(TReloadRegH0)WriteRawRC(TModeReg0 x8D)WriteRawRC(TPrescalerReg0 x3E)WriteRawRC(TxAutoReg0 x40)returnMI_OK设置RC632的工作方式charM500PcdConfigISOType(unsignedchartype)31if(type=A)ISO14443_AClearBitMask(Status2Reg0 x08)WriteRawRC(CommandReg0 x20)asdefaultWriteRawRC(ComIEnReg0 x80)asdefaultWriteRawRC(DivlEnReg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025贵州省重点产业人才“蓄水池”第三批岗位专项简化程序招聘46人备考考试题库附答案解析
- 掌握春分季节
- 悦享安全劳动
- 中国电视剧海外传播趋势与展望报告
- 软件安全可信加固-洞察及研究
- 手指画恐龙课件教学
- 四川省泸州市泸县第五中学2025-2026学年高二上学期9月月考思想政治试卷
- 架线数字孪生建模-洞察及研究
- 百度房屋买卖解除合同范本6篇
- 广西钦州市十三中学2025-2026学年高三上学期第八周考试政治试卷(含答案)
- 儿科常用急救技术
- IT运维服务合同(模板)7篇
- 网络安全培训课件
- 呼吸困难的急诊处理
- C172机型机身6章培训
- 燃气重点用户管理办法
- 车队充电服务协议书范本
- 猫咖设计案例解析与方案模板
- 腹腔镜手术并发症解析
- 服装款式图模板谭敏31课件
- GB/T 45860.2-2025光纤激光束焊机的验收试验第2部分:光纤输送机的移动机构
评论
0/150
提交评论