摘 要: 采用Philips的基于射频技术为核心的非接触IC卡Mifare ones50,加上 AT89C52单片机为控制器的IC卡读写器,可以构成学校机房自动收费系统。IC卡读写器可以实现写卡、读卡等功能,具有安全、实用、方便、快捷、可靠性高的特点,解决了校园机房的收费管理问题,在类似场合也有广泛的应用前景。
关键词: 单片机;非接触IC卡;读写器
IC卡及IC卡读写器概述
目前常用的IC卡有两种:接触式和非接触式IC卡。接触式IC卡通过机械触点从读写器获取能量和交换数据;非接触式IC卡通过线圈射频感应从读写器获取能量和交换数据,所以又称射频卡。本系统使用的是非接触式IC卡,它具有存储量大,成本低等特点。接触式IC卡虽得到了大量应用,但因本身的特点制约了其发展,如在许多情况下机械触点接通不可靠,且触点对腐蚀和污染缺乏抵抗能力,在有些领域应用不方便。非接触识别已经逐步发展成为一个独立的跨学科的专业领域,它将大量来自不同专业领域的技术综合在一起,如高频技术、电磁兼容性、半导体技术、数据保护和密码学、电信、制造技术和许多专业应用领域。
随着非接触IC卡的大量使用,它的成本也会越来越低,可以自己用单片机开发读写器,一般设计为两种类型:一种是通过串行口与PC机相连,在设计时,电路可以主要由非接触IC卡读写器芯片、单片机、天线和监控电路以及与PC机通信的TC232串行通信接口电路等部分组成。这种读写器除了编写单片机程序外,还需要用VB、DELPHI等语言进行软件开发。
另一种读写器是放在收费现场的,电路主要由非接触式IC卡读写芯片、单片机、键盘、显示、存储器、天线和监控电路等部分组成。 这种读写器的软件在编写时,只允许用户读卡片,并具有自动收费的功能。
系统设计原理
Mifare one s50的功能
容量为8K位EEPROM;
分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位;
每个扇区有独立的一组密码及访问控制;
每张卡有唯一序列号,为32位;
具有防冲突机制,支持多卡操作;
无电源,自带天线,内含加密控制逻辑和通讯逻辑电路;
数据保存期为10年,可改写10万次,读无限次;
工作温度: 20℃~50℃(温度为90%);
工作频率:13.56MHz;
通信速率:106KBPS;
读写距离:10mm以内(与读写器有关)。
Mifare one s50的工作原理
卡片的电气部分由一个天线和ASIC组成。天线:卡片的天线是只有几组绕线的线圈,适于封装到IS0卡片中。ASIC:卡片的ASIC由一个高速(106KB波特率)RF接口,一个控制单元和一个8K位EEPROM组成。
卡分为16个扇区,每个扇区由4块(块0、块1、块2、块3)组成,将16个扇区的64个块按绝对地址编号为0~63,存贮结构如图1所示。
图(略)
第0扇区的块0(即绝对地址0块),用于存放厂商代码,已经固化,不可更改。
每个扇区的块0、块1、块2为数据块,可用于存贮数据,可以进行初始化值、加值、减值、读值等操作。
每个扇区的密码和存取控制都独立,可以根据实际需要设定各自的密码及存取控制。
读写器向卡发一组固定频率的电磁波,卡片内有一个LC串联谐振电路,频率与读写器发射的频率相同,在电磁波的激励下,LC谐振电路产生共振,从而使电容内产生电荷,在这个电容的另一端,接有一个单向导通的电子泵,将电容的电荷送到另一个电容储存,当所积累的电荷达到2V时,此电容可做为电源为其它电路提供工作电压,将卡内数据发射出去或接收读写器的数据。
读写器
与PC相连的读写器
硬件图如图2。
图2 主要由IC卡微模块、单片机、天线以及与PC机通信的TC232串行通信接口电路等部分组成(略)
单片机系统
硬件中的核心是ATMEL公司生产的AT89C51/LV51单片机,它是一种低功耗/低电压、高性能的8位单片机,片内带有一个4K字节的Flash可编程可擦除只读存储器,采用CMOS工艺和高密度非易失性存储器技术,输出引脚和指令系统都与MSC-51兼容。
IC卡微模块
采用JMY-502射频读写模块,该模块是基于Philips公司的非接触技术设计的微型嵌入式非接触式IC卡读写模块。内嵌MF RC500
或MF RC531 射频基站,用户不必关心射频基站复杂的控制方法,只需要简单地通过选定的UART 或I2C 接口发送命令就可以对卡片进行操作。JMY-502
支持Mifare One S50,S70,Ultra Light & Mifare Pro,当仅用于Mifare One
时可以设定自动寻卡。该模块内置512 字节的EEPROM,用户可以存储应用数据。每次写入和读取的字节数为1~16 字节,按字节的方式进行操作,Mifare
1 专用,默认为自动寻卡。在本实例中采用I2C通信方式,可以将单片机的串行口留给计算机使用。
读写芯处的引脚及说明如表1。
表1(略)
通信接口
与PC机的串行通信一般采用RS-232、RS-422或RS-485总线标准接口,或采用非标准的20nnJL电流环。为保证通信的可靠,在选择接口时必须注意:(1)通信的速率;(2)通信距离:(3)抗干扰能力;(4)组网方式。
目前有很多为RS-232C标准生产的专用驱动芯片,如MAX232系列、TC232、ICL232、AD232等。它们在单5 V供电条件下,将0/5
V(TTL电平)转换为 10V(RS-232电平),将 10V(RS-232电平)转换为0/5 V(TTL电平)。本实例中采用RS-232方式,使用的是TC232芯片。
一般用户读写器
用户读写器主要由IC卡微模块、单片机、天线、显示电路及时钟电路等部分组成,时钟电路采用DS1302芯片,使用I2C总线与单片机进行通信,提供实时实钟和日历(秒、分、时、日、周、月和年等信息,可以在收费现场按时间进行计时收费,电路图如图3所示。
图3 (略)
软件设计
读写器的程序流程如图4。
图4 主程序的流程图(略)
程序设计中涉及到对数据块的操作,采用中断方式:
读 (Read):读一个块;
写 (Write):写一个块;
加(Increment):对数值块进行加值;
减(Decrement):对数值块进行减值;
存储(Restore):将块中的内容存到数据寄存器中;
传输(Transfer):将数据寄存器中的内容写入块中;
中止(Halt):将卡置于暂停工作状态;
程序中涉及到串行口程序,通信格式设置为:采用串行工作方式1,波特率为9600baud, 1个起始位,8位数据位,1个停止位,采取和校验方式。程序中的显示部分可以使用专用的LCD,按相应要求书写程序。
其中数据库部分的联VB与SQL数据库连接程序可以参考如下程序:
Set conn = New ADODB.Connection
conn.Open "driver={sql server};server=" & usern &
";database=ic"
Set order = New ADODB.Command
order.ActiveConnection = "driver={sql server};server="
& usern & ";database=ic"
oder.CommandText = "use master declare @xm char(10) set @xm='"
& xm & "' declare @snr bigint set @snr=" &
Snr & " declare @outvalue int set @outvalue=" &
outvalue1 & " insert into sp_values (卡号,姓名,金额) values (@snr,@xm,@outvalue)"
cmd1.Execute
以上语句向数据库中插入一个写卡记录,其它操作省略。
PC机软件
可以使用VB和SQL进行人机画面的开发及数据管理等。下面是开发的界面,如图5、6。
图5(略)
图6(略)
结束语
相信随着非接触性IC卡的大量使用,成本的降低,这种卡系统会越来越多地使用于如校园收费中、门禁系统、考勤系统等各种场合。
|