收藏 分销(赏)

基于单片机的IC卡读写专业系统设计.doc

上传人:二*** 文档编号:4509995 上传时间:2024-09-26 格式:DOC 页数:49 大小:419.54KB 下载积分:5 金币
下载 相关 举报
基于单片机的IC卡读写专业系统设计.doc_第1页
第1页 / 共49页
本文档共49页,全文阅读请下载到手机保存,查看更方便
资源描述
学 号 11780215 天津城建大学 电子系统综合设计 设计说明书 IC卡读写系统设计 起止日期: 年 12 月 29 日 至 年 1 月 23 日 学生姓名 罗智健 班级 信科2班 成绩 指导老师(签字) 计算机和信息工程学院 1月 23 日 天津城建大学 课程设计任务书 — 年第 一 学期 计算机和信息工程 系 电子信息科学和技术 专业 信科2班 班级 课程设计名称: 电子系统综合设计 设计题目: IC卡读写系统设计 完成期限:自 年 12 月 29日至 年 1 月23日共 4 周 设计依据、要求及关键内容(可另加附页): 一、课程设计目标 在我们日常生活中,IC卡无处不在——智能门锁、考勤机、交通卡、银行卡……IC卡应用很广泛。经过对课程设计任务完成,使学生掌握IC卡读写工作原理,而且能够熟悉单片机开发步骤和基础编程方法,既巩固所学基础理论知识, 又为学生以后从事开发设计奠定基础。 二、课程设计内容及要求 选择适宜器件,了解元器件工作原理,进行IC卡读写系统设计,完成 1、单片机最小系统设计。 2、单片机和IC卡读写器接口电路设计。 3、编写IC卡读写控制程序,并有显示功效。 4、书写设计说明书。 三、参考资料: 1、 何立民. MCS-51单片机应用系统设计 . [M] 北京航天航空大学出版社 2、 张开如. 自动控制原理. [M]北京大学出版社. 3、 赵新民. 智能仪器设计基础 [M]哈尔滨工业大学出版社 指导老师(签字): 系 主 任(签字): 同意日期: 12月 18日 目录 第1章 绪论 1 1.1 IC卡发展和应用使用情况 1 1.2 IC卡应用技术 1 1.3 课题中IC卡设计目标 1 第2章 IC卡芯片介绍 3 2.1 SLE4442IC卡 3 2.1.1 芯片特点 3 2.1.2 芯片引脚配置 3 2.1.3 芯片功效 4 2.1.4 芯片传送协议 5 第3章 硬件电路设计 7 3.1 单片机系统电路 7 3.2 接触式IC卡接口电路 8 3.2 串行通信电路 11 3.3 键盘电路 11 3.4 显示电路 12 第4章 软件系统设计 14 4.1 主程序 14 4.2 键盘扫描子程序 15 4.3 显示子程序 17 总结 19 参考文件 20 总程序图 21 附录 22 第1章 绪论 本章介绍了IC卡发展历史和应用情况,说明了现代IC卡技术基础知识,最终分析了现在常见IC卡读写器终端,并提出了本课题中IC卡读写器设计目标。 1.1 IC卡发展和应用使用情况 卡片是作为个人身份识别手段而引进,而作为交易凭证卡片则早在19世纪80年代就萌芽于英国了,1950年,美国商人设计了第一张现代塑料信用卡,1951年美国富兰克林银行作为金融机构率先发行了信用卡,到60年代中期,大家在塑料金融交易卡后面贴上磁条,发展成为能够自动读取信息进行在线处理磁卡,磁卡因为结构简单,价格低廉,得到快速推广。 IC卡是多年从欧洲开始出现,IC卡含有突出3S特点,即Standard(国际标准化)、Smart(灵巧智能化)、和Security(安全性)。所以发展快速,在金融、通讯、交通等众多领域中以后居上,即使那些磁卡已经普及应用范围也将被取而代之。IC卡不仅改变了现有多个卡使用方法和功效作用,还不停开创出新应用领域。将IC卡和其它设备组成系统就能提供很丰富服务功效,把这些功效和生产或流通领域有机地结合起来,将出现令人意想不到奇迹,发明出巨大经济和社会效益。伴随信息技术发展,IC卡作为一个优异信息存放介质,它应用己经渗透到各国经济、社会生活、军事等各个方面,未来更有着宽广发展空间。 1.2 IC卡应用技术 IC卡比磁卡存放容量大,可靠性和安全性高,在应用上除了覆盖磁卡全部应用范围以外,还提供了很多磁卡所不含有应用特征。正是这些特征,使IC卡在脱机业务处理和联网数据一致性等方面表现出前所未有优势。IC 卡即使有很强功效,但仅当IC卡加入到应用系统中,组成发行商、应用系统和持卡人之间数据传输媒介时,才能有效地发挥其优势。一个好IC卡应用系统,应含有良好应用特征和性能价格比,还要有好安全特征。 1.3 课题中IC卡设计目标 读写器是IC卡应用系统终端设备,只有经过读写设备才能和IC卡建立联络,读写IC卡中数据;读写器通常还要求和信息网络中上位机进行通讯,把IC卡中数据融入到上层数据库。设计选择读写器是建立IC卡应用系统关键。 本文是就设计IC卡读写器展开,课题设计目标是一个通用接触式IC卡读写终端,要求读写器能够单独工作。 预期目标: l 实现用户信息存放 l 经过键盘显示电路实现人机交互 l 实现卡插入和退出识别 l 实现伪卡识别 第2章 IC卡芯片介绍 2.1 SLE4442IC卡 IC卡是集成电路卡(IntegratedC ircuit Card)简称,有些国家和地域称之为微芯片卡(Microchip card)或微电路卡(Microcircuit Card)。IC卡大小和磁卡相同,它把集成电路镶在塑料卡片上,芯片通常是不易挥发性存放器(ROM, EPROM. EPROM),保护逻辑电路,甚至于CPU。本节介绍IC卡部分基础知识,使读者对IC卡有一个大约了解。因为本设计所采取IC卡为接触型逻辑加密卡(SLE4442),所以本节内容关键介绍此卡。 SLE4442是由德国西门子企业设计逻辑加密存放卡。它含有2K位存放容量和完全独立可编程加密代码存放器。内部电压提升电路确保了芯片能够以单5V电压供电,较大存放器容量能够满足应用领域多种要求。是现在中国应用较多一个IC卡芯片。 2.1.1 芯片特点 l 面向字节寻址; l 采取多存放器结构:主存放器、保护型存放器、加密存放器; l 线连接协议,触点和串行接口满足ISO7816同时传送协议; l 芯片采取NMOS工艺技术,每字节擦除/写入编程时间为2.5ms; l 复位响应(ATR)符合ISO/IEC7816-3协议; l 存放器采取最少10 000次擦除/写入周期,数据保持时间最少为; l 额外特征:数据仅能在正确输入24位可编程安全码(安全存放器)以后才能改变。 2.1.2 芯片引脚配置 芯片引脚和国际标准兼容,下表3-1是引脚定义和功效说明: 表2-1 SLE4442引脚功效 引脚 卡触点 符号 功效 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种模式: l 复位和复位响应 l 命令模式 l 输出数据模式 l 处理模式 1)复位和复位响应: 复位响应是依据ISO 7816-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为系统总体框图。 51 单 片 机 IC卡芯片 串行通信电路 掉电检测 键盘 液晶显示 存放模块 图3-1 总体框图 IC卡接口设备种类很多,功效上因为不一样应用需要,差异也很大,但就其对卡 (以接触式卡为例)操作功效来说,全部应含有以下多个基础功效: l IC卡插入/退出识别和控制(接触式卡):IC卡进/出RF区识别和控制(非接触式卡)。 l 向IC卡提供其所需稳定电源和时钟信号。 l 实现和卡数据交换,并提供对应控制信号。 l 对于加密数据系统,应提供对应加密解密处理及密钥管理机制。 l 提供对应外部控制信息及其它设备信息交换。 很多读写设备除了对卡基础操作外,还设计了其它部分关键功效: l 必需控制界面和显示界面。 l 提供数据通讯接口和上位机进行数据通讯。 l 网络控制功效,实现远程适时控 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和全部LEDa,b,c,d,e,f,g,sp引线相连,P2口接LED控制端,单片机经过P3口控制各LED是否点亮。 (4)P0口设计为和IC卡卡座接口,AT89C51单片机经过IC卡座完成单片机和IC卡连接。 图3.1 AT89C51最小系统 3.2 接触式IC卡接口电路 IC卡接口电路是连接IC卡和读写设备通路,由它实现对IC卡供电,并满足不带电插拔要求。 IC卡接口设备中IC卡供电电路应是一个相对独立于其它回路,并提供完善过流保护方法稳压电路,这是因为IC卡接口设备是一个独立于IC卡设备,当有卡插入时,接口设备便开始向IC卡提供其所需电力。假如插入是一张电源和地击穿坏卡,或是一个金属片之类物质,就会造成供电回路短路现象,若IC卡接口设备中无过流保护回路,就会干扰整个设备正常工作。 为了提升IC卡操作可靠性,必需有上下电控制电路、卡插入检测电路、卡短路检测电路。下图4-2所表示是IC卡接口电路。 图3-2 IC卡接口电 R2、VD1、VT1组成卡上下电电路。当8051P1.6=0时,VT1导通,IC卡VCC得电;当8051P1.6=1时,VT1截止,IC卡VCC失电。假如插入是一张电源和地击穿坏卡,或是一个金属片之类物质,就会造成回路短路现象。IC卡VCC同时经VD2送至CPUP1.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: SETB IC_SW MOV C,IC_SW ;输出高电平至检测端 JNC RE_ DETECT ;无卡插入,等候 LCALL DELAY_5MS ;延时5ms MOV C,IC_SW JNC RE_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: ;上电控制 LCALL RE_DETECT ;识别是否有卡插入 CLR RST ;使RST=L CLR CLK ;使CLK二L LCALL DELAY_500us ;延迟0.5ms,使端口逻辑信号稳定 CLR POWER ;给卡供电 SETB D_OUT ;使I/O端口为高电平,准备接收数据 RET POWER_OFF: ;下电控制 CLR RST ;使RST=L CLR CLK ;使CLK=L CLR D_OUT ;使I/O=L LCALL DELAY_500us ;延时0.5ms,使端口逻辑信号稳定 SETB POWER ;给卡下电 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-4 8051和键盘接口电路 图中,P2.2为行线,接有上拉电阻 R=5V/1 mA=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< at8051.h> //头文件 #define uint unsigned int #define uchar unsigned char #define addrl 0x40 uint data consl; //全局变量定义 uchar data cons2[2]={0,0}; main ( ) { uchar data *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) 备用键。 此读写系统中,键盘采取编程扫描方法。所谓编程扫描就是CPU对键盘扫描采取程序控制方法,一旦进入键盘扫描状态则反复地扫描键盘,等候用户从键盘上输入命令或数据。而在实施键入命令或处理键入数据过程中,CPU不再响应键入要求,直到CPU返回重新扫描键盘为止。键盘扫描子程序步骤图图5-3所表示。图中可见,键盘扫描子程序要完成以下功效: 1) 判定键盘上有没有键按下。其方法为P2.3口连续16次全输出为“0”电平时,读P2.2口行线电平状态,若行电平全为“1”电平,则键盘无键按下,若不为“1”电平,则有键按下。 2) 取出键抖动及重键影响。在键盘电路中,按键按下闭合后,将产生一个一个负矩形脉冲。但因为在按动按键时总有部分抖动,所以在负脉冲开始和末尾部位总要出现部分毛齿波,毛齿波长短和开关机械特征相关,通常为5~10ms。除了抖动之外还有重键,即一个键按下后紧接着由按下另一键,或两个键同时按下。这些需要采取一定方法加以消除。本系统采取软件延时方法来处理。经过延时来等候信号稳定,在信号稳定后查询键码。其过程是在查询到有按键按下后延时一段时间,通常为10ms。再查询一次看是否有键按下。若这次查询不到,则说明前一次查询结果为干扰或抖动,若这次查询到有键按下,则说明信号已经稳定,然后判定闭合按键键码。当闭合按键地键码确定以后,再去查询按键是否释放,待按键释放后再进行处理,这么既可消除释放抖动干扰。对于重键则以后一次查询为最终结果。 3) 扫描键盘,得到按下键键值。方法是P2.3口连续16次输出“1”电平,然后输出一次“0”电平,同时进行计数为00H,若P2.2口仍为“1”电平,则继续连续输出“1”电平进行移位,并同时计数,直到P2.2口输入电平为“0”电平,表明此时键即为按下键,对应计数值即为键值,然后调用对应键处理子程序。键值和键号对应关系如表5-1所表示。 4) 表4-1 键值和键号对应表 键值 00H 01H 02H 03H 04H 05H 键号 0 1 2 3 4 5 键值 06H 07H 08H 09H 0AH 键号 6 7 8 9 . 键值 0BH 0CH 0DH 键号 修改/确定 账号显示 余额/总数 键值 0EH 0FH 10H 键号 开始/停止 备用 备用 开始 调用键盘程序 判定是否按键 数字 功效 返回 图4-2 键盘扫描步骤图 4.3 显示子程序 读卡器在运行过程中,对用户信息进行不停改变,并写入EEPROM中。当用户需要查询IC卡运行状态时,只需按动显示按钮,即可显示用户帐号信息、帐号余额、计数值等信息。步骤图图5-4所表示。 开始 LCD初始化 清屏 从缓冲区中显示用户信息 显示用户信息 返回 图4-3 显示子程序步骤图 总结 在了解研究8051单片机结构特点及其相关设计实例后,此次设计充足利用其相关功效,开发设计了IC卡读写器。另外,在软件设计过程中,关键程序代码使用C编写,大大加紧了开发进程和后期可维护性提升。设计关键完成了以下工作: 1.深入了解了8051单片机性能特点、开发工具和应用领域 2. 使用PROTEL软件绘制完成了系统完整电路图,实现了基于51单片机IC卡读写器设计。 3.以C语言为主,完成了对应软件设计,达成了预期效果。 4.最终完成了基于51单片机IC卡读写器设计:以51单片机为关键,结合AT24C02作为外部存放器,存放关键信息,液晶SMG12232B-2作为显示系统。实现了IC卡和单片机通信,有51单片机控制数据传输过程,实现读卡和写卡操作。 参考文件 [1]于宏军,赵东艳.智能卡技术全书.北京:电子工业出版社,1996 [2]王爱英.智能卡技术.北京:清华大学出版社, [3]彭为,黄科,雷道仲.单片机经典系统设计实例精讲. 北京:电子工业出版社,.5 [4]段丽斌.智能卡技术应用北京.电子工业出版社,1995 [5]陆永宁.IC卡应用系统.南京:东南大学出版社, [6]沈红卫.单片机应用系统设计实例和分析.北京:北京航空航天大学出版社,.1 [7]王卓人,邓晋钧,刘宗祥.IC卡技术和应用.北京:电子工业出版社,1999 [8]何立民.单片机高级教程.北京:北京航空航天大学出版社,.8 [9]李华.MCS-51系列单片机实用接口技术北京:北京航空航天大学出版社,1993.8 [10]吴金戌,沈庆阳,郭庭吉.8051单片机实践和应用.北京:清华大学出版社,.9 [11]李光飞,楼然苗,胡佳文,谢象佐.单片机课程设计实例指导. 北京:北京航空航天大学出版社, [11]姜志海,刘连鑫.单片微型计算机原理及应用.北京:机械工业出版社,.1 [12]张洪润,刘秀英,张亚凡.单片机应用设计200例. 北京:北京航空航天大学出版社.7 总程序图 附录 主程序: #include <reg52.h> #include "lcd.h" #include "keyboard.h" #include "SLE4442.H" #define uchar unsigned char #define uint unsigned int #define com_read 0x91 //读卡 #define com_add 0x92 //充值 #define com_dec 0x93 //扣钱 #define change_psw 0x95 //修改密码 #define change_id 0x96 //修改卡号 #define FLAG_RD_OK 0x97 //上传数据,表示读卡完成 #define FLAG_WR_OK 0x98 //上传数据,表示写卡完成 #define FLAG_RD_ER 0x99 //上传数据,表示读卡错误 #define FLAG_WR_ER 0xa0 //上传数据,表示写卡错误 #define FLAG_NO_MONEY 0xa1 //卡上金额不足 #define FLAG_FULL_MONEY 0xa2 //卡上金额过多 #define FLAG_PSW_ER 0xa3 //密码错误 #define FLAG_CARD_LOCK 0xa4 //卡已锁死 #define FLAG_CARD_ER 0xa5 //卡无效 #define addr_money 0x0f //金额 0f~10 #define addr_mon_h 0x0f //钱高位地址 #define addr_mon_l 0x10 uchar Card_num[]={"ID: "}; uchar Money_num[]={"MONEY: . "}; uchar money=0; uchar keynum=0xff; sbit IsCard=P3^2; sbit BEE =P3^4; sbit LED =P3^3; //延时10ms void delay() { unsigned char i,j,k; for(i=5;i>0;i--) for(j=4;j>0;j--) for(k=248;k>0;k--); } void delay_ms(unsigned int ms) { unsigned char i = 0;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服