简易计算器的设计.docx

上传人:b****6 文档编号:11896014 上传时间:2023-06-03 格式:DOCX 页数:29 大小:546.16KB
下载 相关 举报
简易计算器的设计.docx_第1页
第1页 / 共29页
简易计算器的设计.docx_第2页
第2页 / 共29页
简易计算器的设计.docx_第3页
第3页 / 共29页
简易计算器的设计.docx_第4页
第4页 / 共29页
简易计算器的设计.docx_第5页
第5页 / 共29页
简易计算器的设计.docx_第6页
第6页 / 共29页
简易计算器的设计.docx_第7页
第7页 / 共29页
简易计算器的设计.docx_第8页
第8页 / 共29页
简易计算器的设计.docx_第9页
第9页 / 共29页
简易计算器的设计.docx_第10页
第10页 / 共29页
简易计算器的设计.docx_第11页
第11页 / 共29页
简易计算器的设计.docx_第12页
第12页 / 共29页
简易计算器的设计.docx_第13页
第13页 / 共29页
简易计算器的设计.docx_第14页
第14页 / 共29页
简易计算器的设计.docx_第15页
第15页 / 共29页
简易计算器的设计.docx_第16页
第16页 / 共29页
简易计算器的设计.docx_第17页
第17页 / 共29页
简易计算器的设计.docx_第18页
第18页 / 共29页
简易计算器的设计.docx_第19页
第19页 / 共29页
简易计算器的设计.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

简易计算器的设计.docx

《简易计算器的设计.docx》由会员分享,可在线阅读,更多相关《简易计算器的设计.docx(29页珍藏版)》请在冰点文库上搜索。

简易计算器的设计.docx

简易计算器的设计

学号:

课程设计

 

题目

简易计算器的设计

学院

自动化

专业

电气工程及其自动化

班级

姓名

指导教师

2014

1

9

课程设计任务书

学生姓名:

专业班级:

指导教师:

工作单位:

自动化学院

题目:

简易计算器的设计

初始条件:

用8086CPU、8255A并行通信接口、七段LED数码管接口、小键盘控制电路接口、外围电路芯片及元器件实现一个简易计算器,完成相应的程序编写。

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

(1)可进行2位十进制的加减乘除法运算。

(2)键盘输入数据,同时LED数码管显示,模拟计算器的工作。

(3)键盘上要求有0~9数字键,+、-、×、÷、=功能键,清除键C。

(4)撰写课程设计说明书。

内容包括:

摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:

设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

时间安排:

12月26日-----12月28日查阅资料及方案设计

12月29日-----1月2日编程

1月3日-----1月7日调试程序

1月8日-----1月9日撰写课程设计报告

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

本科生课程设计成绩评定表

摘要

这次微机原理的课程设计的题目是简易计算器的设计,设计一个可以实现2位十进制加减乘除运算功能的电路,并用LED显示出来。

硬件部分采用芯片8086CPU,74LS138译码器,并行接口芯片8255A,四位七段LED数码管,和小键盘组成。

4×4小键盘作为输入,该小键盘上有0~9、+、-、*、/和清零C共16个按键构成的;四位七段LED数码管作为输出显示,数码管采用的是共阳极的数码管;8086CPU作为运算处理核心来完成计算器的主要功能,包括计算数据、数据保存、发出控制信号等;用8255A并行通行接口来完成本次计算器系统的接口电路,而74LS138译码器、或门电路以及导线是用来产生并行接口芯片8255的片选信号,产生接口电路的端口地址,其中8255的A0、A1分别接CPU的A1、A2而使它的端口地址为偶地址。

本次设计的软件部分是采用8086汇编语言来完成的,主要通过读写端口来实现键值的输入和显示数字的输出,依靠乘法运算指令来实现计算器的计算。

硬件电路完成后,用protues进行方真,得到结果。

关键词:

计算器小键盘数码显示键盘扫描protues仿真

简易计算器的设计

1设计的任务及要求

初始条件:

用8086CPU、8255A并行通信接口、七段LED数码管接口、小键盘控制电路接口、外围电路芯片及元器件实现一个简易计算器,完成相应的程序编写。

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

(1)可进行2位十进制的加减乘除法运算。

(2)键盘输入数据,同时LED数码管显示,模拟计算器的工作。

(3)键盘上要求有0~9数字键,+、-、×、÷、=功能键,清除键C。

(4)撰写课程设计说明书。

内容包括:

摘要、目录、正文、参考文献、附录(程序清单)。

正文部分包括:

设计任务及要求、方案比较及论证、软件设计说明(软件思想,流程,源程序设计及说明等)、程序调试说明和结果分析、课程设计收获及心得体会。

 

2方案的设计

2.1方案设计论证

如下是两种方案的原理方框图:

方案一:

 

8086CPU

译码电路

8255并行通信接口

8255并行通信接口

四位七段数码管

4*4

小键盘

图2.1计算器的组成方框图方案一

方案二:

 

图2.2计算器的组成方框图方案二

方案评估:

方案一:

释放了系统数据总线,但是方案缺乏经济性,因为采用了两片8255,浪费资源,舍弃!

方案二:

此种方案较为经济,方便,具有模块化的特点,因为将计算和显示电路全部集成在了8255上,应用时,直接挂接8255即可实现要求!

2.2方案概述与原理硬件电路图

对上面框图2.2的方案二的概述:

本次设计的简易计算器系统是由8086CPU、8255A并行通信接口芯片、四位七段LED数码管、小键盘、74LS138译码器芯片及部分门电路芯片组成,系统组成方框图如图2.2所示。

整个计算器系统通过4×4小键盘控制接口输入需要计算的原始数据和运算符号,这些数据经过8255A并行通信接口输入给8086CPU并保存起来,CPU接收数据后根据不同的运算符来处理数据,然后CPU把运算处理后的数据经过8255A并行通信接口输出给给四位七段LED数码管,最后后数码管把接收到的数据显示在数码管屏幕上,而74LS138译码器和相应的或门是给8255提供译码片选信号而设计的,只有CPU输出8255选通的地址才能使8255处于正常工作模式,系统才能有效工作。

整个计算器系统的详细电路图如下图2.3

图2.3简易计算器硬件电路图

3系统模块与功能

3.18086CPU芯片

8086CPU芯片是本次简易计算器系统的核心部件,其主要功能包括完成数据的加减乘

除运算,把需要显示的十六进制数转换成与之对应在数码管上显示的十六进制代码,配合

小键盘形成不同键值对应的特定十六进制代码。

在该次计算器系统中,8086CPU工作在最

小模式,通过AD0~AD7八位地址/数据总线接口与8255A并向通信接口交换计算器系统中所有数据,而数据的交换方向是通过RD和WR输出的低电平有效控制信号来控制的,同时CPU执行系统所有软件程序,控制着系统中其他部件的工作。

由于只是简单操作,这次设计我们让8086工作在最小模式下,即MN/MX为高电平。

8086cpu引脚图如图3.1所示:

图3.18086cpu引脚图

3.28255A并行通信接口芯片

 8255A并行通信接口芯片,如图3.2所示,是8255芯片的引脚图,其具有数据缓冲和锁存作用,可以让多个外设同时工作而又互不干扰,同时也解决了高速CPU与低速外设的工作不同步问题。

 

图3.28255芯片引脚图

8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。

端口都是8位,都可以作为输入或输出。

有三种工作方式:

方式0,方式1,和方式2。

其中方式0,工作在无条件传输方式下,A,B,C端口都适用,方式1,工作在异步或条件查询方式下,只有A,B端口适用,方式2,是双向传输方式,仅A端口适用。

有两个控制端口,A组和B组,其中A组由A口与C高4位组成;B组由B端口和C口低4位组成。

在本次计算器系统中,8255A工作在0方式下,PA口、PB口和PC口的低四位输出,PC口高四位输入,其控制口输入的控制字为88H,PA口接七段LED数码管的阴极,PB口的低四位接数码管的四个阳极,PC口接4×4小键盘的八个接口。

工作方式0:

8255A中各端口的基本输入/输出方式如图3.3:

 

图3.38255A工作方式控制

3.3译码电路

译码电路由一片74LS138译码器和一个或门电路组成,根据译码器及或门的接线知道8255被选通的条件是AD0、AD3、AD4、AD5、AD7低电平有效,AD6高电平有效,而AD1和AD2分别接8255的A0和A1,故经过译码后8255的控制口、PA口、PB口、PC口端口地址分别是40H、42H、44H、46H。

3.4小键盘电路

4×4小键盘是计算器系统的输入部件,其功能是输入计算器系统中的所有运算数据以及运算符号。

小键盘上有16个按键分为四行四列,相当于如下的电路图3.4,每一个按键就相当于是一个开关,每当按键被按下,该开关就闭合了,于是位于该行与该列的两接线在键盘部闭合。

本次计算器系统让小键盘的纵向接口从分别与PC口低四位PC2、PC1、PC0、PC3相连,横向接口从左向右分别与PC口高四位PC4、PC5、PC6、PC7相连,由于PC口的高四位为输入而低四位为输出,CPU可以向PC口置数使得PC口的高四位与低四位的状态不同,每当有按键按下,PC口的高四位的状态就会通过接通的按键开关被PC口的低四位改变,按下的键不同改变后的值就不同,从而就对应不同的键值,于是根据这种特定的对应关系就可以确定按下的键的值了。

其中的键值映射图如图3-1和3-2:

图3.44*4计算器的原理等效电路

表3-1键盘映射图表3-2键盘编码图

7

8

9

/

4

5

6

*

1

2

3

-

ON/C

0

=

+

0EBH

0DBH

0BBH

7BH

0EDH

0DDH

0BDH

7DH

0EEH

0DEH

0BEH

7EH

0E7H

0D7H

0B7H

7EH

 

3.5四位七段LED数码管显示电路

七段LED数码管是由8个发光二极管组成,分别是数字部分a~g和小数点部分dp,通过LED的不同亮灭组合就可以显示出不同的数。

七段LED数码管分为两种,分别为共阳极和共阴极,两者极性接法相反,在这里具体介绍共阳极七段LED数码管,共阳极七段LED数码管是把8个发光二极管的阳极连在一起由一个公共端口VCC引出,阴极互不干扰分别引出8个端口a~g和dp,由LED的导通发光原理可知只有阳极输入为高电平时数码管才能正常显示,而显示的具体数字由8个阴极输入不同电平组合决定。

本次计算器系统要求的是两位十进制数的运算,运算结果最多为四位,故在这里采用四位共阳极七段LED数码管来构成显示电路,显示电路让四位七段LED数码管的公共阴极a~g和dp依次连接8255的PA0~PA7,四个阳极VCC从低位到高位分别与PB0~PB3相连,故PB0~PB3的输出高电平有效,分别决定数码管低位到高位的显示;而PA0~PA6的输出决定显示的数字,PA7输出控制小数点,低电平有效,具体数字显示对应的输出信号如表3-3所示。

表3-3不带小数点数字显示对应输出表

显示的数

0

1

2

3

4

5

6

7

8

9

PA输出

0C0H

0F9H

0B4H

0B0H

99H

92H

82H

0F8H

80H

90H

4软件设计框图与程序

4.1计算器系统程序总体流程图

如图4.1所示。

开始

初化8255、清零

无键按下?

下?

键盘逐步扫描,获取值hb

键值是符号?

根据符号做运算

无运算结果?

运算结果存入sum

输入第二个数?

第一个数存入sum

第二个数存入sum

显示sum中的数

结束

N

Y

NN

N

Y

N

Y

N

Y

图4.1计算器系统总体程序流程图

4.2模块程序流程图与程序

4.2.1流程图

键值程序获取是通过键盘逐行扫描,扫描不同行时赋给C口的值不同,从上到下分别是0FEH、0FDH、0FBH、0F7H,按下不同的键在读C口时得到不同的数,然后根据这个数确定对应的键值,键值对应的C口读数关系如表3-1和3-2所示,该段程序流程图如图4.2所示。

N

扫描键盘开始

赋初值DH=0F0H循环次数CX=4,

DH送给C口,读入C口程序

AH=0F0H?

CX-1=0?

根据AL确定按下的值,将之存入BH,转入display程序。

ROLDH,1

N

Y

图4.2计算器键盘扫描流程图

4.2.2键盘扫描程序

MOVCX,4

MOVDH,0FEH

KEYSCAN:

ADDFLAGSHU,1

MOVAL,DH

OUT44H,AL

INAL,44H

MOVAH,AL

ANDAH,0F0H

CMPAH,0F0H

JNEGETKEY

ROLDH,1

LOOPKEYSCAN;键盘逐行扫描

4.3输入运算

4.3.1输入运算的流程图

数据运算模块程序是通过判断运算符标志缓存内容来决定进行哪种运算的,清零运算

是把运算符标志和数据缓存清零初始化,加减乘除运算是保存第一个输入运算数准备输入

第二个运算数,等号运算是根据加减乘除运算标志符来进行相应的加减乘除运算并保存结

果,该部分程序流程图如图4.3所示

根据符号判断做那种运算

开始运算

清零C?

是‘=’?

是’+、-、*、/’?

将结果存入sum,清零缓存。

转入displaysum

清零数据,缓存。

第一个数存入sum

转入keycheck

Y

N

N

Y

Y

N

图4.3计算器系统运算程序流程图

4.3.2输入运算程序

DISPLAYSHU:

CMPFLAGSHU,1

JGDISPLAYSHU

MOVSUM,BH

MOVSUM1,BH

JMPDISPLAYSUM

DISPLAYSHU1:

MOVAL,SUM1

MOVBL,0AH

MULBL

ADDAL,BH

MOVSUM1,AL

MOVSUM,AL

JMPDISPLAYSUM

DISPLAY:

CMPBH,0AH

JLDISPLAYSHU

MOVAL,0C0H

OUT40H,AL

MOVAL,0FH

OUT42H,AL

CALLDELAY

MOVFLAGSHU,0

CMPFLAGCLR,1

JECLRFA

CMPFLAGDENG,1

JEDENGFA

CMPFLAGMUL,1

JECHENGFA

4.4显示部分

4.4.1显示部分流程图

四位七段LED数码管的显示并非同时显示的,而是从高位到地位逐位显示的,但指令的执行周期是非常短的且人眼的观察存在视觉停留不能差别先后,而人眼所能观察到的最短时间是相对比较长的,因而程序中每次显示都设计有时间延迟程序。

同时先要设计程序把要显示的数分解成个、十、百、千分别保存起来,然后逐位显示,整个显示部分的模块程序流程图如图4.4所示

图4.4计算器键盘扫描流程图

4.4.2显示部分程序

DISPLAYSUM:

MOVAX,SUM

MOVDX,0

MOVBX,3E8H

DIVBX

MOVQIAN,AL

MOVAX,DX

MOVBL,64H

DIVBL

MOVBAI,AL

MOVAL,AH

MOVAH,0

MOVBL,0AH

DIVBL

MOVSHI,AL

MOVGE,AH

MOVAL,QIAN

MOVBL,OFFSETTAB

XLAT

OUT40H,AL

OUT42H,8H

CALLDELAY

MOVAL,BAI

XLAT

OUT40H,AL

OUT42H,4H

CALLDELAY

MOVAL,SHI

XLAT

OUT40H,AL

OUT42H,2H

CALLDELAY

MOVAL,GE

XLAT

OUT40H,AL

OUT42H,1H

CALLDELAY

JMPKEYCHECK

 

5系统仿真

本次实验是基于protues里面的仿真,我们将硬件电路图,在protues器件库里面找到相应的芯片,并按照电路图连接如图5.1,连接好电路图,将编好的程序转化成hex格式,导入到8086cpu里面,然后点击仿真,运行。

图5.1protues连线图

图5.1protues仿真图

小结与体会

通过本次微机原理与接口技术课程设计,我更深入的掌握了在《微机原理与接口技术》

理论课上学习到的各种基本控制理论,了解学习了很多课堂上没有涉及的知识,锻炼了我

多方面的能力,以下是我本次设计的具体体会。

(1)通过理论联系实际的真实设计,我更加深入的了解了汇编语言的编程思想,学会了用汇编语言编写一些不太复杂的应用程序。

通过本次设计,我深深的体会到汇编语言是一门接近硬件的语言,它与C语言等其他高级语言有很大不同,往往在高级语言很容易实现的功能通过汇编来实现很复杂,比如说C语言编写加减乘除运算只需要简单的一两条语句,而汇编语言编写需要很复杂的程序段来实现;但汇编语言有它的长处,汇编语言的运行速度比其他高级语言更快,对于实现硬件功能有着极大的优越性。

(2)本次课程设计由于所设计的知识涉及很广,许多设计中的硬件工作方式以及功能的实现方法都是我以往并不知道的,这迫使我去查阅许多相关资料文献,学习相关知识,这些不但使我学习了许多新的知识,而且锻炼了我独立学习新知识的能力。

(3)我还通过本次设计锻炼了我独立思考和动手解决控制系统实际问题的能力,由于我们的设计是以小组为单位,如果一个小组不能很好的配合工作学习是不能把设计做好的,这些都锻炼了我与其他同学互相配合、互相帮助的团队协作能力。

参考文献

[1]彭虎,周佩玲,傅忠谦编著.微机原理与接口技术(第2版).北京:

电子工业出版

社,2008

[2]沈美明,温东婵编著.IBM-PC汇编语言程序设计(第2版).北京:

清华大学出版社,2001

[3]潘新民,王燕芳编著.微型计算机控制技术.北京:

高等教育出版社,2001

[4]段承先编著.微型计算机原理及接口技术.北京:

兵器工业出版社,2000

[5]黄国建,虞平良,曾芬芳编著.微型机算机应用技术.上海:

上海交通大学出版

社,1995

附录

附录一

程序代码:

DATASEGMENT

TABDB0C0H,0F9H,0B4H,0B0H,99H,92H,82H,0F8H,80H,90H

FLAGSHUDB0

FLAGMULDB0

FLAGCLRDB0

FLAGDENGDB0

SUMDW0

SUM1DB0

SUM2DB0

QIANDB0

BAIDB0

SHIDB0

GEDB0

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

MOVAX,DATA

MOVDS,AX

MOVAL,88H;8255初始化10001000

OUT46H,AL;46H,44H,42H,40H分别为8255控制口,PC,PB,PA

XORBH,BH

KEYCHECK:

MOVAL,0F0H

OUT44H,AL

INAL,44H

CMPAL,0F0H

JEDISPLAY

CALLDELAY;去抖动

CMPAL,0F0H

JEDISPLAY

MOVCX,4;循环4次

MOVDH,0FEH

KEYSCAN:

ADDFLAGSHU,1

MOVAL,DH

OUT44H,AL

INAL,44H

MOVAH,AL

ANDAH,0F0H

CMPAH,0F0H

JNEGETKEY

ROLDH,1

LOOPKEYSCAN;键盘逐行扫描

GETKEY:

;获取键盘值

CMPAL,0EEH;第一行

JEL1

CMPAL,0DEH

JEL2

CMPAL,0BEH

JEL3

CMPAL,7EH

JELJIA

CMPAL,0EDH;第二行

JEL4

CMPAL,0DDH

JEL5

CMPAL,0BDH

JEL6

CMPAL,7DH

JELJIAN

CMPAL,0EBH;第三行

JEL7

CMPAL,0DBH

JEL8

CMPAL,0BBH

JEL9

CMPAL,7BH

JELDENG

CMPAL,0E7H;第四行

JEL0

CMPAL,0D7H

JELCHENG

CMPAL,0B7H

JELCHU

JMPLCLR

L1:

;1按下

MOVBH,1

JMPDISPLAY

L2:

;2按下

MOVBH,2

JMPDISPLAY

L3:

;3按下

MOVBH,3

JMPDISPLAYLJIA:

;+按下

MOVBH,0AH

JMPDISPLAY

L4:

;4按下

MOVBH,4

JMPDISPLAY

L5:

;5按下

MOVBH,5

JMPDISPLAY

L6:

;6按下

MOVBH,6

JMPDISPLAY

LJIAN:

;-按下

MOVBH,0BH

JMPDISPLAY

L7:

;7按下

MOVBH,7

JMPDISPLAY

L8:

;8按下

MOVBH,8

JMPDISPLAY

L9:

;9按下

MOVBH,9

JMPDISPLAY

LDENG:

;=按下

MOVBH,0CH

MOVFLAGDENG,1

JMPDISPLAYL0:

;0按下

MOVBH,0

JMPDISPLAY

LCHENG:

;*按下

MOVBH,0DH

MOVFLAGMUL,1

JMPDISPLAY

LCHU:

;/按下

MOVBH,0EH

JMPDISPLAY

LCLR:

;清零C按下

MOVBH,0FH

MOVFLAGCLR,1

JMPDISPLAY

DISPLAY:

CMPBH,0AH

JLDISPLAYSHU

MOVAL,0C0H

OUT40H,AL

MOVAL,0FH

OUT42H,AL

CALLDELAY

MOVFLAGSHU,0

CMPFLAGCLR,1

JECLRFA

CMPFLAGDENG,1

JEDENGFA

CMPFLAGMUL,1

JECHENGFA

JMPKEYCHECK

CHENGFA:

;+按下

MOVAL,SUM1

MOVSUM2,AL

JMPKEYCHECK

CLRFA:

;清零

MOVSUM,0

MOVSUM1,0

MOVSUM2,0

MOVFLAGMUL,0

MOVFLAGDENG,0

MOVFLAGCLR,0

JMPKEYCHECK

DENGFA:

;=按下

MOVBL,SUM2

MOVAL,SUM1

MULBL

MOVSUM2,AX

MOVSUM,AX

MOVFLAGYMUL,0

JMPDISPLAYSUM

DISPLAYSHU:

;输入第一个数显示

CMPFLAGSHU,1

JGDISPLAYSHU

MOVS

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2