首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年11月23日星期六
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
一种基于单片机直接读写的IC卡读卡器
A Reader of IC Card Directly Operating Based on MCU
■ 西安电子科技大学 高建卫 应武

摘 要:本文详细介绍了一种基于单片机直接读写的IC卡读卡器设计的思路和方法,并给 出了相应的程序流程和程序实例。
关键词:SLE4442卡;PSC;二线传输协议;读卡器

引 言

随着现代生活的发展,IC卡的应用越来越广泛,对IC卡读卡器的需求也趋于多样化。本文以SIEMENS SLE4442卡为例介绍了一种基于单片机(89C51)直接读写接触式IC卡的简易读卡器,它可以嵌入到电业管理或燃气收费等系统中,也可以作为一个独立读卡器对IC卡进行操作,配合不同的软件可以应用的不同的行业。

读卡器硬件电路设计

SLE4442卡简介

SLE4442卡内部有一个256 8bit EEPROM,不可逆的4个写保护字节,具备密码保护功能,可以随时读取主存储器内容;在校验成功后,可读保护存储器、读写安全存储器和写主存储器。

SLE4442有一个密码逻辑,用以控制对存储器的读写。为此,SLE4442包含一个4字节加密存储区,该存储区有一个错误计数器EC(0-2位)和三个字节的参考数据,这三个字节作为一个整体,称为可编程密码(PSV)。整个数据区除了参考数据,其它的数据都能被读取,在校验数据与内部参考数据比较正确后才能进行读写操作,连续三次比较错误后,错位计数器将阻止任何比较尝试,从而也消除了任何擦写操作。

系统总体框图及设计思路

利用AT89C51的P1端口直接对IC卡的时钟、复位、数据端口进行操作,AT89C51的串口和主控机通信。系统采用智能式工作方式,通过主控机交互的人机界面命令单片机对IC卡进行不同的读写操作。由于接触式IC卡采用的是两线连接协议,硬件连接简单。如果要设计一个可同时读写不同IC卡的读卡器,可通过单片机的P1口串接两路4053,经过译码,配合不同的单片机软件就可适用于各种各样的接触式IC卡。

读卡器单片机软件设计

为使汇编语言程序易读易维护,采用模块化设计、多次调用子程序方式。

图1 硬件连接示意图(略)

复位和复位应答模块

根据SLE4442卡复位时序,利用单片机编写一个高电平不小于50 s的脉冲信号,在P1.0引脚输出高电平之后,给时钟引脚32个时钟脉冲,可根据需要保存、提取或舍弃复位应答的数据。复位应答的四个字节数据携带通信协议类型的编码,由注册管理机构分配或使用。

2.读IC卡存储器模块

由于IC卡内部存储器和单片机内部寄存器均为8位,而IC卡使用的是二线传输协议,一个时钟只能传输一个二进制位,无论读写卡的数据还是设置卡的操作命令都是一个字节数据,所以编写一个读(写)一个字节的子程序供多次调用。在此基础上,加一个字节计数器,可实现任意的字节的读操作。
READ_DATA:
CLR CLK
LCALL DELAY40
R_DATA:
MOV R5,#8 ;一个字节位数计数器
MOV A,#0
R_BYTE:
CLR CY
JNB DATAIO,RD0 ;判断该位是1或0
SETB CY
RD0:
SETB CLK
RRC A
LCALL DELAY40
CLR CLK
LCALL DELAY40
DJNZ R5,R_BYTE ;如果R5为零,表示已经读完 一个字节
MOV @R1,A
INC R1 ;保存数据到R1指向的地址
DJNZ R4,R_DATA ;R4为零,表示已经读完指定 的字节数
RET

设置命令模块

SLE4442卡的控制命令字均为三个字节,所以命令的设置操作单独写成一个可更改控制字的模块,减少编程量。把要设置的命令字(来自主控机)依次存放到单片机的内存中,该模块把这些命令字按字节顺序写到IC卡。具体的编写方式类似于读数据模块。

擦写存储器模块

SLE4442卡按字节的方式写,一次只能写一个字节,并且需要一个等待状态,单独成一个子模块。如果是擦写状态,需255个时钟脉冲;如果只擦不写或者只写,则只需要124个时钟脉冲。

PSC校验模块

图2 校验时序图(略)

SLE4442卡有一个安全存储器,如果想更改SLE4442卡中的任何内容都必须先正确校验可编程安全代码PSC。校验时序如图2所示。

单片机和主控机通信编程

单片机和主控机采用串口通信方式,主控机首先查询单片机的工作状态然后发出相关的指令,单片机根据指令工作。

总结

不同的接触式IC卡虽引脚不同,但操作方式基本相同,程序稍作修改可用于读写其他的接触式IC卡。本文读卡器的设计已经成功用于网吧管理,成本低廉、性能稳定。
         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com