找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5478|回复: 0
收起左侧

基于单片机的ic卡读卡器设计论文

[复制链接]
ID:331534 发表于 2018-5-16 19:33 | 显示全部楼层 |阅读模式
基于单片机的IC卡读写器设计
摘要:随着社会的进步和现代化程度的不断提高,人类所拥有的信息种类和数量都在成倍地增长,每天都要处理许多与个人有关的信息,而这些信息管理十分不便。因此,在实际生活中IC卡的应用范围非常广泛,它有助于解决问题。IC卡读写器是IC卡和计算机之间的传输媒介,它与计算机之间通过串行口相连,本文主要应用89C2051单片机为核心对SLE4442卡进行读写控制。接触式IC卡是IC卡领域的一项新兴技术,它是射频识别技术和IC卡技术相结合的产物。
首先在绪论中介绍了课题的开发意义及功能概述。
其次在主要描述了系统硬件工作原理,并介绍了IC卡SLE4442的内部结构及原理图,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程。
本系统是以单片机的基本语言汇编语言来进行软件设计,指令的执行速度快。
最后具体描述了各个功能模块的软、硬件调试。本文撰写的主导思想是软、
硬件结合,以硬件为基础,来进行各功能模块的编写。

目录:
1前言
1.1  系统的提出及研究意义。
1.2  系统的研究方向及功能概述。
2    正文
2.1  硬件设计思路。
2.2  硬件论证方案。
2.3  硬件各模块的设计。
2.3.1 89C2051单片机的简介。
2.3.2 SLE4442IC卡的简介:
      芯片概述:芯片功能;芯片内部逻辑结构;
      传输协议:复位和复位响应;命令模式;输出数据模式;处理数据模式;
2.3.3 SLE4442的应用:
      芯片的复位方式;
      芯片的操作命令格式;
2.3.4 SLE4442的接口技术:
      SLE4442卡的接口电路;
      SLE4442卡的插入/退出识别与上电/下电复位过程;
      SLE4442卡的读写;
      SLE4442卡的逻辑加密。
2.3.5RS—232通信接口芯片:
2.3.6电路原理分析
2.4  软件设计思想。
      软件结构设计及其分析;
      软件系统分析;                                                                 
2.5  软件程序设计
3系统调试
4    结论
5   参考文献
6   致谢
附录:
附录一:外文专业参考资料译文
附录二:外文专业参考资料原文
附录三:电路原理图
附录四:程序流程图
附录五:程序清单
1.前言
1.1系统的提出及研究意义。
当今世界信息技术的发展日新月异,一个以电子商务为主要特征的经济时代即将来临,IC卡是一种将个人信息最有效地送入到先进的全球信息网络并获取所需结果的最有效的办法,IC卡将成为人们联网身份识别和实现电子支付手段。其影响面是前所未有的。智能IC卡与普通磁卡相比具有更高的安全性,为此,对智能IC卡的读写进行研究是非常有意义的。按卡与外界数据传输的形式来分,有接触式IC卡和非接触式IC卡两种。当前广泛使用的是接触式IC卡,本文对其进行了详细介绍。
目前,IC卡家族中档次最高的智能IC卡,又称CPU卡.顾名思义, 这种卡片上不但有存储数据的存储器和对外联络的通讯接口,还带有具备数据处理能力的微处理器,实际上是一台卡上的单片微机系统.为了管理这一系统中的硬件和软件资源, 卡上存储有进行数据读写和安全管理的程序,以及管理这些程序的卡上操作系统,即COS(Chip Operating system).COS与我们在PC机上常见的DOS和WINDOWS 等操作系统有很大不同,它是根据IC卡特点而开发的专用操作系统.COS受IC 卡存储容量和微处理器性能的限制,主要功能是:控制IC卡与外界的信息交换;管理IC卡上各种存储器;在IC卡内执行读写器的各种操作命令.有了CPU与COS,IC卡就有了智能.因此智能IC 卡具有超强的存储性能,提供很高的信息安全性和可靠性.
1.2系统的研究方向及功能概述。                                                           
本文主要以89C2051单片机为核心,IC卡读/写设备就是能将数据信息“写入”IC卡或将IC卡内部的数据信息“读出”或“擦除”的电子接口设备,总体来说,可将其分为通用型读/写设备和专用型读/写设备。本设计主要分析接触型IC卡读/写器,作为PC机的嵌入式外设,通过串型接口实现交换。
功能:能识别和读/写存储卡;为连机型读/写器,做为依附于PC机的一种外设,通过RS-232C与PC机进行通信;能自动连续读/写,具有上电冷复位,插卡热复位功能;卡上数据读/写采用双认证方式,确保读/写数据的可靠性和准确性;具有一定的抗攻击能力,即对于非法插拔,非法IC卡等具有一定的抵抗能力,可避免短路等造成的读/写损坏;具有声光提示读/写状态;采用动态加密算法,避免IC卡被非法复制,并保证IC卡数据的安全性。
2.正文
2.1硬件设计思路:
     IC卡的应用领域非常广泛。在IC卡的触点和读/写设备的触点良好接触之前,读/写设备不应对IC卡施加有关信号,以免造成不可预料的损坏。IC卡读/写设备作为系统和用户交换的接口,必将面对各种各样复杂的应用环境。因此,在设计阶段应注意IC卡读/写设备环境。作为操作系统,管理IC卡的硬件资源和数据资源是其基本任务.IC卡上的硬件资源包括CPU,ROM,EEPROM和RAM及通讯接口,这些都由IC卡上操作系统统一管理, 使外部不能直接控制这些资源,使IC卡对外表现为一个"黑匣子",从而加强了系统的保密性能. 智能卡通讯管理主要功能是执行智能IC卡的信息传送协议, 接收读写器发出的指令,并对指令传递是否正确进行判断.一般可采用奇偶检,CRC校验等方式判断传输错误.对于采用分组传输协议的系统, 还可以通过分组长度变化来检出错误。
智能卡操作系统最重要的功能之一就是数据安全管理. 这可以具体地分为用户与IC卡的鉴别,核实功能以及对传输数据的加密与解密操作. 智能IC卡COS的应用管理功能是对读写器发来的命令进行判断,译码和处理. 智能卡的各种应用以专有文件形式存在卡上,各专有文件则是由IC 卡的指令系统中指令排列所组成的.
      "鉴别"是指对IC卡本身的合法性进行验证,判定一张IC卡是不是伪造的.如在前两讲中谈到的多采用多种卡上设置的读,写,擦除密码作为防伪的基本手段.而COS由于可以通过内部软件运行来完成密码转换,因此智能IC 卡上实际写入的密码无法被读写器直接读取,安全性能更强.IC卡由于其高存储量和高保密性,应用领域十分广泛,除覆盖了传统磁卡的全部功能外,还拓展到许多磁卡不能胜任的领域
2.2硬件论证方案:
        IC卡是一种集成电路卡,它的读/写设备是每个IC卡应用系统必不可缺的周边设备。该设备通过IC卡的8个触点向IC卡提供电源并与IC卡相互交换信息。虽然IC卡是从磁卡发展而来的。 本IC卡读/写器的硬件系统设计主要有:IC卡的插拔检测,IC卡的电源控制,IC 卡与CPU的接口以及必要的人机界面。软件系统主要由IC卡数据读/写模块,串行通信模块等组成。
SLE4442是德国SIMENS公司设计的逻辑加密存储卡。它具有2K位的存储容量和完全独立的可编程代码存储器。内部电压提升电路保证了芯片能够以单一+5V电压供电,较大的存储容量能够满足通常应用领域的各种需要,因此是目前国内应用较多的一种IC卡芯片。芯片采用;多存储器结构,2线连接协议(串行接口满足ISO7816同步传输协议),NMOS工艺技术,每字节的擦除/写入编程时间位。2。5MS。存储器具有至少10000次的擦写周期,数据保持时间至少10以上。
      根据IC卡应用系统的这种典型结构,开发者的主要工作包括:(1) 设计和构造应用系统中心数据库,对应用IC卡管理的数据进行分类存储和管理.由于数据库一般建立在小型机或微机网络服务器上,一般在相应环境中开发设计.(2)对IC 卡上数据的存储格式,读写方式,加密和安全保护方式进行规划和设计.这些可借助IC 卡读写器和微机的开发系统来完成.(3)构造IC卡应用环境,建立网络和读写工作站.作为IC卡系统中的发卡站和结算站,可以采用带联机读写器的小型机或微机.系统设计环境可以是WINDOWS下的VB,FOXPOR,ACCESS等软件,一般利用读写器厂家提供的接口函数与数据库软件接口.用户刷卡使用的工作站可以采用PC机加联机读写器组成,需进行用户界面设计,能够提供较友好的用户界面.也可以使用便携式的脱机工作站, 一般由单片机系统组成,带有液晶显示器和小型键盘.这种读写器的用户接口软件, 也需在专用的单片机系统中开发.
    因此,一个IC卡应用系统的设计工作除了包括各站点的硬件配置,系统联网, 系统数据库构建和管理软件编程,各工作站用户接口软件的编程,以及IC卡上数据规划与初始分区和数据写。
2.3硬件各模块的设计:
2.3.189C2051单片机的简介:
     本读写器以ATMEL89C2051为内核。此型号的单片机是一种低消耗,高性能的8位CMOS微处理芯片。片内带有2KB的闪烁可编程及可擦除只读存储器,与工业标准的80C51指令集相兼容,DIP20封装。片上的PEROM准许在线对程序存储器重新编码,也可用常规的非易挥发存储芯片编程。它的特点可归纳为:1.与MCS-51产品兼容;2.2KB的在线可重复编程闪烁存储器;:寿命:1000次写/擦除周期,数据保存期10年;3.宽工作电压:范围Vcc=2.7~6V;4.全静态工作方式:0~24MHZ;5.3级程序存储器锁定;6.256*8位内部RAM;7.32条可编程I/O口线;8.3个16位定时/计数器;9.5个中断源;10.可编程串行中断;11.低功耗的闲置与掉电模式。
  • 复位状态: MCS—51单片机复位后, 程序计数器PC和特殊功能寄存器复位的状态如表所示。 复位不影响片内RAM存放的内容, 而ALE、PSEN在复位期间将输出高电平。由表可以看出: (1) (PC)=0000H 表示复位后程序的入口地址为0000H; (2)(PSW)=00H, 其中RS1(PSW.4)=0, RS0(PSW.3)=0, 表示复位后单片机选择工作寄存器0组; (3)(SP)=07H 表示复位后堆栈在片内RAM的08H单元处建立;(4)P0口~P3口锁存器为全1状态, 说明复位后这些并行接口可以直接作输入口, 无须向端口写1; (5) 定时器/计数器、 串行口、 中断系统等特殊功能寄存器复位后的状态对各功能部件工作状态的影响。
上电复位:
  • AT89C2051结构:AT89C2051是一个有20个引脚的芯片,引脚配置如图.    与8051内部结构进行对比后可发现,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚,因而芯片尺寸有所减小。AT89C2051芯片的20个引脚功能为:1.VCC  电源电压;2.GND  接地;3:  RST复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”
引脚结构:
  • XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡放大器的输出。P1口8位双向I/O口。引脚P1.2~P1.7提供内部上拉,当作为输入并被外部下拉为低电平时,它们将输出电流(IIL),这是因内部上拉的缘故。 P3口引脚P3.0~P3.5与P3.7为7个带内部上拉的双向I/O引脚。P3.6在内部已与片内比较器输出相连,不能作为通用I/O引脚访问

单片机内部,外部振荡电路:

  • 单片机存储器分类及配置: MCS—51单片机存储器的分类从物理结构上可分为: 片内、 片外程序存储器(8031和8032没有片内程序存储器)与片内、 片外数据存储器4个部分; 从寻址空间分布可分为: 程序存储器、 内部数据存储器和外部数据存储器3大部分; 从功能上可分为: 程序存储器、 内部数据存储器、 特殊功能寄存器、 位地址空间和外部数据存储器5大部分。
  • 特殊功能寄存器(SFR):AT89C2051中特殊功能寄存器描述,它们共占用了19字节,其功能与8051SFR功能相对应。
  • 程序存储器的加密:AT89C2051片内有2个锁定位,可以编程(P),也可以不编程(U),从而得到3种锁定位保护模式。


内部结构:
  • 低功耗工作方式:AT89C2051有两种低功耗工作方式:空闲方式与掉电方式。
            1) 空闲方式(休眠方式):当利用软件使空闲方式位IDL(PCON.0)=1时,单片机进入空闲方式。此时,CPU处于休眠状态,而片内所有其他外围设备保持工作状态,片内RAM和所有特殊功能寄存器内容保持不变。在空闲方式下,当晶振fosc=12MHz、电源电压VCC=6V时,电源电流ICC从20mA降至5mA,而VCC=3V时,ICC由5.5mA降至1mA。中断或硬件复位可以终止空闲方式。
当空闲方式由硬件复位终止时,CPU要从休眠处恢复程序的执行,执行2个机器周期后,内部复位算法才起作用。此时,硬件禁止访问内部RAM,但允许访问端口引脚。为了防止休眠被复位终止时对端口引脚意外写入的可能性,在生成空闲方式的指令后不应紧跟对端口引脚的写指令。如果不采用外部上拉,P1.0和P1.1应置“0”;如果采用外部上拉,则应置“1”。
2)掉电方式:掉电方式由掉电方式位PD(PCON.1)=1设置。此时,振荡器停止工作,设置掉电方式的指令成为最后执行的1条指令,片内RAM和特殊功能寄存器内容保持不变。在掉电方式下,VCCmin=2V。当VCC=6V时,ICCmax=100μA;当VCC=3V时,ICCmax=20μA。退出掉电方式的唯一方法是硬件复位。硬件复位将重新定义特殊功能寄存器,但不影响片内RAM。复位的保持时间应足够长,以便振荡器能重新开始工作并稳定下来。在VCC没有恢复到正常工作电压之前,不应进行复位。如果不采用外部上拉,P1.0和P1.1应置“0”,否则置“1”。
2.3.2 SLE4442IC卡的简介:
  • 概述:
SLE4442 是德国西门子SIMENS 公司设计的逻辑加密存储卡它具有2K 位的存储容量和完全独立的可编程代码存储器PSC 内部电压提升电路保证了芯片能够以单+5V 电压供电较大的存储容量能够满足通常应用领域的各种需要因此是目前国内应用较多的一种IC 卡芯片芯片采用多存储器结构2 线连接协议串行接口满足ISO7816 同步传送协议NMOS 工艺技术每字节的擦除/写入编程时间为2.5ms 存储器具有至少10000 次的擦写周期数据保持时间至少10 年。
SLE4442的触点安排:
            
               操作电压                           地
                      复位                              未用
                      时钟                               双向数据线
                      未用                               未用芯片功能
芯片功能:
SLE4442 IC 卡主要包括三个存储器:
1.256x8 位EEPROM 型主存储器。地址0~31 为保护数据区。该区数据读出不受限制,写入受保护存储内部数据状态的限制。当保护存储器中第N 位N=0~31 为1 时,对应主存储器中第N 个字节允许进行擦除和写入操作。地址32~255 后244 字节为应用数据区,数据读出不受限制,擦除和写入受加密存储器数据校验结果的影响。这种加密校验的控制是对整个主存储器实施的(即包括保护数据区和应用数据区)。
2.32 x1 位PROM 型保护存储器.一次性编程以保护主存储器保护数据区,防止一些固定的标识参数被改动.保护存储器同样受加密存储器数据校验结果的影响。
3.4x8 位EEPROM 型加密存储器.第0 字节为密码输入错误计数器(EC).EC的有效位是低三位,芯片初始化时设置成”111”这一字节是可读的(EC).的1,2,3字节为参照字存储区.这3 个字节的内容作为一个整体被称为可编程加密代码(PSC).其读出写入和擦除均受自身比较操作结果的控制。
芯片内部逻辑结构如下:
  • 传送协议:
1. 复位和复位响应:
复位和复位响应是根据ISO7816-3 标准来进行的。在操作期间的任意时候都可以复位。开始,地址计数器随一个时钟脉冲而被设置为零。当RST 线从高状态H 置到低状态L 时,第一个数据位(LSB)的内容被送到I/O 上。若连续输入32 个时钟脉冲,主存储器中的前四个字节地质单元中的内容被读出。在第33个始终脉冲的下降沿,I/O 线被置成高状态而关闭.
2.命令模式:
复位响应以后芯片等待着命令。每条命令都以一个“启动状态”开始。整个命令包括3 个字节。随后经更着一个附加脉冲并用一个“停止状态”来结束操作。
启动状态:在CLK 为高状态H 状态期间I/O 显得下降沿为启动状态。
停止状态:在CLK 为高状态H 状态期间I/O 显得上升沿为停止状态。
在接受一个命令之后有两种可能的模式输出数据模式即读数据和处理数据模式。                  
命令模式的时序图:
3.输出数据模式:
这种模式是将IC 卡芯片中的数据传送个外部设备接口(IFD)的一种操作。
在第一个CLK 脉冲的下降沿之后,I/O 线上的第一位数据变为有效。随后每增加一个时钟脉冲芯片,芯片内部的一位数据被送到I/O 线上,数据的发送从每个字节的最低位(LSB)开始。当所需要的最后一个数据送出以后,需要再附加一个时钟脉冲来把I/O口置成高状态,以便接受新的命令。
在输出数据期间任何“启动状态”和“停止状态”均被屏蔽掉.
输出数据模式的时序关系:
   
4.处理数据模式:
这种模式是对IC 芯片作内部处理.
芯片在第一个始终脉冲的下降沿将I/O 线从高状态拉到低状态并开始处理。此后芯片在内部连续计时计数,直到低n 个始终脉冲之后的附加一个时钟脉冲的下降沿I/O 线再次置高,完成芯片的处理过程。在整个处理过程中I/O 线被锁定成低状态。
处理模式的时序关系:
2.3.3SLE4442卡的应用:
  • 芯片的复位方式:
1.部复位:SLE4442是基于同步夫位响应的传送协议。芯片的复位时序如前述。
2.复位:在把操作电压连接到Vcc 段之后,芯片内部进行复位操作。I/O 线被置为高状态。必须在对任意地址进行读操作或做一个复位响应操作之后才可以进行数据交换。
3.:在CLK为低状态期间,如果RST 置为高状态,则任何操作均无效。I/O 线被锁定到高状态。需要一个最小维持时间tres=5Us 之后,芯片才能接受新的复位。
中止状态的时序:
  • 芯片的操作命令格式:
每条命令包含三个字节其排列顺序如下
MSB  控制字 LSB   
MSB 地址字  LSB
MSB  数据线  LSB
B7B6B5B4B3B2B1B0
A7A6A5A4A3A2A1A0
D7D6D5D4D3D2D1D0
SLE4442芯片具有7种命令:
字节1(控制)B7~B0
字节2(地址)A7~A0
字节3(数据)
功能
命令模式
30H
地址数
无效
读主存器
输出数据模式
38H
地址数
输入数据
改主存器
处理模式
34H
无效
无效
读保护存储器
输出数据模式
3CH
地址数
输入数据
修改加密
处理模式
31H
无效
无效
比较校验数据
输出模式
39H
地址数
输入数据
修改加密
处理模式
33H
地址数
输入数据
比较校验
处理模式
2.3.4SLE4442卡的接口技术:IC卡接口设备是由IC卡适配插座,IC卡电气接口电路,用于IC卡时序生成与数据交换的微处理器以及其他主设备的连接接口组成。根据IC卡在插入或退出时,按触点压触和脱离的方式区分主要有两种,一是滑触式结构,这种方式,触点处于固定位置,IC卡在插入或退出时,滑过与之不相关的位置,并滑接在固定的位置,另一类是着陆式结构,这种结构下,IC卡在插入过程中,触点与IC卡同步运动,逐步下压,并稳定与最终位置。
  • IC卡的接口电路:
     IC卡的接口电路是连接IC卡与读写机具的通路,由它实现对IC卡的供电,并满足不带电插拔的要求。
     一般来说,逻辑电路的“1”和“0”只是反映电压大小的关系,都处于带电状态。若带电插拔IC卡,可能会给IC卡带来损伤,甚至损坏它。因此在插拔前应先断开向IC卡供电的电源。,并切断其逻辑连接,实现对IC卡的保护。
     IC卡的逻辑接口电路一般采用集电极开路(OC)输出及非嵌拉保护式输入结构。上拉电阻R源端与IC卡的供电电源相连接。当IC卡处于供电状态时,整个接口电路接通,借口设备与IC卡间构成逻辑通路;而当IC卡处于下电状态时(V㏄=OFF),上拉电阻R的源端失去了供电,整个与卡的接口的电路均处于不带电状态。这种电路结构简单,可与CMOS,TTL接口相兼容,上升沿阻尼较大,不易产生边沿振荡,缺点是当接口端的分布电容较大时,上升沿过缓。在作为CPU卡的时钟驱动时(通常为3.57MHz              ),就有可能产生丢失脉冲等现象。解决这一问题的办法有两种,第一种:是通过减小时钟驱动端的上拉电,减小上升时间来解决;另一种是采用互补驱动方式来进行时钟驱动,这种方式结构复杂些,但可以实现更高的时钟频率。
     所有的IC卡的接口部分都加加了箝位保护二级管,这些箝位二级管可以使各引脚上的电压严格地限定在-Vd~Vcc+VD之间,这样,可以抑制由于线路干扰和逻辑电平变化的边沿产生抖动所带来的瞬态过压,为IC卡提供进一步的保护措施。
IC卡接口设备中的IC卡供电电路也是一个相对独立于其他回路,这是由于IC卡接口设备是一个独立于IC卡的设备,当有卡插入时,接口设备便开始向IC卡提供其所须的电力。如果插入的是一张电源与地击穿的坏卡,或是一个金属片之类的物质,就会造成供电回路的短路现象,若IC卡接口设备中无过流保护措施,就会造成设备的损坏。即便有保护措施,若与IC卡接口设备的其他部分共同使用一个保护回路,就会干扰整个设备的正常工作。
该电路利用了带输出短路保护特性的78系列三端稳压集成电路,78L05的最大输出电流可达150mA,短路保护电流起点在150mA~200mA左右,符合ISO/IEC7816-3所确定的范围。当插入的卡是一个电源对地的短路负载时,U1会因输出过载而形成短路保护,由于接口设备的供电是在U2提供的稳压回路上,因而不会干扰接口设备的工作,这一段路保护信息会在“短路报警指示”信号线上形成一个低电平输出,接口设备的微处理器通过感知这一信号而切断对IC卡接口的供电,直到该卡退出为止,U1的输出也会随之而转入正常的电压输出范围,以便为后续插入的IC卡提供正常的供电服务。
  • IC卡的插入/退出识别与上电/下电控制技术:IC卡的插入与退出的识别是通过IC卡适配插座上的感应开关来识别的,对于复杂结构的IC卡适配插座,其识别与控制过程也相当复杂,且针对不同的卡座,其控制也各不相同,IC卡的供电控制是一个直接涉及是否能安全可靠地操作IC卡的过程。它必须严格地遵循ISO7816-3规定,其操作如下:
(1)上电过程:——RST处于L状态;  (2)下电过程:——RST为状态L;
               ——vcc供电;                       ——CLK为状态L;
               ——接口设备处于接受                 ——VPP不起作用;
                   方式;            
               ——VPP上升为空闲状态;              ——I/O为状态A;
               ——CLK由相应稳定的时钟              ——VCC关闭。
提供;                     
上电过程:  PWRON1:LCALL  Recog            ;识别是否有卡插入
                      CLR  RST              ;使RST=L
                      CLR  CLK              ;使CLK=L
                      LCALL  Delay-0.5ms    ;延迟0.5MS。使端口逻辑信号稳定
                      CLR  PWR              ;给卡供电
                      CLR  DATOUT           ;使I/O端口=L;
                      RET                   ;返回
下电过程:PWROFF1:CLR      RST             ;使RST=L
                     CLR      CLK           ;使CLK=L
                     CLR      DATOUT        ;使I/O=L
                     LCALL   DELAY-0.5MS    ;延迟0.5MS,使端口逻辑信号稳定
                     SETB     PWR           ;给卡下电
                     RET                    ;返回
由于IC写主存储器时需要验证密码,所以执行下面程序时请确保SLE4442的密码的正确性。如果密码有错误,IC卡校验3次便会锁死报废。
        ORG      8000H
        AJMP     MAIN
        ORG      8100H
   MAIN:MOV     SP,#60H
   Write-read-Card:
        MOV      R0,#PSWD
        MOV      @R0,#0X11
        INC      R0
        MOV      @R0,#0X22
        INC      R0
        MOV      @R0,#0X33
        LCALL    CheckPassword
        Jnz      WRExit
        MOV      R0,#WriteBuf
        MOV      @R0,#0X55
        INC      R0;
        MOV      @R0,#0X66
        MOV      ByteNum,#0x02
        MOV      StartAdr,#0x20
        LCALL    WriteCard
        JNZ      WRExit
        MOV      ByteNum,#0x02
        MOV      StartAdr,#0x20
        LCALL    ReadCard
        JZ       Write-Read-Card
   WRExit:mov    A,#00H
   $INCLUDE(SLE4442.INC);
        END
  • IC卡的读写技术:不同类型的IC卡其读写方式或数据协议方式是不同的,其地址计数器是与时钟紧密相关的,当卡复位时,地址计数器置“0”,以后,每向卡发一个节拍的时钟,都将使IC卡的地址计数器加“1”,这一时钟频率上限为50KHZ或280KHZ。
复位过程:SYNRST:SETB   DATOUT          ;使能数据线
                  SETB   RST             ;复位使能
                      LCALL  DELAY-10US      ;延迟10us
                      SETB   CLK               ;置同步复位时钟H
                      LCALL  DELAY-10US        ;延迟10us
                      CLR     CLK              ;时钟为L
                      LCALL  DELAY-10US        ;延迟10us
                      CLR     RST              ;复位结束
RET
   数据字段的定位:SYNPOS:LCALL SYNRST        ;IC卡复位
                      SP1:CJNE R3,#00H,SP3  ;判低位
                           CJNE R2,#00H,SP2  ;判高位
                           RET                 ;返回
                      SP2:DEC R2              ;高位减1
                      SP3:DEC R3              ;低位减1
                           SETB CLK            ;开始建立一个时钟脉冲
                           LCALL Delay-10us
                           CLR CLK
                           LCALL Delay-10us     ;时钟脉冲结束
                           SJMP SP1             ;继续下一次
数据的读出过程:SYNREAD:LCALL SUNPOS         ;定位至起始地址
                           SETB DATAIN          ;使能数据输入线
                       SR1:MOV R5,#08H        ;置移位次数为8次
                       SR2:SETB CLK            ;CLK=H
                            MOV C,DATIN        ;将数据线上的内容输入到C触发器中
                            RLC A               ;A寄存器循环左移,C的内容进入A最低位
                            LCALL Delay-10us    ;延时10us
                            CLR CLK             ;CLK=L
                            LCALL Delay-10us    ;延时10us
                            DJNZ R5,SR2         ;判断是否接收完一字节,若是继续,否则转至SR2,继续接收下一位
                           MOV @R0,A            ;将字节内容送(R0)单元
                           INC R0               ;数据存放地址加1
                           DJNZ R4,SR1         ;判断是否接收完R4个字节,若是继续,否则转至SR1,继续接收
                           RET                  ;返回
IC卡的写操作:在器件地址码之后,紧跟着的是字节地址码。地址码长度为8位。时序中的数据为写字节时,由IC卡读/写器中的单片机在SDA发送一个8位码长的数据;卡片每收到一个数据字节后,都要通过SDA回送一个“确认”信号。
IC卡的读操作有3种:现行地址读、随机地址读、顺序读。
IC卡芯片操作地址:对IC卡而言,A2,A1,A0地址线均为0;因此,写地址为0A0H,读地址为0A1H。
IC卡读写器要能读写符合ISO7816标准的IC卡。IC卡接口电路作为IC卡与IFD内的CPU进行通信的唯一通道,为保证通信和数据交换的安全与可靠,其产生的电信号必须满足下面的特定要求。
    完成IC卡插入与退出的识别操作:IC卡接口电路对IC卡插入与退出的识别,即卡的激活和释放,有很严格的时序要求。如果不能满足相应的要求,IC卡就不能正常进行操作;严重时将损坏IC卡或IC卡读写器。
(1)激活过程:为启动对卡的操作,接口电路应按图1所示顺序激活电路:
◇RST处于L状态;
◇根据所选择卡的类型,对VCC加电A类或B类,正常操作条件下VCC的电特性见表1;
正常操作条件VCC的电特性
符  号
最小值
最大值
条    件
Vvcc/V
4.5
2.7
5.5
3.3
A类
B类
Icc/mA

60500.5
A类,在最大允许频率
B类,在最大允许频率时钟停止
◇VPP上升为空闲状态;
◇接口电路的I/O应置于接收状态;
◇向IC卡的CLK提供时钟信号(A类卡1~5MHz,B类卡1~4MHz)。
如图所示,在t’a时间对IC卡的CLK加时钟信号。I/O线路应在时钟信号加于CLK的200个时钟周期(ta)内被置于高阻状态Z(ta 时间在t’a之后)。时钟加于CLK后,保持RST为状态L至少400周期(tb)使卡复位(tb在t’a之后)。在时间t’b,RST被置于状态H。I/O上的应答应在RST上信号上升沿之后的400~40 000个时钟周期(tc)内开始(tc在t’b之后)。
在RST处于状态H的情况下,如果应答信号在40 000个时钟周期内仍未开始,RST上的信号将返回到状态L,且IC卡接口电路按照图2所示对IC卡产生释放。
(2)释放过程:当信息交换结束或失败时(例如,无卡响应或卡被移出),接口电路应按图2所示时序释放电路:
◇RST应置为状态L;
◇CLK应置为状态L(除非时钟已在状态L上停止);
◇VPP应释放(如果它已被激活);
◇I/O应置为状态A(在td时间内没有具体定义);
  • VCC应释放。
通过触点向卡提供稳定的电源
  IC卡接口电路应能在表1规定的电压范围内,向IC卡提供相应稳定的电流。
  • 通过触点向卡提供稳定的时钟
  IC卡接口电路向卡提供时钟信号。时钟信号的实际频率范围在复位应答期间,应在以下范围内:A类卡,时钟应在1~5MHz;B类卡,时钟应在1~4MHz。
  复位后,由收到的ATR(复位应答)信号中的F(时钟频率变换因子)和D(比特率调整因子)来确定。
时钟信号的工作周期应为稳定操作期间周期的40%~60%。当频率从一个值转换到另一个值时,应注意保证没有比短周期的40%更短的脉冲。
  • 卡的逻辑加密芯片:逻辑加密卡主要是由EEPROM单元阵列和密码控制逻辑构成的,其功能介于存储器卡和CPU卡之间,它具有一定的保密逻辑功能,不像存储器卡那样能够被自由擦写。逻辑加密卡芯片从功能上看,主要分为两个部分,一是EEPROM单元阵列,一是保密逻辑部分。                                                 SLE4442卡内含256*8位EEPROM存储器和32*1位保护存储器,该保护存储器对EEPROM的前32字节进行写/删除保护。保护位是一次性的,不能修改。它还有一个可编程序安全码逻辑,整个存储器除了PSC以外,均可读,而且只有在比较PSC不正确后才能进行写/删除操作。在三次比较PSC不正确后将锁住后续的PSC比较及写/删除操作。
存储器分配:                                                                                                                           
   
逻辑加密卡芯片的功能框图:
比较从EEPROM中读出的数据和IC卡中读出的数据是否相同:
     CMPLOOP: MOV   A,@R0
               MOV   R6,A
               MOV   A,@R1
                          XRL   A,R6
              JNZ    NOEQU
              DJNZ   R7,CMPLOOP
     SNEQU:   CLR    SW
              JMP    Read-Insert-Card
     NOEQU:   SETB   SW
              JMP    Read-Insert-Card
$INCLUDE(SLE4442.INC)
$INCLUDE(V12C-24A.inc) end
EEPROM逻辑图
2.3.5RS—232通信接口芯片:RS—232是目前串行通信中最常用的总线,其标准RS—232C是美国电子工业协会EIA制定的串行物理接口协议。RS—232接口的特征是负逻辑、单端驱动、共地接收、适用于点对点通信。当信号线上的电平为-3~-15V时,表示逻辑“1” ;当信号为+3~+15V时,表示逻辑“0”。通信双方使用一条公共信号地线作电平参考。其驱动器负载电容不超过2500PF,通信距离受此电容的限制。
JP15跳线组的1和2,即把单片机锁紧座的RXD和TXD脚与RS-232电平转换芯片MAX232连接起来。RS-232的2口:C0-RSD,PC接收串行数据;3口:C0-TXD,PC接收串行数据。2.3.6电路原理分析:由于IC卡使用中往往牵涉到经济及其他信息,因此它的可靠性至关重要。IC卡读/写接口的可靠性包括:IC卡读/写过程能可靠地进行;任意插拔IC卡不会引起IC卡损伤;在IC卡读/写中出现问题时,能及时告警并恢复到正常状态。
     IC卡的上/下电控制:IC卡的上电一般是可知的,即对IC卡读/写时,须给IC上电;因此,IC卡的上电控制比较简单,由于IC卡读/写电流很小,一般为几个毫安,由单片机的P1。4信号通过小功率三极管9012控制系统的+5V电源切入IC卡座。当IC卡上电后,发光二极管L2被点亮,起读/写指示作用。每次对IC卡读/写完成后,即及时下电,以减少插拔时带电的可能性。要保证IC卡能任意插拔,不致引起IC卡损坏,必须使IC卡拔卡过程处于IC卡断电的状态。要作到这一点,必须保证IC卡的下电迅速及时;为此,可将IC卡的拔卡处理由最高级中断程序来实现。
     IC卡与CPU间串行信号的限流: 为了保证IC卡带电插拔的安全可靠,需对IC卡与CPU间串行通信的数据信号与时钟信号进行。限流电阻阻值一般是100~200欧。此限流电阻同时可以防止往IC卡座中导电的异物而引起系统损坏。
     串行通信接口的实现:TTL与RS-232C电平转换由诸如MAX202E接口芯片实现,采用简单的软握手3线制通信方式。
     工作状态的有效提示:大多IC卡读/写装置有声光指示接口,发光二极管L2即为读/写工作状态指示,发光二极管L1用与串行通信指示。
2.4软件的设计思想:
  • 软件结构设计及其分析:
读/写器软件结构:读写器的读/写操作由上位PC机进行控制,通过串行通信的命令字来实现,具体规定为:如握手信号为0AAH,则读卡;如握手信号为0BBH,则写卡。其中,在读/写卡开始时,设置读/写卡标志;在通信开始时,设置通信标志。避免数据不全或错误数据读入或写入。另外,所有的IC卡数据是先存放在IC卡的读缓冲区和写缓冲区,“有卡插入否”是通过判断P3.3引脚的高低电平来实现。为了保证读卡的可靠性,必须进行软件“去抖”处理。一旦有卡插入,则设置读/写标志;在通信时,设置正在通信标志。目的是为了避免带电插拔。本系统中关键的软复位是通过在外中断INT0服务函数中设置软复位标志,在主函数中强制跳转到函数首实现的。
  • 软件系统分析:
为保证IC卡读/写过程准确可靠,除要保证读/写函数严格按照IC卡的读/写时序外,还须采用“重读”和“回读”措施。即:读IC卡时,采用读2次的方式,写IC卡时,先将数据写入,再回读比较,相符则继续,否则重写一次,以免偶然的写失败导致得出IC卡失效才错误结论。为使上、下机位均不死机或简单恢复正常工作。对于作为下位机的IC卡读/写器,利用IC卡能随意拔插,再结合IC卡的拔卡处理是一个高级中断的特点,将IC卡的拔卡中断程序分2个分支:1)非IC卡读/写且非与上位机通信状态;中断子程序是简单的拔卡BEEP告警后,直接中断返回。2)在与上位机通信或正在对IC卡读/写状态。会引起系统工作失常甚至死机,在恢复中断环境后,用强制跳转指令强制从主程序开始执行,达到复位的效果。
为确保串行通信的可靠性,应着重从上、下位机通信软件的以下问题入手:合理选择通信波特率,由于上、下位机通信的数据量小,因此,通信波特率可选择低一些,但要高度重视下位机的波特率参数整定问题。
3.系统调试:对于开发者来说,在方案确定和实施时,首先要考虑对于不同的功能模块具体采用的接口方式,接口芯片及电路。要做的工作主要是查阅资料,由于单片机外围接口电路设计可借鉴的资料十分丰富。因此在电路设计时,如果能清楚了解参考资料的设计意图,设计要点,应当说在原理上一般不会出错,主要是工艺性错误或设计缺陷。从这个意义上说,单片机应用系统的硬件调试主要是排查电路板的问题和连接的问题。1.仔细推敲设计原理,确认无误;2.对照设计图纸查印制电路板,看是否有过空,粘连等工艺现象;3.外围连接是否有误。单片机应用系统的软件调试主要是逻辑错误和功能错误。
             本设计利用DP—51PRO单片机综合仿真实验仪进行智能IC卡读写器的操作,DP—51PRO单片机综合仿真实验仪提供了丰富的外围期间和设备,其中,D8区是接触式IC卡实验区,J100为IC卡控制信号接口,其中VCC和GND已经连接到卡座上。
4.结论:
在本系统的开发应用过程中,由本人独立完成智能IC卡读写器的设计,但是,由于本人经验、知识积累的欠缺,本设计还存在很多不足和欠缺。
          但是,智能IC卡读写器还是应用特别的广泛,此次的设计还是比较实用,基本实现了预期目标。本次设计结束了我的大学生涯,它是具有标志性的。它不仅仅是一次毕业论文设计,在设计中我通过实践,掌握了更多的专业知识,由于亲自动手实践,查阅了大量有关于IC卡,51单片机的资料,更加深刻的记忆其中的内容。在设计中培养动思维方式、动手能力,这对今后的生活、工作、学习都有很大的帮助。而且,同学的互助,让我更懂得工作需要团体精神!这比设计本身更有意义。

6.致谢信:
时光荏苒,岁月如梭,转眼间四年的大学生活马上结束了。本次毕业设计已经接近尾声,回顾本次毕业设计,作为一个本科生的毕业设计,由于经验的匮乏,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计是难以想象的。感谢在此期间,所有教育我的老师,你们的富有创造性的思维方法,丰富的科研经验和远见卓识,开拓了我的思路,使我受益匪浅,在此深表谢意!
此外,还要特别感谢我的指导老师宫老师,无论在理论上还是在实践中,都给与我很大的帮助,使我得到很大的提高,这对于我以后的工作和学习都有一种巨大的帮助,在此感谢他耐心的辅导。在撰写论文阶段,宫老师几次审阅我的论文,提出了许多宝贵意见,没有他的指导,我就不能较好的完成课题设计的任务。
    最后,将次文献给所有关心我,教育我,支持我的亲人老师和朋友们谢谢你们的鼓励,此次毕业设计才会顺利完成!
附录一:外文专业参考资料译文:
附录二:外文专业参考资料原文:
附录三:电路原理图:

附录四:程序流程图:


完整的Word格式文档51黑下载地址(含源码与清晰图片):
基于单片机实现IC卡读卡器.docx (1.82 MB, 下载次数: 42)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表