收藏 分享(赏)

基于单片机的IC卡预收费水表系统软件设计.doc

上传人:微传9988 文档编号:2491256 上传时间:2018-09-18 格式:DOC 页数:32 大小:470.50KB
下载 相关 举报
基于单片机的IC卡预收费水表系统软件设计.doc_第1页
第1页 / 共32页
基于单片机的IC卡预收费水表系统软件设计.doc_第2页
第2页 / 共32页
基于单片机的IC卡预收费水表系统软件设计.doc_第3页
第3页 / 共32页
基于单片机的IC卡预收费水表系统软件设计.doc_第4页
第4页 / 共32页
基于单片机的IC卡预收费水表系统软件设计.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

1、南 阳 理 工 学 院本科生毕业设计(论文)学院(系): 电子与电气工程系 专 业: 电子信息工程 学 生: 冯焕庆 指导教师: 牛 军 完成日期 2009 年 5 月南阳理工学院本科生毕业设计(论文)基于单片机的 IC 卡预收费水表系统软件设计Software Design of Pre-charges the Water Meter IC Card System Based On Sing-chip总 计:毕业设计(论文)26 页表 格:6 个插 图:11 幅基于单片机的 IC 卡预收费水表系统软件设计南 阳 理 工 学 院 本 科 毕 业 设 计(论文)基于单片机的 IC 卡预收费水表系

2、统软件设计Software Design of Pre-charges the Water Meter IC Card System Based On Sing-chip学 院(系): 电子与电气工程系 专 业: 电子信息工程 学 生 姓 名: 冯焕庆 学 号: 指 导 教 师(职称):牛 军 (副教授) 评 阅 教 师: 完 成 日 期: 南阳理工学院Nanyang Institute of Technology基于单片机的 IC 卡预收费水表系统软件设计I基于单片机的 IC 卡预收费水表系统软件设计电子信息工程 冯焕庆 摘 要 本设计主要学习研究基于单片机的IC卡预收费水表系统软件设计,其

3、主要功能是以AT89C51单片机为核心,完成整个水表信号的读、写处理,监控水表工作的功能。本文首先对IC卡的概念、历史以及在当今社会中的应用概况进行了介绍。然后对本设计的每个模块逐一进行了研究。其中着重研究了IC卡读写电路、液晶显示电路、通信接口电路以及记忆单元电路这几个模块,对Mifare非接触式 IC卡、卡片读写器H6152、液晶显示工作原理、串口通信基本原理以及I 2C总线器件的工作原理及功能进行了详细的说明。此外,本文还剖析了设计中不理想的局限部分以及阐述了IC卡在人们实际生活中运用的意义。关键词 单片机; IC 卡;水表;软件Software Design of Pre-charge

4、s the Water Meter IC Card System Based On Sing-chipElectronic Information Engineering FENG Huan-qingAbstract: In this paper, the main study based on single-chip pre-charges the water meter IC card system software design, its main function is based on AT89C51 single-chip microcomputer as the core, th

5、e signal meter to complete the reading, writing and processing, monitoring the work function of water meters. However, the first IC card in this article the concept of history and society in todays application are introduced.And then on the design of each module have been studied one by one. Which f

6、ocuses on the IC card read-write circuits, liquid crystal display circuit, communication interface circuitry and memory cell circuit of these modules, on the Mifare contactless IC card, the card reader H6152, working principle of liquid crystal display, the basic principles of serial communication I

7、2C-bus devices, as well as the working principle and function of detail.In addition, the article also analyzes the design is not ideal, as well as the limitations of some of the IC card in peoples use of real-life significance.Key words:Single-chip;IC card;Water meter ;Software目 录1 引言 11.1 课题背景 .11.

8、2 IC 卡的历史 11.3 国内外 IC 卡的应用概况 .21.4 硬件框图以及总体软件流程图 32 基于单片机 IC 读写软件设计 .42.1 非接触式 IC 卡 .42.2 卡片读写器 H6152.52.2.1 H6152 读写模块介绍 .52.2.2 H6152 内部寄存器 .52.2.3 H6152 通信协议与控制命令 .72.3 IC 卡读写电路程序流程图及部分程序 .103 液晶显示电路软件设计 .123.1 液晶显示工作原理 .123.2 液晶控制驱动器指令集 .123.3 程序流程图及部分程序 .134 通信接口电路软件设计 .154.1 串行通信基本原理 .154.2 接口

9、电平转换 .174.3 协议设计 .174.4 程序流程图及部分程序 .185 记忆单元电路软件设计 .195.1 I2C 总线基本概念 195.2 I2C 总线器件工作原理及时序 195.2.1 I2C 总线的时钟信号 195.2.2 I2C 总线的传输协议与数据传送 205.2.3 响应215.3 程序流程图及部分程序 .216 其余模块设计 .22结束语 .24参考文献 .25致谢 .26基于单片机的 IC 卡预收费水表系统软件设计11 引言1.1 课题背景IC卡,又称“集成电路卡” 、智能卡,英文名称“Integrated Circuit Card”或“Smart card”,是法国人

10、Roland morono 于1974 年发明的,将具有存储、加密及数据处理能力的集成电路芯片模块封装于和信用卡尺寸一样大小的塑料基中,便构成了IC卡。IC卡具有防磁、防静电、抗破坏性和耐用性强、防伪性好、存储数据安全性高(可加密) 、数据存储容量大、应用设备及系统网络环境成本低、品种型号齐全、技术规范成熟等特点。正是由于IC卡具备诸多无可比拟的优点,因此在金融、税务、公安、交通、邮电、通讯、服务、医疗、保险等各个领域都得到了广泛的重视和应用。它作为一种新的高科技产品正在引起人们的广泛关注,其关键在于卡的应用,它标志着又一种新的信息处理手段的问世。未来多功能的卡的普及与应用将改变整个社会的生活

11、方式,是人类全面迈向电子化时代的钥匙。在高科技产品日新月异且不断地伴随于人们生活要求的情况下,且在 IC 卡领域内又发展起了一项新技术非接触式 IC 卡,其在工作时将卡片靠近读写器表面即可完成卡中的数据的读写操作,它成功地将射频识别技术和 IC 卡技术结合起来,解决了无源和无接触这一难题。与接触式 IC 卡相比较,它具有可靠性高、操作方便快捷,安全防冲突、应用范围广、加密性能好等优点,因而它更受人们欢迎。1.2 IC 卡的历史IC卡是集成电路卡(Integrated Circuit Card )的英文简称,在有些国家也称之为智能卡等。将一个专用的集成电路芯片镶嵌于符合ISO7816标准的PVC

12、(或ABS)塑料基片中,封装成外形与磁卡类似的卡片形式,即制成一张IC卡。当然也可以封装成纽扣、钥匙、饰物等特殊形状。IC 卡的最初设想是由日本人提出来的。1969 年 12 月,日本的有村国孝提出一种制造安全可靠的信用卡方法,并于 1970 年获得专利,那时叫 ID 卡(Identification Card ) 。1970 年,法国人罗兰德莫瑞诺(Roland moreno )第一次将可进行编程设置的 IC(Integrated Circuit )芯片放于卡片中,使卡片具有更多的功能。当时,他对这项技术的描述是:镶嵌有可进行自我保护存储器的片。这样就诞生了世界上第一张 IC 卡。1974

13、年,法国的罗兰德莫瑞诺(Roland moreno )发明了带集成电路芯片的塑料卡片,并取得了专利权,这就是早期的 IC 卡。1976 年法国布尔公司研制出世界第一枚 IC 卡。1984 年,法国的 PTT(Posts, Telegraphs and Telephones)将 IC 卡用于电话卡,由于 IC 卡良好的安全性和可靠性,获得了意想不到的成功。随后,国际标准化组织(ISO,International Standardization Organization)与国际电工委员会(IEC,International Electrotechnical Commission)的联合技术委员会为

14、之制订了一系列的国际标准、规范,极大地推动了 IC 卡的研究和发展。 在此后的三十多年里,随着超大规模集成电路技术、计算机技术以及信息安全技术等的发展,IC 卡种类更加丰富,技术也更趋成熟,已在国内外得到了广泛的应用。下面将从不同的角度对 IC 卡进行详细分类和简单分析。1.3 国内外 IC 卡的应用概况美国是信用卡的发源地,磁卡应用在全世界占首位,从上世纪 60 年代起就开始发卡应用了。到了 1988 年,发卡量已经超过 10 亿张,人均约 5 张,消费金额达到 4695亿美元。1993 年仅美国两家最大的发卡公司 VISA 和 MASTER 的发行量即达到了 6.6 亿张,遍及全世界 20

15、0 多个国家和地区,消费额达到 8250 亿美元,电子收款机 ECR 的普及率约为 400500 台/万人。1987 年,美国的 ATM 机已达 3 台/万人。如今,美国已开始用 IC 卡取代磁卡,比较成功有应用有:校园 IC 卡、交通 IC 卡、军人身份证卡。IC卡诞生于法国,它是IC卡应用的先驱。据国际发明组织统计,1988年10月至1989年9月全世界IC卡硬件产业中,IC卡及读写器数量分别为4200万张和87700台,其中法国分别占98%和71%,处于世界领先地位。目前,法国IC卡不仅在数量上领先其它各国,而且其应用领域的多样化更为突出,如在金融、电信、医疗、保险、旅游、游戏和交通运输

16、等各个领域都有IC卡的广泛应用。在其他欧洲国家更是如此,IC卡均得到广泛的应用。IC卡的发展在我国的起步较晚,但在IC 卡行业里,我国是一个发展较快的国家之一。自1993年7月我国电子工业部协同银行、邮电及有关部委提出了命名为“金卡”的专项工程,总目标是:用10年左右的时间,在全国400个大中城市及部分经济发达县区推广使用卡基支付工具,在这些覆盖了3亿城市人口的地区,发卡总量要达到2亿张,年交易额达到1万亿元。整个“金卡”工程分为试点、推广和普及三个阶段。到2000年我国IC卡的出货量达到了2.3亿张,2001年为3.8亿张,2002年为4.13亿张,2003年为3.97亿张(由于SARS影响

17、导致电信和公交卡发行量减少) ,2004年达到了5.63亿张,2005年达到7.66亿张,预计到2008年将达到19亿张。可见,IC 卡在我国的快速发展,目前已经有10余个部门和行业推广应用了IC卡。在各方面的努力下,IC卡相关产品得到迅速发展,如自动柜员机ATM、销售点终端机POS;网络加密机和电子结算、转账、交换等大型应用软件系统等等。特别是国内在自主研究开发1C卡产品方面取得了长足进步。比如,我国已研制开发生产出IC卡操作系统、IC卡集成电路芯片生产设备,也完成了如模块生产、卡基与卡片制作、各类读写卡设备与机具的研发及产业化配套等,全面带动了我国电子信息产业的发展。基于单片机的 IC 卡

18、预收费水表系统软件设计31.4 硬件框图以及总体软件流程图图 1 预收费水表硬件组成框图如图 1 所示,该图是课题基于单片机的 IC 卡预收费水表系统硬件设计的硬件框图,用于辅助对整个预收费水表系统的软件设计以及程序编写。从图中可以看出,该水表是由 AT89C51 单片机、IC 卡读写电路、液晶显示电路、通信接口电路、记忆单元电路、脉冲提取电路、电磁阀控制电路以及安全保护电路组成。其中的 AT89C51 单片机是本课题的核心,完成整个水表信号的读、写处理。它能方便地读取 IC 卡的数据,并控制电磁阀和液晶显示器工作,同时还可以将水表的数据存入 EEROM 进行永久保存并可通过串口送到表外的数据

19、终端,大大提高了该水表的智能化的功能。根据以上硬件框图,设计出以下软件流程框图。如图 2 所示:图 2 软件总流程框图由以上软件总流程框图可以看出,IC 卡读写电路,液晶显示电路,记忆单元电路以及通信接口电路本课题的设计难点和重点,将在以下的章节中对其进行详细讲解。2 基于单片机 IC 读写软件设计在设计之前,首先需要掌握两种设备的工作原理和使用方法:一个设备是非接触式射频 IC 卡,另一个则是可片读写器。2.1 非接触式 IC 卡Mifare1 IC 智能(射频)卡的核心是 Philips 公司的 Mifare1 IC S50 微模块 (微晶片)。它确定了卡片的特性以及卡片读写器的诸多性能。

20、Mifare1 IC 智能(射频)卡采用先进的芯片制造工艺制作。内建有高速的 CMOS EEPROM,卡片上除了 IC 数字控制模块(微晶片)及一副高效率的射频天线外,无其他元件。卡片上无源,工作时的电源能量由卡片读写器天线发送无线电载波信号耦合到卡片上的天线而产生电能,一般可达 2V 以上,供卡片工作。工作频率 13.56MHz ,Mifare1 射频卡所具有的独特的 Mifare RF(射频)非接触式接口标准已被制定为国际标准:ISO/IEC 14443 TYPE A 标准。在信道保证和数据完整性方面, Mifare1 标准还提供了信道检测、存取数据冗余校验、三次传递认证以及防冲突机制等功

21、能,保证数据交换过程的安全。. Mifare1 射频 IC 卡核心是 EEPROM 存储模块。该模块主要用于数据的存储,所保存的数据在卡片掉电(卡片离开读卡器天线工作的有效范围)后继续保持存。该存储模块的容量为 1KB,分为 16 个扇区,每个扇区有 4 块,每个块包含 16 个字节全部空间共64 个块,其存储结构如表 1 所示表 1 Mifare1 射频 IC 卡存储结构表块中 16 字节 描述扇区块0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 153 密码 A 存取控制 密码 B 扇区尾2 数据 数据块1 数据 数据块150 数据 数据块3 密码 A 存取控制 密码

22、 B 扇区尾2 数据 数据块1 数据 数据块10 数据 数据块3 密码 A 存取控制 密码 B 扇区尾基于单片机的 IC 卡预收费水表系统软件设计52 数据 数据块1 数据 数据块00 出厂信息(序列号及厂商信息) 数据块扇区 0 的块 0 用于存储该 IC 卡的序列号(03 字节,第 4 字节为校验字节)和厂商信息(515 字节),这部分内容在 IC 卡出厂时就被固化好,因此这块是写保护的。每个扇区的 0、1、2 块用于保存数据,而块 3(扇尾区)用于对 该扇区的控制,又称作控制块。控制块的 16 个字节包括密码 A(05 字节)、存储控制字节(69 字节)和密码 B(1015 字节)。Mi

23、fare1 卡中每个扇区都是独立的,可以根据实际需要设置各自的密码 A、B 和存取控制字节,因此可以实现一卡多用。扇区中每个块(包括数据块和控制块)的存取条件是由密码和存取控制字节共同决定的。每个块在存取控制字节中都对应有 3 个存取控制位,它们的作用决定密码 A、B 对块的读写权限,即可以对块实行那些有效命令。所有 16扇区的 64 个块从扇区 0 的第 0 块到扇区 15 的第 3 块依次编号为 064。对 Mifare1 卡的操作命令共有 6 种,他们分别是:(1) 读(read):读一个块。(2) 写(write):写一个块。(3) 加值(increment):对块进行加值操作。(4)

24、 减值(decrement):对块进行减值操作。(5) 存储(restore):将块中的内容读入内部数据寄存器。(6) 传输(transfer):将内部数据寄存器中的内容写入块中。2.2 卡片读写器 H61522.2.1 H6152 读写模块介绍 Mifare1 射频 IC 卡的读写模块型号众多,我们选用德国 ACG 公司出品的 H612 读写模块,该模块操作简单方便,读写过程稳定有效,已经得到广泛的应用。ACG 公司的13.56MHz 读写模块采用 HX 20 针的双列直插的 OEM 通信模块,其体积小,可以方便地用于便携终端设备中。HX 的工作频率为 13.56MHz,外接天线后最大通信距

25、离为 90mm,对外通信接口为 TTL 电平的可编程串口,波特率可以根据需要在 960057600bps 之间。H6152 是采用 HX 为基础,集成了 PCB 板载天线电路和 RS-232/422 接口的集成读写模块。使读写器的有效范围达到 50mm。另外 H6152 还提供了 RS-232/422 接口与 TTL 接口的电平转换电路,将 HX 的 TTL 串口转换为通用的 RS-232/422 使 H6152 可以直接接入 RS-232/422 网络。H6152 是+5V 供电。2.2.2 H6152 内部寄存器H6152 内部的 EEPROM 可以分为两部分,32*6B 的密码存储器和

26、20B 的功能寄存器。密码寄存器可以由用户设置,作为访问 Mifare1 卡的快速密码访问区,可以保存密码 A和密码 B 类型的预设密码。功能寄存器用于设置通信波特率、通信类型等信息其地址分配和功能如表 2 所示:表 2 H6152 内部功能寄存器说明地址 功能 说明00H03H 32 位设备序列号 用于保存出厂时由厂商设定的惟一设备序列号04H 当前设备 ID 用于保存多机通信时当前设备的 ID 号05H 通信协议设定 用于设定 H6152 的通信协议和上电复位后的工作状态06H 波特率设定 用于设定 H6152 的通信速率07H0FH 保留 保留无法使用10H13H 用户数据 可以由用户设

27、定,用于保存用户信息(1) 04H (当前设备 ID)当 MCU 和多个读写模块组成多机串行总线网络时,该寄存器用于保存当前设备的 ID号,作为设备的地址。ID 的实际取值范围为 1254,因为 0 和 255 分别用于标识主控制设备和“getID”申请。默认情况下,该寄存器值为 01H,当 H6152 使用 ASCII 通信协议时,该字节无效。(2) 05H(协议配置寄存器):MSB LSB保留 保留 保留 Cont.mode Binary timeout Extend ID Binary AutostartCont.Mode 位用于“连续读”模式下工作范围内存在多张 Mifare1 卡时的

28、卡片识别控制。该位为 0 时, “连续读”模式仅用于天线有效范围内只有一张 Mifare1 卡的情况,当天线有效范围内出现多张卡时,读写模块会根据卡片的位置选择其中一张并返回其序列号;该位为 1 时, “连续读”模式在工作范围内出现多张 Mifare1 卡同样正常工作。该位默认值为 0。Binary timeout 位为 0 时,Binary(比特流)通信协议下不开启超时控制;为 1 时,开启超时控制。该位默认值为 0。Extend ID 位为 0 时,执行“c” “s” “ m”命令时,传送 Mifare1 卡序列号前不传送卡片类型字节(TAGID);为 1 时,传送 Mifare1 卡序列

29、号前先发送 1B 卡片类型。TAGID 的值可以为 01H、02H、03H 和 FFH,其中,FFH 表示未知卡片。该位默认值为0。Binary 位用于设定读写模块使用的通信协议类型。为 0 时,使用 ASCII 通信协议;为 1 时,使用 Binary 通信协议。该位默认值为 0。Autostart 位为 0 时,H6152 在上电复位后自动进入“连续读”模式(即读写模块反复与工作范围内的 Mifare1 卡进行通信,读取其序列号);为 1 时仅在读写模块接收到“c”命令时才进入“命令”模式。由于 Binary 通信协议下不支持“c”命令,因此基于单片机的 IC 卡预收费水表系统软件设计7如

30、果使用 Binary 协议进行通信,该位内容将被忽略。该位的默认值为 1。(3)06H(波特率选择)用于设定 H6152 的通信速率,其内容如下:MSB LSB保留 保留 保留 保留 保留 保留 BS1 BS006H 的低 2 位 BS1 和 BS0 用于设定 H6152 的通信速率,如表 3 所示:表 3 H6152 的通信速率设定BS1 BS0 通信速率(bps)0 0 96000 1 192001 0 384001 1 57600默认状态下,H6152 的串行格式为 8 位数据位、无校验、1 位停止位、通信速率9600bps。2.2.3 H6152 通信协议与控制命令默认状态下,单片机需

31、要使用“9600,n,8,1”方式与 H6152 进行串行通信。H6152 支持两种串行异步通信协议:ASCII 协议和 Binary(比特流)协议。ASCII 协议应用在 MCU 控制一个 H6152 的情况,Binary 协议用于多个 Mifare 读写模块与 MCU 组成的串行通信网络,在此我们只采用一个读写模块,采用简洁的 ASCII 协议。ASCII 通信 协议的帧结构如下:命令(12 字节) 数据(N 字节)一帧的内容实际上就是一个字符串,其中,命令部分通常为 12 个字节,根据命令的不同后面跟随的数据内容和长度也不相同,N 字节的数据部分需要将待传送的数据转化为十六进制后以 AS

32、CII 形式发送。H6152 提供了各项控制命令,下面介绍本课题所应用到的一些命令(只考虑 ASCII模式)。(1)Reset(系统软复位)发送部分:命令 数据“X” 无接收部分:回答 数据无 “ Mifare 0.14d”+该命令将使 H6152 软复位,返回值中的CR 、 LF分别指 ASCII 码中的回车符和换行符,其 ASCII 码值为 13H 和 10H。(2)Continuous Read(连续读)发送部分 :接收部分:回答 数据无射频卡类型(1 字节)(1) 0x01:Mifare Light Transponder()(2) 0x02:MifareStandardTanspon

33、der(3) 0x03:Mifare Pro Transponder(4) 0xFF:未知的 Transponder卡片序列号(4 字节)H6152 接收到该命令后,即进入“连续读”模式,此时读写模块会与其天线有效范围内的 Mifare1 卡反复通信,读取卡片的序列号。只有 H6152 的 05H 寄存器的 Extend ID 位为 1 时,才会在返回数据中增加一个字节的射频卡类型说明。(3)Select(选卡)发送部分 :接收部分:该命令选中一张卡片并返回其序列号,只有 H6152 的 05H 寄存器的 Extend ID 位为 1 时,才会在返回数据中增加一个字节的射频卡类型说明。该命令只

34、有在 H6152 天线有效范围内只有一张卡片时才有效。(4)Login(登录扇区) 发送部分: 命令 数据扇区号(1 字节),取值范围:000FH;密码类型(1 字节): AA:密码 A,且其值为 A0A1A2A3A4A5 FF:密码 A,且其值为 FFFFFFFFFFFF命令 数据“C” 无命令 数据“S” 无基于单片机的 IC 卡预收费水表系统软件设计9“1” BB:密码 B,且其值为 B0B1B2B4B5B6 102F:密码 A,且其值为 H6152 密码寄存器中 000F 中的内容 304F:密码 B,且其值为 H6152 密码寄存器中 001F 中的内容 :密码 A,且其值为 A0A

35、1A2A3A4A5密码值(6 字节),只有当密码类型为 AA、BB 时才可以加 6 位字节密码值接收部分:回答 数据“L”登录成功 无“N”无卡 无“F”密码错误 无“E”无效格式 无该命令用于登录卡片的某一扇区,以便对该扇区进一步操作。(5)Read(读操作)发送部分:命令 数据“r”读模块 块号(1 字节)“rv”以数值方式读数据块 块号(1 字节)“re”读 H6152 工作寄存器内容 块号(1 字节)接收部分:回答 数据无 读块,返回 16B 选定块内容;以数值方式读数据块,返回 4B数值块内容;读工作寄存器内容,返回 1B 寄存器内容“N”无卡 无“I”无数值块 无“F”读失败 无该

36、命令用于读取选定卡上的块或 H6152 工作寄存器中的内容。(6)Write(写操作)发送部分:命令 数值“w”写块 块号(1B),数据(16B)“wv”格式化指定数据块为数值块并写入初值 块号(1B),数值初值(4B)“we”写 H6152 工作寄存器内容 扇区号(1B),数据(1B)“wm”写 H6152 密码寄存器内容 块号(1B),数据(6B)接收部分:回答 数据无写块,返回 16B 写入内容;数值方式读数据块,返回 4B 写入内容;写工作寄存器,返回 1B 写入内容;写密码寄存器,返回 6B 写入内容“X”写入后无法读出 无“U”写入后读出错误 无“N”无卡 无“I”写数据块失败 无

37、“F”写失败 无该命令用于写选定卡上的块或 H6152 的内容寄存器。这里“wv”命令可以将选定块格式化为数值块,并写入初值,数值块可以用于保存 Mifare1 卡中的数值信息,可以直接对这样的数据块进行加值、减值等操作。(7)Multi Tag Selection(多卡选择)发送部分:接收部分:该命令用于从指定序列号中选中一张卡片。如果使用“CR ”,该命令返回所有读写模块有效范围内的卡片序列号,并用CR LF隔开。2.3 IC 卡读写电路程序流程图及部分程序单片机控制卡片读写器 H6152,对非接触式 IC 卡进行读写的程序流程图,如图 3所示:命令 数据“m” 序列号(4B)或回答 数据

38、无 射频卡类型(1B)卡片序列号(SN,4B)“N”无卡 无基于单片机的 IC 卡预收费水表系统软件设计11开始初始化H 6 1 5 2 复位卡片检测有卡 ?停止卡片检测选中卡片保存卡片序列号登录扇区读写卡下一扇区 ?重新选卡操作失败操作失败N ON OY e s操作失败图 3 非接触式 IC 卡读写程序流程图部分程序:/* 卡片检测函数,检测到有卡在读写器有效区域内返回 */void cardcheck()strcpy(hbuf,“c“);sendcmd(hbuf); / 发送命令“c“,命令进入“连续读”模式delay(10); / 延时10ms/* 一旦发现串口接收到数据就立即返回,表示

39、检测到读写器有效区域内有卡片 */RI = 0;while(!RI);delay(10); / 延时10ms,消抖RI = 0;while(!RI);/* 确认工作区内有卡片,返回 */3 液晶显示电路软件设计3.1 液晶显示工作原理就显示功能最完整的点阵图形液晶模块而言,液晶显示可分为线段的显示、字符的显示和汉字的显示;(1)线段的显示点阵图形液晶由 M 行*N 列个显示单元组成。假设液晶显示屏有 64 行,每行有 128 列,每 8 列对应 1 一个字节的 8 个位,即每行由 16 字节,共 16*8=128 个点组成,屏上 64*16 个显示单元和显示 RAM 区 1024 个字节相对应

40、,每一字节的内容和屏上相应位置的亮暗对应。这就是线段的显示,它也是液晶显示的基本原理。(2)字符的显示一个字符由 6*8 或 8*8 这样的点阵组成,要正确显示,必须要找到和屏上某几个位置对应的显示 RAM 区的 8 个字节,并且要使每个字节的不同的位为“1” ,其他的位为“0” ,为“1”的点亮,为“0”的点暗,通过明暗的变化显示某个字符。(3)汉字的显示汉字的显示一般采用图形方式。首先需要获得待显示的汉字的点阵码,每个汉字占 32B,分左右两半部分,各占 16B,左边为 1、3、5,.,右边为 2、4、6,根据在液晶上开始显示的行列号以及每行的列数可找出显示 RAM 所对应的地址,然后设立

41、光标,送上要显示的汉字的每一个字节,光标位置加 1,送第二字节,换行按列对齐,送第三字节,直到 32B 限时完成,这样就可以在液晶上得到一个完整的汉字。3.2 液晶控制驱动器指令集在与本课题配合应用的硬件系统中,所选用的液晶显示模块是内含KS0108/HD61202 控制器的图形液晶显示模块 GXM12864,它是一种采用低功耗 CMOS 技术实现的点阵图形 LCD 模块,有 8 位的微处理器接口,通过内部的 128*64 位映射DDRAM(Display Data RAM)实现 128 点*64 点大小的平板显示,可以满足一般的显示要求。要编写正确的液晶显示程序,必须掌握所用液晶模块的指令集

42、。本设计中用的是GXM12864,它所用的控制驱动器时 2 片 KS0108B 和 1 片 DS0107B,其中和单片机打交道的是 KS0108B。KS0108B 的指令集比较简单,共有 7 种指令。(1)显示开/关指令R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 0 1 1 1 1 1 0/1DB0=1 时,LCD 显示 RAM 中的内容;DB0=0 时,关闭显示。基于单片机的 IC 卡预收费水表系统软件设计13(2)显示其实行(ROW)设置命令R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 1 1 显示起始行

43、(063)该命令设置了对应液晶屏最上一行的显示 RAM 的行号,有规律地改变显示其实行,可以使 LCD 实现显示滚屏的效果。(3)页(PAGE)设置指令R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 1 0 1 1 1 页号(07)显示 RAM 共 64 行,分 8 页,每页 8 行。(4)列地址(Y Address)设置指令R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB00 0 0 1 显示列地址(063)设置了页地址和列地址,就唯一确定了显示 RAM 中的一个单元,这样 CPU 就可以用读、写指令读出该单元中的内容或向该单

44、元写进一个字节数据。(5)读状态指令R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB01 0 BUSY 0 ON/OFF RESET 0 0 0 0该指令用来查询液晶显示模块内部控制器的状态,各参量含义如下。BUSY:1内部在工作,0正常状态;ON/OFF:1显示关闭,0显示打开;RESET:1复位状态,0正常状态。在 BUSY 和 RESET 状态时,除读状态指令外,其他指令均不对液晶显示模块产生作用。在对液晶显示模块操作之前要查询 BUSY 状态,以确定是否可以对液晶显示模块进行操作。(6)写数据指令R/W D/I DB7 DB6 DB5 DB4 DB3 DB2

45、 DB1 DB00 1 写数据(7)读数据指令R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB01 1 读显示数据读写数据指令每执行一次读、写操作,列地址就自动增 1.必须注意的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。 3.3 程序流程图及部分程序单片机控制液晶显示器件 GXM12864,欲显示已用水量和剩余水量的程序流程图,如图 4 所示:开始对 G X M 1 2 8 6 4 初始化写入控制命令检查忙信号数据显示完 ?获得显示 A R M 地址和数据写地址和数据S T A 7 = 0 ?返回主程序N ON O图 4 液晶显

46、示流程图部分程序:/*下面是对液晶屏 gxm12864d 操作的函数, 128x64 点阵,汉字显示,CSA,CSB 用来进行左右显示区的选择。*/* 发命令 i 到主窗口*/void lcd_mwc(uchar i) CSA=1;CSB=0;RW=1;DI=0;do ACC=LCD; 基于单片机的 IC 卡预收费水表系统软件设计15while (busy_bit) ;/wait for lcd not busyRW=0;LCD=i;4 通信接口电路软件设计4.1 串行通信基本原理串行通信是指通信双方的信息(二进制编码)一位接一位传送的通信方式。与并行通信相比,这种通信方式虽然速度较慢,但传送

47、距离长,而且使用的数据较少(最简单的串行通信只需要两根信号线和地线即可) ,节约通信成本,因此常用于需要长距离通信而又对速度要求不高的场合。串行通信的通信方式共有单工、双工和全双工 3 种。如果在通信过程的任意时刻,信息只能由一方 A 传送到另一方 B,则称为单工。曾经风靡一时而现在淡出人们生活得寻呼机就是典型的单工通信设备。如果在通信过程的任意时刻,信息既可以由 A 传到B,又能又 B 传到 A,但由于两个通信方向使用同一条信道,因此,同一时间只能有一个方向上的传输存在,这种传输方式称为半双工。在该种方式下,收发方向主要是通过软件协议来控制的,接收和发送只能交替进。如果在任意时刻,线路上可以

48、存在 A到 B 和 B 到 A 的双向信号传输,此时两个方向的信号使用不同的信号,二者不会互相干扰,这种传输方式称为全双工。全双工使用了信道划分技术,通信的每一端都包含发送器和接收器,可以同时发送和接受数据。串行通信中,数据传输的方法有两种:一种的是异步通信,一种是同步通信。异步通信以帧的形式发送字符数据,每一帧信息由起始位、数据位、奇偶校验位和停止位构成。异步通信中,每传送一个字节就要使用起始位和停止位,因此传输速度有限,常用于低速场合。同步通信不同于异步通信,它使用数据块传送信息,而不是字节,因此省去了每个字节的起始位和停止位等数据,挺高了通信速率。同步通信在每个数据块的开始使用同步字符,使接收和发送同步。与异步通信相比,同步通信发送的数据量大、速度快,常用于传输速率要求较高的场合。由于本设计通信距离比较远,所以在这里选用 RS485 总线来实现单片机与水表之间的通信,将水表的数据读出,实现自动抄表功能。RS485 总线具有以下特点:(1)R S-485 的 电 气 特 性 : 逻 辑 “1”以 两 线 间 的 电压 差 为 +( 0.26) V 表 示 ; 逻 辑 “0”以 两 线 间 的 电 压 差 为 -(

展开阅读全文
相关资源
猜你喜欢
相关搜索

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

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报