来源:中国一卡通网 作者:刘志平 赵国良 发布时间:2008-07-15 10:08:34 字体:[大 中 小]
关键字:射频卡读卡器 mifare1卡 mf rc500 天线设计
摘 要:Mifare1系列射频卡具有高度安全、高可靠性及分区存储结构等特点,其应用范围越来越广.文中提出了一种基于AT89S52和MF RC500实现的Mifare1射频卡读卡器的设计方法. 先介绍了系统的组成及工作原理,然后给出了系统的硬件设计,最后给出了软件设计流程和相应程序.
图3 系统软件流程
图3实际上是对一张Mifare1卡的完整操作过程,主要包括复位请求、防碰撞、选卡、密码验证、写卡等操作.其执行顺序必须依次进行,不能颠倒.下面结合实际开发经验,详细介绍对Mifare1卡的每一步操作.
3.1 复位请求
当一张Mifarel卡处在读写器天线的1二作范围之内时,读写器向卡发出REQUEST all命令.卡的ATR将启动,实现复位请求.请求成功,则将卡Block 0中的卡类型(TagType)号共2个字节传送给读写器,建立卡片与读写器的第一步通信联络.如果不进行复位请求操作,读写器对卡的其他操作将不会进行.具体操作程序为:
3.2 防碰撞
如果有多张Mifare1卡处在读写器天线的工作范围之内时,读写器首先与每一张卡进行通信,取得每一张卡的ID号.由于每一张Mifarel卡都具有惟一的ID号,因此读写器根据卡的ID号来保证一次只对一张卡操作,操作成功后将返回卡的ID号.具体操作程序为:
3.3 选择卡
完成上面2个步骤后,就可以对某张卡进行选择操作,这时其他卡将不响应而进入空闲状态.如果通信成功,被选择的卡将返回其容量大小.具体操作程序为:
3.4 密码验证
一张Mifare1只有通过密码验证后才能对其EEPROM中的数据进行读写操作.为此,用户必须事先将密码编程到MF RC500的非易失性密匙存储器中,RC500将与卡片各个扇区中的密码A或密码B验证,成功后方能进行下一步操作.所以用户必须妥善保管卡片中的密码,一旦丢失,将无法对卡片进行任何操作,此卡报废.具体操作程序为:
M500 HostCodeKey (KeyUncode,KeyCode);6字节密码转换成12字节
status= M500PiccAuthKey(PICC_AUTHENT1A,CardSnr,KeyCode,4)/block4密码4验证if(status! =0)//失败
return ;
3.5 写卡
经过密码证实后,就可以对卡中各扇区的数据进行读、写、增值和减值等操作.下面举例说明如何把矿工下井时长写入到数据块中.
char value[16];
PrepareValue(0,value);//将初始下井时长0 h格式化到value数组中
M500PiccWrite(4,value);//存value到Block4数据块中
PrepareValue(TimeData,value);//将当天下井时长
TiineData格式化到value数组中
M500PiccValue(PICC—INCREMENT,4,value,4);//Block4中数据每次做加TiineData操作
4 结束语
介绍了Mifare1系列射频卡的读卡器开发,并结合到实际应用中.经实践证明,本系统运行稳定,操作方便,能对有效范围内的多张卡准确无误地读写,读写距离可达7 cm,目前在煤矿考勤中发挥着重要作用.
作者简介:刘志平(1983-- 男,硕士研究生,主要研究方向:计算机控制、应用技术
原文下载地址:http://www.yktchina.com/BBS/disptopic.asp?boardid=4&topicid=3796&frompage=1
推荐文章
论坛热帖