微机原理课程设计简易计算器
- 格式:docx
- 大小:171.55 KB
- 文档页数:17
-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