《食堂磁卡售饭系统窗口机的设计.doc》由会员分享,可在线阅读,更多相关《食堂磁卡售饭系统窗口机的设计.doc(41页珍藏版)》请在三一办公上搜索。
1、食堂磁卡售饭系统窗口机的设计摘 要目前学校内学生的数量在不断的增加,原来的纸质的,人工的售饭管理已经显得很不方便,越来越多的学校采用了智能卡和网络技术构建学校的售饭管理系统,这也将成为一个发展趋势,会在越来越多的学校和其他单位内推广。本课题介绍了一种针对双频相位相干编码的食堂磁卡读写窗口机系统。此窗口机系统具有磁卡信息的读入及数据传送、财务管理、键盘输入与帐户余额显示等功能,包括窗口机的硬件和软件设计。硬件部分以ATMEL公司的AT89C51芯片为核心,采用日本OMRON公司生产的MCR译码器对磁卡进行译码,用RS485串行口通信与上位机进行数据传送,通过INTEL公司的8255通用可编程并行
2、接口芯片完成键盘输入与账户余额显示等功能控制。软件的设计包括主程序、磁卡信息读取、正反向划卡数据处理、卡码校对、8255键盘输入处理及显示功能控制等程序设计方案及主要程序介绍。该系统具有功能齐全,设计简单,可靠性强,成本低廉等特点,适用于具有相对固定就餐人员的中、大型食堂,也适用于超市等。关键词:磁卡 ;MCR译码 ;串行通信 ;键盘与显示The Design of the Window-Machine for the Magcard Meal-Selling System in a Dining RoomAbstractWith the number of student increases
3、 greatly, and the management of students information is so complex that could not be conveniently managed in the original papery,. Therefore, more and more colleges build campus dining room management system, using contactless Magcard and network technology. As a developing trend, this technique wil
4、l be extended widely in school and other organization. It introduces one kind of reading-writing window machine system to the magcard encoded by double frequency phase coherent code. This window machine system has functions of magcard information reading-in, data transferring, financial management,
5、keyboard entry, display of account function and so on, including window machine hardware and software design. The hardware part takes ATMEL companys AT89C51 chip as a core, uses the MCR decoder produced by Japanese OMRON Corporation to decode magcard, carries on the data transfer with position-on ma
6、chine by the RS485 serial communication, completes the controlling function of display of keyboard entry and account with INTEL Corporations 8255 general programmable parallel interface chip. The software design includes the main procedure, magcard information reading-in, card data processing pro an
7、d con, the card code coordinated programming, 8255 keyboards entry dealing and display function controlling. This system has the character of fine and reliable functions, simple design and inexpensive cost. Its practical in the large-scale or mid-scale canteens that have relatively stable eaters, al
8、so practical in supermarket and so on.Key words:Magcard ; MCR decode ; Serial Communication ; Keyboard and display目 录1 绪 论11.1 磁卡的发展与磁卡的应用状况11.2 窗口机21.3 AT89C51单片机芯片的优点32 设计方案介绍42.1 窗口机的功能介绍42.2 系统总体结构与框图简介53 磁卡编码与译码63.1 磁卡63.2 编码方式63.3 译码方式74 窗口机的硬件设计94.1 硬件电路图设计94.2 硬件器件的选择104.2.1 AT89C51 芯片的选择104
9、.2.2 8255 芯片的选择114.2.3 74LS42 二-十进制译码器芯片的选择115 窗口机的软件设计135.1 磁卡数据信息录入与处理135.1.1 主程序框图介绍135.1.2 磁卡数据读取程序设计框图145.1.3 正、反向划卡程序设计框图155.1.4 卡码信息校验程序设计框图185.1.5 左移一位程序框图195.2 键盘输入信息处理与显示205.2.1 键盘按键的输入特点205.2.2 键盘去抖动205.2.3 键盘扫描功能215.2.4 显示功能设计245.2.5 延迟265.2.6 设计中的数据储区的分配265.2.7 按键功能介绍275.2.8 按键处理程序设计思想及
10、程序介绍275.2.9 数字键处理程序28结 论29致 谢30参考文献31附录 磁卡信息录入及数据处理等程序介绍331 绪 论随着二十一世纪的到来,我们的社会已经进入了一个信息化的时代,其中经济信息化的建设是一个重要的方面。随着相关政策的出台和实施 标志着我国的信息化建设正走向一个新的高度。如“三金工程”中的“金卡工程”是直接面向广大群众的、与亿万人民的生活息息相关的经济信息化工程,它将直接影响和改变人们的传统观念和消费习惯,促进市场繁荣,极大地方便人们的生活和消费,可以预言,未来将是“一卡在手,走遍神州”的社会。1.1 卡的发展与磁卡的应用状况随着社会的进步和现代化程度的不断提高,人类所拥有
11、的信息种类和数量都在成倍增加,在这样的社会里,我们每天都要处理许多与个人有关的信息,如购物、打电话、到银行存款取款等,需要携带许多种票证、现金、单据,给我们带来了很多不便和不安全感。于是,人们寻求一种具有支付、查询、密码查验等多种功能及安全可靠的“卡”作为电子货币在无纸的、信息化的、商业行为的电子数据交流过程中,实现纸基货币(包括金属基硬币或代用品)的全部功能,完成一次消费或商品交易。随着科学技术的不断进步,“卡”的类型及相关的设备也在不断地发展、变化、更新,应用范围也随之更加广泛。从用途来看,粗略地可将卡分为金融卡和非金融卡两类。从信息的载体来看,主要有光电(检测)卡、磁卡、IC卡(智能卡)
12、、激光卡等1。但是目前世界上用量最大的卡就是磁卡。磁卡是一种简单的传递信息的介质和工具,相对于打孔卡和条码卡来说,它具有数据保密性比它们要强,可改写性好,不那么容易伪造,可随时存取信息,简单方便,成本不高,易于被用户接受等优点,所以应用范围极广。然而磁卡系统的磁头易脏污,磁卡上的磁粉易脱落,而接触式53卡也存在类似问题,其卡座容易损坏、脏污,卡片的触点由于裸露在外,在食堂等使用环境较恶劣的情况之下,很容易造成接触不良。因此,这些系统都给日常使用也带来了一定的不便。但是磁卡的使用毕竟有很长的历史了,它的发展也得到了很多世界知名公司,特别是各国政府部门几十年的鼎立支持,使得磁卡的应用非常普及,遍布
13、国民生活的方方面面。据资料报道,美国平均每个(成年)人拥有的各类磁卡多达4 张,新加坡也有类似的普及率。在美国等一些发达国家,由于磁卡广泛应用于银行、证券等系统,磁卡的应用系统非常完善,如果将已有的这些磁卡应用系统,包括Visa 卡MasterCard 卡应用系统在内,全部换成正在日益成熟的智能卡系统,那么每年的投入至少上千亿美元,并且将严重影响国民的生活使用习惯以及应用系统的正常运转等。这也是智能卡系统在美国的发展远比欧洲国家要慢的原因所在。在未来很长的一段时间内特别是像美国这样一个银行磁卡应用系统高度发达的国家,银行磁卡应用系统将同智能卡应用系统以互补方式共同存在。智能卡的总体安全保密性比
14、磁卡的确要好,但是非常完善的磁卡应用系统(例如银行系统)弥补了磁卡本身在其安全保密特性上所存在的不足,因此对使用者来说并不会明显体会两种卡的安全特性有差异及影响使用。1.2 窗口机在磁卡的应用系统中,磁卡并不能单独使用。它一定要和相应的磁卡读写机相配合才能使用。磁卡读写机是磁卡与应用系统间的桥梁,在ISO国际标准中称之为接口设备,其种类繁多,因所处的环境各异,性能特点也区别甚大,但仅对卡的操作而言,均具备如下功能: (1) 卡插入/退出的识别与控制; (2) 通过触点或射频方式向接触式、非接触式卡提供稳定的电源和时钟; (3) 实现与卡的数据交换,并提供相应的控制信号; (4) 为加密数据系统
15、提供相应的加解密处理及密钥管理机制; (5) 提供相应的外部控制信息,与PC机等设备进行信息的交换。读写器的外围接口对象通常是LED或LCD显示屏和简易键盘,以及与PC通讯多取RS232或RS485串行通讯标准。RS232方式的通讯速率可设为1200波特率的1,2,4,8倍可调,其最大通讯距离15米;RS485方式的最大通讯距离1200米,采用差分输入/输出,允许多个驱动/接收器共用同一传输线的多点应用,适宜总线结构网络。读写器分为专用读写器和通用读写器。专用读写器是专门为某种用途设计、不具备再开发功能的专用独立装置。它本身已具备某种完整的固定用途,如磁卡门锁、磁卡电话、磁卡公共汽车收费机、I
16、C卡出租汽车计价器等,其使用方式和功能在出厂前已有厂家设置,用户仅可根据具体使用情况做小范围的设定。通用读写器多数以从设备形式与PC机后端装置构成系统,其本身并不限于某一固定用途,功能主要针对IC卡的读写操作,并具备与后端通讯的丰富灵活的硬/软件接口。可借助于PC进行二次开发,而且通常可支持多种类型卡,为专用读写器所不及。通用读写器有联机和脱机两种类型。联机又可分为内置和外置,脱机型读写器包括台式(挂式)和手持式两种。本设计即为专门的读写器。本设计就是专门针对食堂售饭收费的磁卡读写机,称为食堂磁卡收费系统窗口机。窗口机是食堂售饭系统中售饭人员和用户打交道的前台设备。窗口机的设计不仅要求其实用方
17、便,更重要的是要保证其稳定、安全和可靠。1.3 AT89C51单片机芯片的优点本设计的窗口机用Atmel公司的AT89C51单片机芯片为硬件核心,采用日本OMRON公司生产的MCR译码器对磁卡进行译码,用RS485串行口通信与上位机进行数据传送,通过INTEL公司的8255通用可编程并行I/O接口芯片完成键盘输入查询与账户余额显示等功能控制,采用软件进行编程控制数据读取与处理控制。单片机自问世以来,人们对它不断改进,应用在现代化社会对每个方面。它集成度高,体积小,价格低廉,开发较为容易,可根据需要制成各种智能控制器以代替人工操作,实现自动化。到今天为止,单片机已有很多型号,按数据线来分有4位、
18、8位、16位、32位。从目前各种单片机在市场上的占有率来说,4位机已经明显的逐渐减少,其他3种机的占有率分别为40%、20%、32%,从而可以看出8位机仍是市场主流产品。随着经济发展的突飞猛进、科技创新的日新月异,磁卡也必将为其它更优越的卡(如已经出现的射频卡)或者其它介质甚至无卡时代所代替,而单片机的发展前景也更是难以预料。然而今天仍然将它的设计说明给大家,作为当前的应用,也希望为以后的发展起到一定抛砖引玉的作用。 2 设计方案介绍2.1 窗口机的功能介绍窗口机是人机对话的窗口,最主要的是具备安全、快捷的收费功能。窗口机的主要功能可以概括为以下几条:(1)磁卡信息录入。磁条上的有效数据由40
19、个带奇偶校验位的BCD码构成,代表每位就餐者的资金账户编号。当有磁卡插入时,窗口机能够将磁条上的编码信息快速译码后读取存储,并验证此卡是否为有效卡。(2)认为有效数据符合事先制定的标准后,认为此卡有效,并将卡码通过串行口传送给上位机,然后,由上位机查出该就餐者的资金账户余额,再通过串行口传递给窗口机,通过LED显示给就餐者。(3)将账户余额显示给就餐者,这里根据实际需要也为了数码显示方便而将账户余额限定为0999.99元。 (4)能够同时处理正向划卡的情况也可以处理反向划卡的情况。(5)通过键盘输入就餐者欲消费金额,并通过数码管显示出来,当输入有误时,按下清除按键,CPU执行清除功能,LED显
20、示也进行清除。同样,这里的欲消费金额也按实际需要设定为0999.99元。 (6)当就餐金额将超出账户余额时,窗口机发出警报进行超支个报警,当按下熄灭警报按键时,警报停止报警。 (7)按下结账按键后,窗口机又将新的资金余额返回给上位机数据库保存起来。(8)为方便食堂的财务管理工作,窗口机在工作的同时将收入总额进行自动顺序累加,并且能够用按键进行清除重新累加。2.2 系统总体结构与框图简介此窗口机系统以ATMEL公司的AT89C51芯片为核心,外接MCR译码器进行磁卡信息录入与检验,并且外接8255通用可编程并行接口芯片完成键盘输入与账户余额显示等功能控制。其中8255 的PA口、PB口设为输出端
21、,PA口送段码给数码管,PB 口用低四位经译码后送入数码管位码使数码管依次循环点亮,PC 接键盘,进行消费信息录入。另外需要说明的是,串行口通讯在本设计中不作为重点介绍,但是,在总框图中我们也将其表示出来了。并且,这里的数码管分成上下两排,每排5个,分别显示账户余额和键盘输入,而这里的键盘为44阵列式键盘。系统的总体框图如下。图2.1 系统的总体框图3 磁卡编码与译码3.1 磁卡 要对磁卡数据进行读取,必须对磁卡特点及信息存储有所了解。磁卡是一种磁记录介质卡片,一种简单的传递信息的介质和工具,相对于打孔卡和条码卡来说,它具有数据保密性比它们要强,可改写性好,不那么容易伪造,可随时存取信息,简单
22、方便,成本不高,易于被用户接受等优点,所以应用范围极广泛。它由高强度、耐高温的塑料或纸质涂覆塑料制成,能防潮、耐磨且有一定的柔韧性,携带方便、使用较为稳定可靠。磁卡卡体多为塑料薄片,磁介质的涂敷则有条形和涂布型两种。磁条型磁卡在卡片上方约有12mm。宽的磁条可记录数据,通常是用热压法把磁条贴在卡片的基板上,外面再涂上一层塑料保护膜,标准尺寸长宽厚:85.1053.970.7mm 。有的还在磁卡正面印有凸起的字形或图案,或者是激光图案。如特殊的图形标记,插卡方向、持卡人的照片等等。反面则有磁层或磁条,具有 2-3个磁道以记录有关信息数据。磁条是一层薄薄的由排列定向的铁性氧化粒子组成的材料(也称之
23、为颜料)。用树脂粘合剂严密地粘合在一起,并粘合在诸如纸或塑料这样的非磁基片媒介上。 磁条从本质意义上讲和计算机用的磁带或磁盘是一样的,它可以用来记载字母、字符及数字信息。通过粘合或热合与塑料或纸牢固地整合在一起形成磁卡。磁条中所包含的信息一般比长条码大。目前,国际标准化组织(ISO)已为磁卡制定了标准,按此标准磁卡的磁条上有三个信息磁道,磁道1可存39个字符,磁道2可存40个字符,磁道3为107个字符。1, 2磁道用来存储各种不同用途卡的公用信息,如个人识别码等,它们是只读的。磁道3供银行用,可由读写卡的设备读写,或修改其内容。本设计的磁卡选用磁道2,即存储40个字符,为用餐者的账户编码及奇偶
24、校验位等。3.2 编码方式本设计磁卡上所载信息的编码采用双频相干相位方式(符合ISO7810ISO7819标准),即在半个基准时钟周期内变化一次的信号代表“1”,无变化的信号代表数码“0”,代表“0”的信号高电平和低电平交替变化,如图所示,这种编码也称F2F编码。图中的“基准”代表未调制前载波的波形,“信号”代表调制后信息波形,下面的二进制数字代表实际编码。图3.1 F2F编码波形图本设计的磁卡上有40个有效数字,每个有效字符有五位数码构成,D0D3为该字符的BCD码,D4为奇偶校验位(本设计中采用奇校验)磁条上的信息按75BPI密度标准录制,对于85cm卡来说,除了40个有效字符外,其余的开
25、头和结尾部分都用引导位“0”来填充。有效数字字符数据串结构为:起始字符,数据1,数据2,数据37,结束字符,校验字符。该数据串以串行方式录制在磁条上,为了能够可靠地译码,起始字符设为0BH,结束字符为1FH,校验字符则由前39个字符相异或后加上奇偶校验位构成,用以实现数据块校验的功能。要值得注意的是,磁卡上的40个字符在实际录制的时候,每个字符都是按从低位到高位的顺序依次将5个数码录入的。如数字9,二进制码为1001,加上校验位1,实际字符为10011,而在往磁卡上录制的时候录入的为11001,这就需要在译码时注意将其还原回来。3.3 译码方式常见的软件译码方式,通过软件编程来测量磁卡输出的信
26、号脉冲宽度。此编程法译码程序量大,占用大量的CPU资源,信号输出通道的硬件也比较繁琐,实用表明此法的误码率也较高。故本设计不采用此法,而是采用由日本OMRON公司生产的3S4YR-HNR4型硬件译码器,简称MCR。该MCR的误码率小于1/1000,并且还具有体积小、使用方便、耗电量低等特点,适合于75BPI和210BPI两种标准磁卡的F2F编码的磁卡译码。如下表3.1列出了MCR引脚及功能。当录有F2F编码的磁卡在磁头上滑动时,译码后的数据以串行方式依次出现在MCR的脚上,并且当端处于下降沿时,的有效状态已经出现,故可用引脚的下降沿做中断申请。CPU一旦响应中断,立即对端状态进行读取。由于信号
27、为负逻辑,当有效状态时,低电平为“1”高电平为“0”。应注意的是,从下降沿开始,的有效状态持续时间约为 80us 。 因此,必须在80us的时间内将的状态读走,否则会出现数据丢失现象。表 3.1 MCR 译码器管脚及部分功能引脚符号MCR 译码器管脚及部分功能3译码器数据脉冲输出端。负逻辑4使读信号脉冲输出端。低电平时,引脚数据有效5磁卡运动状态输出端。当录有数据的磁卡在磁头上滑动时,=0;当停止滑动或滑动结束时,=16CSV节流控制端。置1时,MCR 正常工作,置0时,MCR等待7SW175BPI,210BPI 磁卡选择开关。置右端时,210BPI方式译码;置左端时75BPI 译码8Vcc电
28、源,+5V9GND地4 窗口机的硬件设计4.1 硬件电路图设计图4.1 总体电路图在设计中主要以ATMEL公司的AT89C51单片机芯片为核心芯片,外接用日本OMRON公司生产的MCR译码器对磁卡进行译码,用RS485串行口通信与上位机进行数据传送,通过INTEL公司的8255通用可编程并行接口芯片完成键盘输入与账户余额显示等功能控制。AT89C51芯片P1.2接MCR的即译码输出端,将译码器译码读入;P1.3端接译码器的端,来判断划卡是否结束;P3.2端即中断0接译码器的作为中断输入;P1.4,TXD,RXD端接75176芯片与上位机进行串行口通信;P1.5端接驱动后经过警报接电源完成超支报
29、警。AT89C51与8255的接法为:P2.7作片选,地址线经过74LS373后,将低两位送入8255的A1A0端,这样,8255 的命令字为PA口:7FFCH,PB口:7FFDH,PC口:7FFEH,控制口:7FFFH 。8255的PA口设为输出端,经7407驱动后将显示段码送入数码管,PB口低四位接二-十译码器将位码经驱动送入数码管,PC口接键盘,低四位设为输入接阵列键盘的行线扫描按键,高四位设为输出,送高电平接键盘的列线用来扫描按键。数码管共有十个,前五位显示账户余额,后四位显示键盘输入金额。数码管的第3个和第8个小数点如图连接为常亮。键盘为44阵列式键盘,共有16个按键,其中有10个数
30、值键,6个功能键,完成键盘控制。4.2 硬件器件的选择4.2.1 AT89C51 芯片的选择单片机发展到今天,已经有许多型号,其中INTEL公司的MCS-51系列的三个基本产品为8051(8031)、8751、89C51。它们的指令和引脚完全兼容,核心为8位的CPU,但内部结构有所不同。8031无内部程序存储器。8051含有8031和一个4K字节的内部程序存储器。并且8051是掩膜型单片机,不超过4K字节的ROM是厂家制作芯片时为用户烧制的,用户不能更改,所以8051在国内很少见。与8051功能相同的是8751,但是它的4K程序存储器采用了EEPROM,用户可以经过紫外线擦除其中的程序,反复修
31、改,但是8751比较贵,甚至比8031外加一片4K的EPROM还贵,而且经常擦写EEPROM也容易损坏,8751的EEPROM一旦损坏,整个片子就废了。以MCS-51为基础人们根据不同的需要,又开发了各种型号的单片机。最先出现的就是低功耗、高性能的89C51。AT89C系列和51系列完全兼容,但是内含4K字节的快擦写可编程/擦除只读存储器,可以电擦写1000次以上。AT89C系列单片机也便宜,使用也方便,是真正意义上的单片机。它的时钟频率高达20MHZ,芯片上的EEPROM允许在线(+5V)电擦除、电写入,此外还支持软件选择的两种掉电工作方式,非常适用于电池供电的场合。有兼于此本设计选择AT8
32、9C51为窗口机的核心芯片2。4.2.2 8255 芯片的选择INTEL 公司的8279通用可编程键盘/显示接口芯片完成键盘输入显示是非常方便的,但是同时也将带来相应的开销。而且在按键数目较少时用扫描键盘可减少硬件电路开销,只是需要CPU通过软件对键盘进行查询判断而已。因此在本设计中,我们用在8255A基础上改进的8255 通用并行接口芯片完成键盘与显示功能。8255是Intel公司生产的一种通用可编程并行I/O接口芯片,价格低廉,使用灵活方便,可以直接与Intel系列的芯片连接使用。用地址锁存器将地址信号传送给8255,利用A1,A0来选择不同的接口来实现接口的扩展,我们可以将P0的8个口扩
33、展3个并行端口,即24个口。分别为PA口、PB口和PC口,其中PC口又分为高4位口和低4位口两部分。它们都可以通过软件编程来设置各I/O口的工作方式。有兼于此,本设计选择8255芯片完成键盘的输入与显示控制功能3。4.2.3 74LS42 二-十进制译码器芯片的选择 表4.1 74LS42 二-十进制译码器逻辑功能序号输 入输 出A3A2A1A0Y0Y1Y2Y3Y4Y5Y6Y7Y8Y90000001111111111000110111111112001011011111113001111101111114010011110111115010111111011116011011111101117
34、01111111111011810001111111101910011111111110伪码10101111111111101111111111111100111111111111011111111111111011111111111111111111111174LS42 二-十进制译码器逻辑功能是将输入的BCD码译成10个低电平信号输出。74LS42 二-十译码器的逻辑真值如表4.1所示。其中,序号9以后的代码为伪码,输出为全高电平4。在本设计中,由于用到了10个数码管,在显示时需要将10个数码管循环依次点亮,所以选择本芯片接8255 的PB口的低四位,这样只用将PB口设为输出方式,将PB口
35、的高四位忽略,低四位输出在09之间变化即可。5 窗口机的软件设计窗口机的软件设计是食堂售饭系统窗口机设计的关键。窗口机的软件设计除了要考虑实现上述的所有功能以外,更重要的是要保证其稳定性和可靠性,尤其是对通信过程中出现的各种情况和问题采取何种软件措施加以处理显得最为关键。本设计中窗口机的软件包括磁卡数据信息录入与处理、键盘输入信息处理与显示两大部分。5.1 磁卡数据信息录入与处理磁卡数据处理程序由主程序、译码器MCR输出信息读取程序、正向划卡、反向划卡数据处理程序、左移动一位、右移动一位以及卡码校验程序等几部分组成。5.1.1 主程序框图介绍 图 5.1 主程序框图这里所指的主程序是磁卡信息录
36、入及数据处理,仅限于键盘输入前,包括磁卡信息译码读取到卡码校验完毕的全过程。当有磁卡划卡时,MCR 译码器的端为低电平,CPU工作在中断0方式下,此时将20H6AH单元清零,并将译码数据存储在50H6AH中,而后将有效数据取出判别是否符合原先规定的标准,因为划卡可能有正向和反向两种,所以当正向校验为错时需要再看反向是否为有效,发现卡码为有效时返回向上位机通信取账户余额,进行售饭。5.1.2 磁卡数据读取程序设计框图 图5.2 磁卡数据读取程序设计框图5.1.3 正、反向划卡程序设计框图考虑到实际应用中可能有正、反两种划卡情况,本设计使用了两种划卡程序。 图 5. 3 正向划卡程序框图图 5.4
37、 反向划卡程序框图正向划卡数据处理程序是从50H开始,将每个单元的内容从低位到高位进行判断,当发现第一个“1”时,即认为有效数字字符串开始,以每五位为一个字符,将后面的数码依次右移到21H48H中去。当此程序处理完后,进行卡码校验,校验正确则认为本卡有效,返回,向上位机发出申请将账户金额取出。如果卡码校验不正确,则调用反向划卡处理程序。程序框图如图5.3所示。执行正向划卡数据处理程序后,有效数字存储在21H48H单元中,只是需要注意的是,每个单元中的五位有效数字都是存储在单元的高五位,在校验前需要先将其都右移三位。反向划卡数据处理程序是从6AH开始,将每个单元的内容从高位到低位进行判断,当发现
38、第一个“1”时,即认为有效数字字符串开始,以每五位为一个字符,将后面的数码依次右移到21H48H中去。程序框图如图5.4所示。同样在执行反向划卡数据处理程序后,有效数字存储在21H48单元中,只是需要注意的是,每个单元中的五位有效数字都是存储在单元的高五位,在校验前需要先将其都右移三位。5.1.4 卡码信息校验程序设计框图图 5.5 卡码信息校验程序设计框图卡码校验程序用来验证21H48H中的内容是否为有效卡码。根据事先规定的卡码标准,若21H48H中的内容符合下面规定中的任何一条,则认为本次划卡无效:(1)21H的内容不为0BH; (2)47H的内容不为1FH; (3)21H48H中的内容有
39、一个具有偶数个“1”;(4)22H46H中的内容低四位大于9;(5)21H47H中的数据相异或后不等于48H中的块校验值。 在这里省略了将单元移位的部分,只将此部分作为另一个较小的子程序在主程序中写出。5.1.5 左移一位程序框图正向划卡和反向划卡都用到了移动一位子程序,正向划卡时右移,反向划卡时左移动都是用累加器A 的进位作寄存将编码移动完毕。因为右移一位与左动一位用了相似的原理,因此在这里只将左移一位程序框图表出,而将两种移动的程序在附录里介绍。图 5.6 左移一位程序框图5.2 键盘输入信息处理与显示5.2.1 键盘按键的输入特点键盘在本系统中是一个关键的部分,是应用系统中最常用的输入设
40、备。键盘的功能是,通过操作人员按键,将按键开关信息转换成系统可以接受的二进制编码信息,然后,将信息输入给计算机。对按键编程,必须了解按键的输入特点。按键所用开关通常为机械性开关,利用了机械触点的闭合和断开来描述不同的工作状态。由于机械触点的弹性作用,一个按键开关在闭合的时候不会马上稳定地接通,断开时也不会一下子断开。因此在闭合和断开的瞬间均伴随有一串的抖动,如图所示。抖动的时间长短由按键的机械特性决定,一般为5ms10ms。按键的稳定闭合长短是由操作人员的按键动作来决定的,一般为几百毫秒到几秒的时间。图 5.7 按键抖动信号波形按键的闭和与否,反映在电压上就是呈现出高电平或者低电平。如果高电平
41、表示断开,那么低电平则表示闭合,所以通过电平的高低状态的检测,便可以确定按键的按下与否。键盘的抖动会引起一次按键被误读多次,为了确保CPU对一次按键的动作只确认一次按键,则必须消除抖动的影响。在对按键的抖动有了初步了解后就比较容易掌握和消除按键的抖动。5.2.2 键盘去抖动关于按键的抖动处理方法有两种:有硬件方法和软件方法。硬件方法:在按键较少时,通常可用硬件电路进行消除抖动,常用的双稳态消抖电路原理如图,图中用两个与非门构成一个RS触发器。当按键未按下时,输出为1,当按键按下时,输出为0。双稳态触发器一旦翻转时,触点抖动的浮空对它不会有任何影响。即此时,即使按键因弹性抖动发生了瞬时的不闭合(
42、抖动跳开b),只要按键不返回原始状态a,双稳态电路的状态不改变,输出保持为0,不会产生抖动的波形,克服了按键触点机械抖动所致的检测误判。也就是说,即使b点的电压波形是抖动的,经过双稳态的输出波形仍是正规的矩形波,这一点很容易通过RS触发器的工作原理得到验证。由于本设计中的按键较多,故不采用硬件消除去抖动,而只将双稳态电路消除按键抖动的原理在这里给以简单的介绍5。图 5.8 双稳态电路软件消除抖动:当键盘数目较多时,硬件消除抖动将带来硬件电路的大幅度增加,因此,常采用软件延时的方法进行消除抖动,以节省硬件电路的开销。在第一次检测到有按键按下时,执行一次10ms的延迟子程序,在确认该键是否仍保持闭
43、合状态,若是,则认为真正有键按下,从而消除了抖动。同样,在必要时,还要对键的释放过程进行消除抖动的处理。本设计用软件消除抖动,即发现有按键按下时,调一个10ms的延迟子程序,然后在判断是否依然有按键按下,如果是则进行键盘扫描判断是哪个键按下了。5.2.3 键盘扫描功能8255与8279芯片的不同之处在于,8255需要进行键盘去抖动、扫描判断键值等。本设计中的键盘为44的阵列式键盘,按键的4个行线和4个列线分别接8255的Pc口的低四位和高四位,其中,PC口的低4位进行扫描输入。如图所示,键盘接8255的PC口,低四位接行线,做输入端,高四位接列线。行线上都接有电阻,电阻上加5V电源,当没有按键
44、按下时,行和列断开,行线都为高电平,当有键按下时,行线与列线被短路,如果列线为低电平,那么行线的电平就由列线决定,这样,将8255的PC口高四位设为输出,低四位设为输入的话,只要让高四位全为低电平,那么当有按键按下时,行线有低电平出现,使得经过与门的INT1端为低而产生中断,延迟几毫秒后仍然有按键按下时就开始扫描。图5.9 阵列式键盘图扫描时,先让PC口的高四位为1110,即设第一列为低,当这列有按键时,会在有按键的行线上出现低电平,可将20H,R0中都先存为0,当第一列有按键时,判是哪一行有按键,是第一行时,将20H和R0相加就是键号,否则将R0加1,再判第二行,有则将20H和R0相加则为键
45、值,无则再将R0加1再判第三行第四行,处理同上。当第一列没有按键时就不用一行一行判断了,只用将R0加4再判下一列。因为每行的键值相差1,而每列的键值相差4,所以判断下行时只用将R0加1,而判断下一列时就要将R0加4。当找到键值时,还要等按键释放才将按键进行存储,这就能保证不出现按一下出现多个数的情况。这样处理完后键值存储在20H单元里,再进行键值处理程序处理键值即可。16个键值分为10个数值键和6个功能键,分别对应图示中的1、2、3、4、5、6、7、8、9、A、B、C、D、E、F 。功能键分别对应表5.1所示:表5.1 功能键介绍A 键B键C键D 键E 键F 键小数点清除结账显示窗口机的日总销售金额熄灭报警器的报警清除窗口机的日销售总额键值扫描程序框图如图5.10所示。图 5.10 按键扫描程序框图 扫描程序在附录里给出,由于主要功能已经在前面介绍,程序中不在多加文字说明。执行完本程序后按键键值存储在20H 中。调用按键处理程序即可。 5.2.4 显示功能设计按照总电路图中所示电路,8255端口地址为:PA口:7FFCH,即