微机原理课程设计简易计算器

  • 格式:docx
  • 大小:171.55 KB
  • 文档页数:17

下载文档原格式

  / 17
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

-O一一〜二O—二学年第一学期

信息科学与工程学院

自动化系

课程设计计划书

二o—年十二月六日

一、课题名称

简易计算器设计

二、课题目的

利用8088和8255设计一个简易计算器,并将其结果显示在LED数码管上。熟悉系统设计的基本步骤,掌握8088与8255的接口设计,掌

握通过8255设计键盘扫描技术,掌握通过8255显示七段共阴极数码管

设计。加强对8088数据总线,地址总线及接口寻址的理解,加深对

8255的端口控制的理解。

三、需求分析

(1)能够实现99以内的加减乘法运算,并显示在2位LED上。

(2)对于减法运算产生的负数,可在LED上显示号,若负量超过9,则显示“E0S

四、方案选择

方案一:

该方案将LED显示电路直接接在8088的DB上,而键盘则采用8255进行扫描。

方案二:

该方案则是将LED显示电路和键盘扫描电路分别接在两

个不同的8255上,扫描和显示时,选中不同的8255。

方案三:

该方案则只用一片8255驱动LED显示和键盘扫描电路。

方案评估:

方案一:LED显示驱动电路实现起来较简单,但是很浪费系统总线资

源,舍弃!

方案二:释放了系统数据总线,但是方案缺乏经济性,因为采用了两片

8255,与建设资源节约型社会初衷冲突!舍弃!

方案三:此种方案较为经济,方便,具有模块化的特点(因为将计算和

显示电路全部集成在了8255上,应用时,直接挂接8255

即可实现要求!)

综上所述:采用方案三!

五、程序流程图

程序总流程图:

判断输入流程图: 断电

开始I

六. 系统原理图

键盘映射图:

键盘编码图:

系统原理图:

注:1、复位电路单独画在旁边,其参数设置符合6MHZo

2、74HC04反相器由于位置不够,本人自己画了一个小型的

74HC04。

3、IOW, IOR信号线由于采用了最大系统组态,故由8288的IORC 和AIOWC 代替。

4.8088的CLK由8284A提供,其电路连接方式参照Datasheet

5、最大系统组态连接方式参照课本。

6、LED与键盘扫描电路的上拉电阻阻值统一采用,保证数码管有足够亮度。

7、所有芯片的电源和GND均未标出。

8、7段数码管为共阴极连接方式。

9、74LS373和74LS245作为提高总线驱动能力的作用而存在。

10、8259A的INT信号和8088的INTR信号相连,由于纸张大小问题,用网络标号“INT8259A”表明他们是相连的。

11、CAD图纸见附件。

七、元件清单

A.程序源代码

PAGE 60J32

TITLECalculator A program to calculate with 8088 and 8255

DI SPLAY MACRO ;送至LED 显示函数

OUT DX,AL MOV DX, 381H

; B 端口的地址送DX

MOV AL,HIGH NUM ;段码送至B 端口显示 OUT DX,AL MOV DX,383H OUT DX.AL

OUT DX.AL

JMP Allscan.Key ;显示完成,跳至键盘扫描 ENDM

MOV BX,AX

MOV DX,383H

;控制字寄存器的端口地址(8255) MOV AL,80H ;方式选择字B MOV AL,80H ;方式选择字B

MOV DX,382H ;C 端口地址送DX

MOV AL,LOW NUM

;段码送至C 端口显示

CALC DIV

TEN

MOV DX,AX

CBW

MOV BX,AX MOV CL,LED[BX] MOV HIGH NUM,CL MOV AX,DX XCHG AH,AL

CBW

;计算结果并存至HIGH NUM,LOW NUM 中

;除10取余和商分别显示 ;保存计算结果 ;将商AL 符号扩展至AX

;高位段码送至HIGH NUM (乘结果)

:交换AH 和AL,将余数放在AL 准备符号扩展 ;将余数AL 符号扩展至AX

MACRO

MOV CH ・LED[BX]

MOV LOW NUM, CH ;低位段码送至LOW NUM (乘结果)

ENDM

■ «■■■» MMB w MM

«■■■ MMM MMV •■• •■» «■* f

・MODEL SMALL

;程序大小为SMALL 数据段和代码段均小于64KB ・STACK 100

;堆栈大小100个字 • DATA ;数据段

KEYTAB DB 0E7H,0D7H•ODBH ,ODDH.0B7H,OBBH,ODBH

;键盘编码0~9 * + -=

DB 77H,7BH.7DH,7EH•OBEH ,ODEH.OEEH

LED DB 3FH,06H•5BH ,4FH.66H.6DH,7DH,07H.7FH,6FH :LED 显 示字模(共阴极)

OPERAND

DB 0 ;用于存放运算符号 TEN

DB 10 NUM1 DB

1

0 ;用于存放第一个计算数

J NUM2 DB 0 ;用于存放第二个计算数

HIGH NUM DB 0 :用于存放结果的高位段码

LOW NUM

DB 0

;用于存放结果的低位段码 .CODE

MAIN PROC FAR

MOV AX,©data ;代码段 :主程序开始 ;将05指向DATA

MOV DS,AX ;控制字寄存器地址的端口地址(8255) ;方式控制字B ;端口 A 的地址送DX ;送0,全键盘扫描

Alisean Key :

MOV DX,383H

MOV AL,80H

OUT DX.AL

MOV DX.380H

XOR AL,AL

OUT DX.AL MOV DX.383H