一种安全可靠的IC卡读写器系统

2008-04-02 11:38:45来源: 互联网 关键字:密码  循环扫描  IC卡读写器  键盘电路  系列单片机  卡片插入  ACALL  MOV

  人们日常生活中经常接触到磁卡和IC卡,它们是根据卡片上的信息载体的不同而划分的。卡片及其读写器都属于人机接口的输入输出设备。磁卡是在卡片上贴一条窄窄的磁带来记录信息的,它主要用于车船票 、信用卡、电话磁卡、旅馆门钥匙等。IC卡则为近几年才出现的新型卡片,在卡片上嵌有IC(E2PROM,有的还有CPU)。由于它保存的信息比较可靠安全、可以高达几万次的读写,所以大量应用于公交车票 、饭票 、保健卡、收费系统等。下面介绍一种以XICOR公司的X76F100为卡片的、用于存取款的IC卡读写器方案。

  1 硬件组成

  图1为IC卡及其读写器硬件电路图。其中读写器由单片机、键盘、显示、监控电路等部分组成。IC卡采用XICOR公司的X76F100Y。

  

  

  图1 IC卡读写器系统电路图

  1.1 IC卡及卡座

  X76F100为1288位的保密串行FLASH E2PROM,其中读密码和写密码分别为64位。图2为其智能卡Smart Card封装的引脚图。把芯片封装在一个卡片上,将卡片插入IC卡读写器的卡座中,读写器就可以对它进行读写,实现加密、查询、存款、取款等功能。

  IC卡座有8个引脚,当X76F100Y插入时,正好同这几个引脚相连。另外还有两个固定端,其中一个固定端同卡座上一个弹簧片相连,两个触点和簧片就相当于一个常闭开关。当卡未插入时,簧片闭合,P3.2脚保持低电平;当卡插入时,簧片被顶开,P3.2脚变为高电平。当单片机检测到P3.2脚变高,通过P1.3 使X76F100的RST引脚变高,使其复位。

  1.2 单片机

  单片机采用LG公司的GMS97C52。它有8K字节的ROM,256个字节的RAM以及32个I/O口,P1口与串行器件X25045和X76F100连接,P0、P2口用于键盘和显示,P3口中P3.2用于检测IC卡是否插入,其余7个口,可作其它功能扩充。

  

  

  图2 X76F100Y引脚

  1.3 监控电路

  监控电路采用X25045芯片,它包括看门狗定时器、电压监控电路和E2PROM存贮器。其功能是:上掉电时对GMS97C52产生RESET信号;看门狗对系统进行监控,防止死机。

  1.4 键盘电路

  为了方便,键盘接口电路用I/O口实现,它为44结构,16个键。其中数字键11个,功能键4个,回车键1个。

  数字键:0、1、2、3、4、5、6、7、8、9、←(退格)。

  功能键:查询?、存储+、取款-、改密码* 。

  查询?:用户通过读密码可以查询卡中所存的款额。

  存款+ :用户通过写密码可以将款存入卡中。

  取款-:用户通过写密码可以从卡中取款。

  改密码*:分为修改读密码和写密码。为方便起见,令读密码和写密码一致,按此键将同时修改读密码和写密码。

  回车键:8位密码或存取款数输入完确认,以及新密码输入完确认。

  1.5 显示电路

  显示部份采用LED显示器,也用I/O口实现。用于显示系统状态、输入的密码或所要存取的款额以及出错信息等。

  由于GMS97C52的驱动电流有限,在P0、P2口加反向器SN74F04,增加驱动能力。它的吸入电流为64mA,输出电流为15mA,可以保证位选所需的吸入电流。

  2 程序设计

  2.1 主程序流程图

  主程序流程图如图3所示。

  

  

  开机后,系统处于待机状态,不断查询P3.2脚电平,当X76F100插入读写器卡座时,P3.2脚电平变高,单片机检测到P3.2高电平信号时,使P1.3脚电平变高,如果此时为低电平,X76F100复位,输出32位固定的“同步复位响应”数据。然后循环扫描键盘显示程序,进行存款、取款、查询或改密码。一次操作完成后返回,然后不断循环。

  2.2 循环键盘显示程序

  循环扫描键盘显示程序如图4所示,它采用程控扫描方式。键盘实际操作的顺序是:先按功能键,然后依次输入8位(十进制)密码,按回车键确认。当存取款时,随后输入所存取的款额;当修改密码时,随后输入8位新密码,输完后按回车键确认。若输入密码正确,显示IC卡内存款的余额或改密码成功信息(SUCCESS)。若密码不正确,提示重新输入,允许输入密码4次。

  为了记录操作中正在进行的状态,在键盘程序中设置了多个指针。

  (1)KEY 有否按键按下标志。00H表示无键按下,01H表示有键按下。此标志用于判断按键是否已松开,防止误操作。

  (2)FUN为功能键指针,00H表示无功能键按下,01H表示存款(ADD),02H表示取款(SUB),03H表示查询(IQUIRE),04H表示改密码(CHANGE PASSWORD)。

  (3)DIG为允许数字键输入标志,00H表示不允许,01H表示允许。此标志主要是防止输入多余的密码,或输入的款数超出限额。

  (4) NUM表示输入第几个数字,00H表示无数字输入,01H~08H表示输入密码,09H~10H表示输入款数或新密码,若NUM为11H,显示出错信息。

  2.3 X76F100读程序举例

  

  

  图4 循环键盘显示程序流程图

  X76F100为I2C总线E2PROM。SCL为时钟输入,SDA为双向数据输入输出线。通过片输入来控制对器件的访问。下面以页写为例,先结合时序说明X76F100的工作过程,然后给出程序。页写时序如图5所示。在该系统中,GMS97C52为主机,X76F100为从机。首先主机向从机发一个START命令,产生开始条件,然后发写命令字。当从机接到命令后,向主机发一个应答信号NACK。然后跟随8字节密码,随后进入一个写周期,写周期结束后进行密码应答轮询ACK Polling。X76F100要求主机用专用的应答命令55H进行应答轮询。如果输入的密码正确,将返回一个“ACK”。如果密码不正确,将返回“no-ACK”,重试计数器加1,返回到启始位置,提示重新送入写命令字和8字节密码。若密码正确,主机接着送入8个字节的数据,ACK响应成功后,主机发出STOP命令完成写操作。下面是用写密码进行页写的程序。

  

  

  图5 页写时序图(需要密码)

  WRITE_USING_WRITE_PASS: ;用写密码进行写操作

  ACALL     START;调开始命令

  MOV      A,#SECTOR_WR;调页写命令

  ACALL     OUTBYTE;调输出字节命令

  ACALL     NACK;X76F100发应答信号

  ACALL     WR_WR_PASS;调写密码命令

  ACALL     T10ms;10ms延时开始写密码周期

  ACALL     ACK_POLLING;调密码应答轮询子程序

  ACALL     WR_DATA;调页写数据子程序

  ACALL      STOP;调停止命令

  ACALL     T10ms;延时10ms写密码周期

  RET

  WR_WR_PASS: ;将写密码写入X76F100

  MOV      R0,#WR_PASS7;将密码首址送入R0

  MOV      R1,#08H;写密码为8个字节

  WP:MOV      A,@R0  ;将R0中的数据送入A中

  ACALL    OUTBYTE;输出字节子程序

  ACALL    NACK

  INC      R0

  DJNZ     R1,WP

  RET

  WR_DATA: ;将数据写到X76F100中

  MOV     R0,#DATA0;将数据首地址送入R0

  MOV     R1,#08H;一页有8个数据

  WB: MOV     A,@R0 ;将R0中数据送入A

  ACALL    OUTBYTE;调输出字节子程序

  ACALL    NACK;从机发应答信号

  INC      R0;下一个字节

  DJNZ     R1,WB;循环直到R1为0

  RET

  OUTBYTE: ;主机向X76F100发字节

  MOV     R2,#08H;一个字节有8位

  LOOPO:

  CLR      SCL_76

  RLC      A;移位

  MOV     SDA_76,C;将进位送入数据线

  SETB     CL_76

  DJNZ     R2,LOOP;循环直到R2为0

  RET

  START:

  SETB     SDA_76;开始子程序

  SETB     SCL_76

  CLR      SDA_76

  CLR      SCL_76

  RET

  STOP:

  CLR      SDA_76;停止子程序

  SETB     SCL_76

  SETB     SDA_76

  RET

  ACK_POLLING: ;密码应答轮询子程序

  ACALL    START

  MOV     A,#55H;主机发固定应答命令

  ACALL   OUTBYTE

  ACALL   NACK;调从机发应答信号

  JC      PASS_ERROR;若有进位则密码错误

  RET

  PASS_ERROR: ;密码错误

  ACALL   STOP

  RET

  ACK:

  CLR    SDA_76;主机执行一个应答

  ACALL  CLOCK

  RET

  NACK:

  SETB   SDA_76

  从机执行一个应答

  ACALL  CLOCK

  RET

  CLOCK:

  SETB  SCL_76;第9个脉冲

  MOV  C,SDA-76;读SDA状态以判断是否有应答

  CLR   SCL_76

  RET

  T10ms:

  MOV  R7,#064H

  10ms延时

  T10A:

  MOV  R6,#032H

  T10B:

  DJNZ  R6,T10B

  DJNZ  R7,T10A

  RET

 

关键字:密码  循环扫描  IC卡读写器  键盘电路  系列单片机  卡片插入  ACALL  MOV

编辑:ssb 引用地址:http://www.eeworld.com.cn/gykz/2008/0402/article_724.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:基于CPLD控制的通用视频采集模块
下一篇:二代身份证智能采集器研究与开发

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
密码
循环扫描
IC卡读写器
键盘电路
系列单片机
卡片插入
ACALL
MOV

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved