计算机硬件技术实践报告题目简易计算器的设计姓名专业自动化(电站方向)班级学号上海电力学院自动化工程学院实践报告内容(目录)一. 设计题目二. 开发目的三. 小组成员分工及成果四. 设计方案以及论证五. 硬件原理图(包括芯片的选型介绍)六. 程序流程图(包括各个子系统和子过程的程序流程)七. 程序清单,要有适当的注释八. 程序运行结果分析与预测九. 结果评述或总结(对实验结果进行分析,对实验过程进行总结,系统改进升级建议或者提出新的方案等。
)一. 设计题目:用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 SEGMENTNUM1 DB 03H DUP(0) NUM DB 03H DUP(0) DATA ENDSSTACK SEGMENTDW 100 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK PORTA EQU 30HPORTB EQU 32HPORTC EQU 34HPORT8255 EQU 36HMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV DX,PORT8255MOV AL,81HOUT DX,ALLOPL: XOR AH,AHCALL KEYCMP AH,00HJZ LOPLCMP AL,0FHJZ CCCLCMP AL,0AHJZ LOPLJNC LOPLOUT 32H,ALLOPL2:LEA SI,NUMMOV [SI],ALPUSH AXLOPL1: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL1CMP AL,0FHJZ CCCLCMP AL,0AHJZ XX1CMP AL,0BHJZ XX2CMP AL,0CHJZ XX3DCMP AL,0DHJZ XX4DJMP LOPL1 CCCL: MOV AL,00HOUT 32H,ALJMP LOPLXX3D: CALL XX3XX4D: CALL XX4MAIN ENDPXX1 PROCNOP ;加LOPL3: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL3CMP AL,0FHJZ CCCLCMP AL,0AHJZ LOPL3JNC LOPL3OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],ALLOPL4: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL4CMP AL,0FHJZ CCCLCMP AL,0EHJZ XXX1JMP LOPL4XXX1: LEA SI,NUMMOV AL,[SI]AND AL,0FHMOV DL,[SI+1]AND DL,0FHADD AL,DLDAAOUT 32H,ALJMP LOPLXX1 ENDPXX2 PROCNOP ;减LOPL5: XOR AH,AHCALL KEYCMP AH,00HCMP AL,0FHJZ CCCLCMP AL,0AHJZ LOPL5JNC LOPL5OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],ALLOPL6:XOR AH,AHCALL KEYCMP AH,00HJZ LOPL6CMP AL,0FHJZ CCCL7CMP AL,0EHJZ XXX2JMP LOPL6XXX2: LEA SI,NUMMOV AL,[SI]AND AL,0FHMOV DL,[SI+1]AND DL,0FHSUB AL,DLADD AL,00HDAAOUT 32H,ALJMP LOPLCCCL7: MOV AL,00HOUT 32H,ALJMP LOPLXX2 ENDPXX3 PROCLOPL7: XOR AH,AHCALL KEY ;乘 CMP AH,00HJZ LOPL7CMP AL,0FHJZ CCCL2CMP AL,0AHJNC LOPL7OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],ALLOPL8: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL8CMP AL,0FHJZ CCCL3CMP AL,0EHJZ XXX3JMP LOPL8XXX3: LEA SI,NUMMOV AL,[SI]AND AL,0FHMOV DL,[SI+1]AND DL,0FHMUL DLAAMMOV CL,4SAL AH,CLOR AL,AHOUT 32H,ALJMP LOPLCCCL2: MOV AL,00HOUT 32H,ALJMP LOPLCCCL3: MOV AL,00HOUT 32H,ALJMP LOPLXX3 ENDPXX4 PROC ;除LOPL9: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL9CMP AL,0FHJZ CCCL5CMP AL,0AHJZ LOPL9JNC LOPL9OUT 32H,ALPUSH AXLEA SI,NUMMOV [SI+1],AL LOPL10: XOR AH,AHCALL KEYCMP AH,00HJZ LOPL10CMP AL,0FHJZ CCCL4CMP AL,0EHJZ XXX4JMP LOPL10 XXX4: LEA SI,NUMMOV AL,[SI] AND AL,0FHMOV BL,[SI+1] AND BL,0FHAND AX,000FH DIV BLOUT 32H,ALJMP LOPL CCCL4: MOV AL,00H OUT 32H,ALJMP LOPL CCCL5: MOV AL,00H OUT 32H,ALJMP LOPLXX4 ENDPKEY PROCNOPLEA SI,NUM1MOV AL,0EHOUT 30H,ALIN AL,34HCMP AL,07HJZ LL7CMP AL,0BHJZ LL8CMP AL,0DHCMP AL,0EH JZ LDIVSS1: MOV AL,0DH OUT 30H,AL IN AL,34H CMP AL,07H JZ LL4CMP AL,0BH JZ LL5CMP AL,0DH JZ LL6CMP AL,0EH JZ LMUL SS2: MOV AL,0BH OUT 30H,AL IN AL,34H CMP AL,07H JZ LL1CMP AL,0BH JZ LL2CMP AL,0DH JZ LL3CMP AL,0EH JZ LSUB SS3: MOV AL,07H OUT 30H,AL IN AL,34H CMP AL,07H JZ SCLCCMP AL,0BH JZ LL0CMP AL,0DH JZ LEQUCMP AL,0EH JZ LADDJMP KCLC LDIV: MOV AL,0DH JMP LCLCLL0: MOV AL,00H JMP LCLCLL1: MOV AL,01H JMP LCLCLL2: MOV AL,02HLL3: MOV AL,03H JMP LCLCLL4: MOV AL,04H JMP LCLCLL5: MOV AL,05H JMP LCLCLL6: MOV AL,06H JMP LCLCLL7: MOV AL,07H JMP LCLCLL8: MOV AL,08H JMP LCLCLL9: MOV AL,09H JMP LCLC LADD: MOV AL,0AH JMP LCLC LSUB: MOV AL,0BH JMP LCLC LMUL: MOV AL,0CH JMP LCLCLEQU: MOV AL,0EH JMP LCLC SCLC: MOV AL,0FH LCLC: MOV [SI],AL MOV AH,01H KCLC:RETKEY ENDPCODE ENDSEND START八.程序运行结果分析与预测:连接完线路图后把编好的程序关联到8086CPU中进行运行调试,肯定可以实现加减乘除运算,例如3+8=11,通过按键分别输入“3”, “+”,“8”, “=”后,LED灯上将显示出“11”.能实现清零操作,当按下“ON/C”时,LED上显示“00”。