微型计算机原理与接口技术简易计算器系统设计教材.docx

上传人:b****4 文档编号:3835077 上传时间:2022-11-25 格式:DOCX 页数:24 大小:373.64KB
下载 相关 举报
微型计算机原理与接口技术简易计算器系统设计教材.docx_第1页
第1页 / 共24页
微型计算机原理与接口技术简易计算器系统设计教材.docx_第2页
第2页 / 共24页
微型计算机原理与接口技术简易计算器系统设计教材.docx_第3页
第3页 / 共24页
微型计算机原理与接口技术简易计算器系统设计教材.docx_第4页
第4页 / 共24页
微型计算机原理与接口技术简易计算器系统设计教材.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

微型计算机原理与接口技术简易计算器系统设计教材.docx

《微型计算机原理与接口技术简易计算器系统设计教材.docx》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术简易计算器系统设计教材.docx(24页珍藏版)》请在冰豆网上搜索。

微型计算机原理与接口技术简易计算器系统设计教材.docx

微型计算机原理与接口技术简易计算器系统设计教材

学号××××××××

《微型计算机原理与接口技术》

课程设计

(2008级本科)

题目:

简易计算器系统设计

系(部)院:

××××××××××

专业:

电气工程及其自动化

作者姓名:

×××××××

指导教师:

××职称:

××

完成日期:

××年×月×日

课程设计任务书

学生姓名

×××

学号

××××

专业方向

电气工程及其自动化

班级

××××

题目名称

简易计算器系统设计

一、设计内容及技术要求:

设计一个可以进行十进制数四则运算的计算器;

1.用按键输入数据;

2.能够完成加减乘除运算;

3.具有清零和复位功能;

4.具有连续运算功能;

二、课程设计说明书撰写要求:

1.选用8086/8088CPU和适当的储存储器芯片、接口芯片完成相应的功能。

2.用汇编语言编写程序实现应用程序的功能,并添加适当注释。

3.设计子程序及源程序。

4.给出程序设计思路、画出各程序适当的流程图。

5.给出所有程序清单并加上必要注释。

6.完成设计说明书(包括封面、目录、设计任务书、设计思路、硬件设计图、程序流程框图、程序清单、所用器件型号、总结体会、参考文献等)。

三、设计进度

第一周

星期一上午讨论论文题目

星期一下午查资料

星期二至星期五查找分析资料,确定各程序模块的功能

第二周

星期一至星期二完成硬件设计,软件流程图及软件设计

星期三至星期四完成设计,进行编程,调试,画图

星期五答辩

指导老师签字:

目录

一、设计目的1

二、设计任务与要求1

三、总体方案论证1

3.1方案11

3.1.18255A与键盘接口2

3.1.28255A与LED数码管接口5

3.2方案28

3.2.1使用设备6

3.2.2参数定义6

3.2.3使用方法6

四、硬件设计6

五、软件设计6

5.1程序设计思路6

5.2程序中的关键技术7

六、流程图设计7

七、程序调试运行8

7.1程序编写9

7.2上机编译与调试9

7.3运行结果10

八、总结11

参考文献12

微机原理与接口技术课程设计成绩评定表15

一、设计目的

1、进一步加深对微机系统的理解和认识,提高微机系统的应用水平。

2、进一步学习和掌握汇编语言程序的编写和应用的方法,通过较大规模程序的编写,提高编写汇编语言程序的水平和学习程序调试方法。

3、初步加强自己的科学研究方法训练和实践锻练,增强分析问题和解决问题的能力,了解微机原理和接口技术的新发展。

二、设计任务与要求

1、可以进行十进制数四则运算。

用按键输入数据;具有清零和复位功能;具有连续运算功能。

2、在设计中可以引用所需的参考资料,避免重复工作,加快设计进程,但必须和题目的要求相符合,保证设计的正确。

学会掌握和使用各种已有的技术资料,不要盲目地、机械地抄袭资料,必须具体分析,使设计质量和设计能力都获得提高。

要在老师的指导下制定好自己各环节的详细设计进程计划,按给定的时间计划保质保量的完成个阶段的设计任务。

设计中可边设计,边修改,软件设计与硬件设计可交替进行,问题答疑与调试和方案修改相结合,提高设计的效率,保证按时完成设计工作并交出合格的设计报告。

三、总体方案论证

根据本次设计的设计目的及设计要求,可有下列两种方案:

3.1方案1

模拟简易计算器主要由键盘输入和LED数码管显示两部分组成,其界面如图1所示:

 

要设计一个模拟计算器,要用到可编程并行I/O接口芯片8255A,主要要解决8255A与键盘接口和8255A与LED数码管接口的问题。

3.1.18255A与键盘接口

键盘是计算器的输入设备,通过键盘把数据和操作命令输入到计算器,实现人机对话。

目前使用的键盘分为编码键盘和非编码键盘。

编码键盘带有必要的硬件电路,能自动提供按键的ASCⅡ编码,并能将数据保持到新键按下为止,还有消除抖动和防止多键、串键等保护装置。

编码键盘软件简短,它根据编码就能识别是什么键按下,但硬件电路复杂,价格较贵。

非编码键盘仅仅是按行、列排列起来的矩阵开关,其他的工作如识别键、提供代码、去抖动等由软件来解决。

为了识别键盘上的闭合键,通常可以采用两种方式:

行扫描法和行反转法。

(1)行扫描法

行扫描法识别按键的原理如下:

首先判别是否有键按下。

将所有行线置成0电平,然后通过列线输入全部列值,如果读入的列值全是1,则说明没有任何一个键按下;反之,如果读入的列值不全是1,着说明有键按下。

也就是说,在键盘识别的开始先进行全扫描,若有键按下,则必须判别是哪个按键被操作。

第二步确定哪个键被按下。

一旦发现有键按下,就转入采用逐行扫描的办法来确定是那一个键被按下。

先扫描第一行,即使它输出0电平,其余的行线为高电平1,然后读入列值。

如果读入的列值中有一位为低电平0,则说明在此行的一个行、列交叉处有键被按下。

如果读入的列值全是1,说明这一行所有按键都未被按下。

接着扫描第二行。

依次类推,逐行扫描,直到扫完全部的行线为止。

若在扫描的过程中,发现非全1的列值,就能找出被按下的键。

(2)行反转法

行反转法识别闭和键时,要将行线接一个并行口,先让它工作在输出方式下;将列线也接一个并行口,先让它工作在输入方式下。

程序使CPU通过输出端口,向各行线上全部送低电平0,然后读入列线的值(列值),如果此时有某一键被按下,则必定会使某一列线为0,输入的列值其中某一位为0。

然后,程序在对两个并行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式。

利用输出指令,使列线全部输出为0值。

再从行线输入行线值(行值)。

行值中闭合键所对应的位必然为底电平0。

利用这种反转法,可得到一对行值和列值,每一个按键唯一对应一组行值和列值,行值和列值组合起来可以形成一个按键的识别码。

(3)在扫描键盘的过程中,应注意解决以下问题:

①键抖动:

当用手按下一个键时,往往会出现按键在闭合和断开位置之间跳几下才稳定到闭合状态的情况;在释放一个键时,也会出现类似的情况,这就是抖动。

这种抖动经常发生在键被按下或抬起的瞬间,一般持续几毫秒到几十毫秒,随键的结构不同而不同。

在扫描键盘过程中,必须想办法消除键抖动,否则会引起错误。

消除键抖动可以用硬件电路来实现,它利用R—S触发器来锁定按键状态,以消除按键的影响。

简单的方法是利用软件延时来消除键的抖动。

也就是说,一旦发现有键按下,就延时20ms以后再去检测按键的状态,这样就避开了键发生抖动的那一段时间,再读按键状态,数据可靠。

②重键:

重键是指一个以上的按键同时按下而产生的不确定或错误问题。

出现重键时,读取的键值必然出现有一个以上的0。

于是就产生了到底是否给予识别哪一键的问题。

解决重键可采取的方法有:

一是无效处理,当发现有一个以上按键同时按下时,认为此次按键输入无效。

二是等待释放,将最后释放的按键作为有效键处理。

三是硬件封锁,当发现有一按键按下时,硬件电路即刻封锁其他按键的输入直到该键处理完毕。

③应防止按一次键而产生多次处理的情况:

这种情况的发生是由于键扫描速度和键处理速度较快,当某一个按下的按键还未及时释放时,键扫描程序和键处理程序已执行了多遍,这样由于程序执行和按键动作不同步,而造成一次键有多个键输入的错误状态。

为了避免发生这种情况,必须保证按一次键,CPU只对该键作一次键处理,为此,在键扫描程序中不仅要检测是否有键按下,在有键按下的情况下,作一次键处理;而且在键处理完毕后,还应检测按下的键是否释放,只有当按下的键释放以后,程序才继续往下执行。

这样每按一次键,只有一次键处理,使两者达到了同步。

 

8*2键盘是一种行列式键盘,如图2所示图中有8行2列,8根行线与PB口相连,2根列线与PC口的PC6、PC7相连按键设置在行、列交交点处(数字或字符为其键号),行、列线分别连接到按键开关的两端。

当列线通过上拉电阻接+5V时,接被钳位在高电平行列式键盘电路状态。

键盘中有无按键按下是由列线送入全扫描字、列线读入行线状态来判断的。

这就是:

被行线所有I/O线均置成低电平,然后读入列线电平状态。

如果有键按下,总会有一根列线电平被拉至低电平,从而时列线输入不全为1。

键盘中哪一个键是由行线逐行置成低电平后,检查列线输入状态予以确定的。

其方法是:

依次给行线送低电平,然后查所有行线状态,如果全为1,则所按下之键必在此行。

而且与0电平行线相交的交点上的那个键。

键盘的工作方式采用编程扫描的工作方式,即通过调用子程序来响应键输入的要求,在按键扫描子程序中完成下述功能:

①判断键盘上有无键按下。

其方法是先使PB7~PB0=0,然后读PC6、PC7的状态,若为全1则键盘中无键按下;若不全为1,则说明键盘中有键按下。

②去除按键的机械抖动影响。

可作这样的处理:

当判断有键按下后,软件延时一段时间后再判断键盘状态,如果仍为键按下状态,则认为有一个确定的键按下,否则按按键抖动处理。

③求按下键的键值及键号。

键盘上的每一个键都对应一个键值。

键盘中键号排列没有规律,不能通过对键值直接运算得到键号。

因此必须先判断按下键是使PC7=0还是PC6=0,然后再查为零的列线上键按时其8位键值中是否有一位为零,若为零则可得到键值。

求按下键值及键号的目的是使程序转到相应的地址去完成该键的操作。

一般,对数字键就是直接将该号送到显示缓冲区进行显示,对功能键则必须先找到完成该功能键处理子程序的入口地址,并转去执行该键的命令。

因此,当键号求到后,还必须找到功能键处理程序入口。

④为保证键闭合一次CPU仅进行一次键功能操作。

程序中需要等待键释放以后再将键号送累加器AH。

3.1.28255A与LED数码管接口

发光二级管数码显示器简称为LED(LightEmittingDiode)数码显示器,它由七段发光二级管组成。

这种显示器价格低廉、体积小、功耗低,而可靠性有很好,因此,从单板微型机、袖珍计算机到许多微型机控制系统及数字化仪器都用LED作为输出显示。

LED数码管的主要部分是七段发光二极管,如图3所示。

这七段发光二极管分别称为a、b、c、d、e、f、g,有的产品还附带有一个小数点h,通过7个发光段的不同组合,可以显示0~9和A~F共16个字母数字或其它异形字符。

 

 

LED数码管有共阳极、共阴极两种结构,如图4所示。

如为共阳极结构,则共用的阳极应接高电平,各段则输入低电平,方为有效。

如为共阴极结构,共用的阴极必须接低电平,而各段处于高电平时便发光。

 

表1表示了共阴极与共阳极结构字符0~F的编码表。

编码的低位为a,高位为g。

表1:

七段LED编码表

显示数字

编码

共阴极

共阳极

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

.

3FH

06H

5BH

4FH

66H

6DH

7DH

07H

7FH

67H

77H

7CH

39H

5EH

79H

71H

80H

C0H

F9H

A4H

B0H

99H

92H

82H

F8H

80H

98H

88H

83H

C6H

A1H

86H

8EH

7FH

要实现计算器的显示功能,需要用6位七段LED数码管来实现多位显示。

在这种方案中,硬件上用公共的驱动电路来驱动各数码管;软件上用扫描方法实现数字显示。

由于要显示6位十进制数,因此采用6位七段LED动态显示电路,需要一个8位I/O口和一个6位I/O口,其中8位I/O控制段选码,6位I/O控制位选。

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

只要CPU通过段控制端口送出段代码,然后通过位控制端口送出位代码,指定的数码管便显示相应的数字。

如果CPU顺序地输出段码和位码,依次让每个数码管显示数字,并不断地重复,当重复频率达到一定程度,利用人眼的视觉暂留特性,从数码管上便可见到相当稳定的数字显示。

图5是一个由8255A控制的6位共阴极显示系统,A口输出LED字符7段代码信息,C口输出6个LED位选信号,由程序控制依次使Q0—Q5低电平轮流有效,使得LED0—LED5轮流显示。

 

 

3.2方案2

用汇编语言编写程序实现应用程序的功能,从而实现简易计算器汇编程序的设计与实现。

3.2.1使用设备

含有Windows汇编编译环境的MASM软件及Office2003软件的计算机一台。

3.2.2参数定义

在本程序中,定义了变量B1~B8用来显示提示信息的8个参数。

定义了变量X和Y用来保存输入的操作数。

定义了变量C用来保存除法运算中的余数。

定义了变量D用来保存输入的操作符。

定义了变量E等于10。

3.2.3使用方法

在masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算结果,在屏幕上显示出来;在提示下按下“g”或是回车,则继续进行运算或是退出程序。

四、硬件设计

8255A与键盘、显示器的接口见下图6,键盘的16个按键组成8×2矩阵,其中8根作为8255A的输出线与PA7-PA0连接,2根作为8255A的输入线与PC7、PC6连接。

PB0-PB7向显示器提供段码,PC0、PC1、PC2给出位码之后经74LS138译码之后选中6个数码管中的一个。

 

五、软件设计

5.1程序设计思路

经研究分析,本程序设计思路如图7所示:

 

 

图7程序设计思路图

5.2程序中的关键技术

INT21H指令

01H号功能:

等待从标准设备输入一个字符,将该字符的ASCII码送给AL,并在标准输出设备上显示该字符。

入口参数:

无。

出口参数:

AL的内容为输入字符的ASCII码。

02H号功能:

显示器输出,用文本坐标下设置光标位置。

入口参数:

DL的内容为输出字符的ASCII码。

出口参数:

09H号功能:

在标准输出设备上显示某个字符串。

入口参数:

DX的内容为要显示的字符串的首地址。

出口参数:

从设计方案的可行性及经济技术指标等方面综合考虑,方案二更合理,具有可行性且运算方便快捷。

故选择方案二。

六、流程图设计

输入第一个操作数,从DAT_1开始,与0DH(回车)相比,若相同则跳转到DAT_2除以10,保存余数;否则乘以10保存,等待接收下一个数字。

部分程序流程如图8所示

图8输入数据流程图

 

简易计算器程序总流程图如图9。

图9输入数据流程总图

七、程序调试运行

7.1程序编写

第一步:

对要实现的功能进行大体分析,画出程序的总流程图。

第二步:

将这些功能的实现分别编写程序来实现。

第三步;编写代码,上机调试和运行程序。

7.2上机编译与调试

第一步:

编辑源程序:

即建立.ASM文件。

第二步:

汇编源程序。

源文件建立后,要用汇编程序对源文件进行汇编,以便产生二进制的目标文件(.OBJ文件)。

本程序用MASM.EXE编译界面如图10示。

图10用MASM.EXE编译界面

第三步;用LINK程序产生.EXE文件。

汇编程序已产生出二进制的代码文件(.OBJ),但.OBJ文件并不是可执行文件,还必须使用(LINK)把.OBJ文件转换为可执行的.EXE文件。

用LINK.EXE连接为可执行文件界面如图11所示。

 

图11用MASM.EXE编译界面

第四步;程序的调试。

建立KDW.EXE文件后,就可以直接在DOS下运行此程序,如下所示:

C:

>KDW<回车>

C:

>_

程序运行结束后,返回DOS.如果运算结果正确且程序已把结果直接显示在屏幕上,那么程序运行结束时结果也就得到了。

如果程序不显示结果,我们如何知道程序是否正确呢?

这时,就要使用TD.EXE调试工具来查看运行结果。

此外,大部分程序必须经过调试阶段才能纠正程序执行中的错误,调试程序时也要使用TD.EXE。

7.3运行结果

在masm环境下运行本程序,按提示依次输入操作数、操作符,回车经运算后便可得到运算结果,在屏幕上显示出来;在提示下按下“g”,则继续进行运算或是退出程序。

结果图12和图13所示:

图12加法和减法运行结果

图13乘法和除法运行结果

本课程设计从汇编语言程序的编写及应用出发,设计了一个简易计算器系统,本设计能够完成5位数以内的加减乘除四则运算,并且能够显示除法所得余数,同时具有清零和复位功能,达到了连续运算的效果,可以解决日常生活中一些简单四则运算,通过两种方案的比较最终确定了可行性较高的方案2。

同时,此方案也具有其优缺点;优点:

设计结构比较简单,成本比较低,能够满足生活中的一般需求。

缺点:

由于结构比较简单(只能显示5位数据),因此不能处理位数大于5位数的数据,运算速度和能力不是很高。

八、总结

通过本次微机原理及应用课程设计,收获颇多。

首先是对汇编语言知识加深了认识,在课程设计中参考一些资料时,发现大量用汇编语言编写的实例或者用8086和其他芯片组合成的电路解决大量问题,涉及各个方面,使我认识到微机应用的一些方面,同时通过设计巩固了《微机原理与接口技术》这门课的知识,在平时只是‘纸上谈兵’,只是学习书本上的知识,没有真正的运用过,就是在平时上机实验时,也就是运用一、两个知识点,而且没有考察真正的实际能力。

而在课程设计中就不同了,必须运用大量的知识,而且要使他们综合运用,这就不同于一般简单的编程了。

其次,通过这短短一周的实践,我感觉到自己在课本上学到的理论知识和实践仍有一定的差距。

有的知识,自己感觉已经掌握得差不多了,但是实际操作起来就有问题出现了,也许这就是要我们搞课程设计的目的吧。

再次,在课程设计中拓宽了我的视野,通过查找程序和参阅书籍,使我认识到书本上的关于微机原理的知识只是我们学习微机的入门知识准备而已,要想应用到实际设计中还必须深入学习,这就无形中我们的知识从拓宽了许多,这些都是课程设计的一些功劳。

最后,在课程设计中感到个人的力量是不及群体的力量的,我们几个人分工合作,做事的效率高了很多。

虽然有时候会为了一些细节争论不休,但最后得出的总是最好的结论。

同时通过“讨论”也知道了各自的想法,这给自己和别人都可以提示。

一周课程设计也教会我们在团队中要善于与人相处,与人共事,不要一个人解决所有问题。

个人力量有限,集体力量才是无穷!

同时也很感谢张静老师的细心辅导,让我得以完成本次设计,谢谢。

 

参考文献

[1]陆红伟.微机原理实验与课程设计指导书[M].中国电力出版社.2006.

[2]顾滨.8086微型计算机组成、原理及接口[M].机械工业出版社.2001.

[3]吕淑萍.微型计算机原理及应用[M].哈尔滨工程大学出版社.2004

[4]戴梅萼.微型计算机技术及应用[M].清华大学出版社.2005

[5]冯博琴.微型计算机原理与接口技术[M].清华大学出版社.2007

[6]赵欢.微机原理应用及实训[M].北京:

高等教育出版社.2003.

[7]贾金玲.微型计算机原理与接口技术课程设计指导.重庆大学出版社.2002

 

附录

源程序

STACKSEGMENT

DW512DUP(0)

STACKENDS

DATASEGMENT

B1DB0DH,0AH,'TheSIMPLECALCULATOR$'

B2DB0DH,0AH,'PLEASEINPUTTHEFIRSTNUMBER:

$'

B3DB0DH,0AH,'PLEASEINPUTTHESECONDNUMBER:

$'

B4DB0DH,0AH,'PLEASEINPUTTHEOPERATOR(+,-,*,/):

$'

B5DB0DH,0AH,'JIEGUOSHI:

$'

B6DB0AH,0DH,'YUSHUSHI:

$'

B7DB0DH,0AH,'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$'

B8DB0DH,0AH,'pleaseINPUTTHEKEY(g)toCONTINUE$'

XDW0;存放第一个操作数

YDW0;存放第二个操作数

CDW0;存放余数

DDB0;存放输入的操作符号

EDW10

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

S:

MOVBX,0

MOVDI,0

MOVDX,0

LEADX,B1

MOVAH,9

INT21H

LEADX,B2

MOVAH,9

INT21H;输出提示信息

DAT_1:

MOVAX,0

MOVAH,1

INT21H;输入第一个操作数

CMPAL,0DH

JEDAT_2

ANDAL,0FH;取AX的低四位

MOVAH,0

ADDDI,AX

MOVAX,DI

MULE

MOVDI,AX

JMPDAT_1;把数字字符转化为数字

DAT_2:

MOVAX,0

MOVAX,DI

DIVE

MOVX,AX

MOVDI,0

MOVAX,0

LEADX,B3

MOVAH,9

INT21H

DAT_3:

MOVAH,1

INT21H;输入第二个操作数

CMPAL,0DH

JEDAT_4

ANDAL,0FH

MOVAH,0

ADDDI,AX

MOVAX,DI

MULE

MOVDI,AX

JMPDAT_3;将数字字符转化为数字

DAT_4:

MOVAX,0

MOVAX,DI

DIVE

MOVY,AX

MOVDI,0

MOVAX,0

DAT_5:

LEADX,B4

MOVAH,9

INT21H

MOVAH,1;输入操作符

INT21H

MOVD,AL

CMPAL,'+'

JEADD_1

CMPAL,'-'

JESBB_1

CMPAL,'*'

JEMUL_1

CMPAL,'/'

JEDIV_1

JMPDAT_5

ADD_1:

MOVAX,0;加法运算

MOVAX,X

ADDAX,Y

MOVSI,AX;si存放源操作数地址,这里存放ax的内容

JMPR

SBB_1:

MOVAX,0;减法运算

MOVAX,X

SBBAX,Y

MOVSI,AX

JMPR

MUL_1:

MOVAX,0;乘法运算

MOVAX,X

MULY

MOVSI,AX

JMPR

DIV_1:

MOVAX,0;除法运算

MOVDX,0

MOVAX,X

DIVY

MOVSI,AX;字除法中商放进AX,余数放进dx

MOVC,DX

JMPR

R:

LEADX,B5

MOVAH,9

IN

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

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1