基于单片机的IC卡读卡器设计Word格式文档下载.docx
《基于单片机的IC卡读卡器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的IC卡读卡器设计Word格式文档下载.docx(22页珍藏版)》请在冰豆网上搜索。
(8)IC卡还可集各种服务功能于一身,如企业的员工卡、校园“一卡通”等即属此类,持卡人可以用卡进行考勤、开门、就餐、借阅图书等。
1.3课题的建立以及本文完成的主要工作
本文主要包括以下内容:
1.总体方案的构思
2.画出各模块电路图
3.元器件的选取与购买
4.正确焊接接硬件电路
5.软件设计中完成写主存储器、写保护存储器、写密码和校验密码操作
6.完成SLE4442复位应答调试
第2章方案论证
方案一
选用飞思卡尔单片机MC9S12D64做为主控芯片,该芯片是一款性能优良的单片机,包含一个16位中央处理单元、64KBFlash、4KBRAM、1KBE
PROM、一个I
C接口、一个同步串行接口和两个异步串行通信接口等丰富资源,能够满足系统设计的需求。
具体方案如图2-1所示。
图2-1MC9S12D64的总体设计方案
方案二
选用STC89C55RD+做为主控芯片,STC89C55是一种带16K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,具体方案如图2-2所示。
图2-2STC89C55的总体设计方案
因为这个设计需要用到的单片机引脚不多,对单片机配置也要求不高;
飞思卡尔单片机MC9S12D64功能太强大价格也比较昂贵,综合考虑选择比较熟悉的STC89C系列单片机是比较合理的。
第3章
硬件设计
所设计的读写器以STC89C55RD+单片机为核心,配以IC卡接口电路、串行通信电路、存储电路、键盘输入电路和液晶显示电路等部分。
通过读写器插槽与IC卡芯片通信,由STC89C55RD+单片机控制数据传输过程,实现读卡和写卡操作。
系统的总体电路图如图3-1所示。
图3-1系统总体电路图
系统总体设计框图如图3-2所示。
图3-2系统总体框图
3.1IC卡芯片选择
IC卡集成电路卡(IntegratedCircuitCard)的简称
,有些国家和地区称之为微芯片卡(Microchipcard)或微电路卡(MicrocircuitCard)。
IC卡的大小和磁卡相同,它把集成电路镶在塑料卡片上,芯片一般是不易挥发性存储器(ROM,EPROM.EPROM),保护逻辑电路,甚至于CPU。
本节介绍IC卡的一些基本知识,使读者对IC卡有一个大概的了解。
由于本设计所采用的IC卡为接触型逻辑加密卡(SLE4442),所以本节的内容重点介绍此卡。
SLE4442是由德国西门子公司设计的逻辑加密存储卡。
它具有2K位的存储容量和完全独立的可编程加密代码存储器。
内部电压提升电路保证了芯片能够以单5V电压供电,较大的存储器容量能够满足应用领域的各种要求。
是目前国内应用较多的一种IC卡芯片。
3.1.1芯片特点
1.面向字节寻址;
2.采用多存储器结构:
主存储器、保护型存储器、加密存储器;
3.线连接协议,触点和串行接口满足ISO7816同步传送协议;
4.芯片采用NMOS工艺技术,每字节的擦除/写入编程时间为2.5ms;
5.复位响应(ATR)符合ISO/IEC7816-3协议;
6.存储器采用至少10000次的擦除/写入周期,数据保持时间至少为10年;
7.额外特性:
数据仅能在正确输入24位可编程安全码(安全存储器)之后才能改变。
片的加密控制逻辑才打开芯片的主存储器,允许后面的擦除和写入操作。
芯片允许在有限的次数内重试比较操作。
如果在连续三次比较失败之后,芯片的错误计数器计数到“0”,并将锁死主存储器,禁止随后的任何比较操作和写入擦除操作。
这时整个主存储器变成一个只读存储器。
芯片中各存储器的内容不能再改变。
1.保护存储器
保护存储器是一个32×
1位的一次性可编程只读存储器(PROM)。
它是按字位方式寻址和写入。
保护存储器从0~32的每一位对应着主存储器地址从0到31的字节。
因此可以理解为每个字节单元的控制熔丝。
从出厂到被初始化之前,保护存储器的状态为全“1”。
从控制方面来说,保护存储器的内容只能从“1”写成“0”而不能从“0”擦除成“1”。
保护存储器每个被写“0”的单元所对应控制的主存储器的字节单元将不再接收任何擦除和写入命令,从而使得该字节单元的数据不可再改变。
从使用方面来讲,如果需要防止一些固定的标识参数被改动,可以将这类参数先写入主存储器的保护存储区,然后将对应单元的保护存储器的字位写位“0”,从而使这一部分单元中的参数内容永远不可更改。
保护存储器本身的读出操作不受限制。
但对其写入操作仍然受到加密存储器比较校验操作结果的控制。
当输入的“校验字”与芯片内的“参照字”一致,则可以执行后续的写入操作。
如果比较不成功,则控制逻辑将闭锁保护存储器。
2.加密存储器
加密存储器是一个4×
8位的EEPROM型存储器。
在这个存储器中,第0字节为“密码输入错误计数器”(EC)。
密码输入错误计数器的有效位是低3位。
在芯片初始化时,计数器设置成"
111"
。
这一字节是可读的。
每次比较密码时,先判断计数器中是否还有“1”。
如果还有“1”,则将其中一个“1”写成“0”,然后进行比较“校验字”操作。
如果比较结果一致,密码错误计数器将允许进行擦除操作(芯片不能自动进行擦除操作),同时打开主存储器、保护存储器和加密存储器,并允许进行擦除和写入操作。
如果比较结果不一致,则密码错误计数器中为“1”的个数将减少一位。
只要计数器的内容不全为0,则芯片的比较“校验字”操作还允许进行。
当密码计数器减数为零,则芯片的存储单元将全部锁死。
加密存储器的第1,2,3字节为“参照字”存储区。
这3个字节的内容作为一个整体披称为可编程加密代码(PSC)。
值得注意的是:
这3个字节的内容在PSC比较成功前是不可读的,只能进行比较操作。
而“写入、擦除”操作也受自身“比较”操作结果的控制。
只有当“比较”成功,加密存储器各字节内容才可以进行读出、写入和擦除。
3.1.4SLE4442芯片传送协议
传送协议是在接口设备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-3所示。
在复位响应期间,“启动”和“停止”(见下面)状态被忽略。
图3-3芯片复位即复位响应的时序关系
2.命令模式
复位响应之后,芯片等待着命令。
每条命令都以一个“启动状态”开始。
整个命令包括三个字节(命令含义后面解释)。
随后紧跟着一个附加脉冲并用一个“停止状态”来结束操作。
命令模式时序关系如图3-4所示。
启动状态:
在CLK为H状态期间,I/O线的下降沿为启动状态。
停止状态:
在CLK为H状态期间,I/O线的上升沿为停止状态。
在接受一个命令之后,有两种可能的模式:
输出数据模式(即读数据模式)和处理数据模式。
图3-4命令模式时序关系
3.输出数据模式
这种模式是将IC卡芯片中的数据传送给外部接口设备的一种操作。
输出数据模式的时序关系如图3-5所示。
在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。
随后每增加一个时钟脉冲,芯片内部的一位数据被送到I/O线上。
其输出的顺序是从每个字节的最低位开始。
当所需要的最后一个数据送出以后,需要再附加一个时钟脉冲来把I/O线置成H状态,以便准备接受新的命令。
在输出数据期间,任何“启动状态”和“停止状态”均被屏蔽掉。
图3-5输出数据模式的时序关系
4.处理数据模式
这种模式是对IC卡芯片做内部处理。
处理数据模式的时序关系如图3-6所示。
在第一个时钟脉冲的下降沿将I/O从H状态拉为L状态并开始处理。
此后芯片在内部连续计时计数,直到第N个时钟脉冲之后的附加时钟脉冲的下降沿I/O线被再次置高,完成芯片的处理过程。
在整个处理过程中I/O线被锁定成低状态。
图3-6处理数据模式的时序关系
3.1.5芯片的操作命令
1.命令的格式
每条命令包含三个字节,其顺序如表3-2所示。
表3-2命令顺序
MSB控制字LSB
MSB地址字LSB
MSB数据字LSB
B7B6B5B4B3B2B1B0
A7A6A5A4A3A2A1A0
D7D6D5D4D3D2D1D0
命令的传送总是从控制字节开始。
首先传送字节的最低位LSB(即B0)。
控制字节传送完毕以后,依次传送地址字节和数据字节,传送顺序均从各字节最低位开始。
在最后一位D7传送完成之后,需要增加一个附加脉冲把I/O线置成高状态。
SLE4442芯片具有七种命令,其格式和功能如表3-3所示。
表3-3命令格式及功能
字节1(控制)
字节2(地址)
字节3(数据)
功能
30H
38H
34H
3BH
31H
39H
33H
地址数
无效
输入数据
读存储器
修改存储器
读保护存储器
写保护存储器
读加密存储器
修改加密存储器
比较校验数据
2.有关命令的说明
(1)读主存储器:
该命令是指读出主存储器的内容。
该命令的控制字为(30H)。
对于每个字节来说总是从最低位开始读出。
从给定的字节地址(N)开始,直到整个存储器的末尾。
在该命令输入以后,接口设备IFD必须提供足够的时钟脉冲。
对于从地址(N)开始读数据所需要的时钟脉冲的数量M=(256-N)×
8+1。
对主存储器做读操作不受限制。
(2)读保护存储器:
该命令的控制字为(34H)。
在连续输入32个时钟脉冲情况下,芯片将保护存储器内各位内容传送到I/O线上。
最后一个附加时钟将I/O线置为H状态。
对保护存储器进行读取操作不受限制。
(3)读加密存储器:
该命令类似于读保护存储器那样,可以读出4个字节的加密存储器的内容。
在输出数据模式下,所需时钟脉冲的数量为32。
其后再附加一个时钟脉冲将I/O线置成高状态。
如果可编程加密代码(PSC)的校验不成功(除第0字节可读除外),I/O线总保持低状态。
(4)修改主存储器:
该命令就是根据所传送地址字节数据,寻址主存储器的EEPROM字节,然后修改字节内容。
该命令的控制字为(38H)。
在处理模式期间,可能有几种情况:
擦除和写入至少需要5ms;
只写入不擦除,至少需要2.5ms;
只擦除不写入,至少需要2.5ms。
(5)修改加密存储器:
该命令是根据所传送的字节数和要修改的数据,将加密存储器中相应字节的内容进行修改。
该命令的控制字为(39H),该命令只能在可编程加密代码(PSC)比较成功之后才能进行。
该命令的执行时间和所需的时钟脉冲与修改主存储器的情况相同。
(6)写保护存储器:
这一命令的执行过程包括一个把被输入的数据与在EEPROM中对相应数据进行比较的过程。
在确认一致的情况下,保护字位被写0。
从而使得主存储器中的信息不可更改。
如果数据比较结果不一致,则保护字位的写操作将被禁止。
该命令所需时钟脉冲和执行时间与修改主存储器命令的情况相同。
3.2CD4066
CD4066的每个封装内部有4个独立的模拟开关,每个模拟开关有输入、输出、控制三个端子,其中输入端和输出端可互换。
当控制端加高电平时,开关导通;
当控制端加低电平时开关截止。
模拟开关导通时,导通电阻为几十欧姆;
模拟开关截止时,呈现很高的阻抗,可以看成为开路。
模拟开关可传输数字信号和模拟信号,可传输的模拟信号的上限频率为40MHz。
各开关间的串扰很小,典型值为-50dB。
CD4066是四双向模拟开关,主要用作模拟或数字信号的多路传输。
引出端排列与CC4016一致,但具有比较低的导通阻抗。
另外,导通阻抗在整个输入信号范围内基本不变。
CD4066由四个相互独立的双向开关组成,每个开关有一个控制信号,开关中的p和n器件在控制信号作用下同时开关。
这种结构消除了开关晶体管阈值电压随输入信号的变化,因此在整个工作信号范围内导通阻抗比较低。
与单通道开关相比,具有输入信号峰值电压范围等于电源电压以及在输入信号范围内导通阻抗比较稳定等优点。
当模拟开关的电源电压采用双电源时,例如=﹢5V,=﹣5V(均对地0V而言),则输入电压对称于0V的正、负信号电压(﹢5V~﹣5V)均能传输。
这时要求控制信号C=“1”为+5V,C=“0”为-5V,否则只能传输正极性的信号电压。
元件电路管脚图如图3-7所示图3-7CD4066管脚图
3.3单片机
STC89C55
是一种带16K字节闪烁可编程可檫除只读存储器(FPEROM-FlashProgramableandErasableReadOnlyMemory)的低电压,高性能COMOS8的微处理器,俗称单片机。
该器件采用ATMEL搞密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
单片机总控制电路图如图3-8所示。
图3-8单片机总控制电路
1.时钟电路
STC89C55内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。
时钟可以由内部方式产生或外部方式产生。
内部方式的时钟电路如图3-9(a)所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。
定时元件通常采用石英晶体和电容组成的并联谐振回路。
晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。
外部方式的时钟电路如图3-9(b)所示,RXD接地,TXD接外部振荡器。
对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。
片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。
(a)内部方式时钟电路(b)外部方式时钟电路
图3-9时钟电路
2.复位及复位电路
(1)复位操作
复位是单片机的初始化操作。
其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。
除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状态如表3-4所示。
表3-4一些寄存器的复位状态
寄存器
复位状态
PC
0000H
TCON
00H
ACC
TL0
PSW
TH0
SP
07H
TL1
DPTR
TH1
P0-P3
FFH
SCON
IP
XX000000B
SBUF
不定
IE
0X000000B
PCON
0XXX0000B
TMOD
(2)复位信号及其产生
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。
若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。
产生复位信号的电路逻辑如图3-10所示。
图3-10复位信号的电路逻辑图
整个复位电路包括芯片内、外两部分。
外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。
复位操作有上电自动复位相按键手动复位两种方式。
上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图3-11(a)所示。
这样,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。
按键手动复位有电平方式和脉冲方式两种。
其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图3-11(b)所示;
而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。
其电路如图3-11(c)所示。
(a)上电复位(b)按键电平复位(c)按键脉冲复位
图3-11复位电路
上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。
本系统的复位电路采用图3-11(b)按键复位方式。
STC89C55具体介绍如下:
1 主电源引脚(2根)
VCC(Pin40):
电源输入,接+5V电源
GND(Pin20):
接地线
2 外接晶振引脚(2根)
XTAL1(Pin19):
片内振荡电路的输入端
XTAL2(Pin20):
片内振荡电路的输出端
3 控制引脚(4根)
RST/VPP(Pin9):
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
ALE/PROG(Pin30):
地址锁存允许信号
PSEN(Pin29):
外部存储器读选通信号
EA/VPP(Pin31):
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
4 可编程输入/输出引脚(32根)
STC89C55单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。
PO口(Pin39~Pin32):
8位双向I/O口线,名称为P0.0~P0.7
P1口(Pin1~Pin8):
8位准双向I/O口线,名称为P1.0~P1.7
P2口(Pin21~Pin28):
8位准双向I/O口线,名称为P2.0~P2.7
P3口(Pin10~Pin17):
8位准双向I/O口线,名称为P3.0~P3.7
STC89C55主要功能如表3-5所示。
表3-5STC89C55主要功能
主要功能特性
兼容MCS51指令系统
16K可反复擦写FlashROM
32个双向I/O口
1280x8bit内部RAM
3个16位可编程定时/计数器中断
时钟频率0-24MHz
2个串行中断
可编程UART串行通道
2个外部中断源
共6个中断源
2个读写中断口线
3级加密位
低功耗空闲和掉电模式
软件设置睡眠和唤醒功能
3.4键盘电路
键盘电路的设计通常有两种方案。
一种是并行接口键盘电路,另一种是串行接口键盘电路。
在本设计中,根据IC卡读写器的