模拟计算器的毕业设计论文.docx
《模拟计算器的毕业设计论文.docx》由会员分享,可在线阅读,更多相关《模拟计算器的毕业设计论文.docx(29页珍藏版)》请在冰豆网上搜索。
模拟计算器的毕业设计论文
学院本科毕业论文(设计)
题目模拟计算器设计
学生xXX
指导教师xxx讲师
年级xxxxx
专业电气工程及其自动化
二级学院机电学院
学院机电学院
2016年5月
重声明
本人的毕业论文(设计)是在指导教师xxxx的指导下独立撰写完成的。
如有剽窃、抄袭、造假等违反学术道德、学术规和侵权的行为,本人愿意承担由此产生的各种后果,直至法律责任,并愿意通过网络接受公众的监督。
特此重声明。
毕业论文(设计)作者(签名):
年月日
模拟计算器设计
摘要
伴随着社会的进步和发展,人类的计算任务也是愈发的复杂,对运算的速度也是愈发的严格,聪敏的人类发明了计算器。
在接触了微机原理与接口技术这门学科后,为了将自己在课堂上所学的知识进一步的巩固,所以我选择8088CPU为微处理器的模拟计算器系统进行设计。
首先,我们需要确定其各部分所组成的元部件。
其次,将设计的硬件电路图进行构造。
最后,用PROTEUS仿真软件画出原理图进行仿真。
仿真无误后进行硬件构架,并进行调试。
当中我们用到了8088CPU、可编程计时器8253A、可编程并行输入/输出芯片8255A、74273、2*8矩阵式键盘、六位七段LED数码管。
系统设计能够实现5位十进制数以的加减运算和2位十进制数以的乘除运算。
关键词:
模拟计算器8088CPU8255APROTEUS仿真
Analogcalculator
XinShiguangDirectedbylecturerXiaHaojie
ABSTRACT
Withage,theprogressofscienceandtechnologyanddevelopment,humanputationtaskisincreasinglyplex,thecalculationspeedisincreasinglystrict,theintelligenthumanbeingsinventedthecalculator.AfterstudyingthecourseofMicroputerPrincipleandinterfacetechnology,inordertofurtherconsolidatetheknowledgeintheclassroom,Ichoosethe8088CPUbasedanalogputersystemdesign.Firstofall,weneedtobuildtheapplicationsystemofmicroputer.Secondly,weneedtodeterminetheelementparts.Finally,usingPROTEUSsimulationsoftwaretodrawadiagramofthesimulationprinciple.Thecorrecthardwarearchitecture,anddebugging.Weused8088CPU,aprogrammabletimer8253,programmableparallelinput/outputchip8255A,74273,2*8matrixkeyboard,sixdigitsevensegmentdigitaltubeLED.Intheend,simulationcalculatorsystemdesigncanbeachievedwithinlessthan5decimalnumberofadditionandsubtractionoperationsandtwodecimalmultiplicationanddivisionoperations.
KEYWORDS:
Analogcalculator8088CPU8255ASimulation
前言
无论是在高楼林立的都市,还是在小桥流水的乡村,人类都在进行着各种不同的计算。
古代,人们发明了算盘进行计算。
但是,人类的计算工作越来越多,对于运算速度的要求也更高,运算量也越来越大,先前的运算工具已经难以满足人类对计算的需求,于是聪明的人类发明了计算器,大大的弥补了这一缺点。
计算器的发明,减短了计算的时间,提高了计算效率,减轻了劳动强度。
计算器运算速度快、效率高、体积小,便于人们携带,使计算器被越来越多的人所接受,在各行各业中已经成为不可或缺的办公用品。
1绪论
计算,在我们的生活工作中都已经习以为常了,各行各业都离不开计算。
伴随着人们工作容的变化,人类所需要计算的容愈加繁重,对运算准确度的要求也愈加严格。
所以,人们对运算工具的要求也愈加严格。
计算器的出现,大大的满足了人们对计算的要求。
它运算效率高,运算时间短,准确率高。
这一系列的优点,在各行各业中已经成为不可或缺的办公用品。
1.1课题的来源和意义
本课题是经过导师深思熟虑所提出的,设计课题的涉猎面没有必要很宽泛,主要是将自己在课堂上所学习的知识运用在解决课题设计中所出现的各种问题,牢固自己的专业知识,熟练运用,从课题设计中寻找出自己的不足,将其弥补。
课题设计的意义是在进行设计模拟计算器的同时,将自己在课堂上所学的知识进一步的巩固,做到学以致用,将其运用到我们的日常生活中。
1.2计算器的应用及其发展
计算器被广泛的应用于我们生活中的诸多方面。
其主要作用是满足人们在工作和生活中的计算要求。
计算器使用起来快捷方便,体积小容易携带。
无论是在田间地头耕种的农民,还是在大街小巷叫卖的商贩,或是在高楼大厦的办公室中的职员,计算器都是人们所喜爱的计算工具。
计算器大致分为三类,可以进行简单的四则运算计算器;可以进行函数运算的函数计算器;可以进行编程序的程序计算器。
计算器在各个行业中扮演了很重要的角色。
2总体设计方案
2.1系统总体设计方案
本次设计是在Windows系统运用Proteus仿真软件,对硬件电路进行设计,然后使用EMU8086软件编写汇编语言源程序,并且在以上两部分模块设计工作完成后对其进行调试。
本次设计由Intel8088微处理器在最小的工作方式下的单处理器系统构成,通过对外围硬件电路的控制来实现对数据的处理和控制。
2.2系统控制框图
图2-1系统控制框图
本次设计主要是由8088CPU控制8255A并行可编程存储器控制LED显示器。
在选择了8255A后,从数据总线是写入数据到输出端。
使LED显示器按照系统所设定的程序运行。
3硬件电路的介绍
3.1硬件电路的设计思路
利用微机原理与接口技术对模拟计算器系统进行设计。
利用程序不断地扫描键盘,查看有无输入。
假如没有输入,就继续扫描;假如有输入,就立刻终止扫描,输入工作完成。
利用汇编语言的源程序检查输入键的数值是否有效,并且通过调用子程序来实现5位十进制数以的加减法运算和2位十进制数以的乘除法运算。
运算结束后,运算结果将被输送到存储器储存,然后在LED数码管显示器上呈现出来。
3.2硬件电路的构成元件及介绍
在硬件电路设计的部分,主要的使用元件有8088微处理器、可编程计时器8253、可编程并行输入/输出芯片8255A、74273、2*8矩阵式键盘等元件。
3.3硬件电路元件8088CPU介绍
3.3.18088CPU的部结构
8088CPU是INTEL系列的准16位微处理器。
其部结构可以分为两个独立的功能单元,分别是总线接口单元(BIU)和执行单元(EU)。
总线接口单元是与总线连接的接口不见,它的基本功能是根据执行单元的请求负责CPU与存储器或I/O端口知己是哪的数据传送。
总线接口单元有4个16位段寄存器,代码段寄存器(CS)、数据段寄存器(DS)、堆栈段寄存器(SS)和附加段寄存器(ES),16位指令指针IP,6字节指令队列缓冲器,20位地址加法器和总线控制电路。
8088的指令队列由4个字节的寄存器组成,最多可以存入6个字节的指令代码。
执行指令时,从存中取出一条或几条指令,按顺序放在指令队列中,按照“先进先出”的原则,按照顺序取到执行单元中去执行。
部结构如图3-1所示。
图3-18088CPU部结构图
3.3.28088CPU的寄存器结构
8088CPU部共有13个16位寄存器和一个9位的标志寄存器。
寄存器根据功能可以划分为三类,通用寄存器、段寄存器和标志寄存器。
8088CPU寄存器编程结构图如图3-2所示。
图3-28088的编程结构
3.3.38088CPU的总线周期
8088CPU的总线周期是指微处理器I/O口的端口进行一次读/写的操作过程的时间,一个总线周期有4个状态的时钟周期(T1、T2、T3、T4)。
如图3-3所示。
图3-3总线周期序列
3.3.48088CPU的引脚信号和功能
8088有40条引线,按照它们的功能来划分,分别是地址/数据总线、地址/状态总线、控制总线、电源线和地线以及其他控制线。
8088CPU共有20条地址/数据总线(AD7~AD0、AD15~AD8、A19~A16),他们是分时复用的存储器或端口的地址和数据总线,因为8088只可以传送8位数据,所以,只有AD7~AD0八条地址/数据线可为双向三态输入/输出,AD15~AD8只用来传输地址。
如图3-4所示。
图3-48088的引脚信号
3.4可编程并行通信接口芯片8255A
8255A是可编程并行通信接口芯片,它的应用能力比较强,用法多种多样。
CPU通过它可以直接连接外设。
我们必须写入一个方式控制字才可以使用8255A,用来选择A、B、C端口的工作方式。
在地址的具体选择方面,以A1和A0为地址来选择8255A的A、B、C端口和控制寄存器。
8255A的数据总线缓冲存储器是8255A与CPU之间的数据接口。
8255A通过它与系统数据总线项链,数据缓冲器被用来传送I/O操作有关的数据、控制字和状态信息。
8255A的数据传送是由读/写控制逻辑电路的进行管理。
在接收CPU的控制命令的同时,可以按照控制命令向各个功能元件发出操作指令。
如图3-5所示。
图3-58255A引脚图
3.5可编程计数器/定时器8253
8253有两个功能既可以计数又可以定时它拥有3个相同的减法计数器(计数器0、计数器1、计数器2),但是这三个是相互独立的。
8253是一种24脚封装直插式芯片,其引脚和功能结构示意图如图3-6所示。
图3-68253引脚和功能结构示意图
3.6键盘输入模块
键盘是人们经常使用输入信息的元件,一个个按钮组成了键盘,假如是一个独立按钮的话,那就需要用过I/O口进行检查调试,而且还需要一半的的键盘按钮I/O口进行检查,在一般的系统中,I/O口的数量不是问题,但在一个相对大规模的系统用来说,I/O的数量就是一个很大的问题,因为I/O口得成本问题,我们应高尽量的合理使用I/O口。
键盘在外观方面与爱独立按键比较来说相对的整齐,如图3-7所示。
图3-8中有8行2列,PA口有8根先相连,PC7和PC6分别与列线相连。
PA和PB一致。
PC口既可以输入又可以输出。
按键设置在行、列交点处,行、列线分别连接到按键开关的两端。
当列线通过上拉电阻接+5V时,就被钳位在高电平状态。
由行线输入扫描字、列线读入的状态来判断有没有按键按下。
这就是:
给行线所有I/O线均置成低电平,然后读入列线电平状态。
如果有按键按下,总会有一根列线电平被拉至低电平,从而使列线输入不全为1.
图3-7键盘电路图3-8数码管电路
3.7系统总电路图设计
在硬件电路的设计中,首相应将8088CPU的最小工作方式的原理图做出,使其可以正常工作。
最小工作方式的系统原理图由8088微处理器、74273八D触发器组成。
8088有20位地址总线,其中高4位A19-A16与状态线S6-S3分时复用,低16位AD15-AD0与数据线分时复用。
本次设计仅仅需要用到低16位地址总线,在送出T1的地址后,必须用锁存器锁存,方便T2状态和以后高4位地址总线的状态输出,低16位地址总线做数据线使用。
16条数据总线需要用2片8位地址锁存器,我们采用74273,直接与外围硬件电路相连接,直接分拨I/O硬件地址。
系统图如图3-9所示。
图3-9最小原理系统图
4PROTEUS简介
Proteus仿真软件的开发,大大提高了我们在设计工程中的效率。
在日常的设计中,如果仅仅用图纸来设计的话,修改会比较繁琐,但是在Proteus中,硬件的设计很容易修改。
而且,在设计中没有必要再去等待去制作一个实物再继续接下来的设计,省去了大量的时间。
使用Proteus设计可以很轻易的看出设计中的缺陷,开发的成本很低,可以缩短场频投入市场的时间。
简单地说,Proteus高效率、低成本、使用灵活。
4.1Proteus的基本界面
图4-1Proteus主界面图
Proteus的主窗口像是一个实际的实验台。
从图中可以看出,基本界面的组成是由原理图编辑窗口、预览窗口、元件列表和仿真工具栏组成。
4.2Proteus功能
1.上图中最大的是原理编辑部分,我们仿真所用的元件全部都放到这里面,我们可以用鼠标的滚轮调整窗口的大小,方便我们的接线,也可以让我们更清楚观察元件的运行状况。
2.上图中所显示的预览窗口,在我们从模型库里面徐泽元件是可以看到元件的预览图,我们也可以看到整图里面元件的大体位置。
3.上图中最左边的一列是模型选择工具,我们可以从当中可以选择一些常用的元件,选择原件后,元件名称会在出现在元件列表当中,方便我们查找的同时也方便我们查询是否有错漏的元件。
4.仿真工具栏
仿真控制按钮
1、运行
2、单步运行
3、暂停
4、终止
5软件电路的设计
5.1软件设计框图
图5-1软件结构框图
5.2汇编语言
汇编语言目前是很受欢迎的一种编程语言。
它与机器语言相比较来说跟家容易读写,更加方便的进行修正。
当然,特也有缺点,在所编写的程序很复杂时,汇编语言有很大的代码量,而且汇编语言对详细的处理器体系有很强的依赖性,不可以通用,所以汇编语言在不相同的处理器体系中是不可以进行转移的。
本次设计采用的是汇编语言,汇编语言程序的编程与处理过程如5-2图所示:
图5-2汇编语言程序的编程与处理过程
5.3EMU8086
本次设计的软件部分是通过EMU8086汇编软件进行混编语言的编程与设计,它可以把汇编语言的源程序直接生成可执行的.exe文件。
EMU8086他可以在你编写程序之后,进行编译,查看程序是否可执行,不可执行则报错,指出错误之处。
编译之后,对程序进行模拟仿真,查看程序的可使用性。
EMU8086软件的初始界面如图5-3所示:
图5-3EMU8086初始界面
在EMU8086的初始界面中,软件已经对程序的数据段和堆栈段进行了汇编,如果没有需要修改的地方可以直接在程序的代码段出进行对程序的编写。
pile键为编译键,在程序完成编写之后,点击编译键可以对程序进行编译,查看程序是否有错误,能否通过编译。
如果程序中有错误,则编译不通过,并指出错误的指令。
双击错误指令可以直接定位到错误之处,方便进行修改。
程序出错会出现下面的界面,如图5-4所示。
图5-4错误界面
出现错误后双击框中所指出的错误处,会直接定位在错误指令处,如图5-6所示
图5-6错误指令
这个emulate键为程序运行键,在点击程序运行键时,就会模拟程序的运行,程序的运行流程可以一步一步点击运行,也可以让其自动运行。
它的运行界面如图5-7所示。
图5-7程序运行图
5.4程序编程
本次设计是通过可编程并行接口芯片8255A与8088连接,实现控制外设设备。
堆栈段定义一段连续存储区,使其可以存放在程序运行中所产生的中间变量。
我的堆栈段的定义为:
DB64DUP(0)
程序中的DB是伪操作指令,表示数据存储单位1个字节。
DUP(?
),表示定义n个数据项,它的初值有表达式所确定。
这段程序的意思是定义堆栈段位64个字节的连续存储区,且每个字节的初值为0。
代码段的编程,前面的数据段和堆栈段全部都是为了代码段做准备。
代码段是整个程序的核心,所需要实现的加、减、乘、除和清零的功能全部由代码段进行汇编实现。
CLEAR:
MOVSI,OFFSETVAR2;数据清零子程序
MOVDI,OFFSETVAR3
MOVCX,000AH
CLEAR1:
MOVAL,3FH
MOV[SI],AL
MOVAL,00H
MOV[DI],AL
INCSI
INCDI
LOOPCLEAR1
MOVBH,00H
RET
ADD1:
MOVSI,OFFSETVAR3;;加法子程序
MOVDI,OFFSETVAR4
CLC
MOVCX,0005H
ADD_1:
MOVAL,[DI]
ADCAL,[SI]
AAA
MOV[DI],AL
INCSI
INCDI
LOOPADD_1
CALLCHANGE
CALLDISP
RET
SUB1:
MOVSI,OFFSETVAR3;减法子程序
MOVDI,OFFSETVAR4
CLC
MOVCX,0005H
SUB_1:
MOVAL,[DI]
MOVCL,[SI]
AAS
MOV[DI],AL
INCSI
INCDI
LOOPSUB_1
CALLCHANGE
CALLDISP
RET
MUL1:
MOVSI,OFFSETVAR3;乘法子程序
MOVDI,OFFSETVAR4
MOVAL,[DI]
MOVCL,[SI]
MULCL
AAM
MOV[DI+5],AX
MOVAL,[DI+1]
MULCL
AAM
ADDAL,[DI+6]
AAA
MOV[DI+6],AX
MOVAL,[DI]
MOVCL,[SI+1]
MULCL
AAM
MOV[SI+5],AX
MOVAL,[DI+1]
MULCL
AAM
ADDAL,[SI+6]
AAA
MOV[SI+6],AX
MOVAL,[DI+5]
MOV[DI],AL
MOVAL,[DI+6]
ADDAL,[SI+5]
AAA
MOV[DI+1],AL
MOVAL,[DI+7]
ADCAL,[SI+6]
AAA
MOV[DI+2],AL
MOVAL.00H
ADCAL,[SI+7]
AAA
MOV[DI+3],AL
CALLCHANGE
CALLDISP
RET
DIV1:
MOVSI,OFFSETVAR3;除法子程序
MOVDI,OFFSETVAR4
MOVAH,00H
MOVAL,[DI+1]
MOVCK,[SI]
DIVCL
MOV[DI+1],AL
MOVAL,[DI]
AAD
DIVCL
MOV[DI],AL
CALLCHANGE
CALLDISP
RET
以上程序是编程的主要阶段,来实现编程所需要的所有功能。
在编程结束后通过编译来对程序进行检查,查看程序是否有错误,并且进行修改。
修改完成后保存,运行程序,查看程序是否可以正常运行。
6系统仿真及其调试
把编写完成的汇编语言源程序在EMU8086软件进行汇编、连接生成可执行.exe文件,在准备使用程序之前,先将硬件连接图进行构建。
然后再将做好的.exe文件载入8086芯片中。
在程序的运行中出现了错误,如图所示,部存储器的存不足,存为零。
是因为没有将8086的InternalMemorySize进行设定,我们需要将0*00000设定为0*10000,重新运行程序,则显示正常运行。
如图6-1所示.
图6-1编辑元件
根据程序的运行过程,Proteus仿真的调试过程分为四部分,分别是加、减、乘、除和清零的运算。
开始Proteus的初始界面如下图6-2所示:
在程序中所赋予的初始值为0,所以在LED数码管上面所显示出来的数字为0。
仿真运行初始界面如图
图6-2Proteus初始界面
第一步我们对其加法运算进行仿真。
仿真结果图如图6-3所示。
图6-3加法仿真
在进行加法运算时,我们要对存储器DI和SI进行赋值,将1输入到DI中,将2输入到SI中,因为存储器与存储器之间数据不可以直接传送,所以我们需要将DI中的数值传送到寄存器AL中过度,通过进位相加指令,LED数码管上面显示的数字为3.然后将寄存器AL中的数据传送到存储器DI当中,DI=3,这样依次循环进行运算。
第二步我们对其进行减法进行仿真。
仿真结果如图6-4所示.
图6-4减法仿真
在进行减法运算时,我们要对存储器DI、SI进行赋值,在进行加法运算后未进行清零操作,所以存储器DI当中的数值为10,所以只需要给SI赋值为4,因为存储器与存储器之间数据不可以直接传送,所以我们需要将DI中的数值传送到寄存器AL中过度,通过借位相减指令,LED数码管上面显示的数字为6.然后将寄存器AL中的数据传送到存储器DI当中,DI=6,这样依次循环进行运算。
第三步进行乘法运算仿真。
仿真结果如图6-5所示。
图6-5乘法仿真
在进行乘法运算时,我们要对存储器DI、SI进行赋值,在进行第二步减法运算后未进行清零操作,所以存储器DI当中的数值为6,所以只需要给SI赋值为4,因为存储器与存储器之间数据不可以直接传送,所以我们需要将DI中的数值传送到寄存器AL中过度,通过无符号乘法指令,进行移位,LED数码管上面显示的数字为24.然后将寄存器AL中的数据传送到存储器DI当中,DI=24,这样依次循环进行运算。
第四步进行除法运算。
仿真结果如图6-6所示。
图6-6除法仿真
在进行除法运算时,我们要对存储器DI、SI进行赋值,在进行第三步减法运算后未进行清零操作,所以存储器DI当中的数值为24,所以只需要给SI赋值为8,因为存储器与存储器之间数据不可以直接传送,所以我们需要将DI中的数值传送到寄存器AL中过度,通过无符号除法指令,进行移位,LED数码管上面显示的数字为3.然后将寄存器AL中的数据传送到存储器DI当中,DI=3,这样依次循环进行运算。
第五步进行清零操作。
仿真结果如图6-7所示。
图6-7清零仿真
进行清零操作,存储器DI中的初值为0,下次运算则需要重新对DI、SI进行赋值,按照四则运算的子程序循环运算。
7总结
本次设计的主要容是运用8088微型处理器设计模拟计算器系统,它的主要控制结构已经有了叙述。
在系统功能的实现过程中,慢慢的对微机原理这门学科有了更加深入的了解,使自己对学习这门学科的兴趣更加浓厚。
在硬件电路的设计中,最主要而是对硬件电路的构建,我们使用Proteus仿真软件进行构架,使用了8255A并行可编程控制器接口芯片电路。
在之前,对各个芯片的功能不了解,先是通过书本对它的基本功能、运行方式、和部结构进行了解,降低了我们硬件电路连接的难度。
接下来我们要对汇编语言的源程序进行编写,先要了解芯片的编程方式,各个芯片的地址线的分配,然后进行源程序编写。
编写时,我们逐渐发现了自己的问题。
。
其中对于指令的功能运用不够熟练,不能准确地进行编写,要不LED显示器不显示,要不显示结果为0。
在通过网络、书本查阅资料,并与老师同学进行讨论后将这些问题一一解决。
在做毕业设计的这段时间里,获益匪浅,然我懂得了不少新的知识。
将自己在课堂上学习的知识很好的与实际应用结合起来,对微机原理8088、8255A等芯片