8086简易计算器的设计 微机原理 计硬报告

计算机硬件技术实践报告

题目     简易计算器的设计       

姓名                       

专业       自动化(电站方向)      

班级                       

学号                      

上海电力学院自动化工程学院

实践报告内容(目录)

一.  设计题目

二.  开发目的

三.  小组成员分工及成果

四.  设计方案以及论证

五.  硬件原理图(包括芯片的选型介绍)

六.  程序流程图(包括各个子系统和子过程的程序流程)

七.  程序清单,要有适当的注释

八.  程序运行结果分析与预测

九.  结果评述或总结(对实验结果进行分析,对实验过程进行总结,系统改进升级建议或者提出新的方案等。)

一.设计题目:

用8086设计一个能实现0~9整数加法运算的计算器,并用2位LED数码显示. 键盘包括0-9,+ ,-,*,/,=,ON/C;共16个按键.能实现简单的清零操作,减法运算,乘法运算.

二.开发目的:

通过课程设计,熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。培养集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计熟练运用程序对8255控制键盘和LED显示的控制,完成计算器加减法的应用,并熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。

三.小组成员分工及成果:

本组的三个成员一起讨论研究简易计算器设计的主要方案。

粗略设计程序流程图以确定简易计算器设计的大概框架。

明确目的后各自查询资料了解设计原理、逐步清晰设计思路。

以下为大体分工:主要负责:1、设计主要程序,编写;

2、查找资料验证修改;

主要负责:1、选择需要用的各个芯片;

2、设计硬件原理图;

主要负责:1、各个芯片功能的资料查找;

               2、设计程序流程图

四.设计方案以及论证:

利用程序不断扫描所设的按钮键盘是不是有输入,如果没有就一直扫描,如果有就调用子程序进行判断,是数值则进行存储并同时进行显示,是运算符号等就调用相应的子程序进行操作,操作后则继续利用程序不断扫描键盘是不是有输入,从而实现部分十进制数的加、减、乘、除的运算。运算完成后根据程序将运算的结果储存到锁存器中并显示到LED显示器上。主要器件选择是采用8086CPU做主控制器,8255作为并行接口电路实现按键扫描以及数码管的显示。通过8255A的C口和A口实现键盘的接入,通过键盘的不断扫描,如果有键按下,通过查表法分别将输入的数据读到AL中并保存在第一个和第二个数里,将8255A的B端口接上共阴极LED灯,将输入的数据通过查表法,将四段码送共阴极LED灯显示,当按下‘=’时,通过判断字符,8086来实现不同的操作,并将结果在LED灯上显示,当按下“C”时,将数据先清零,同时LED灯上显示为“00”。

五.硬件原理图(包括芯片的选型介绍):

芯片选型及介绍:

(1)8086CPU:

8086通过数据总线、地址总线、控制总线完成对8253和8255的读写工作,与接口部件实现数据传送,让接口部件实现预计的功能.

8086CPU的40条引脚信号可按功能分可分为四类,它们是:地址总线,数据总线,控制总线,其它(时钟与电源)。

最小模式下一些引脚功能(MN/MX接+5V):

AD15~AD0,地址/数据总线

A19/S6~A16/S3,地址/状态总线

RD,读信号

WR,写信号

M/IO,存储器/输入输出控制信号

ALE,地址锁存允许信号

READY(Ready),准备就绪信号

INTR,可屏蔽中断请求信号

INTA,中断响应信号

NMI,非屏蔽中断请求信号

RESET,系统复位信号

DEN,数据允许信号

DT/R,数据发送/接收控制信号

HOLD,总线保持请求信号输入

HLDA,总线保持响应信号

TEST,测试信号

CLK,时钟输入信号

VCC(+5V),GND

(2)8255A可编程并行接口芯片:

Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。

8255A可为8086微处理器与外部设备之间提供并行输入/输出的通道。通过编程可以设置芯片的工作方式,并行接口是在多根数据线上,以数据字节/字与I/O设备交换信息。

8255A由数据总线缓冲器、读/写控制逻辑电路、A组和B组控制电路以及数据端口A、B和C组成。数据总线缓冲器是8255A与系统数据总线的接口,CPU输入输出的数据、CPU输出的控制字和外设的状态信息都是通过这个缓冲器传送的。读/写控制逻辑电路把CPU的控制命令或输出数据送至相应的端口,把外设的状态信息或输入数据通过相应的端口送至CPU。数据端口PA和PB都包含一个8位输出锁存器/缓冲器和一个8位输入锁存器,

(3)74HC373:

其中D0-D7为数据输入端,Q0-Q7为输出端。

当三态允许控制端OE为低电平时,Q0-Q7为正常逻辑状态,可用来驱动负载或总线,当OE为高电平时,Q0-Q7成高阻态,不驱动总线。

当锁存允许端LE为高电平时,Q随数据D而变,当LE为低电平D被锁存在已建立的数据电平。

(4)74HC138:

74HC138是一款高速CMOS器件,74HC138引脚兼容低功耗肖特基TTL(LSTTL)系列。

74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高,74HC138为反相输出,它按照三位二进制输入码和赋能输入条件,从8 个输出端中译出一个 低电平输出。两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器。

六.程序流程图:

七.程序清单

DATA SEGMENT

     NUM1   DB  03H DUP(0)

     NUM    DB  03H DUP(0)

DATA ENDS

STACK SEGMENT

      DW  100 DUP(0)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

PORTA  EQU 30H

PORTB  EQU 32H

PORTC  EQU 34H

PORT8255   EQU  36H

MAIN PROC  FAR

START:     MOV AX,DATA

           MOV DS,AX

           MOV DX,PORT8255

           MOV AL,81H

           OUT DX,AL

LOPL:      XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL

           CMP    AL,0FH

           JZ     CCCL

           CMP    AL,0AH

           JZ     LOPL

           JNC    LOPL

           OUT    32H,AL

LOPL2:

           LEA    SI,NUM

           MOV    [SI],AL

           PUSH   AX

LOPL1:     XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL1

           CMP    AL,0FH

           JZ     CCCL

           CMP    AL,0AH

           JZ     XX1

           CMP    AL,0BH

           JZ     XX2

           CMP    AL,0CH

           JZ     XX3D

           CMP    AL,0DH

           JZ     XX4D

           JMP    LOPL1

CCCL:      MOV    AL,00H

           OUT    32H,AL

           JMP    LOPL

XX3D:      CALL   XX3

XX4D:      CALL   XX4

MAIN ENDP

XX1  PROC

       NOP                             ;加

LOPL3:     XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL3

           CMP    AL,0FH

           JZ    CCCL

           CMP    AL,0AH

           JZ     LOPL3

           JNC    LOPL3

           OUT    32H,AL

           PUSH   AX

           LEA    SI,NUM

           MOV    [SI+1],AL

LOPL4:     XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL4

           CMP    AL,0FH

           JZ    CCCL

           CMP    AL,0EH

           JZ     XXX1

           JMP    LOPL4

XXX1:      LEA    SI,NUM

           MOV    AL,[SI]

           AND    AL,0FH

           MOV    DL,[SI+1]

           AND    DL,0FH

           ADD    AL,DL

           DAA

           OUT    32H,AL

           JMP    LOPL

XX1  ENDP

XX2  PROC

           NOP                             ;减

LOPL5:     XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL5

           CMP    AL,0FH

           JZ    CCCL

           CMP    AL,0AH

           JZ     LOPL5

           JNC    LOPL5

           OUT    32H,AL

           PUSH   AX

           LEA    SI,NUM

           MOV    [SI+1],AL

LOPL6:

           XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL6

           CMP    AL,0FH

           JZ    CCCL7

           CMP    AL,0EH

           JZ     XXX2

           JMP    LOPL6

XXX2:      LEA    SI,NUM

           MOV    AL,[SI]

           AND    AL,0FH

           MOV    DL,[SI+1]

           AND    DL,0FH

           SUB    AL,DL

           ADD    AL,00H

           DAA

           OUT    32H,AL

           JMP    LOPL

CCCL7:      MOV    AL,00H

           OUT    32H,AL

           JMP    LOPL

XX2  ENDP

XX3  PROC

LOPL7:     XOR    AH,AH

           CALL   KEY               ;乘

           CMP    AH,00H

           JZ     LOPL7

           CMP    AL,0FH

           JZ    CCCL2

           CMP    AL,0AH

           JZ     LOPL7

           JNC    LOPL7

           OUT    32H,AL

           PUSH   AX

           LEA    SI,NUM

           MOV    [SI+1],AL

LOPL8:     XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL8

           CMP    AL,0FH

           JZ    CCCL3

           CMP    AL,0EH

           JZ     XXX3

           JMP    LOPL8

XXX3:      LEA    SI,NUM

           MOV    AL,[SI]

           AND    AL,0FH

           MOV    DL,[SI+1]

           AND    DL,0FH

           MUL    DL

           AAM

           MOV    CL,4

           SAL    AH,CL

           OR     AL,AH

           OUT    32H,AL

           JMP    LOPL

CCCL2:      MOV    AL,00H

           OUT    32H,AL

           JMP    LOPL

CCCL3:      MOV    AL,00H

           OUT    32H,AL

           JMP    LOPL

XX3  ENDP

XX4  PROC                            ;除

LOPL9:     XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL9

           CMP    AL,0FH

           JZ    CCCL5

           CMP    AL,0AH

           JZ     LOPL9

           JNC    LOPL9

           OUT    32H,AL

           PUSH   AX

           LEA    SI,NUM

           MOV    [SI+1],AL

LOPL10:    XOR    AH,AH

           CALL   KEY

           CMP    AH,00H

           JZ     LOPL10

           CMP    AL,0FH

           JZ    CCCL4

           CMP    AL,0EH

           JZ     XXX4

           JMP    LOPL10

XXX4:      LEA    SI,NUM

           MOV    AL,[SI]

           AND    AL,0FH

           MOV    BL,[SI+1]

           AND    BL,0FH

           AND    AX,000FH

           DIV    BL

           OUT    32H,AL

           JMP    LOPL

CCCL4:      MOV    AL,00H

           OUT    32H,AL

           JMP    LOPL

CCCL5:      MOV    AL,00H

           OUT    32H,AL

           JMP    LOPL

XX4  ENDP

KEY     PROC

        NOP

        LEA SI,NUM1

        MOV AL,0EH

        OUT 30H,AL

        IN  AL,34H

        CMP AL,07H

        JZ  LL7

        CMP AL,0BH

        JZ  LL8

        CMP AL,0DH

        JZ  LL9

       CMP AL,0EH

       JZ  LDIV

SS1:    MOV AL,0DH

        OUT 30H,AL

        IN  AL,34H

        CMP AL,07H

        JZ  LL4

        CMP AL,0BH

        JZ  LL5

        CMP AL,0DH

        JZ  LL6

        CMP AL,0EH

        JZ  LMUL

SS2:    MOV AL,0BH

        OUT 30H,AL

        IN  AL,34H

        CMP AL,07H

        JZ  LL1

        CMP AL,0BH

        JZ  LL2

        CMP AL,0DH

        JZ  LL3

        CMP AL,0EH

        JZ  LSUB

SS3:    MOV AL,07H

        OUT 30H,AL

        IN  AL,34H

        CMP AL,07H

        JZ  SCLC

        CMP AL,0BH

        JZ  LL0

        CMP AL,0DH

        JZ  LEQU

        CMP AL,0EH

        JZ  LADD

        JMP KCLC

LDIV:   MOV AL,0DH

        JMP LCLC

LL0:    MOV AL,00H

        JMP LCLC

LL1:     MOV AL,01H

        JMP LCLC

LL2:     MOV AL,02H

        JMP LCLC

LL3:     MOV AL,03H

        JMP LCLC

LL4:     MOV AL,04H

        JMP LCLC

LL5:     MOV AL,05H

        JMP LCLC

LL6:     MOV AL,06H

        JMP LCLC

LL7:     MOV AL,07H

        JMP LCLC

LL8:     MOV AL,08H

        JMP LCLC

LL9:     MOV AL,09H

        JMP LCLC

LADD:   MOV AL,0AH

        JMP LCLC

LSUB:   MOV AL,0BH

        JMP LCLC

LMUL:   MOV AL,0CH

        JMP LCLC

LEQU:   MOV AL,0EH

        JMP LCLC

SCLC:   MOV AL,0FH

LCLC:   MOV [SI],AL

        MOV AH,01H

KCLC:

        RET

KEY     ENDP

CODE       ENDS

           END START

八.程序运行结果分析与预测:

连接完线路图后把编好的程序关联到8086CPU中进行运行调试,肯定可以实现加减乘除运算,例如3+8=11,通过按键分别输入“3”, “+”,“8”, “=”后,LED灯上将显示出“11”.能实现清零操作,当按下“ON/C”时,LED上显示“00”。如图

3+8=11

当输入“3”, “*”,“8”, “=”后,LED灯上将显示出“24”.如图

3*8=24

十.    结果评述:

本期刚学过微机原理,学得不是很深入,仅限于课本知识的掌握,而此次 课程设计将会是一个很好的机会,来考察自己对课本知识的掌握以及应用情况。本次课程设计是二到三人人一组,并且自由选择设计课题,我们小组选择了简易计算器的课题,在做的过程中也遇到很多困难。

通过本次课程设计实验我们初步接触了较复杂程序的设计。在实验中用程序对8255进行控制键盘和LED显示的控制,完成计算器加减法的应用。在程序编写中,明白和掌握程序的原理和实现方式。学习和掌握计算机中常用接口电路的应用和设计技术,充分认识理论知识对应用技术的指导性作用,进一步加强理论知识与应用相结合的实践和锻炼。通过这次设计实践使我们的设计水平和对所学的知识的应用能力以及分析问题解决问题的能力得到了全面提高.

我对微机原理有了进一步的理解,对8086、8255A的工作原理、用途以及使用时的注意事项等都有了深刻的认识,对这类的课程设计也从毫无概念到了有清晰的认识的转变,相信再做这类的课程设计时不会再迷茫、不知从何入手。

总之,这次课程设计对于我们有很大的帮助,我更加深入地理解了,微机原理课程上讲到的各种芯片的功能,以及引脚的作用,同时加深了对于主要芯片的应用的认识,同时在试验室的环境里熟悉了汇编程序的编写过程和运行过程,最后还提高了自己的动手能力。感谢老师的悉心指导。

相关推荐