非接触式IC卡读卡器模块实验
文章出处:http://www.singbon.com 作者:北京达盛科技有限公司 人气: 发表时间:2011年09月01日
一、实验目的
1、掌握 8255 可编程并行口的应用
2、掌握非接触式IC卡读卡器及M1 卡原理及编程方法
3、掌握液晶显示模块与单片机接口及编程方法
二、实验设备
EL-MUT-III 型单片机实验箱、8051CPU 模块、非接触式IC 卡模块。
三、实验内容
用非接触式IC卡读卡器模块对M1卡进行读/写操作。
四、实验原理
上电后首先用程序对读卡器芯片(以下简称PCD)进行寄存器初始化,完成后进入寻卡状态,通过天线发出寻卡信号。当有IC 卡(以下简称PICC,实验程序所使用的卡为MF1 S50 卡)进入天线有效操作区,并且得到能量后,返回给PCD 卡类型值。下一步PCD 对卡进行防冲突操作,PICC 得到防冲突操作信号后,返回给PCD 卡序列号。PCD 接收到序列号后,程序对序列号有效性判定。当确认PICC 序列号有效后,PCD 发送选卡命令,选卡命中包含送出所选卡序列号,这样保证进行下一步操作的卡唯一。PCD 装载密匙,所装载密匙与所要操作的PICC 扇区密匙一致,同一个扇有两组密匙,密匙A、B。如进行A 密匙认证则,装载的密匙为A 密匙,进行B 密匙认证,则需装载B 密匙。装载密匙成功后,开始三遍认证操作。
如下图所示为三遍认证的令牌原理框图:
认证过程是这样进行的:
(A)环:由 Mifare 1 卡片向读写器 发送一个随机数据 RB;
(B)环:由读写器收到RB 后向Mifare 1 卡片发送一个令牌数据TOKEN AB,其中包含了读写器发出的一个随机数据 RA;
(C)环:Mifare 1 卡片收到 TOKEN AB 后,对TOKEN AB 的加密的部分进行解密,并校验第一次由(A)环中Mifare 1 卡片发出去的随机数RB 是否与(B)环中接收到的TOKEN AB 中的RB 相一致;
(D) 环 : 如果(C)环校验是正确的,则Mifare 1 卡片向读写器 发送令牌TOKEN BA 给读写器;
(E)环:读写器收到令牌TOKEN BA 后,读写器将对令牌TOKEN BA 中的RB(随机数)进行解密;并校验第一次由(B)环中读写器发出去的随机数RA 是否与(D)环中接收到的 TOKEN BA 中的RA 相一致;
如果上述的每一个环都为“真”,都能正确通过验证,则整个的认证过程将成功。
读写器将能对刚刚认证通过的卡片上的这个扇区可以进入下一步的操作(READ/WRITE 等操作)。卡片中的其他扇区由于有其各自的密码,因此不能对其进行进一步的操作。如想对其他扇区进行操作,必须完成上述的认证过程。
认证过程中的任何一环出现差错,整个认证将告失败。必须从新开始。如果事先不知卡片上的密码,则由于密码的变化可以极其复杂,因此靠猜测密码而想打开卡片上的一个扇区的可能性几乎为零。
这里提醒一下程序员和卡片的使用者,必须牢记卡片中的 16 个扇区的每一个密码,否则,遗忘某一扇区的密码,将使该扇区中的数据不能读写。没有任何办法可以挽救这种低级错误。但是,卡片上的其他扇区可以照样使用。
上述的叙述已经可以充分地说明了 Mifare 1 卡片的高度安全性,保密性,及卡片的应用场合多样性,一卡多用(一卡通)。
详细操作流程参阅:FM1702 手册,MF1 S50 手册,14443 协议。
五、实验原理图:
六、实验步骤
1、实验连线:
8255 的片选CS8255 与CS2 相连;PA0~PA7 分别与DB0~DB7 相连;PC0 与REQ 相连;PC7 与BUSY 相连。读卡模块片选CS500 接CS0,或用跳线短接模块上CS0,EST 接CPU 板的TXD,CPU板的RXD 接实验箱K1,K1 高电平控制读卡,低电平控制写卡。P0.0~P0.7 分别接LED1~LED8,用来动态观察程序执行到的具体位置,此8 条线可不接。LED1 寻卡成功,LED2 防冲突成功,LED3 选卡成功,LED4 装载密匙成功,LED5验证AUTHENT1 成功,LED6 验证AUTHENT2 成功,LED7 读卡成功,LED8 写卡成功。
2、全速运行实验程序:OK_STD.ASM
3、M1 卡于读卡模块天线上方逐渐向下水平靠近读卡模块,观察LCD 显示内容。
4、改变K1 状态,再次重复步骤3。
七、实验结果
当 K1 打到高电平时,LCD 上第一行显示:CARD_SN:+ M1 卡序列号,第二行显示读操作:READ_CARD:第三、四行显示从M1 卡读出来的16 个8 位16 进制数据。当K1 打到低电平时,LCD 上第一行显示:CARD_SN:+ M1 卡序列号,第二行显示读操作:WRITE_CARD:第三、四行显示写入M1 卡的16 个8 位16 进制数据。
八、程序框图