以单片机AT89C51为核心的IC卡系统设计

控制/MCU

1815人已加入

描述

IC卡(Integrated Circuit Card)又称集成电路卡,它是在大小和普通信用卡相同的塑料卡片上嵌置一个或多个集成电路构成的。集成电路芯片可以是存储器或向处理器。带有存储器的IC卡又称为记忆卡或存储卡,带有微处理器的IC卡又称为智能卡或智慧卡。记忆卡可以存储大量信息;智能卡则不仅具有记忆能力,而且还具有处理信息的功能。IC卡是1974年一名法国新闻记者发明的。由于便于携带,存储量大,它日益受到人们的青睐。IC卡可以十分方便地存汽车费、电话费、地铁乘车费、食堂就餐费、公路付费以及购物旅游、贸易服务等。

1 AT24C08卡

存储卡是IC卡的一种,它是一种用可电擦写的可编程内存(E2PROM)为核心的IC卡,能够多次重复使用。AT24C08是ATMEL公司出品的I2C接口、高集成度串行E2PROM内存IC卡。AT24C08具有以下特点:与400 kHz I2C总线兼容、低功耗CMOS技术、1 000 000次编程/擦除周期及可保存数据100年以上。

AT24C08芯片的触点位置与功能符合ISO7816-2标准,触点位置如图1所示,触点功能如表1所示。

单片机

2 电路设计与读写控制

2.1 接口电路的设计

本设计采用的单片机是AT89C51。AT24C08卡座与AT89C51的电路连接如图2所示[2]。SLC为串行时钟,在时钟的上升沿,数据写入E2PROM;在时钟的下降沿,数据从E2PROM被读出。SDA为双向数据端口,是一个漏极开路的引脚,满足“线与”的条件,在使用过程中需要加上拉电阻。SW1、SW2为IC卡卡座的1对常开触点,SW1与Vcc连接,SW2与AT89C51的引脚P1.0连接,平时P1.0通过1个电阻连接到地,当有卡插入时,SW1和SW2短接,Vcc将P1.0上拉到高电平,通过对P1.0上的电平查询就可以知道是否有卡插入。

单片机

2.2 AT24C08内存读写操作

AT24C08的数据接口完全符合I2C的标准。I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。I2C总线协议规定:只有在总线空闲时才允许启动数据传送。在数据传送过程中,当时钟线为高电平时,数据线必须保持稳定状态,不允许有跳变;且数据线的任何电平变化都将被看作总线的启动或停止信号。I2C总线在传送数据过程中共有以下3种类型信号:

(1)起始信号:当SCL处于高电平时,SDA从高到低地跳变作为I2C总线的启动信号,启动状态应该在操作命令(读/写)之前进行建立。

(2)停止信号:当SCL处于高电平时,SDA从低到高的跳变作为I2C总线的停止信号,表示一种操作的结束,马上即将结束所有的相关通信。

(3)应答信号:AT24C08在接收到8 bit数据后,在第9个脉冲向AT89C51发出1个低电平,表示已收到数据。如图3(a)所示。

通过时序图可看出,要写卡必须由起始信号启动,紧接着送入器件地址,使卡进行读/写操作。对AT24C08卡,器件地址高4位一定为1010,最低位作为读写控制位,“0”表示对IC卡进行写操作,“1”表示对IC卡进行读操作。信息高位先送出,如图3(b)所示。

单片机

由图2的接口电路可以看出,AT24C08的时钟、上/下电及读写操作均由单片机控制,因此单片机编程时应符合AT24C08的传输协议和操作命令。本设计首先按照要求编写对AT24C08进行操作的子程序,再编写主程序组成完整的IC卡读写系统[3]。几个主要子程序和IC卡读卡器对AT24C08的操作流程图如图4所示。

单片机

3 LCD显示

液晶显示器是一种采用液晶为材料的显示器。液晶是介于固态和液态间的有机化合物。将其加热会变成透明液态,冷却后会变成结晶的混浊固态。在电场作用下,液晶分子会发生排列上的变化,从而影响通过其的光线变化,这种光线的变化通过偏光片的作用可以表现为明暗的变化。就这样,人们通过对电场的控制最终控制了光线的明暗变化,从而达到显示图像的目的。

字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16×1、20×2、40×2行等模块。本文用1602字符型液晶显示器显示读卡器读出的信息。1602的引脚说明如表2所示、与单片机AT89C51的接口电路如图5所示。

单片机

单片机

单片机读出IC卡的数据通过P0口送到液晶显示器显示,可分2行共显示32个字符,也就是16个字节的十六进制数据,通过上位机控制读数据起始地址可移动显示数据。1602可直接显示字符型数据,IC卡读出的十六进制数据需转换成字符型数据再送到液晶屏显示。

4 单片机与计算机的串口通信

4.1 单片机与计算机的硬件接口

PC机串口通常采用RS-232电平,而单片机串口是TTL电平,二者不兼容。所以,接口必须做电平转换处理。在此,采用MAXIM公司的MAX232芯片进行电平转换。AT89C51单片机TXD端连接到MAX232的T1IN端,用于发送数据;PC机的RD端连接到MAX232的T1OUT端,用于接收数据;AT89C51单片机RXD端连接到MAX232的R1OUT端,用于接收数据;PC机的TD端连接到MAX232的R1IN端,用于发送数据。

4.2 用MSComm控件实现串口通信

MSComm通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem)。还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工 、事件驱动的、高效实用的通信程序。但在实际通信软件设计过程中,MSComm控件并非像想像中那样完美和容易控制。特别是在中文Wln 95/98下通信时更会出现问题。下面就从基础开始介绍,然后逐步讨沦MSComm控件在编程中出现的问题以及编程技巧。MSComm控件也可用于创建电话拨号程序、串行口通信程序和功能完备的终端程序。MSComm控件提供了事件驱动法和查询法2种处理通信的方式。在使用事件驱动法设计程序时,每当有新字符到达、端口状态改变或发生错误时,MSComm控件都将触发事件,应用程序在捕获该事件后通过检查MSComm控件的CommEvent属性可获知所发生的事件或错误,从而采取相应的操作。这种方法的优点是程序响应及时,可靠性高。虽然查询方式实质上还是属于事件驱动,但在有些情况下这种方式显得更为便捷。它适合于较小的应用程序,每当应用程序执行完某一串行口操作后,将不断检查MSComm控件的CommEvent属性以检查执行结果或某一事件是否发生。

本文设计的基于MSC-51单片机的IC卡系统硬件电路,用单片机模拟I2C的时序,使用了C语言编写源程序。通过对单片机和LCD的进一步开发,可以使IC卡的使用能够脱离读卡器终端设备的限制,设计成为手持式的IC卡系统。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分