IC卡读写控制设计 精品.doc_第1页
IC卡读写控制设计 精品.doc_第2页
IC卡读写控制设计 精品.doc_第3页
IC卡读写控制设计 精品.doc_第4页
IC卡读写控制设计 精品.doc_第5页
已阅读5页,还剩45页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

IC卡读写控制设计一、 引言(一) IC卡技术及其发展IC卡的最初设想是由日本人提出来的。1969年12月,日本的有村国孝(Kunitaka Arimura)提出一种制造安全可靠的信用卡方法,并于1970年获得专利,那时叫ID卡(Identification Card)。1974年一名法国新闻记者罗兰莫雷诺(Roland Moreno)发明发明了带集成电路芯片的塑料卡片,并取得了专利权,这就是早期的IC卡(Integrated Circuit Card)。1976年法国布尔(Bull)公司研制出世界第一枚IC卡。1984年,法国的PTT(Posts, Telegraphs and Telephones)将IC卡用于电话卡,由于IC卡良好的安全性和可靠性,获得了意想不到的成功。随后国际标准化组织(ISO,International Standardization Organization)与国际电工委员会(IEC,International Electrotechnical mission)的联合技术委员会为之制订了一系列的国际标准、规范,极大地推动了IC卡的研究和发展。由于IC卡小巧玲珑,便于携带,存储量大,保密性好,使用寿命长,制造成本低,它日益受到人们的青睐。如今它已广泛用于金融流通、购物预付、身份认证、资料记录等方面,是继磁卡之后出现的又一种新型信息工具。目前在我国,随着金卡工程建设的不断深入发展,IC卡已在众多领域获得广泛应用,并取得了初步的社会效益和经济效益。2000年,全国IC卡发行量约为2.3亿张,其中电信占据了大部分市场份额。公用电话IC卡1.2亿多张,移动电话SIM卡超过4200万张,其它各类IC卡约6000万张。20XX年IC卡总出货量约3.8亿张,较上年增长26%;发行量约3.2亿张,较上年增长40%。从应用领域来看,公用电话IC卡发行超过1.7亿张,SIM卡发行5500万张,公交IC卡为320万张,社保领域发卡为1400万张,其它发卡为8000万张。尽管IC卡的发行量保持了较高的增长率,但市场销售额在IT市场中的比重还很小。据信息产业部计算机与微电子发展研究中心(简称CCID)统计,20XX年我国计算机市场销售额约2502亿元,而IC卡市场销售额不到21亿元。IC卡市场还构不成我国IT业的亮点,对IT市场的拉动作用并不明显。这一方面制约IT企业对IC卡技术的投入,另一方面,也预示着我国IC卡市场的巨大发展空间。随着政府管理和支持力度的加大、技术研发水平的提升,IC卡市场竞争格局将发生深刻的变化。由于高端芯片、核心模块、金融POS机、生产设备等被国外企业所掌握,造成国外品牌对一些细分市场的相对垄断。随着政府智能卡项目的启动,移动通信市场的逐步开放,国内企业技术实力和工艺流程的优化,使得国外品牌市场份额受到很大程度的限制,而国内品牌将会有快速的发展。一些从电信市场成长起来的国内IC卡企业,依托雄厚的资金和技术实力,将在身份证、金融、社保、交通等领域继续拓展业务,直接参与国际化竞争。20XX年乃至今后5年,是我国IC卡应用向纵深发展的时期。我国IC卡市场格局必将由无序走向有序,市场竞争必将由有限走向无限,IC卡市场将逐步走向成熟,进入微利时代。在这种形势下,单纯的发卡量和新产品的数量并不能衡量IC卡产业与市场的发展水平,市场发展的程度最终取决于IC卡的应用水平及其带来的社会效益。从可持续发展的角度讲,加强行业规范,推动IC卡企业由产品和技术型转向应用和服务型,将成为我国IC卡市场发展的重要趋势。1970年,法国人罗兰德莫瑞诺(Roland Moreno)第一次将可进行编程设置的IC(Integrated Circuit)芯片放于卡片中,使卡片具有更多的功能。当时,他对这项技术的描述是:镶嵌有可进行自我保护存储器的卡片。这样就诞生了世界上第一张IC卡。在此后的三十多年里,随着超大规模集成电路技术、计算机技术以及信息安全技术等的发展,IC卡种类更加丰富,技术也更趋成熟,已在国内外得到了广泛的应用。下面将从不同的角度对IC卡进行详细分类和简单分析。(二) IC卡的概念IC卡(Integrated Circuit Card,集成电路卡)在有些国家和地区也称智能卡(smart card)、智慧卡(intelligent card)、微电路卡(microcircuit card)或微芯片卡等。它是将一个微电子芯片嵌入符合ISO 7816标准的PVC(或ABS等)塑料基片中,封装成外形与磁卡类似的卡片形式,即制成一张IC卡。其极高的安全性现已越来越受到人们的普遍重视,已越来越多的领域取代磁卡及其它数据卡片,得到了越来越广泛的应用。IC卡作为一种新的高科技产品正在引起人们的广泛关注,其关键在于IC卡的应用,它标志着一种信息处理手段的问世。未来多功能的IC卡普及与应用将改变整个社会的生活方式,是人类全面迈向电子化时代的钥匙。从全球范围看,现在IC卡的应用范围已不再局限于早期的通信领域,而广泛地应用于金融财务、社会保险、交通旅游、医疗卫生、政府行政、商品零售、休闲娱乐、学校管理及其它领域。(三) IC卡的主要特点IC卡的主要特点可以概括为以下几类:高可靠性:防磁、防静电、防破坏性和耐用性强。高安全性:防伪性好,存储数据安全性高(可加密)。方便使用:应用设备及系统网络环境成本低,数据存储量大。多应用类型:品种型号齐全、技术规范成熟。(四) IC卡的分类社会发展到今天,IC卡的种类也有很多。在接触式IC卡领域中,该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写。国际标准ISO7816对此类卡的机械特性、电器特性等进行了严格的规定。这种类型的产品是通过直接电路接触方式来完成信息的读写,速度较慢,但安全保密性相对较好,多应用于金融、电话与保险业等场合。其大致又可分为以下几类:1根据IC卡镶嵌的芯片的不同划分(1)存储卡:卡内芯片为电可擦除可编程只读存储器EEPROM(Electrically Erasable Programmable Read-only Memory),以及地址译码电路和指令译码电路。为了能把它封装在0.76mm的塑料卡基中,特制成0.3mm的薄型结构。存储卡属于被动型卡,通常采用同步通信方式。它能提供数据存储功能,卡内含有电子可擦除只读存储器(E2ROM)及其控制电路,但无加密逻辑功能,缺乏安全保护,主要应用于对数据保密要求不高的领域。这种卡片存储方便、使用简单、价格便宜,在很多场合可以替代磁卡。但该类IC卡不具备保密功能,因而一般用于存放不需要保密的信息。例如医疗上用的急救卡、餐饮业用的客户菜单卡。常见的存储卡有ATMEL公司的AT24C16、AT24C64等。(2)逻辑加密卡:该类卡片除了具有存储卡的EEPROM外,还带有加密逻辑,每次读/写卡之前要先进行密码验证。如果连续几次密码验证错误,卡片将会自锁,成为死卡。从数据管理、密码校验和识别方面来说,逻辑加密卡也是一种被动型卡,采用同步方式进行通信。它由加密逻辑控制电路和(E2ROM)组成,具有数据存储功能和数据加密操作控制。此类卡仅是简单的密码认证,其中密码固定。在密码认证过程中,外界可以截取密码使系统破解。也有设计者将卡内所写数据自加密,以增加保密性,但皆有迹可寻。适用于需要保密,但保密要求不很高的场合。该类卡片存储量相对较小,价格相对便宜,适用于有一定保密要求的场合,如食堂就餐卡、电话卡、公共事业收费卡。常见的逻辑加密卡有SIEMENS公司的SLE4442、SLE4428,ATMEL公司的 AT88SC1608等。(3)CPU卡:也称智能卡,该类芯片内部包含微处理器单元(CPU)、存储单元(包括随机存储器RAM、程序存储器ROM(FLASH)、用户数据存储器 EEPROM)、和输入/输出接口单元。其中,RAM用于存放运算过程中的中间数据,ROM中固化有片内操作系统COS(Card Operating System),而EEPROM用于存放持卡人的个人信息以及发行单位的有关信息。不仅具有数据存储功能,同时具有命令处理和数据安全保护等功能。CPU管理信息的加/解密和传输,严格防范非法访问卡内信息,发现数次非法访问,将锁死相应的信息区(也可用高一级命令解锁)。其保密性极强,卡与设备间数据传输皆加密。每次卡认证皆生成临时密钥进行处理,即使外界截取大量数据也无法破解密码,可真正实现电子钱包使系统无需联网。CPU卡的容量有大有小,价格比逻辑加密卡要高。但CPU卡的良好的处理能力和上佳的保密性能,使其成为IC卡发展的主要方向。CPU卡适用于保密性要求特别高的场合,如金融卡、军事密令传递卡等。国际上比较着名的CPU卡提供商有Gemplus、 G&D、Schlumberger等。(4)超级智能卡:在CPU卡的基础上增加键盘,液晶显示器,电源,即成为一超级智能卡,该种卡不仅带有微处理器和存储器,而且还带液晶显示屏和微型键盘,有的卡上还具有指纹识别装置等。VISA国际信用卡组织试验的一种超级卡 即带有20个健,可显示16个字符,除有计时,计算机汇率换算功能外,还存储有个人信息、医疗、旅行用数据和电话号码等。2、根据IC卡与外界进行交换是的数据传输方式不同划分(1) 串行IC卡:IC卡与外界进行数据交换时,数据流按照串行方式输入输出,电极触点较少,一般为6个或者8个。由于串行IC卡接口简单、使用方便,目前使用量最大。国际标准ISO7816所定义的IC卡就是此种卡。(2) 并行IC卡:IC卡与外界进行数据交换时以并行方式进行,有较多的电极触点,一般在28到68之间。主要具有两方面的好处,一是数据交换速度提高,二是现有条件下存储容量可以显着增加。3、根据IC卡的应用领域不同划分(1)金融卡:也称为银行卡,又可以分为信用卡和现金卡两种。前者用于消费支付时,可按预先设定额度透支资金;后者可作为电子钱包或者电子存折,但不能透支。(2)非金融卡:也称为非银行卡,涉及范围十分广泛,实际包含金融卡之外的所有领域,诸如电信、旅游、教育和公交等等。(五) IC卡应用系统的基本组成与制造过程图示IC卡用卡装置(独立或联网)管理系统图1 系统结构图图2 IC卡制造过程二、 IC卡的安全问题(一) 概述IC卡的安全问题包含:密码安全,数据安全,数据完整性,处理过程安全。(二) 数据加密数据加密的目的在于防范IC卡的数据被非法改写或通信过程中数据被截获读取。这里所说的数据改写是指无密码保护或密码被破解后的数据改写。1.密码学简介密码学分为两个部分:加密学和解密学。在进行加密算法过程中常用的运算有替代(Substitution),置换(Transposition),异或(XOR)。明文:为加密的数据;加密:用一个密码算法结合密钥对明文进行处理的过程;密文:处理后得到的结果;密钥:如同以用于开锁的一把钥匙,密钥是一个数据按照密码算法对明文处理后得到密文,或对密文处理后得到明文;解密:将密文进行处理后得到明文的过程。2.DES算法数据加密的标准DES(Data Encryption Standard)算法是由IBM公司在70年代研究出的一种分组密码算法,是一个迭代分组密码。DES算法于1976年11月被美国政府采用,随后被美国国家标准局承认并作为标准的加密解密算法而大量采用。DES算法的入口参数有三个:Key:密钥,8字节(64bit);Data:待加密或待解密的数据,8字节(64bit);Mode:工作方式只有两种情况,加密或解密。图3 加密过程IP置换IP置换的具体做法是,将输入的第58位换到第一位,第50位换到第2位,依此类推,最后一位是原来的第七位。L0、R0则是IP置换后输出的两部分,L0是输出的左32位,R0是右32位。例如,设IP置换前的输入值为:bit 1bit2 bit3 bit64,经过IP置换后的输出为:L0=bit58bit50bit8;R0=bit57bit49bit7。图4 IP置换表IP-1置换IP-1置换正好是IP置换的逆运算。图5 IP-1置换表F函数F函数由四个处理过程组成:E扩展置换,异或运算,S代替,P置换图6 F函数的四个处理过程组成E扩展置换E扩展置换是将32bit的输入通过置换与扩展转化为48bit的输出图7 E扩展置换表S替代选择S替代选择过程是将48bit的数据输入,经过替代选择最终产生32bit的输出P置换P置换将8个S盒输出的共32bit的数据经过P置换,产生32bit的输出。图8 子密钥Ki-1生成DES算法的解密DES算法的解密过程基本相同,区别:(1)第一次迭代是用子密钥K16,第二次K15,最后一次用K1;(2)将IP转换与IP-1置换的使用位置互换。三重DES加密算法加密过程RSA算法1977年,Rivest、Sharmir和Adelman三人一起提出了第一个比较完善也是应用最广的公钥密码体制,以三人名字的字头命名,即RSA算法。3.RSA算法由于RSA加密算法是指数运算,因此密钥越大计算速度越慢。通常RSA算法比DES算法慢1000倍。(三) 数据安全问题及措施1.密码安全及存储数据安全同一系统中的每张IC卡的密码各不相同,一张IC卡对应一个密码。密码核对正确前,全部数据可读不可写。密码核对正确后可写入或修改数据,修改密码。错误计数器,初始值为3,密码核对出错1次,便减1,若计数器值为0,则卡自动锁死,数据只可读出,不可再进行更改也无法再进行密码核对;若不为零时,有一次密码核对正确,可恢复到初始值3。写保护区(前32个字节)的每一字节可单独进行写保护,进行写保护后,内容不可再更改(即固化数据)。存储数据的安全首先是靠密码,如果存在密码被攻破的可能,就需要考虑采用数据加密算法对存储数据加密。加密算法已经字上一节介绍,使用时应酌情选用,因为采用加密算法之后,将会导致系统处理时间的延长。2.数据的完整性影响数据的完整性因素包括:电源因素,电磁干扰因素,人为因素和数据校验。特别是作为电子货币的IC卡,其中记录了大量的重要信息,安全性是很重要的,因此IC卡应用系统开发过程中必须为IC卡系统提供合理有效的安全措施,以保证IC卡及其应用系统的数据安全。造成影响IC卡及应用系统安全的主要方式有:使用用户丢失或被窃的IC卡,冒充合法用户进入应用系统,获得非法利益;用伪造的或空白卡非法复制数据,进入应用系统;使用系统外的IC卡读写设备,对合法卡上的数据进行修改,改变操作级别等;在IC卡交易过程中,用正常卡完成身份认证后,中途变换IC卡,从而使卡上存储的数据与系统中不一致;在IC卡读写操作中,对接口设备与IC卡通信时所作交换的信息流进行截听,修改,甚至插入非法信息,以获取非法利益,或破坏系统。常用的安全技术有: 身份鉴别和IC卡合法性确认,报文鉴别技术,数据加密通讯技术等。这些技术采用可以保证IC卡的数据在存储和交易过程中的完整性,有效性和真实性,从而有效地防止对IC卡进行非法读写和修改。总体上,IC卡的安全包括物理安全和逻辑安全两方面:(1)物理安全。物理安全包括:IC卡本身的物理特性上的安全性,通常指对一定程度的应力、化学、电气、静电作用的防范能力;对外来的物理攻击的抵抗能力,要求IC卡应能防止复制、窜改、伪造或截听等。常采用的措施有:采用高技术和昂贵的制造工艺,使无法伪造;在制造和发行过程中,一切参数严格保密;制作时在存储器外面加若干保护层,防止分析其中内容,即很难破译;在卡内安装监控程序,以防止处理器或存储器数据总线和地址总线的截听。(2)逻辑安全。常用的逻辑安全措施有:存储器分区保护,一般将IC卡中存储器的数据分成3个基本区:公开区、工作区和保密区;用户鉴别,用户鉴别又叫个人身份鉴别,一般有验证用户个人识别PIN,生物鉴别,手写签名。下面简单介绍生物鉴别技术中的一种指纹识别技术:指纹识别技术是利用指纹唯一、不变、不可伪造、随身携带等的特点和IC卡作为个性化数据载体及大容量内存的优势,既实现了人物合一的真实身份认证,又满足了各种应用系统对数据载体卡片化、脱机化的需求,是用软硬结合方式确保信息安全可靠实用的途径。用IC卡保存指纹特征数据、使用人员信息、私钥等关键信息、通过指纹识别认证持卡人真实身份,解决网络信息安全瓶颈最有效的手段,是对信息安全(软件) 认证、密钥体系最有效的补充。根据需要将指纹信息储存在IC卡内,通过输入用户的活体指纹信息与卡内的指纹资料进行比对,实现用户真实身份的认证及IC卡的各种应用。亦可将指纹资料储存在计算机或网络系统内,通过输入用户的活体指纹信息与储存的指纹信息资料进行比对,实现用户真实身份的认证,具有很大的灵活性。指纹IC卡鉴别技术可广泛应用于网络通信、数据库管理、电子商务与电子支付中的权限设置、数据存取、密钥管理等。包括计算机系统、互联网、电子商务系统、政府、企业局域网系统中管理员的身份认证以及金融、保险、证券等行业重要系统及部门职员的授权管理,证券交易所、信用卡用户、保险受益人的身份认证以及安防业等应用。三、 硬件原理(一) 通信接口的选择(二) I2C总线1.I2C总线的特点I2C总线的特点是:接口线数少,支持多主控工作方式。I2C总线协议是Philips公司推出的总线协议,是多主机总线,提高2根线(SDA-aserial data line, SCL-a serial clock line)与连接到总线上的器件之间传送信息根据地址识别每个器件。例如:微控制器、LCD驱动器、存储器、键盘,连接的器件可以工作在发送和(或)接收状态。2.I2C总线的构成及信号类型I2C总线的构成:数据线SDA和时针线SCL。图9(1) 典型的I2C总线结构 图9(2) I2C总线的器件连接4I2C总线传送数据信号类型:开始信号,终止信号和应答信号。图10 I2C总线传输信号 图11 I2C总线上的数据位传送3.I2C总线的基本操作I2C总线上只具有sol(时钟)和sda(数据)2根信号线。如果是单纯的串行传输,一旦因为某种原因造成引脚的偏差,则可能会造成不能区分总线上传输的是数据还是地址信息的后果。解决上述问题的简单办法就是附加独立于总线的reset(复位)信号,由主机控制该信号。因为I2C至少利用2根线进行所有的操作,因此在数据传输时,通常当scl为低电平时,设置下一个数据;当sda变化后,sci为高电平,这可以解释为一连串操作的开始结束。(1)起始条件起始条件表示一系列操作的开始。图12表示起始条件以及随后数据传输的开始操作。在I2C总线的空闲状态下,sda及scl通过上拉电阻都为高电平。在这样的状态下,如果scl仍保持高电平,而sda变为低电平,则成为开始指令。图12 I2C总线起始条件由于该状态并不出现于地址及数据的发送与接收过程中,因此,即使在途中发生异常,只要检测出该状态,初始化内部的状态机,就可以使其恢复。(2)结束条件在一系列操作的最后是结束条件。结束条件如图13所示。当sol为高电平时,一旦sda由低电平变化为高电平,即成为结束条件,主机与器件之间的通信将停止,器件恢复为空闲状态。进行写操作时的结束状态是开始进行内部单元写操作的指示标志。图13 I2C总线结束条件结束前所传输的数据是acknoack的状态位,如果是ack,则该状态位为低电平。但如果发生某种错误时,则表示为noack的高电平。读操作时的最后字节是主机向器件返回noack信息,所以sda为高电平。这样就不能形成结束条件所需要的sda的上升沿,因此在结束之前需要加入哑元“0”数据位作为解决办法。在最终数据的ack noack之后,主机通过下述的流程,形成结束条件,如下所述:scl变为低电平;sda变为低电平;sol变为高电平(发送哑元数据);sda变为高电平(结束条件)。(3)数据传输数据传输的流程如图14所示。除去开始与结束条件,在传输包含地址指定等数据时,能够使sda发生变化的条件只能是在sol为低电平时。因此,总线操作以如下的步骤进行: scl变为低电平; 为sda设置数据(主机或者器件); scl变为高电平。进行数据读操作时,主机在sol恢复为高电平之前读取数据。图14 I2C总线的数据传输(三) 西门子 SLE4442逻辑加密卡为了保证IC卡数据的安全性,避免IC卡内的数据被非法修改,IC卡制造商在存储卡的基础上增加了逻辑加密的保护功能,用以某些访问的限制。例如本设计使用Siemens公司的SLE4442就有对数据修改的限制。1.SLE4442逻辑加密卡的主要特点SLE4442是Siemens公司制造的逻辑加密存储卡,总容量为256字节。密码校验通过之后,才可以对卡进行写操作;但读卡操作没有密码的限制。2.SLE4442逻辑加密卡的存储区安排图15 储存区分配3.SLE4442逻辑加密卡的操作时序 SLE4442共有4种操作时序,即复位与复位应答、命令模式、输出数据模式和处理数据模式。通信协议符合I2C总线。4.SLE4442逻辑加密卡的命令及相关函数 卡片存储区内的起始地址是0x20,出厂密码是FFFFFF,其相关函数如下: 写操作函数: swr_4442() (1) 读操作函数: srd_4442() (2) 测卡型函数: chk_4442() (3) 效验密码函数: csc_4442() (4) 读取密码函数: rsc_4442() (5) 更改密码函数: wsc_4442() (6) 读密码错误计数: rsct_4442() (7) 写保护位函数: pwr_4442() (8) 读保护位函数: prd_4442() (9) (四)IC卡座IC卡读/写器各部分结构与功能简单介绍如下:1IC卡卡座一般都使用IC卡座。按接触式卡座类型可分为摩擦式和下压式两大类。IC卡卡座是连接IC卡与读写器的。其功能包括对IC卡供电,提供读写信号和传送数据。要求提供方便的插拔方式和可靠的接触,并带有带电插拔,过流保护,插卡检测等能力。IC卡和插座的结构尺寸必须符合国际标准化组织(ISO)7816的标准。对触电数目、位置、信号名称和功能都有明确规定,以保证兼容性。其中:C1(VCC)为电源;C2(RST)复位信号;C3(CLK)时钟脉冲;C4(RFU)待用;C5(GND)接地端;C6(VPP)编程电压,用于对EEPROM编程;C7(I/O)数据输入输出端;C8(RFU)待用。有些系统中IC卡的C4和C8未用,可见卡上仅用六个触点,本设计SLE4442系列IC卡是西门子公司生产的加密存储IC芯片,256*8 bit EEPROM 字节直接寻址;低地址前32字节可进行写保护(固化)操作;其容量为256 byte,密码核对正确后可对卡进行读、写操作,3字节用户密码,密码错误计数3次;5V低压供电,最大供电电流20 mA;双向数据传送;支持IOS/IEC7816-3同步协议;写/擦次数100,000次;数据保存期10年。SLE4442系列IC卡的引出端符合ISO/IEC7816-3标准。C2、C6、C4、C8:NC,未接。把芯片封装在一个卡片上,将卡片插入IC卡读写器的卡座中,读写器就可以对它进行读写,实现加密、查询、存款、取款等功能。IC卡座有8个引脚,当SLE4442卡插入时,正好同这几个引脚相连。另外还有两个固定端,其中一个固定端同卡座上一个弹簧片相连,两个触点和簧片就相当于一个常闭开关。当卡未插入时,簧片闭合,P3.2脚保持低电平;当卡插入时,簧片被顶开,P3.2脚变为高电平。当单片机检测到P3.2脚变高,通过P1.3 使X76F100的RST引脚变高,使其复位。2.单片机和存储器读写器中配备单片机和ROM,RAM存储器,构成微机系统,单片机运行ROM中固化的软件,执行与IC卡和上位PC机的通信规程。控制对IC卡的读写,完成IC卡与主机间数据的格式转换。为减轻单片机负担,提高读写速度,常配置有硬件密文转换和单元。3.接口电路和外围设备通用读写器一般与PC机或网络联机工作,常用标准并行或串行口与上位机连接和通讯。常用的是带有25芯或者9芯插口的RS232-C型串行接口,可直接接到PC机的1或2上。此时,可利用主机的显示器作监视器,主机键盘作控制和输入,利用主机打印机输出。此时主机与读写器组成了IC卡应用与开发系统,操作与一般微机相仿,但用户界面将随所配软件而有很大不同。4.IC卡系统软件本设计的系统软件是通过C51编写的。四、 读写器的电原理图设计(一) IC卡读写器的电原理图图16 IC卡及读写器硬件原理图图16为IC卡及其读写器硬件电路图。其中读写器由单片机、键盘、显示、监控电路等部分组成。IC卡采用Siemens公司的SLE4442。单片机采用LG公司的GMS97C52。它有8K字节的ROM,256个字节的RAM以及32个I/O口,P1口与串行器件X25045和X76F100连接,P0、P2口用于键盘和显示,P3口中P3.2用于检测IC卡是否插入,其余7个口,可作其它功能扩充。1键盘电路为了方便,键盘接口电路用I/O口实现,它为44结构,16个键。其中数字键11个,功能键4个,回车键1个。数字键:0、1、2、3、4、5、6、7、8、9、(退格)。功能键:查询?、存储+、取款、改密码* 。查询?:用户通过读密码可以查询卡中所存的款额。存款+ :用户通过写密码可以将款存入卡中。取款:用户通过写密码可以从卡中取款。改密码*:分为修改读密码和写密码。为方便起见,令读密码和写密码一致,按此键将同时修改读密码和写密码。回车键:8位密码或存取款数输入完确认,以及新密码输入完确认。2.显示电路显示部份采用LED显示器,也用I/O口实现。用于显示系统状态、输入的密码或所要存取的款额以及出错信息等。 由于GMS97C52的驱动电流有限,在P0、P2口加反向器SN74F04,增加驱动能力。它的吸入电流为64mA,输出电流为15mA,可以保证位选所需的吸入电流。(二) 电路原理1. IC卡的上/下电的控制2. IC卡和CPU间串行信号的限流3. 串行通信接口的实现4. 工作状态的有效提示五、 系统软件设计(一) 软件结构设计及其分析(二) 软件系统分析(三) 系统软件的编写(四) 上位PC机通讯接口软件六、结论通过这次的, 我体会到应该掌握丰富的理论知识,理论知识是设计的前提。但同时又决不能局限于理论。在设计过程中,深深感受到自己在对一些器件的了解上,还存在很大差距,对他们的功能,参数都不是太熟悉。但是通过这次理论与实际的结合之后,认识比以前有不少提高。致 谢通过这次,我基本上掌握了IC卡读写控制设计的基本思路和实施步骤。在设计和写作的整个过程中,指导老师汪光宅教授和刘强老师在各方面都给予了全面的指导和帮助。在导师们孜孜不倦地教导下,我在中有了很大的提高,导师们精深渊博的知识、求实创新、勤奋严谨的治学风范、忘我的工作作风时刻熏陶着我;导师的因材施教、诲人不倦的授业精神给学生留下了深刻的印象,这将使我受益终身。在校期间,得到辅导老师的亲切关怀和无私的培养,使我在学习的过程学到了许多为人处事的道理。在此我向他们道声:您们辛苦了!感谢四川师范大学成都学院的老师们多年来在工作、学习上给予的热情关怀、指导与帮助。另外,互联网上一些朋友也给我完成设计提出了很多宝贵的意见和无私的帮助。这对于我以后的学习和工作都有很大的帮助,在此对他们表示由衷的感谢。特别感谢我的朋友和同学对我的默默奉献,在学习上的理解和大力支持!感谢父母及家人多年来的在生活和学习上的鼓励和支持!附 录附录一 SLE4442卡读写函数#include #include /#include #define CARD_INP3_2/插卡开关#define CARD_RST P1_3/C2 复位信号#define CARD_CLK P1_4/C3 时钟信号#define CARD_DATA P1_1/C7 数据#define RMM_M 0x30 /读主存命令字#define WMM_M 0x38 /写主存命令字#define VER_M 0x33 /校验密码#define RSM_M 0x31 /读密码存储区#define WSM_M 0x39 /写密码存储区#define RPM_M 0x34 /读保护存储区#define WPM_M 0x3c /写保护存储区void Delay5us(void) _nop_(); _nop_(); _nop_();void Delay10us(void) _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_();void WriteByte(unsigned char ch) unsigned char i; for(i = 8; i 0; i-) CARD_CLK = 0; CARD_DATA = (bit)(ch & 0x01); Delay5us(); CARD_CLK = 1; Delay10us(); ch = ch 1; /右移一位 void Startm(void) CARD_CLK = 0; CARD_DATA = 1; Delay5us(); CARD_CLK = 1; Delay5us(); CARD_DATA = 0; Delay5us();void Stopm(void) CARD_CLK = 0; CARD_DATA = 0; Delay5us(); CARD_CLK = 1; /CLK: H Delay5us(); CARD_DATA = 1; /IO : H Delay10us();void Sendm(unsigned char a,unsigned char b,unsigned char c) Startm();/开始发送命令 WriteByte(a); /a: 发命令字 WriteByte(b); /b: 发地址 WriteByte(c); /c: 发数据 Stopm();/结束发送命令unsigned char ReadByte(void) unsigned char i,ch; ch = 0; for (i = 8; i 0; i-) CARD_CLK = 0; ch = ch 1; /从低位读起 if(unsigned char)CARD_DATA) ch |= 0x80; Delay5us(); CARD_CLK = 1; Delay5us(); return ch;void ReadMode(unsigned char *pt,unsigned char count) CARD_CLK=0; Delay5us(); do *pt = ReadByte(); /读入一个字节 pt+; /指针加一 while(-count); /计数器减一,判断void BreakOperate(void) CARD_CLK = 0; CARD_RST = 0; CARD_DATA = 0; Delay5us(); CARD_RST = 1; CARD_DATA = 1; Delay5us(); CARD_RST = 0; Delay5us();void ReadMainMem(unsigned char addr,unsigned char *pt,unsigned char count) Sendm(RMM_M,addr,0xff); ReadMode(pt,count);/Delay5us(); BreakOperate();/IC_Read_LED = ON;void ResetCard(void) unsigned char temp; Delay5us(); CARD_RST = 0; CARD_CLK = 0; CARD_DATA = 1; Delay5us(); CARD_RST = 1; Delay5us(); CARD_CLK = 1; Delay10us(); Delay10us(); Delay10us(); Delay10us(); CARD_CLK = 0; Delay5us(); CARD_RST = 0; Delay10us(); temp = ReadByte(); temp = ReadByte(); temp = ReadByte(); temp = ReadByte(); CARD_CLK = 0; Delay5us(); CARD_DATA = 1; _nop_(); CARD_CLK = 0; Delay5us(); 附录二 IC卡芯片操作地址/*FileName:Main.c*/#include #include #define uchar unsigned char#define uint unsigned int/*定义全局变量*/查表0 1 2 3 4 5 6 7 8 9 E F P OFFuchar table14=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x71,0x73,0x00;uchar ICcode4; /定义IC卡复位时读出的4字节代码uchar ICcontent14; /定义IC卡有效信息uchar Money5; /定义IC卡内金额uchar EEEEE5=0x79,0x79,0x79,0x79;uchar FFFFF5=0x71,0x71,0x71,0x71;uchar IC_Flag; /定义IC卡上电标志uchar Num_Flag; /数标志uchar Add_Flag; /加标志uchar Sub_Flag; /减标志uchar Init_Flag; /初始化标志uchar Repair_Flag; /修卡标志uchar Enter_Flag; /确认标志uchar Point_Flag; /标志uchar Key_Flag; /按键标志/*IC卡引脚信号处理*/void Voice(uchar PD) /Voice=PD7if(PD=1) PORTD|=0x80;/Voice置1 else PORTD&=80; /Voice置0void RST(uchar PD) /RST=PD6if(PD=1) PORTD|=0x40;/RST置1 else PORTD&=0x40;/RST置0void CLK(uchar PD) /CLK=PD5if(PD=1) PORTD|=0x20;/CLK置1 else PORTD&=0x20;/CLK置0void IO(uchar PD) /IO=PD4if(PD=1) PORTD|=0x10;/IO置1 else PORTD&=0x10;/IO置0void SetIO(uchar i)/设置IO口属性if(i=1) DDRD=0xf0; /IO口输出:1111 0000 else DDRD=0xe0; /IO口输如:1110 0000 PORTD=0x00; /不带上拉电阻/*延时函数(Us数量级)*/单周期指令执行时间,执行时间1/8us*分频系数(取8分频则刚好1us);void DelayUs(uchar i)for(;i!=0;i-) NOP();/*延时函数(Ms数量级)*/void DelayMs(uint i)uchar j,k; for(;i!=0;i-) for(k=0;k4;k+) for(j=250;j!=0;j-) NOP(); /*接收数据*/uchar ReceiveData(void)uchar count; uchar value; uchar io_value; value=0; SetIO(0);/设置IO脚为输入; CLK(0); /IO=1; for(co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论