基于PIC16F877A的S50射频卡读写电路的设计*

2016-09-28 10:21蔡卓恩郭志成
甘肃科技 2016年15期
关键词:IC卡扇区刷卡

蔡卓恩,郭志成

(兰州工业学院,甘肃 兰州730050)

基于PIC16F877A的S50射频卡读写电路的设计*

蔡卓恩,郭志成

(兰州工业学院,甘肃兰州730050)

主要阐述了基于PIC16F877A单片机的S50射频卡读写电路的设计,介绍了PIC16F877A最小应用系统及其与读卡芯片RC522的接口电路,并重点介绍了S50中所储存数据用作电子钱包的软件实现,可作为类似系统的应用参考。

PIC16F877A;RC522;S50;电子钱包

1 概述

射频卡即非接触式IC卡,将射频识别技术和IC卡技术结合起来,在大小和普通信用卡相同的PVC卡片内嵌置IC芯片和感应天线,无任何外露部分。S50是采用NXPMF1ICS50制作的非接触IC卡,符合ISO14443A标准,可以和低成本的射频卡基站RC522构成完整的射频卡应用系统,目前国内有很多公司可向用户提供S50射频卡的服务。由于S50具有很高的性价比,操作方便,加密性能好。因此在公交系统、餐饮服务系统等领域得到了广泛的应用[1]。

2 硬件电路设计

2.1PIC16F877A介绍

控制系统选用由美国Microchip公司生产的8位单片微控制器PIC16F877A作为核心控制单元,PIC16F877A具有独特的精简指令集(RISC)结构,数据总线和指令总线分离的哈佛总线结构,使器件性能和运算速度大大提高。片内集成有8k的Flash可重复编程存储器,368Byte的数据存储器,256Byte 的EEPROM数据存储器,3个定时/计数器,2个CCP模块,同步串行通信端口,8通道10位A/D转换器,以及时钟、看门狗等,具有上电复位、PWM输出、LCD驱动等功能,有40只引脚。由于片内集成的外围设备种类和数量多,使其外围电路大大简化。此外,此芯片还具有低功耗睡眠(SLEEP)模式,易于实现低功耗设计[2]。

图1所示为单片机最小应用系统,包括复位电路﹑晶振﹑编程接口电路。C19﹑R46﹑R53﹑D4构成上电复位电路,系统使用20M晶振,J3为ICD2编程接口,连接ICD2仿真器可实现程序的在线仿真及下载。

图1 单片机最小应用系统

2.2RC522接口电路

图2所示为单片机与读卡芯片RC522的接口电路,S50卡通过发射机应答器振荡线圈与基站振荡线圈的耦合取得能量,通过必要的通信软件配合,保证卡与基站间实现双向数据交换。RC522需要3.3V供电,通过稳压芯片AS2830将5V电压转换为3.3V。

图2 RC522读写系统接口电路

3 S50非接触式IC卡的应用举例

3.1S50的存储结构

S50非接触式IC卡容量为8K位 (bits)=1K字节(bytes)EEPROM,分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位,每个扇区有独立的一组密码及访问控制;每张卡有唯一序列号,为32位;具有防冲突机制,支持多卡操作;无电源,自带天线,内含加密控制逻辑和通讯逻辑电路;数据保存期为10年,可改写10万次,读无限次;工作频率为13.56MHZ;通信速率为106KBPS;读写距离一般在10cm以内(与读写器有关)[3]。

S50存储结构如图3所示,M1卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,(我们也将16个扇区的64个块按绝对地址编号为0~63;第0扇区的块0(即绝对地址0块),它用于存放厂商代码,已经固化,不可更改。每个扇区的块0、块1、块2为数据块,可用于存贮数据。每个扇区的块3为控制块,包括了密码A、存取控制、密码B。

图3 S50存储结构

3.2S50的电子钱包应用

数据块可作两种应用:(1)用作一般的数据保存,可以进行读、写操作。(2)用作数据值,可以进行初始化值、加值、减值、读值操作,即电子钱包。以下为数据块作电子钱包应用的函数,这种方式可直接对数据进行增减。

//电子钱包函数

voidmoneyset(unsignedintmon,unsignedchar adr)

{mon=mon*100;

money[1]=mon/256;

money[0]=mon%256;

money[2]=0;

money[3]=0;

money[4]=~money[0];

money[5]=~money[1];

money[6]=~money[2];

money[7]=~money[3];

money[8]=money[0];

money[9]=money[1];

money[10]=money[2];

money[11]=money[3];

money[12]=adr;

money[13]=~adr;

money[14]=adr;

money[15]=~adr;

3.3刷卡自动扣款系统

非接触式射频卡读写系统应用于刷卡自动扣款系统,采用射频卡作为电子货币载体。刷卡功能有定值预扣模式和在线消费两种模式,在线消费模式根据实际用量扣去射频卡内相应金额。用户刷卡后,主控机检测刷卡信息,配置默认用量,扣除对应金额;若在中途停止并再次刷卡,则根据实际用量返还金额。刷卡子程序流程图如图4所示,再次刷卡返还金额流程中减值操作变为增值操作即可[4]。

图4 刷卡子程序流程图

扣款和充值子程序:

//参数说明:dd_mode[IN]:命令字

//0xC0=扣款

//0xC1=充值

//addr[IN]:钱包地址

//pValue[IN]:4字节增(减)值,低位在前

charPcdValue(unsignedchardd_mode,unsigned

charaddr,unsignedchar*pValue)

charstatus;

unsignedintunLen;

unsignedchari,ucComMF522Buf[MAXRLEN];

ucComMF522Buf[0]=dd_mode;

ucComMF522Buf[1]=addr;

CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf

[2]);

status=PcdComMF522(PCD_TRANSCEIVE,uc-

ComMF522Buf,4,ucComMF522Buf,&unLen);

if(status!=MI_OK)||(unLen!=4)||

(ucComMF522Buf[0]&0x0F)!=0x0A))

{status=MI_ERR;}

if(status==MI_OK)

//memcpy(ucComMF522Buf,pValue,4);

for(i=0;i<16;i++)

{ucComMF522Buf[i]=*(pValue+i);}

CalulateCRC(ucComMF522Buf,4,&ucComMF522Buf

[4]);

unLen=0;

status=PcdComMF522(PCD_TRANSCEIVE,uc-

ComMF522Buf,6,ucComMF522Buf,&unLen);

if(status!=MI_ERR)

{status=MI_OK;}

if(status==MI_OK)

ucComMF522Buf[0]=PICC_TRANSFER;

ucComMF522Buf[1]=addr;

CalulateCRC(ucComMF522Buf,2,&ucComMF522Buf

[2]);

status=PcdComMF522(PCD_TRANSCEIVE,uc-

ComMF522Buf,4,ucComMF522Buf,&unLen);

if(status!=MI_OK)||(unLen!=4)||

(ucComMF522Buf[0]&0x0F)!=0x0A))

{status=MI_ERR;}

returnstatus;

4 结论

S50中所储存数据可用作数据值即电子钱包,这种方式可直接对数据进行增减。本文讨论了S50非接触式IC卡在刷卡自动扣款系统中的应用,提供了作为电子钱包使用的一种软硬件实现方法,由于S50在多个领域得到广泛应用,本文可作为类似系统的应用参考。

[1] 张晓红.自动售水机的研究与实现[D].东华理工大学硕士学位论文,2012.

[2] 朱兆优,陈坚,王海涛,邓文娟.单片机原理及应用[M].电子工业出版,2010.9.

[3] 吴涤,射频IC卡读写系统设计[D].西南交通大学硕士学位论文,2005.

[4] 陆永宁.IC卡应用系统[M].南京:东南大学出版社,2005.5.

TP273.5

甘肃省高校科研项目资助2015B-126。

猜你喜欢
IC卡扇区刷卡
分阶段调整增加扇区通行能力策略
工商业IC卡控制器改造为物联网控制器实践
在用电梯加装外接式IC卡运行控制系统设计改进
管制扇区复杂网络特性与抗毁性分析
U盘故障排除经验谈
基于贝叶斯估计的短时空域扇区交通流量预测
刷卡
长春开通公交IC卡充值平
刷脸就可以购物
湖北省高速公路IC卡管理系统浅谈