基于51单片机的IC卡读写系统设计.docx
《基于51单片机的IC卡读写系统设计.docx》由会员分享,可在线阅读,更多相关《基于51单片机的IC卡读写系统设计.docx(52页珍藏版)》请在冰点文库上搜索。
基于51单片机的IC卡读写系统设计
学号11780215
天津城建大学
电子系统综合设计
设计说明书
IC卡读写系统设计
起止日期:
2014年12月29日至2015年1月23日
学生姓名
罗智健
班级
信科2班
成绩
指导教师(签字)
计算机与信息工程学院
2014年1月23日
天津城建大学
课程设计任务书
2014—2015学年第一学期
计算机与信息工程系电子信息科学与技术专业信科2班班级
课程设计名称:
电子系统综合设计
设计题目:
IC卡读写系统设计
完成期限:
自2014年12月29日至2015年1月23日共4周
设计依据、要求及主要内容(可另加附页):
一、课程设计的目的
在我们的日常生活中,IC卡无处不在——智能门锁、考勤机、交通卡、银行卡……IC卡应用非常广泛。
通过对课程设计任务的完成,使学生掌握IC卡读写的工作原理,并且能够熟悉单片机的开发流程和基本的编程方法,既巩固所学的基础理论知识,又为学生日后从事开发设计奠定基础。
二、课程设计的内容及要求
选择合适的器件,了解元器件的工作原理,进行IC卡读写系统设计,完成
1、单片机最小系统设计。
2、单片机与IC卡读写器接口电路设计。
3、编写IC卡读写控制程序,并有显示功能。
4、书写设计说明书。
三、参考资料:
1、何立民.MCS-51单片机应用系统设计.[M]北京航天航空大学出版社
2、张开如.自动控制原理.[M]北京大学出版社.
3、赵新民.智能仪器设计基础[M]哈尔滨工业大学出版社
指导教师(签字):
系主任(签字):
批准日期:
2015年12月18日
第1章绪论
本章介绍了IC卡的发展历史和应用情况,说明了现代IC卡技术的基础知识,最后分析了目前常见的IC卡读写器终端,并提出了本课题中IC卡读写器的设计目标。
1.1IC卡的发展和应用使用情况
卡片是作为个人身份识别的手段而引进的,而作为交易凭证的卡片则早在19世纪80年代就萌芽于英国了,1950年,美国商人设计了第一张现代的塑料信用卡,1951年美国富兰克林银行作为金融机构率先发行了信用卡,到60年代中期,人们在塑料金融交易卡的背面贴上磁条,发展成为能够自动读取信息进行在线处理的磁卡,磁卡因为结构简单,价格低廉,得到迅速推广。
IC卡是近年从欧洲开始出现的,IC卡具有突出的3S特点,即Standard(国际标准化)、Smart(灵巧智能化)、和Security(安全性)。
因而发展迅速,在金融、通讯、交通等众多领域中后来居上,即使那些磁卡已经普及应用的范围也将被取而代之。
IC卡不仅改变了现有多种卡的使用方法和功能作用,还不断开创出新的应用领域。
将IC卡和其他设备组成系统就能提供非常丰富的服务功能,把这些功能与生产或流通领域有机地结合起来,将出现令人意想不到的奇迹,创造出巨大的经济和社会效益。
随着信息技术的发展,IC卡作为一种先进的信息存储介质,它的应用己经渗透到各国的经济、社会生活、军事等各个方面,将来更有着广阔的发展空间。
1.2IC卡应用技术
IC卡比磁卡存储容量大,可靠性和安全性高,在应用上除了覆盖磁卡的全部应用范围以外,还提供了许多磁卡所不具备的应用特性。
正是这些特性,使IC卡在脱机业务处理和联网数据一致性等方面表现出前所未有的优势。
IC卡虽然有很强的功能,但仅当IC卡加入到应用系统中,构成发行商、应用系统和持卡人之间的数据传输媒介时,才能有效地发挥其优势。
一个好的IC卡应用系统,应具备良好的应用特性和性能价格比,还要有好的安全特性。
1.3课题中IC卡的设计目标
读写器是IC卡应用系统的终端设备,只有通过读写设备才能和IC卡建立联系,读写IC卡中的数据;读写器一般还要求和信息网络中的上位机进行通讯,把IC卡中的数据融入到上层数据库。
设计选择读写器是建立IC卡应用系统的关键。
本文是就设计IC卡读写器展开的,课题的设计目标是一种通用的接触式IC卡读写终端,要求读写器能够单独工作。
预期目标:
●实现用户信息的存储
●通过键盘显示电路实现人机交互
●实现卡的插入与退出识别
●实现伪卡的识别
第2章IC卡芯片的介绍
2.1SLE4442IC卡
IC卡是集成电路卡(IntegratedCircuitCard)的简称,有些国家和地区称之为微芯片卡(Microchipcard)或微电路卡(MicrocircuitCard)。
IC卡的大小和磁卡相同,它把集成电路镶在塑料卡片上,芯片一般是不易挥发性存储器(ROM,EPROM.EPROM),保护逻辑电路,甚至于CPU。
本节介绍IC卡的一些基本知识,使读者对IC卡有一个大概的了解。
由于本设计所采用的IC卡为接触型逻辑加密卡(SLE4442),所以本节的内容重点介绍此卡。
SLE4442是由德国西门子公司设计的逻辑加密存储卡。
它具有2K位的存储容量和完全独立的可编程加密代码存储器。
内部电压提升电路保证了芯片能够以单5V电压供电,较大的存储器容量能够满足应用领域的各种要求。
是目前国内应用较多的一种IC卡芯片。
2.1.1芯片特点
●面向字节寻址;
●采用多存储器结构:
主存储器、保护型存储器、加密存储器;
●线连接协议,触点和串行接口满足ISO7816同步传送协议;
●芯片采用NMOS工艺技术,每字节的擦除/写入编程时间为2.5ms;
●复位响应(ATR)符合ISO/IEC7816-3协议;
●存储器采用至少10000次的擦除/写入周期,数据保持时间至少为10年;
●额外特性:
数据仅能在正确输入24位可编程安全码(安全存储器)之后才能改变。
2.1.2芯片的引脚配置
芯片的引脚与国际标准兼容,下表3-1是引脚的定义和功能说明:
表2-1SLE4442引脚功能
引脚
卡触点
符号
功能
1
2
3
4
5
6
7
8
C1
C2
C3
C4
C5
C6
C7
C8
VCC
RST
CLK
NC
GND
NC
I/O
NC
操作电压5V
复位
时钟
未用
地
未用
双向数据线(漏极开路)
未用
2.1.3芯片功能
SLE4442IC卡芯片主要包括三个存储器:
256×8位EEPROM型主存储器、32×1位PROM型保护存储器和4×8位EEPROM型加密存储器。
1)主存储器:
主存储器为可重复擦除使用的EEPROM型存储器。
按字节寻址,擦除写入。
在擦除时,一个数据字节的所有8位被全部置“1”。
在写入时,在EEPROM单元中的信息则根据输入的数据,按字位方式变换成逻辑“0”(即在EEPROM中,新写入的数据与原来存在的数据进行“逻辑与”)。
通常,要改变一个数据需要先进行擦除再进行写入两项操作。
如果在被寻址的字节中8位没有一个字位需要从0变为1,则可以不进行擦除处理。
反之亦然,在被寻址的字节中,如果没有一个字节需要从1变为0,则可以不做写入处理,写入或擦除操作一次至少耗费2.5ms时间。
主存储器的地址是从00H到FFH。
但主存储器可分为两个数据区:
保护数据区和应用数据区,保护数据区是主存储器前32个字节数据区。
其地址是从0(00H)到31(1FH)这部分的数据读出不受限制,但擦除和写入操作均受到保护存储器内部数据状态的限制。
当保护存储器中第N位为0时,则对应主存储器中第N个字节就不允许进行擦除和写入操作。
故保护数据区一般均作为IC卡的标识数据区,存放一些固定不变的标识参数。
应用数据区为主存储器后224个字节。
其地址从32(20H)到255(FFH).这部分的数据读出不受限制,但擦除和写入受控于加密存储器数据校验比较结果的影响。
当需要修改应用数据区的内容时,必须首先输入一个3字节长的“校验字”。
这个新输入的“校验字”与原来存在在加密存储器中的“参照字”进行一对一的比较。
只有当两者完全一致时,芯片的加密控制逻辑才打开芯片的主存储器,允许后面的擦除和写入操作。
芯片允许在有限的次数内重试比较操作。
如果在连续三次比较失败之后,芯片的错误计数器计数到“0”,并将锁死主存储器,禁止随后的任何比较操作和写入擦除操作。
这时整个主存储器变成一个只读存储器。
芯片中各存储器的内容不能再改变。
2)保护存储器是一个32×1位的一次性可编程只读存储器(PROM)。
它是按字位方式寻址和写入。
保护存储器从0~32的每一位对应着主存储器地址从0到31的字节。
因此可以理解为每个字节单元的控制熔丝。
从出厂到被初始化之前,保护存储器的状态为全“1”。
从控制方面来说,保护存储器的内容只能从“1"写成“0”而不能从“0”擦除成“1”。
保护存储器每个被写“0”的单元所对应控制的主存储器的字节单元将不再接收任何擦除和写入命令,从而使得该字节单元的数据不可再改变。
从使用方面来讲,如果需要防止一些固定的标识参数被改动,可以将这类参数先写入主存储器的保护存储区,然后将对应单元的保护存储器的字位写位“0”,从而使这一部分单元中的参数内容永远不可更改。
保护存储器本身的读出操作不受限制。
但对其写入操作仍然受到加密存储器比较校验操作结果的控制。
当输入的“校验字”与芯片内的“参照字”‘一致,则可以执行后续的写入操作。
如果比较不成功,则控制逻辑将闭锁保护存储器。
3)加密存储器:
加密存储器是一个4×8位的EEPROM型存储器。
在这个存储器中,第0字节为“密码输入错误计数器”(EC)。
密码输入错误计数器的有效位是低3位。
在芯片初始化时,计数器设置成"111"。
这一字节是可读的。
每次比较密码时,先判断计数器中是否还有“1”。
如果还有“1”,则将其中一个“1”写成“0”,然后进行比较“校验字”操作。
如果比较结果一致,密码错误计数器将允许进行擦除操作(芯片不能自动进行擦除操作),同时打开主存储器、保护存储器和加密存储器,并允许进行擦除和写入操作。
如果比较结果不一致,则密码错误计数器中为“1”的个数将减少一位。
只要计数器的内容不全为0,则芯片的比较“校验字”操作还允许进行。
当密码计数器减数为零,则芯片的存储单元将全部锁死。
加密存储器的第1,2,3字节为“参照字”存储区。
这3个字节的内容作为一个整体披称为可编程加密代码(PSC)。
值得注意的是:
这3个字节的内容在PSC比较成功前是不可读的,只能进行比较操作。
而
“写入、擦除”操作也受自身“比较”操作结果的控制。
只有当“比较”成功,加密存储器各字节内容才可以进行读出、写入和擦除。
2.1.4芯片传送协议
传送协议是在接口设备IFD与IC卡的集成电路之间的两线连接协议,SLE4442芯片的协议类型为S=10(同步卡协议)。
I/O线上数据变化只在CLK信号的下降沿才有效。
传送协议包括4种模式:
●复位和复位响应
●命令模式
●输出数据模式
●处理模式
1)复位和复位响应:
复位响应是根据ISO7816-3标准来进行的。
在操作期间的任何时候都可以复位,只有经过了复位才能对IC卡进行其他操作.开始时地址计数器随一个时钟脉冲而被设置成0。
当RST线从H状态置到L状态时,第一个数据位的内容被送到I/O线上。
若连续输入32个时钟脉冲,主存储器中的前4个字节地址单元中的内容被读出。
在第33个时钟脉冲的下降沿,I/O线被置成H状态而关闭。
图3-1为芯片复位即复位响应的时序关系。
在复位响应期间,“启动”和“停止”(见下面)状态被忽略。
图2-1芯片复位及复位响应的时序关系
2)命令模式:
复位响应之后,芯片等待着命令。
每条命令都以一个“启动状态”开始。
整个命令包括三个字节(命令含义后面解释)。
随后紧跟着一个附加脉冲并用一个“停止状态”来结束操作。
图3-2为命令模式时序关系。
启动状态:
在CLK为H状态期间,I/O线的下降沿为启动状态。
停止状态:
在CLK为H状态期间,I/O线的上升沿为停止状态。
在接受一个命令之后,有两种可能的模式:
输出数据模式(即读数据模式)和处理数据模式。
图2-2命令模式的时序关系
3)输出数据模式:
这种模式是将IC卡芯片中的数据传送给外部接口设备的一种操作。
图3-3为输出数据模式的时序关系。
在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。
随后每增加一个时钟脉冲,芯片内部的一位数据被送到I/O线上。
其输出的顺序是从每个字节的最低位开始。
当所需要的最后一个数据送出以后,需要再附加一个时钟脉冲来把I/O线置成H状态,以便准备接受新的命令。
在输出数据期间,任何“启动状态”和“停止状态”均被屏蔽掉。
图2-3输出数据模式的时序关系
4)处理数据模式:
这种模式是对IC卡芯片做内部处理。
图3-4为处理数据模式的时序关系。
芯片在第一个时钟脉冲的下降沿将I/O从H状态拉为L状态并开始处理。
此后芯片在内部连续计时计数,直到第N个时钟脉冲之后的附加时钟脉冲的下降沿I/O线被再次置高,完成芯片的处理过程。
在整个处理过程中I/O线被锁定成低状态。
图2-4处理数据模式的时序关系
第3章硬件电路设计
所设计的读写器以8051单片机为核心,配以IC卡接口电路、串行通信电路、存储电路、掉电检测电路、键盘显示电路等部分。
通过读写器插槽与IC卡芯片通信,由51单片机控制数据传输过程,实现读卡和写卡操作。
图4-1为系统的总体框图。
图3-1总体框图
IC卡接口设备的种类很多,功能上由于不同的应用需要,差别也很大,但就其对卡(以接触式卡为例)的操作功能来说,都应具备以下几个基本功能:
●IC卡的插入/退出的识别与控制(接触式卡):
IC卡进/出RF区的识别和控制(非接触式卡)。
●向IC卡提供其所需的稳定的电源与时钟信号。
●实现与卡的数据交换,并提供相应的控制信号。
●对于加密数据系统,应提供相应的加密解密处理及密钥管理机制。
●提供相应的外部控制信息及其它设备的信息交换。
很多读写设备除了对卡的基本操作外,还设计了其他一些重要功能:
●必要的控制界面和显示界面。
●提供数据通讯接口与上位机进行数据通讯。
●网络控制功能,实现远程适时控
3.1单片机系统电路
AT89C51单片机是该系统的核心器件,其控制着所有的外围电路,并及时响应外部请求。
整个系统电路设计如下:
(1)按键S17,电容C8,电阻R13构成单片机的人工复位装置;两个30pF的电容,12M的晶振构成单片机的振荡电路。
(2)矩阵式键盘由P1口来控制,P1.0,P1.1,P1.2,P1.3接行线,P1.4、P1.5、P1.6、P1.7接列线。
单片机对键盘进行行列扫描读取键值。
(3)数码管显示电路由P2口控制,单片机对数码管进行动态扫描。
P2.0与P2.1口通过一串入并出的74LS164与所有LED的a,b,c,d,e,f,g,sp引线相连,P2口接LED的控制端,单片机通过P3口控制各LED是否点亮。
(4)P0口设计为与IC卡卡座的接口,AT89C51单片机通过IC卡座完成单片机与IC卡的连接。
图3.1AT89C51最小系统
3.2接触式IC卡的接口电路
IC卡的接口电路是连接IC卡与读写设备的通路,由它实现对IC卡的供电,并满足不带电插拔的要求。
IC卡接口设备中的IC卡供电电路应是一个相对独立于其他回路,并提供完善的过流保护措施的稳压电路,这是由于IC卡接口设备是一个独立于IC卡的设备,当有卡插入时,接口设备便开始向IC卡提供其所需的电力。
如果插入的是一张电源与地击穿的坏卡,或是一个金属片之类的物质,就会造成供电回路的短路现象,若IC卡接口设备中无过流保护回路,就会干扰整个设备的正常工作。
为了提高IC卡操作的可靠性,必须有上下电控制电路、卡插入检测电路、卡短路检测电路。
下图4-2所示是IC卡接口电路。
图3-2IC卡接口电
R2、VD1、VT1组成卡上下电电路。
当8051的P1.6=0时,VT1导通,IC卡的VCC得电;当8051的P1.6=1时,VT1截止,IC卡的VCC失电。
如果插入的是一张电源与地击穿的坏卡,或是一个金属片之类的物质,就会造成回路的短路现象。
IC卡的VCC同时经VD2送至CPU的P1.5,检测有无卡电源短路现象,以防人为破环。
IC卡的控制与读写是IC卡接口设备中的核心操作部分,各种IC卡的实际操作有较大的不同,(ISO-7816标准只定义了一个最小操作,因而符合这一标准的卡亦不能保证其他操作的一致性),这里先选择其中较具共性的部分介绍,后面会针对SLE4442芯片的具体操作做详细说明。
1)IC卡的插入/退出识别与上电/下电控制技术
IC卡的插入与退出的识别是通过IC卡接口电路来识别的,如果卡己插入到正确位置,且卡是合法卡,则置P1.1为0,VT2导通,图4-6中的LED点亮。
若卡是非法卡,卡电源短路,低电平送至P1.5,则P1.0为0,VT3导通,图4-7中的报警电路报警。
为了确保IC卡已准确地插到位置,插入的识别过程必须加入消颤处理。
IC卡插入识别程序如下所示:
RE_DETECT:
SETBIC_SW
MOVC,IC_SW;输出高电平至检测端
JNCRE_DETECT;无卡插入,等待
LCALLDELAY_5MS;延时5ms
MOVC,IC_SW
JNCRE_DETECT;再次判断,若无卡输入等待
RET
……;有卡插入,进行处理
IC卡的供电控制是一个直接涉及是否能安全可靠地操作IC卡的过程。
它必须严格遵循ISO7816-3所规定的操作顺序,否则就有可能对IC卡带来永久的损坏。
ISO7816-3标准规定的操作顺序如下:
IC卡的激活(上电过程):
——RST处于L状态
——VCC供电
——接口设备处于接收方式
——Vpp上升为空闲状态
——CLK由相应稳定的时钟提供
IC卡的去激活过程(下电过程):
——RST为状态L
——CLK为状态L
——Vpp不起作用
——I/O为状态A
——VCC关闭
由于IC卡技术的进步,现在的IC卡事实上都己使用卡内自带升压电路,因此Vpp控制已逐渐失去具体含义。
下面是上下电程序控制过程:
POWERON:
;上电控制
LCALLRE_DETECT;识别是否有卡插入
CLRRST;使RST=L
CLRCLK;使CLK二L
LCALLDELAY_500us;延迟0.5ms,使端口逻辑信号稳定
CLRPOWER;给卡供电
SETBD_OUT;使I/O端口为高电平,准备接受数据
RET
POWER_OFF:
;下电控制
CLRRST;使RST=L
CLRCLK;使CLK=L
CLRD_OUT;使I/O=L
LCALLDELAY_500us;延时0.5ms,使端口逻辑信号稳定
SETBPOWER;给卡下电
RET
2)IC卡的读写技术
不同类型的IC卡其读写方式或数据协议方式是不同的,ISO7816标准对异步型IC卡的读写协议做了较充分的定义,而对于同步型IC卡,则只定义了其复位响应过程的协议标准,这使得各厂家设计的同步型IC卡的读写方式不尽相同,而且同步型IC卡接口协议是面向操作而进行的,因此,其操作协议方式也各不相同。
但许多厂家生产的IC卡都以ISO7816同步复位响应协议作为IC卡的数据读协议。
大多数符合ISO7816标准的同步型IC卡的地址计数器是与时钟紧密相关的,当卡复位时,地址计数器置0。
以后每向卡发一个节拍的时钟,都将使IC卡的地址计数器加“1”,这一时钟频率上限为50kHz或280kHz。
复位之后的头32个时钟周期内,是卡的复位响应过程,该过程中,厂家的产品编码以位编码方式逐一在数据线上送出,以后的字段则根据厂家及用户所定义的含义不同而各不相同。
若某字段定义为可读的,则可将时钟运行到该字段上,然后再逐时钟读出。
数据的读出过程可分为三个基本过程:
复位,数据字段的定位和数据读出。
3.2串行通信电路
由于PC机的串口电压为±12V,而单片机的工作电压为5V,所以需要MAX232接口芯片实现TTL与RS232电平转换,采用简单的3线制通信方式。
图4-3为串行通信电路。
图3-3串行通信电路
3.3键盘电路
由于需要16个按键,采用并行接口的键盘电路至少需要4+4=8条I/O线,而串行接口的键盘电路只需要3条I/O口线,一条用作键盘行线,一条串行移位输出列扫描信号,另一条用作移位寄存器74LS164的移位时钟脉冲信号线。
16个按键构成了读写系统的键盘电路部分。
图4-8为键盘与单片机的接口电路。
图3-48051与键盘接口电路
图中,P2.2为行线,接有上拉电阻R=5V/1mA=5kΩ。
因而选用5.1KΩ的电阻,上拉电阻保证了没有键输入时,I/O口线上有确定的高电平输入。
由P2.3端输出列扫描信号,通过移位寄存器74LS164输出端QA~QH接至键盘作为键盘列线。
扫描信号通过74LS164移位,实现逐列置低电平,达到扫描各键的目的。
3.4显示电路
应用系统中常用的显示器有:
发光二极管显示器,简称LED;液晶显示器,简称LCD;荧光显示器。
本文采用LCD,所以只对LCD进行介绍。
LCD是一种极低功耗显示器,目前,高分辨率的LCD点阵式显示器有显示灵活,显示图型字符美观等优点,在很多系统中应用非常广泛。
显示设计使用现有的液晶显示功能模块SMG12232B-2,该模块能提供122*22的分辨率,带中文字库,更重要的是它可以有并行和串行两种输入方式,接口方便,这样我们可以使用单片机的异步通讯口驱动显示模块,软硬件实现都非常简单,外围电路非常简洁。
图4-9是单片机与显示器的接口电路。
图3-5显示器与单片机接口电路
第4章软件系统设计
本章主要介绍接触式IC卡读写器的程序设计。
本设计的所有程序用C51语言编写,由主程序和子程序组成。
其中子程序包括比较校验数据子程序、插卡子程序、显示中断子程序。
4.1主程序
主程序主要完成初始化并检测系统的状态,如果是刚上电状态,则恢复掉电瞬间保存的数据。
主程序的流程图如图5-1所示。
主程序如下:
#include//头文件
#defineuintunsignedint
#defineucharunsignedchar
#defineaddrl0x40
uintdataconsl;//全局变量定义
uchardatacons2[2]={0,0};
main()
{uchardata*p;//指针定义
if(consl==0)//判断是否刚上电状态
{p=cons2;
Read24c02(p,addrl,2);//从24c02中读出掉电时保存的数据
consl=OxOOOF;//修改标志位
}
ITO=1;//外部中断0下降沿触发
EXO=1;//外部中断0开中断
EA=1;//CPU开中断
IDL=1;//设置节电工作方式
do{}while
(1);
}
N
Y
N
Y
图4-1主程序流程图
4.2键盘扫描子程序
16个按键的键盘电路分别为:
数字键0~9及小数点“.”,可以设定用户信息及余额;此外还有5个功能键,分别为:
(1)修改/确认键,用来控制信息的改写及确认;
(2)账号显示键,用来控制用户账号信息的显示;
(3)余额/总数显示键,用来控制余额或总数的显示;
(4)计数开始/停止键,用来控制计数系统的计数;
(5)备用键;
(6)备用键