8086简易计算器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、设计题目及目的
本次课程设计的实验目的是:通过该实验掌握较复杂程序的设计;能独立完成用程序对8086、8255A控制键盘和LED显示的控制,完成计算器加减法的应用;独立编写程序,明白和掌握程序的原理和实现方式;学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用;进一步加强理论知识与应用相结合的实践和锻炼,为以后的设计提供经验。这次设计实践,加深了我对专业知识和理论知识学习的认识和理解,使我的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到全面提高。我们的具体任务是用8086设计一个能实现0~9整数加减乘除法的运算器,并用2位LED数码显示,键盘包括0-9,+ ,-,×,÷,=,NO/C共16个按键。
二、小组成员分工及成果
在实验课程要求下,我们选择基于8086CPU的模拟计算器设计。要完成设计首先需要构建简单的微型计算机应用系统,其次是确定组成各部件的芯片,然后画原理图,根据相应的原理以及实现过程,编写出相应的汇编代码。再根据原理图连接硬件电路,电路连接完成后进行调试。设计过程中我们用到了8086CPU、可编程并行输入/输出芯片8255A、
74HC138、74HC373、矩阵式键盘、LED数码管。我们的模拟计算器能实现2位十进制数以内的加减乘除法运算。
首先,本组的三个成员一起讨论研究简易计算器设计的主要方案。
粗略设计程序流程图以确定简易计算器设计的大概框架。
明确目的后各自查询资料了解设计原理、逐步清晰设计思路。
以下为大体分工:主要负责:1、设计主要程序,编写;
2、查找资料验证修改;
主要负责:1、选择需要用的各个芯片;
2、设计硬件原理图;
主要负责:1、各个芯片功能的资料查找;
2、设计程序流程图
三、设计方案思路
用8086设计一个能实现0~9整数加减乘除法的运算器,并用2位LED数码显示,键盘包括0-9,+ ,-,×,÷,=,NO/C共16个按键。
1、通过小键盘做加减乘除运算。
2、数码管显示器作输入数据和结果数据的显示。
3、数字用小键盘0~9,“C、+、-、×、÷、= ”做功能键
4、运算顺序:a.首先输入一个原始数据(在0~9之间,否则无反应)显示器跟随显示
b.按“+、-、×、÷”显示器内容不变
c.再次输入一个数据(在0~9之间,否则无反应)显示器跟随显示
d.按“=”显示器显示结果数据
e.按C显示“00”数据清0,并重新开始运算
f.若输入一个数据后直接按“=”则数据不变
设计思路:
将整个程序划分为键盘扫描部分,显示部分,运算程序部分。首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现运算。运算完成后将运算的结果储存并显示到LED显示器上。
软件流程大致如下:开始,然后是系统的初始化,进行键盘扫描,对扫描的键值进行判断(分为数字键和功能键),若为数字键,则执行数字键处理程序,即显示数字并将数值存储;若为功能键,则先判断是否为清屏,如是清屏,则执行清屏子程序,如是加减乘除运算键则调用相应程序运算,如是等号键,则先判断上个符号位,调用相对应的运算子程序进行运算,如此就可以得到需要的结果了。
四、硬件原理图(包括芯片的选型介绍)
硬件电路图:(见图1)
图1 原理图
1、键盘输入模块
键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要对应一个I/O口对它进行检测,而键盘往往只需要键盘按钮数一半的I/O口对它进行检测,也许对一个比较简单的系统I/O口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显得非常珍贵了,尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观,同时硬件上的节省必然导致软件上编程的复杂。我们设计时使用的是4*4式键盘,如图2所示。
图2 键盘
图中有4行4列,4根行线与PC口相连,4根列线与PA口相连。按键设置在行、列交点处(数字或字符为其键号),行、列线分别连接到按键开关的两端。键盘中有无按键按
下是由行线送入全扫描字、列线读入行线状态来判断。这就是:给行线所有I/O线均置成
低电平,然后读入列线电平状态。如果有按键按下,总会有一根列线电平被拉至低电平,
从而使列线输入不全为1。
2、可编程并行通信接口芯片8255A
图3 8255A
(1)并行输入/输出端口A,B,C
8255A内部包括三个8位的输入输出端口,分别是端口A、端口B、端口C,相应信号线是PA7~PA0、PB7~PB0、PC7~PC0。端口都是8位,都可以作为输入或输出。通常将端
口A和端口B定义为输入/输出的数据端口,而端口C则既可以作数据端口,又可以作为端口A和端口B的状态和控制信息的传送端口。
(2)A组和B组控制部件
端口A和端口C的高4位(PC7~PC4)构成A组;由A组控制部件实现控制功能。端
口B和端口C的低4位(PC3~PC0)构成B组;由B组控制部件实现控制功能。 A组和B
组利用各自的控制单元来接收读写控制部件的命令和CPU通过数据总线(D0~D7)送来的
控制字,并根据他们来定义各个端口的操作方式。
(3)数据总线缓冲存储器
三态双向8位缓冲器,是8255A与8086CPU之间的数据接口。与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。
(4) 读/写控制部件
8255A是能完成读/写控制功能的部件。能接收CPU的控制命令,并根据控制命令向各
个功能部件发出操作指令。
CS 片选信号:由CPU输入,有效时表示该8255A被选中。
RD, WR 读、写控制信号:由CPU输入。RD有效表示CPU读8255A,WR有效表示CPU
写8255A
RESET 复位信号:由CPU输入。RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。