微型计算机原理与接口技术简易计算器系统设计教材_第1页
微型计算机原理与接口技术简易计算器系统设计教材_第2页
微型计算机原理与接口技术简易计算器系统设计教材_第3页
微型计算机原理与接口技术简易计算器系统设计教材_第4页
微型计算机原理与接口技术简易计算器系统设计教材_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、学号 微型计算机原理与接口技术课程设计2008 级本科)题目:简易计算器系统设计系(部)院: 专业:电气工程及其自动化作者姓名: 指导教师: 职称: 完成日期: 年 月 日课程设计任务书学生姓名学号 专业方向电气工程及其自动化班级 题目名称简易计算器系统设计一、设计内容及技术要求:设计一个可以进行十进制数四则运算的计算器;1. 用按键输入数据;2. 能够完成加减乘除运算;3. 具有清零和复位功能;4. 具有连续运算功能;二、课程设计说明书撰写要求:1. 选用 8086/8088CPU和适当的储存储器芯片、接口芯片完成相应的功能。2. 用汇编语言编写程序实现应用程序的功能,并添加适当注释。3.

2、设计子程序及源程序。4. 给出程序设计思路、画出各程序适当的流程图。5. 给出所有程序清单并加上必要注释。6. 完成设计说明书(包括封面、目录、设计任务书、设计思路、硬件设计图、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等) 。三、设计进度第一周星期一上午讨论论文题目星期一下午查资料星期二至星期五查找分析资料,确定各程序模块的功能第二周星期一至星期二完成硬件设计,软件流程图及软件设计星期三至星期四完成设计,进行编程,调试,画图星期五答辩指导老师签字 :目录一、设计目的 1.二、设计任务与要求 1.三、总体方案论证 1.3.1 方案 1 1.3.1.1 8255A 与键盘接口 2.

3、3.1.2 8255A 与 LED数码管接口 5.3.2 方案 2 8.3.2.1 使用设备 8.3.2.2 参数定义 8.3.2.3 使用方法 8.四、硬件设计 9.五、软件设计 9.5.1 程序设计思路 9.5.2 程序中的关键技术1.0.六、流程图设计 1.1.七、程序调试运行 1.3.7.1 程序编写 1.3.7.2 上机编译与调试 1.3.7.3 运行结果 1.4.八、总结 1.6.参考文献 1.7.微机原理与接口技术课程设计成绩评定表 2.4、设计目的1、进一步加深对微机系统的理解和认识,提高微机系统的应用水平。2、进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的

4、 编写,提高编写汇编语言程序的水平和学习程序调试方法。3、初步加强自己的科学研究方法训练和实践锻练,增强分析问题和解决问题的 能力,了解微机原理和接口技术的新发展。二、设计任务与要求 1、可以进行十进制数四则运算。用按键输入数据;具有清零和复位功能;具有 连续运算功能。2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须 和题目的要求相符合,保证设计的正确。学会掌握和使用各种已有的技术资料, 不要盲目地、机械地抄袭资料, 必须具体分析, 使设计质量和设计能力都获得提 高。要在老师的指导下制定好自己各环节的详细设计进程计划, 按给定的时间计 划保质保量的完成个阶段的设计任务。

5、设计中可边设计, 边修改, 软件设计与硬 件设计可交替进行, 问题答疑与调试和方案修改相结合, 提高设计的效率, 保证 按时完成设计工作并交出合格的设计报告。三、总体方案论证根据本次设计的设计目的及设计要求,可有下列两种方案:3.1 方案 1 模拟简易计算器主要由键盘输入和 LED数码管显示两部分组成,其界面如图1 所示:789/456*1230=C+图 1 模拟计算器要设计一个模拟计算器, 要用到可编程并行 I/O 接口芯片 8255A,主要要解决 8255A与键盘接口和 8255A与LED数码管接口的问题。3.1.1 8255A 与键盘接口键盘是计算器的输入设备, 通过键盘把数据和操作命令

6、输入到计算器, 实现 人机对话。目前使用的键盘分为编码键盘和非编码键盘。编码键盘带有必要的硬件电路,能自动提供按键的 ASC编码,并能将数据 保持到新键按下为止, 还有消除抖动和防止多键、 串键等保护装置。 编码键盘软 件简短,它根据编码就能识别是什么键按下,但硬件电路复杂,价格较贵。 非 编码键盘仅仅是按行、 列排列起来的矩阵开关, 其他的工作如识别键、 提供代码、 去抖动等由软件来解决。为了识别键盘上的闭合键,通常可以采用两种方式:行扫描法和行反转法。(1)行扫描法行扫描法识别按键的原理如下:首先判别是否有键按下。将所有行线置成 0 电平,然后通过列线输入全部列值,如果读入的列值全是 1,

7、则说明没有任何一 个键按下;反之,如果读入的列值不全是 1,着说明有键按下。也就是说,在键 盘识别的开始先进行全扫描,若有键按下,则必须判别是哪个按键被操作。第二步确定哪个键被按下。 一旦发现有键按下, 就转入采用逐行扫描的办法 来确定是那一个键被按下。 先扫描第一行, 即使它输出 0 电平, 其余的行线为高 电平 1,然后读入列值。如果读入的列值中有一位为低电平 0,则说明在此行的 一个行、列交叉处有键被按下。如果读入的列值全是 1,说明这一行所有按键都 未被按下。接着扫描第二行。依次类推,逐行扫描,直到扫完全部的行线为止。 若在扫描的过程中,发现非全 1 的列值,就能找出被按下的键。(2)

8、行反转法行反转法识别闭和键时,要将行线接一个并行口, 先让它工作在输出方式下; 将列线也接一个并行口,先让它工作在输入方式下。程序使CPU通过输出端口,向各行线上全部送低电平 0,然后读入列线的值(列值) ,如果此时有某一键被 按下,则必定会使某一列线为 0,输入的列值其中某一位为 0。然后,程序在对 两个并行端口进行方式设置, 使行线工作在输入方式, 列线工作在输出方式。 利 用输出指令,使列线全部输出为 0 值。再从行线输入行线值(行值) 。行值中闭 合键所对应的位必然为底电平 0。利用这种反转法,可得到一对行值和列值,每 一个按键唯一对应一组行值和列值, 行值和列值组合起来可以形成一个按

9、键的识 别码。(3)在扫描键盘的过程中,应注意解决以下问题: 键抖动:当用手按下一个键时, 往往会出现按键在闭合和断开位置之间跳 几下才稳定到闭合状态的情况; 在释放一个键时, 也会出现类似的情况, 这就是 抖动。这种抖动经常发生在键被按下或抬起的瞬间, 一般持续几毫秒到几十毫秒, 随键的结构不同而不同。 在扫描键盘过程中, 必须想办法消除键抖动, 否则会引 起错误。消除键抖动可以用硬件电路来实现,它利用 RS 触发器来锁定按键状 态,以消除按键的影响。 简单的方法是利用软件延时来消除键的抖动。 也就是说, 一旦发现有键按下,就延时 20ms以后再去检测按键的状态,这样就避开了键发 生抖动的那

10、一段时间,再读按键状态,数据可靠。 重键:重键是指一个以上的按键同时按下而产生的不确定或错误问题。 出 现重键时,读取的键值必然出现有一个以上的 0。于是就产生了到底是否给予识 别哪一键的问题。 解决重键可采取的方法有: 一是无效处理, 当发现有一个以上 按键同时按下时, 认为此次按键输入无效。 二是等待释放, 将最后释放的按键作 为有效键处理。 三是硬件封锁, 当发现有一按键按下时, 硬件电路即刻封锁其他 按键的输入直到该键处理完毕。 应防止按一次键而产生多次处理的情况: 这种情况的发生是由于键扫描速 度和键处理速度较快, 当某一个按下的按键还未及时释放时, 键扫描程序和键处 理程序已执行了

11、多遍, 这样由于程序执行和按键动作不同步, 而造成一次键有多 个键输入的错误状态。为了避免发生这种情况,必须保证按一次键, CPU只对该 键作一次键处理, 为此,在键扫描程序中不仅要检测是否有键按下, 在有键按下 的情况下,作一次键处理;而且在键处理完毕后,还应检测按下的键是否释放, 只有当按下的键释放以后, 程序才继续往下执行。 这样每按一次键, 只有一次键 处理,使两者达到了同步。08192+34*5/6=7CPB0PB1PB2PB3PB4PB5PB6PB7PC6PC7图 2 键盘的结构+5V8*2 键盘是一种行列式键盘,如图 2 所示图中有 8 行 2 列, 8 根行线与 PB 口相连,

12、 2根列线与 PC口的 PC6、PC7相连按键设置在行、列交交点处(数字或 字符为其键号),行、列线分别连接到按键开关的两端。当列线通过上拉电阻接 +5V时,接被钳位在高电平行列式键盘电路状态。键盘中有无按键按下是由列线 送入全扫描字、 列线读入行线状态来判断的。 这就是: 被行线所有 I/O 线均置成 低电平,然后读入列线电平状态。 如果有键按下, 总会有一根列线电平被拉至低 电平,从而时列线输入不全为 1。 键盘中哪一个键是由行线逐行置成低电平后, 检查列线输入状态予以确定的。 其方法是: 依次给行线送低电平, 然后查所有行 线状态,如果全为 1,则所按下之键必在此行。而且与 0 电平行线

13、相交的交点上 的那个键。 键盘的工作方式采用编程扫描的工作方式, 即通过调用子程序来响应 键输入的要求,在按键扫描子程序中完成下述功能: 判断键盘上有无键按下。其方法是先使 PB7PB00,然后读 PC6、 PC7 的状态,若为全 1 则键盘中无键按下;若不全为 1,则说明键盘中有键按下。 去除按键的机械抖动影响。 可作这样的处理: 当判断有键按下后, 软件延 时一段时间后再判断键盘状态, 如果仍为键按下状态, 则认为有一个确定的键按 下,否则按按键抖动处理。 求按下键的键值及键号。 键盘上的每一个键都对应一个键值。 键盘中键号 排列没有规律, 不能通过对键值直接运算得到键号。 因此必须先判断

14、按下键是使 PC7 0还是 PC6=0,然后再查为零的列线上键按时其 8 位键值中是否有一位为零, 若为零则可得到键值。 求按下键值及键号的目的是使程序转到相应的地址去完成 该键的操作。 一般,对数字键就是直接将该号送到显示缓冲区进行显示, 对功能 键则必须先找到完成该功能键处理子程序的入口地址,并转去执行该键的命令。 因此,当键号求到后,还必须找到功能键处理程序入口。 为保证键闭合一次 CPU仅进行一次键功能操作。 程序中需要等待键释放以 后再将键号送累加器 AH。3.1.2 8255A 与 LED数码管接口发光二级管数码显示器简称为 LED( Light Emitting Diode )数

15、码显示器, 它由七段发光二级管组成。这种显示器价格低廉、体积小、功耗低,而可靠性有 很好,因此, 从单板微型机、 袖珍计算机到许多微型机控制系统及数字化仪器都 用 LED作为输出显示。LED数码管的主要部分是七段发光二极管,如图 3 所示。这七段发光二极管 分别称为 a、b、c、d、e、f、g,有的产品还附带有一个小数点 h,通过 7 个发 光段的不同组合,可以显示 09 和 AF共 16个字母数字或其它异形字符。ec图 3 数码管外型LED数码管有共阳极、共阴极两种结构,如图 4 所示。如为共阳极结构,则 共用的阳极应接高电平,各段则输入低电平,方为有效。如为共阴极结构,共用 的阴极必须接低

16、电平,而各段处于高电平时便发光。bcdgh共阳极结构共阴极结构图4表 1 表示了共阴极与共阳极结构字符 0F 的编码表。编码的低位为 a,高位为 g表 1 :七段 LED编码表显示数字编码共阴极共阳极03FHC0H106HF9H25BHA4H34FHB0H466H99H56DH92H67DH82H707HF8H87FH80H967H98HA77H88HB7CH83HC39HC6HD5EHA1HE79H86HF71H8EH.80H7FH要实现计算器的显示功能, 需要用 6 位七段 LED数码管来实现多位显示。 在 这种方案中, 硬件上用公共的驱动电路来驱动各数码管; 软件上用扫描方法实现 数字显

17、示。由于要显示 6 位十进制数,因此采用 6 位七段 LED动态显示电路, 需要一个 8 位 I/O 口和一个 6 位 I/O 口,其中 8 位 I/O 控制段选码, 6 位 I/O 控制位选。 进行 6 位字符显示时, 采用扫描显示方式, 即在每一瞬间只使某一位显示相应字 符,在此瞬间, 段选控制 I/O 输出相应字符段选码, 位选控制 I/O 口在该显示位 送入选通电平 (共阴极送低电平, 共阳极送高电平),以保证该位显示相应字符, 如此轮流,使每位显示该位应显示字符,并保持延迟一段时间(15ms),以造成视觉暂留效果, 不断循环送出相应的段选码、 位选码, 就可以获得视觉稳定的 显示状态

18、。 只要 CPU通过段控制端口送出段代码, 然后通过位控制端口送出位代 码,指定的数码管便显示相应的数字。 如果 CPU顺序地输出段码和位码, 依次让 每个数码管显示数字, 并不断地重复, 当重复频率达到一定程度, 利用人眼的视 觉暂留特性,从数码管上便可见到相当稳定的数字显示。图 5是一个由 8255A控制的 6位共阴极显示系统, A口输出 LED字符 7段代 码信息, C 口输出 6 个 LED位选信号,由程序控制依次使 Q0Q5低电平轮流有 效,使得 LED0 LED5轮流显示。图 5 多位数码管显示电路示意图3.2 方案 2 用汇编语言编写程序实现应用程序的功能, 从而实现简易计算器汇

19、编程序的 设计与实现。3.2.1 使用设备 含有 Windows汇编编译环境的 MASM软件及 Office 2003 软件的计算机一台。3.2.2 参数定义 在本程序中,定义了变量 B1B8用来显示提示信息的 8 个参数。定义了变 量 X 和 Y 用来保存输入的操作数。 定义了变量 C 用来保存除法运算中的余数。 定 义了变量 D用来保存输入的操作符。定义了变量 E 等于 10。3.2.3 使用方法在 masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算 后便可得到运算结果,在屏幕上显示出来;在提示下按下“ g”或是回车,则继 续进行运算或是退出程序。四、硬件设计8255A与键

20、盘、显示器的接口见下图 6,键盘的 16 个按键组成 8 2 矩阵, 其中 8 根作为 8255A的输出线与 PA7-PA0连接,2 根作为 8255A的输入线与 PC7、 PC6连接。PB0-PB7向显示器提供段码, PC0、PC1、PC2给出位码之后经 74LS138 译码之后选中 6 个数码管中的一个。图 6 8255A 与键盘、显示器的连接五、软件设计5.1 程序设计思路经研究分析,本程序设计思路如图 7 所示:图 7 程序设计思路图5.2 程序中的关键技术INT 21H 指令01H号功能: 等待从标准设备输入一个字符, 将该字符的 ASCII 码送给 AL,并在 标准输出设备上显示该

21、字符。入口参数:无。 出口参数: AL的内容为输入字符的 ASCII 码。 02H号功能:显示器输出,用文本坐标下设置光标位置。 入口参数: DL的内容为输出字符的 ASCII 码。出口参数:无 09H号功能:在标准输出设备上显示某个字符串。 入口参数: DX的内容为要显示的字符串的首地址。出口参数:无 从设计方案的可行性及经济技术指标等方面综合考虑, 方案二更合理, 具有可行 性且运算方便快捷。故选择方案二。10六、流程图设计输入第一个操作数,从 DAT_1开始,与 0DH(回车)相比,若相同则跳转到 DAT_2除以 10,保存余数;否则乘以 10 保存,等待接收下一个数字。部分程序流程如图

22、 8 所示图 8 输入数据流程图11简易计算器程序总流程图如图 9DAT 3开始DIV E跳到 DAT_2设减标志设乘标志设加标志设除标志保存在 X中DAT_5输入操作符号输入第一个数字进行加减乘除运 算 存结果图 9 输入数据流程总图12七、程序调试运行7.1 程序编写第一步:对要实现的功能进行大体分析,画出程序的总流程图。 第二步:将这些功能的实现分别编写程序来实现。 第三步;编写代码,上机调试和运行程序。7.2 上机编译与调试第一步:编辑源程序:即建立 .ASM文件。 第二步:汇编源程序。源文件建立后,要用汇编程序对源文件进行汇编,以 便产生二进制的目标文件 (.OBJ 文件) 。本程序

23、用 MASM.EXE编译界面如图 10 示图 10 用 MASM.EXE编译界面第三步;用 LINK程序产生 .EXE文件。汇编程序已产生出二进制的代码文 件(.OBJ) ,但.OBJ文件并不是可执行文件,还必须使用 (LINK) 把.OBJ文件转换 为可执行的 .EXE文件。用 LINK.EXE连接为可执行文件界面如图 11 所示。13图 11 用 MASM.EXE编译界面第四步;程序的调试。建立 KDW.EXE文件后,就可以直接在 DOS下运行此程序,如下所示:C:KDW回车C:_程序运行结束后,返回 DOS如. 果运算结果正确且程序已把结果直接显示在 屏幕上,那么程序运行结束时结果也就得

24、到了。 如果程序不显示结果, 我们如何 知道程序是否正确呢?这时, 就要使用 TD.EXE调试工具来查看运行结果。 此外, 大部分程序必须经过调试阶段才能纠正程序执行中的错误, 调试程序时也要使用 TD.EXE。7.3 运行结果在 masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算 后便可得到运算结果,在屏幕上显示出来;在提示下按下“ g”,则继续进行运算 或是退出程序。结果图 12和图 13所示:14图 12 加法和减法运行结果图 13 乘法和除法运行结果本课程设计从汇编语言程序的编写及应用出发,设计了一个简易计算器系 统,本设计能够完成 5 位数以内的加减乘除四则运算, 并

25、且能够显示除法所得余 数,同时具有清零和复位功能, 达到了连续运算的效果, 可以解决日常生活中一 些简单四则运算,通过两种方案的比较最终确定了可行性较高的方案2。同时,此方案也具有其优缺点;优点:设计结构比较简单,成本比较低,能够满足生活 中的一般需求。缺点:由于结构比较简单(只能显示 5 位数据),因此不能处理 位数大于 5 位数的数据,运算速度和能力不是很高。15八、总结通过本次微机原理及应用课程设计, 收获颇多。 首先是对汇编语言知识加深 了认识,在课程设计中参考一些资料时, 发现大量用汇编语言编写的实例或者用 8086 和其他芯片组合成的电路解决大量问题,涉及各个方面,使我认识到微机

26、应用的一些方面,同时通过设计巩固了微机原理与接口技术这门课的知识, 在平时只是纸上谈兵 ,只是学习书本上的知识,没有真正的运用过,就是在 平时上机实验时,也就是运用一、两个知识点,而且没有考察真正的实际能力。 而在课程设计中就不同了, 必须运用大量的知识, 而且要使他们综合运用, 这就 不同于一般简单的编程了。 其次, 通过这短短一周的实践, 我感觉到自己在课本 上学到的理论知识和实践仍有一定的差距。 有的知识,自己感觉已经掌握得差不 多了,但是实际操作起来就有问题出现了, 也许这就是要我们搞课程设计的目的 吧。再次,在课程设计中拓宽了我的视野,通过查找程序和参阅书籍,使我认识 到书本上的关于

27、微机原理的知识只是我们学习微机的入门知识准备而已, 要想应 用到实际设计中还必须深入学习, 这就无形中我们的知识从拓宽了许多, 这些都 是课程设计的一些功劳。最后,在课程设计中感到个人的力量是不及群体的力量的, 我们几个人分工 合作,做事的效率高了很多。 虽然有时候会为了一些细节争论不休, 但最后得出 的总是最好的结论。同时通过“讨论”也知道了各自的想法,这给自己和别人都 可以提示。 一周课程设计也教会我们在团队中要善于与人相处, 与人共事, 不要 一个人解决所有问题。 个人力量有限, 集体力量才是无穷! 同时也很感谢张静老 师的细心辅导,让我得以完成本次设计,谢谢。16参考文献1 陆红伟 .

28、 微机原理实验与课程设计指导书 M. 中国电力出版社 .2006.2 顾滨. 8086 微型计算机组成、原理及接口 M. 机械工业出版社 . 2001.3 吕淑萍 . 微型计算机原理及应用 M. 哈尔滨工程大学出版社 . 20044 戴梅萼 . 微型计算机技术及应用 M. 清华大学出版社 . 20055 冯博琴 . 微型计算机原理与接口技术 M . 清华大学出版社 .20076 赵欢. 微机原理应用及实训 M. 北京:高等教育出版社 .2003.7 贾金玲 . 微型计算机原理与接口技术课程设计指导 .重庆大学出版社 .200217附录源程序STACK SEGMENTDW 512 DUP(0)S

29、TACK ENDSDATA SEGMENTB1 DB 0DH,0AH,The SIMPLE CALCULATOR $B2 DB 0DH,0AH,PLEASE INPUT THE FIRST NUMBER: $B3 DB 0DH,0AH,PLEASE INPUT THE SECOND NUMBER: $B4 DB 0DH,0AH,PLEASE INPUT THE OPERATOR(+,-,*,/): $B5 DB 0DH,0AH,JIE GUO SHI: $B6 DB 0AH,0DH,YU SHU SHI: $B7 DB 0DH,0AH,B8 DB 0DH,0AH,please INPUT TH

30、E KEY (g) to CONTINUE $X DW 0; 存放第一个操作数Y DW 0; 存放第二个操作数C DW 0; 存放余数D DB 0; 存放输入的操作符号E DW 10DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXS:MOV BX,0MOV DI,0MOV DX,0LEA DX,B1MOV AH,918INT 21HLEA DX,B2MOV AH,9INT 21H输出提示信息DAT_1:MOV AX,0MOV AH,1INT 21H输入第一个操作数CMP AL,0DHJE DAT_2AND

31、 AL,0FH取 AX 的低四位MOV AH,0ADD DI,AXMOV AX,DIMUL EMOV DI,AXJMP DAT_1 ; 把数字字符转化为数字 DAT_2:MOV AX,0MOV AX,DIDIV EMOV X,AXMOV DI,0MOV AX,0LEA DX,B3MOV AH,9INT 21HDAT_3:MOV AH,1INT 21H ; 输入第二个操作数CMP AL,0DHJE DAT_419AND AL,0FHMOV AH,0ADD DI,AXMOV AX,DIMUL EMOV DI,AXJMP DAT_3 ; 将数字字符转化为数字 DAT_4:MOV AX,0MOV AX,DIDIV EMOV Y,AXMOV DI,0MOV AX,0DAT_5:LEA DX,B4MOV AH,9INT 21HMOV AH,1 ; 输入操作符INT 21HMOV D,ALCMP AL,+JE ADD_1CMP AL,-JE SBB_1CMP AL,*JE MUL_1CMP AL,/JE DIV_1JMP DAT

温馨提示

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

评论

0/150

提交评论