计算机应用 | 古代文学 | 市场营销 | 生命科学 | 交通物流 | 财务管理 | 历史学 | 毕业 | 哲学 | 政治 | 财税 | 经济 | 金融 | 审计 | 法学 | 护理学 | 国际经济与贸易
计算机软件 | 新闻传播 | 电子商务 | 土木工程 | 临床医学 | 旅游管理 | 建筑学 | 文学 | 化学 | 数学 | 物理 | 地理 | 理工 | 生命 | 文化 | 企业管理 | 电子信息工程
计算机网络 | 语言文学 | 信息安全 | 工程力学 | 工商管理 | 经济管理 | 计算机 | 机电 | 材料 | 医学 | 药学 | 会计 | 硕士 | 法律 | MBA
现当代文学 | 英美文学 | 通讯工程 | 网络工程 | 行政管理 | 公共管理 | 自动化 | 艺术 | 音乐 | 舞蹈 | 美术 | 本科 | 教育 | 英语 |

免费毕业论文--基于单片机的IC卡读写器设计(一(7)

2013-06-16 01:04
导读:;PReset=0;} // 给复位脉冲 while (ReadRC(RegPage) ! = 0x80); do{WriteRC(RegPage,0x0);} while(ReadRC(RegCommand) ! = 0x00); if (ReadRC(RegCommand) ! = 0x00) status=MI_INTERFACEERR;/
;PReset=0;} // 给复位脉冲
 while (ReadRC(RegPage) ! = 0x80);
 do{WriteRC(RegPage,0x0);}
 while(ReadRC(RegCommand) ! = 0x00);
 if (ReadRC(RegCommand) ! = 0x00)
 status=MI_INTERFACEERR;//接口初始化错误
 elsestatus = 0;//接口初始化成功
 
Mifare1 卡的操作

 MCU 对Mifare1卡操作的命令主要有空操作、装载密码、验证密码、读卡、写卡和关卡等。无论哪种操作都必须先把命令代码写入到Command寄存器, 比如执行验证密码则需要执行WriteRC(RegCommand,0x0c)命令。从操作流程上,可以把Mifare1卡的操作分为以下几项:
 1.复位请求:当一张Mifare1卡处在读写器天线的工作范围之内时,读写器向卡发出REQUEST all (或REQUEST std)命令。卡的ATR 将启动,将卡Block 0中的卡类型( TagType) 号共2 个字节传送给读写器,建立卡片与读写器的第一步通信联络。如果不进行复位请求操作,读写器对卡的其它操作将不会进行。
 2.反碰撞操作:如果有多张Mifar1e卡处在读写器天线的工作范围之内时, 读写器首先与每一张卡进行通信,取得每一张卡的ID 号。由于每一张Mifare1卡都具有唯一的ID 号,因此读写器根据卡的ID号来保证一次只对一张卡操作。
 3.卡选择操作:完成了上述二个步骤之后,读写器必须对卡进行选择操作。执行操作后,返回卡上的SIZE字节。
 4.认证操作:经过上述三个步骤,在确认已经选择了一张卡片时,读写器必须对卡上已经设置的密码进行认证。如果匹配,才允许进一步的读写操作。
 5.读写操作:对卡的读、写、增值、减值、存储和传送等操作。
 
 七、读卡程序

 根据上面的流程,采用基于Keil C的C语言进行编程,程序如下: (科教范文网 fw.nseac.com编辑发布)
 char M500Reset(void)
 { char status;
 RC500RST = 0;            //RC500 在RSTPD 脚由高变低的时候复位
 delay_1ms(25);            //注意延时的长度,本系统的晶振频率是
 //11.0592MHz
 RC500RST = 1;
 delay_50us(200);
 RC500RST = 0;
 delay_50us(50);
 return status;
 }
 char M500Config(void)        //对RC500的寄存器进行初始化
 char M500PiccCommonRequest(unsigned char req_code,unsigned
 char*atq)                   //RC500 发送请求。
 req_code是请求模式,一共有requestall和Requeststd两种模式。Requestall指令是非连续性的读卡指令,只读一次。
 但有个例外,当某一次Requestall指令读卡片失败时,例如,卡片没能通过密码认证或其它原因而出错时,Requestall 指令将连续地读卡,直到读卡成功才进入非连续性的读卡模式。Re -queststd 指令的使用和Requestall指令刚巧相反。
 Requeststd指令是连续性的读卡指令。当某一张卡片在MCM之天线的有效的工作范围(距离)内,Requeststd指令在成功地读取这一张卡片之后,进入MCM对卡片的其它操作。如果其它操作完成之后,程序员又将MCM进入Requeststd 指令操作,则Requeststd指令将连续地再次进行读卡操作,而不管这张卡片是否被拿走。只要有一张卡片进入MCM之天线的有效的工作范围( 距离) 内, Requeststd 指令将始终连续地再次进行读卡操作。对于Mifare1卡,该函数返回值为0004H 。
char M500PiccCascAnticoll (unsigned char bcnt,unsignedchar *snr)
 //反碰撞函数, 得到一张卡的序列号// 存入snr 中 (转载自http://www.NSEAC.com中国科教评价网)
char M500PiccCascSelect(unsigned char *snr,unsigned char*sak)
 // 选中snr 指定的卡,对于Mifare1 卡返回值为0008H,值存入sak 中
char M500PiccAuthKey( unsigned char auth_mode, unsignedchar *snr,unsigned char *keys,unsigned char block)
 // 这是三轮认证函数,整个过程包括:先将所要访问的区密码加密( 如区0 的初始密码为6 个FFH) ,再将加密后的密码通过Loadkey 存入MF RC500 的Key 缓存中,接着进行认证。
char M500PiccRead( unsigned char addr,unsigned char*_data)
 // 最后读卡,读到的数据存入_data 中。
 


结束语
 实际应用证明射频卡读写器系统读写非接触式IC卡片迅速、方便、可靠、安全、稳定,深受用户欢迎。可以取代目前仍在使用的磁卡和接触式IC卡读写器,具有巨大的市场竞争力和广阔的发展前景 。本文介绍了PHILIPS公司的MFRC500非接触式IC卡的结构和工作原理,给出了基于MFRC500的嵌入式读写模块的软硬件设计方法。此读写模块的使用使复杂的IC卡技术变得非常简单,因而对非接触式智能卡的推广具有重要意义。目前,该系统已可用于考勤、门禁、售饭等多种系统中。与磁卡、只读射频卡(EM卡)组成的系统相比,该系统的性能大大改善,并且为“一卡通”的实现提供了必备条件。

 

致谢词
 通过此次的设计,我学到了很多知识,跨越了传统方式下的教与学的体制束缚,在论文的写作过程中,通过查资料和搜集有关的文献,培养了自学能力和动手能力。在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过毕业论文,我们学会了如何将学到的知识转化为

上一篇:免费毕业论文--LED显示屏动态显示和远程监控的实 下一篇:没有了