1、沈阳航空航天大学课 程 设 计 报 告课程设计名称:微机系统综合课程设计课程设计题目:模拟银行卡存取操作院(系):计算机学院专 业:计算机科学与技术班 级:7401103学 号:200704011069姓 名:桂 明指导教师:毛艳娥完成日期:2010年7月16日沈阳航空航天大学课程设计报告-I-目 录第 1 章 总体设计方案 .11.1 设计需求 .11.2 设计原理 .11.2.1 提出方案 .11.2.2 方案论证 .21.3 设计环境 .3第 2 章 详细设计方案 .42.1 硬件设计 .42.2 软件设计 .42.2.1 饮料装配线主程序 .52.2.2 软件延时程序 .62.2.3
2、满瓶数量改变程序 .72.2.3 空瓶数量改变程序 .72.2.4 装配过程显示程序 .8第 3 章 结果测试及分析 .93.1 结果测试 .93.2 结果分析 .10参考文献 .11附 录(程序清单) .12沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-1-第 1 章 总体设计方案1.1 设计需求设计一个银行卡存取操作。具体内容如下:1. 银行卡卡号为 8 位,设置取款密码(6 位) ,当输入的代码同设置的相应卡号的密码相同时,给出正确状态,否则给出报警信号,重新输入密码;2. 选择查询操作可以查询余额,数码管上显示现有金额;选择存、取操作时(初始状态显示当余额) ,输入要存或取的
3、金额,操作结束,显示操作后现有的金额;3. 限制每次取款的上限和每天总共可取得金额,若违规则给出相应的提示。1.2 设计原理应用可编程键盘/显示接口芯片 8279 与可编程并行接口芯片 8255A。通过使用 8279,在数码管上显示预设置的容量,在键盘上输入要求的饮料瓶数量,当点击完后,程序开始运行。1L 的和 500ml 的容量瓶可以输入不同的装瓶数量。在装瓶的过程中,数码管显示位开始从 1 加到 8,同步进行的是通过使用 8255A 的 8个发光二极管依次变亮,当装满后,发光二极管全亮,数码管右侧的圆点变亮,相应调用延时程序。容量分别为 1L 和 500ml 的饮料瓶顺序进行装瓶,首先进行
4、是 1L 的,全部装完后,在从键盘上输入 500ml 的装瓶数量,最后显示的是空瓶和满瓶的数量。再将数码管及发光二极管初始化,循环进行装配工作,最终达到工作需求。1.2.1 提出方案可编程键盘/显示接口芯片 8279 控制数码管的亮灭,数码管的低四位用于表示容量为 1L 的装配过程,低四位中的最高位数码管代表容量,标示为 1;第二位代表容量 1L 的空瓶数量,初始化标示为 5 瓶;第三位代表满瓶的数量,初始化沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-2-为 0 瓶,需要操作者在键盘上输入要求输入的装瓶数量,此时还没开始进行装配。最低位代表的是每一瓶饮料的装瓶过程,首先初始化为灭,
5、当开始装配时,数码管从 1 开始依次变化到 8。通过使用可编程并行接口芯片 8255A 的 PC 口输出,接到发光二极管上。在每次变化的过程中,都需要发光二极管依次置亮。当装满一瓶时,进行提示装满,效果是发光二极管都置亮,数码管演示装瓶过程位的右侧圆点亮,证明装满一瓶;在装完一瓶后,要将发光二极管都置灭,同时数码管装瓶过程位右侧的圆点置灭,这是为下一瓶饮料的装配做准备。每次装完一瓶,满瓶数量要进行加 1 操作,空瓶数量要减 1 操作,同时检查是否装完,没装完则继续进行装配过程,装完则停止。1.2.2 方案论证程序并结合芯片进行论证。程序开始部分,首先是对芯片的初始化,输入命令控制字。简单介绍可
6、编程键盘/显示接口芯片 8279;8279 是可编程键盘/显示接口芯片。它的功能主要包括键盘输入和显示控制。它的功能主要包括键盘输入和显示控制部分,其中键盘部分提供扫描功能。显示部分则是提供扫描方式的显示接口,可与八段数码管连接构成。初始化代码:其中 Z8279 是控制端口MOV DX,Z8279MOV AL,00 ;左边输入,八位显示外部译码八位显示OUT DX,ALMOV AL,38H ;扫描频率OUT DX,AL这里简单介绍可编程并行接口芯片 8255A: 8255A 是可编程并行输入输出接口芯片,具有三个 8 位并行端口,用于输出给定信号。初始化命令字:MOV DX,Z8255MOV
7、AL,80HOUT DX,AL ;初始化 8255其中 Z8255 是控制端口,80H 是命令字,PA、PB、PC 口都是输出,这里沈阳航空航天大学课程设计报告 第 1 章 总体设计方案-3-我们只用 PC 口作为输出,连接 8 个发光二极管。然后调用数码管的子程序 BEGIN_,初始化容量为 1L 的空瓶数量为 5 瓶,满瓶数量为 0 瓶(需要键盘动态输入) ,容量标示为 1L。初始化容量为 500ml 的空瓶数量为 5 瓶,满瓶数量为 0 瓶(需要键盘动态输入) ,容量标示为 500ml。用寄存器 AH 来存储当前的满瓶数量,寄存器 CX 来存储当前的空瓶数量。在装配过程中,装配显示位数码
8、管从 1 变化到 8,相应的发光二极管从第一个依次单独亮到第 8 个,但装满一瓶后,发光二极管全亮,数码管装配位右侧的圆点置亮,证明已经装完一瓶。此时改变空瓶和满瓶的数量,满瓶数量加 1,调用 ADD_子程序;空瓶数量减 1,调用 DEC_子程序。判断装配是否完成,如果没有完成,则继续装配,否则装配结束。在数码管和发光二极管显示时,都需要调用延时子程序 DELAY。经过认真仔细论证,证明所提出的方案切实可行。1.3 设计环境硬件环境:AEDK 实验箱软件环境:LCT88EA 应用软件、Win2000、PC 机沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-4-第 2 章 详细设计方案2
9、.1 硬件设计本设计中用到的硬件有 AEDK 实验箱, 8279 芯片、8255A 芯片、小键盘、8 个八段数码管和 8 个发光二极管。8279 芯片的片选 CS79 连至译码处 210-217H。8279 芯片的控制端口接到译码处 212H 处,数据端口接到译码处 210H。8255A 芯片的片选 CS55 连至译码处 200-207H,控制端口接到译码处203H,因为这里没有用到 PA 口和 PB 口,所以不需要连接。 8255A 的 PC 口接到译码处 202H,用于连接发光二极管。如图 2.1 所示。图 2.1 模拟饮料装配线连线图2.2 软件设计首先对芯片进行初始化,对 8279 和
10、 8255A 的命令字和端口译码处进行初始化。然后将 8279 的 FIFO 寄存器置零,判断是否按键,此时键入的是满瓶的数量,沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-5-则程序开始运行。2.2.1 饮料装配线主程序主程序首先对 8279 和 8255A 进行初始化。调用数码管初始化子程序BEGIN_,置空 FIFO 寄存器。循环检测键盘是否有键入,空则等待,表示装配工作未启动。键入容量为 1L 的装瓶数量,工作开始。开始装瓶,调用装配过程子程序 LED8255,装满一瓶后,满瓶位加 1,调用子程序 ADD_,空瓶位减 1,调用子程序 DEC_,然后判断装配工作是否结束,没有则
11、继续装配,否则工作结束。在装配过程中,数码管和发光二极管要相应的变亮,此时要调用延时子程序 DELAY,使能更好演示装瓶过程。当 1L 的装完后,在键入容量为 500ml 的装瓶数量,同上述效果运行程序。饮料装配线主程序如图 2.2:。图 2.2 饮料装配线主程序流程图沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-6-2.2.2 软件延时程序用寄存器 CX 来存储用来循环的值(十六进制)0FFFFH,因为在此之前,在寄存器 CX 中已经送入了用来存储当前饮料瓶的空瓶数量,所以需要对此加以存储保护,即将寄存器 CX 压入栈中。执行 DEC CX 语句,然后判断 CX 是否为 0,如果不
12、为 0,则继续减,直到为 0。因为在运行的过程中发现延时的时间比较短,不方便检查,达不到好的效果,所以在执行上述的语句后,接着执行几条 NOP 空指令语句,起到了延时的作用。完成延时以后,要把栈中存储的当前空瓶数量值释放出来,执行 POP CX 语句。软件延时程序流程图如图 2.3 所示。图 2.3 软件延时程序流程图沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-7-2.2.3 满瓶数量改变程序当装完一瓶饮料后,要将当前满瓶的数量加 1。满瓶数量改变程序流程图如图 2.4 所示。图 2.4 满瓶数量改变程序流程图2.2.3 空瓶数量改变程序当装完一瓶饮料后,要将当前空瓶的数量减 1。
13、空瓶数量改变程序流程图如图 2.5 所示。图 2.5 空瓶数量改变程序流程图沈阳航空航天大学课程设计报告 第 2 章 详细设计方案-8-2.2.4 装配过程显示程序在装瓶的过程中,数码管从 1 依次显示到 8,相依的发光二极管在数码管每变化一次后置亮,当变化完后,发光二极管全部置亮,数码管右侧的圆点置亮,证明已经装完一瓶显示程序如下:LED8255: ;装瓶过程MOV DX,D8279MOV AL,1LEA BX,LEDXLATOUT DX,ALMOV DX,C8255MOV AL,0FEHOUT DX,AL以上只是演示数码管显示 1,发光二极管第一个灯亮。CALL DELAY当到 8 时,发光二极管全为亮,程序如下: MOV DX,C8255MOV AL,00HOUT DX,ALCALL DELAYRET