微机原理模拟计算器设计课程设计.docx

上传人:b****1 文档编号:696647 上传时间:2023-04-29 格式:DOCX 页数:29 大小:350.74KB
下载 相关 举报
微机原理模拟计算器设计课程设计.docx_第1页
第1页 / 共29页
微机原理模拟计算器设计课程设计.docx_第2页
第2页 / 共29页
微机原理模拟计算器设计课程设计.docx_第3页
第3页 / 共29页
微机原理模拟计算器设计课程设计.docx_第4页
第4页 / 共29页
微机原理模拟计算器设计课程设计.docx_第5页
第5页 / 共29页
微机原理模拟计算器设计课程设计.docx_第6页
第6页 / 共29页
微机原理模拟计算器设计课程设计.docx_第7页
第7页 / 共29页
微机原理模拟计算器设计课程设计.docx_第8页
第8页 / 共29页
微机原理模拟计算器设计课程设计.docx_第9页
第9页 / 共29页
微机原理模拟计算器设计课程设计.docx_第10页
第10页 / 共29页
微机原理模拟计算器设计课程设计.docx_第11页
第11页 / 共29页
微机原理模拟计算器设计课程设计.docx_第12页
第12页 / 共29页
微机原理模拟计算器设计课程设计.docx_第13页
第13页 / 共29页
微机原理模拟计算器设计课程设计.docx_第14页
第14页 / 共29页
微机原理模拟计算器设计课程设计.docx_第15页
第15页 / 共29页
微机原理模拟计算器设计课程设计.docx_第16页
第16页 / 共29页
微机原理模拟计算器设计课程设计.docx_第17页
第17页 / 共29页
微机原理模拟计算器设计课程设计.docx_第18页
第18页 / 共29页
微机原理模拟计算器设计课程设计.docx_第19页
第19页 / 共29页
微机原理模拟计算器设计课程设计.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微机原理模拟计算器设计课程设计.docx

《微机原理模拟计算器设计课程设计.docx》由会员分享,可在线阅读,更多相关《微机原理模拟计算器设计课程设计.docx(29页珍藏版)》请在冰点文库上搜索。

微机原理模拟计算器设计课程设计.docx

微机原理模拟计算器设计课程设计

 

课程设计任务书

 

课程名称微机原理及应用

院部名称机电工程学院

专业电气工程及其自动化

班级吴映阳

指导教师李国利

 

金陵科技学院教务处制

摘要

学了微型计算机原理与应用课程之后,为了巩固和检测所学知识,我选择基于8088CPU的模拟计算器设计。

要完成设计首先需要构建简单的微型计算机应用系统,其次是确定组成各部件的芯片,然后画原理图并且用仿真软件仿真。

仿真正确后再连接硬件电路,电路连接完成后进行调试。

设计过程中我们用到了8088CPU、可编程计时器8253、可编程并行输入/输出芯片8255A、74LS138、2*8矩阵式键盘、六位七段LED数码管。

原理图设计完成之后用PROTUES仿真软件对原理图进行了仿真得到了预期的结果。

我们的模拟计算器能实现5位十进制数以内的及减法运算和2位十进制数以内的乘除法运算。

关键词:

模拟计算器,8088CPU,PROTUES,8255A

 

一、概述……………………………………………………………………………4

二、硬件电路………………………………………………………………………4

2.1、CPU控制模块…………………………………………………………………4

2.2、键盘输入模块…………………………………………………………………6

2.3、可编程并行通信接口芯片8255A……………………………………………7

2.4、可编程计数器/定时器……………………………………………………8

2.5、总原理图……………………………………………………………………9

三、软件设计框图……………………………………………………………………10

四、源程序……………………………………………………………………………11

五、调试过程…………………………………………………………………………26

六、课程设计体会……………………………………………………………………26

七、参考文献…………………………………………………………………………27

 

模拟计算器设计

一、概述

设计思路:

首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现5位十进制数以内的及减法运算和2位十进制数以内的乘除法运算。

运算完成后将运算的结果储存并显示到LED显示器上。

二、硬件电路设计

硬件电路键盘输入及LED数码管通过8255A接口与系统总线连接,键盘的16个按键组成8*2矩阵,其中8根矩阵线作为8255A的输出线与PB7~PB0连接,2根矩阵线作为8255A的输入线与PC7、PC6连接。

键盘采用逐次扫描原理,16个按键中0~9座位数字健,+、-、*、/、=作为加、减、乘、除和等号功能键,C为清零键。

1、

CPU控制模块

16位微处理器,内含29000个晶体管,时钟频率为4.77MHz,地址总线为20位,可使用1MB内存。

8088内部数据总线都是16位,外部数据总线是8位。

 

图1-1.8284时钟发生器图1-2.8088CPU

 

2、键盘输入模块

键盘是常用信息输入元件,其实键盘也是由一个个按钮组成,如果是独立按钮的话必须要需要一个I/O口对它进行检测,而键盘往往这需要键盘按钮数一半的I/O口数对它进行检测,也许对一个比较简单的系统I/O口数一般不是问题,但对于一个大型、复杂的系统来说I/O资源就显得非常珍贵了,尽量减少I/O使用是非常利于降低成本,另外一方面键盘比用独立按键要美观。

我们设计时使用的是8*2行列式键盘,如图2-1所示。

图中有8行2列,8根行线与PA口相连,2根列线与PC口的PC6、PC7相连。

PA、PB口要么全部输入或输出。

PC口可以进行输入和输出。

按键设置在行、类交点处(数字或字符为其键号),行、列线分别连接到按键开关的两端。

当列线通过上拉电阻接+5V时,就被钳位在高电平状态。

键盘中有无按键按下是由行线送入全扫描字、列线读入行线状态来判断。

这就是:

给航线所有I/O线均置成低电平,然后读入列线电平状态。

如国有按键盘下,总会有一根列线电平被拉至低电平,从而使列线输入不全为1。

图2-1键盘电路图2-2数码管电路

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的控制命令,并根据控制命令向各个功能部件发出操作指令。

图2-3.8255A芯片图

CS片选信号:

由CPU输入,有效时表示该8255A被选中。

RD,WR读、写控制信号:

由CPU输入。

RD有效表示CPU读8255A,WR有效表示CPU写8255A。

RESET复位信号:

由CPU输入。

RESET信号有效,清除8255A中所有控制字寄存器内容,并将各个端口置成输入方式。

图2-4.8255A内部结构

定义工作方式控制字:

工作方式0:

8255A中各端口的基本输入/输出方式。

 

图2-5.8255A工作方式控制

4、可编程计数器/定时器

8253具有3个独立的计数通道,采用减1计数方式。

在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。

当计数脉冲是已知周期的时钟信号时,计数就成为定时。

 

(1)、8253内部结构

  8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。

  1.数据总线缓冲器

图2-6、8253芯片图

  数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。

这是8253与CPU之间的数据接口,它由8位双向三态缓冲寄存器构成,是CPU与8253之间交换信息的必经之路。

  2.读/写控制

读/写控制分别连接系统的IOR和IOW,由CPU控制着访问8253的内部通道。

接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。

A1A0:

端口选择信号,由CPU输入。

8253内部有3个独立的通道和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。

这4个端口地址由最低2位地址码A1、A0来选择。

5、总原理图

图2-7、PROTUES画出的总原理图

 

三、软件设计框图

四、源程序

一、源程序

STACKSEGMENTSTCAK

DB64DUP(?

STACKENDS

DATASEGMENT

ORG3000H

VAR1DB00H,01H,02H,03H,04H

VAR2DB3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH

VAR3DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

VAR4DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00H

TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,

71H

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,SS:

STACK

START:

MOVAX,DATA

MOVDS,AX

MOVAL,88H

OUT63H,AL;82255A初始化

MOVBX,0000H;BX清零

STT:

MOVAL,00H;键盘测试

OUT61H.AL

NEXT:

INAL,62H

ANDAL,0C0H

CMPAL,0C0H

JNZKEYABC

CALLDISP;调用显示程序

JMPSTT

KEYABC:

CALLTIME;延时,去抖动

INAL,62H

ANDAL,0C0H

CMPAL,0C0H

JNZKEY

JMPSTT

KEY:

MOVAL,0FEH;键盘扫描识别

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_0

CALLKEY8

JMPSTTK

KEY_0:

TESTAL,40H

JNZKEY_9

CALLKEY0

JMPSTTK

KEY_9:

MOVAL,0FDH

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_1

CALLKEY9

JMPSTTK

KEY_1:

TESTAL,40H

JNZKEY_A

CALLKEY1

JMPSTTK

KEY_A:

MOVAL,0FBH

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_2

CALLKEYA

JMPSTTK

KEY_2:

TESTAL,40H

JNZKEY_B

CALLKEY2

JMPSTTK

KEY_B:

MOVAL,0F7H

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_3

CALLKEYB

JMPSTTK

KEY_3:

TESTAL,40H

JNZKEY_C

CALLKEY3

JMPSTTK

KEY_C:

MOVAL,0EFH

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_4

CALLKEYC

JMPSTTK

KEY_4:

TESTAL,40H

JNZKEY_D

CALLKEY4

JMPSTTK

KEY_D:

MOVAL,0DFH

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_5

CALLKEYD

JMPSTTK

KEY_5:

TESTAL,40H

JNZKEY_D

CALLKEY5

JMPSTTK

KEY_E:

MOVAL,0BFH

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_6

CALLKEYE

JMPSTTK

KEY_6:

TESTAL,40H

JNZKEY_F

CALLKEY6

JMPSTTK

KEY_F:

MOVAL,07FH

OUT61H,AL

INAL,62H

TESTAL,80H

JNZKEY_7

CALLKEYF

JMPSTTK

KEY_7:

TESTAL,40H

JNZKEY_71

CALLKEY7

JMPSTTK

KEY_71:

JMPSTTK

KEY9:

CMPBH,00H;按键9处理子程序

JZKEY9_1;未按过符号键,不清零

CALLCLEAR;已按过符号键,清零

KEY9_1:

CALLLP1;低4位字节前移

MOVAL,6FH;最低字节输入一个数据

MOV[SI+4],AL

MOVAL,09H

MOV[DI+4],AL

CALLDISP;显示

RET;返回

KEY8:

CMPBH,00H;按键8处理子程序

JZKEY8_1

CALLCLEAR

KEY8_1:

CALLLP1

MOVAL,7FH

MOV[SI+4],AL

MOVAL,08H

MOV[DI+4],AL

CALLDISP

RET

KEY7:

CMPBH,00H;按键7处理子程序

JZKEY7_1

CALLCLEAR

KEY7_1:

CALLLP1

MOVAL,07H

MOV[SI+4],AL

MOVAL,07H

MOV[DI+4],AL

CALLDISP

RET

KEY6:

CMPBH,00H;按键6处理子程序

JZKEY6_1

CALLCLEAR

KEY6_1:

CALLLP1

MOVAL,7DH

MOV[SI+4],AL

MOVAL,06H

MOV[DI+4],AL

CALLDISP

RET

KEY5:

CMPBH,00H;按键5处理子程序

JZKEY5_1

CALLCLEAR

KEY5_1:

CALLLP1

MOVAL,6DH

MOV[SI+4],AL

MOVAL,05H

MOV[DI+4],AL

CALLDISP

RET

KEY4:

CMPBH,00H;按键4处理子程序

JZKEY4_1

CALLCLEAR

KEY4_1:

CALLLP1

MOVAL,66H

MOV[SI+4],AL

MOVAL,04H

MOV[DI+4],AL

CALLDISP

RET

KEY3:

CMPBH,00H;按键3处理子程序

JZKEY3_1

CALLCLEAR

KEY3_1:

CALLLP1

MOVAL,4FH

MOV[SI+4],AL

MOVAL,03H

MOV[DI+4],AL

CALLDISP

RET

KEY2:

CMPBH,00H;按键2处理子程序

JZKEY2_1

CALLCLEAR

KEY2_1:

CALLLP1

MOVAL,5BH

MOV[SI+4],AL

MOVAL,02H

MOV[DI+4],AL

CALLDISP

RET

KEY1:

CMPBH,00H;按键1处理子程序

JZKEY1_1

CALLCLEAR

KEY1_1:

CALLLP1

MOVAL,06H

MOV[SI+4],AL

MOVAL,01H

MOV[DI+4],AL

CALLDISP

RET

KEY0:

CMPBH,00H;按键0处理子程序

JZKEY0_1

CALLCLEAR

KEY0_1:

CALLLP1

MOVAL,3FH

MOV[SI+4],AL

MOVAL,00H

MOV[DI+4],AL

CALLDISP

RET

KEYA:

CMPBH,00H;按键+号处理子程序

JNZKEYA_1

CALLLP3;保存输入的数据

KEYA_1:

MOVBX,0101H;设置符号标志

RET;返回

KEYB:

CMPBH,00H;按键-号处理子程序

JNZKEYB_1

CALLLP3;保存输入的数据

KEYB_1:

MOVBX,0102H;设置符号标志

RET;返回

KEYC:

CMPBH,00H;按键*号处理子程序

JNZKEYC_1

CALLLP3;保存输入的数据

KEYC_1:

MOVBX,0103H;设置符号标志

RET;返回

KEYD:

CMPBH,00H;按键/号处理子程序

JNZKEYD_1

CALLLP3;保存输入的数据

KEYD_1:

MOVBX,0104H;设置符号标志

RET;返回

KEYE:

MOVBH,01H;按键=号处理子程序

CMPBL,01H;是+号?

JZK1;进行加法运算

CMPBL,02H;是-号?

JZK2;进行减法运算

CMPBL,03H;时*号?

JZK3;进行乘法运算

CMPBL,04H;是/号?

JZK4;进行除法运算

STTE:

RET

K1:

CALLADD1

JMPSTTE

K2:

CALLSUB1

JMPSTTE

K3:

CALLMUL1

JMPSTTE

K4:

CALLDIV1

JMPSTTE

KEYF:

CALLCLEAR;按键C(清零)处理子序

RET

CLEAR:

MOVSI,OFFSETVAR2;数据清零子程序

MOVDI,OFFSETVAR3

MOVCX,000AH

CLEAR1:

MOVAL,3FH

MOV[SI],AL

MOVAL,00H

MOV[DI],AL

INCSI

INCDI

LOOPCLEAR1

MOVBH,00H

RET

ADD1:

MOVSI,OFFSETVAR3;;加法子程序

MOVDI,OFFSETVAR4

CLC

MOVCX,0005H

ADD_1:

MOVAL,[DI]

ADCAL,[SI]

AAA

MOV[DI],AL

INCSI

INCDI

LOOPADD_1

CALLCHANGE

CALLDISP

RET

SUB1:

MOVSI,OFFSETVAR3;减法子程序

MOVDI,OFFSETVAR4

CLC

MOVCX,0005H

SUB_1:

MOVAL,[DI]

MOVCL,[SI]

AAS

MOV[DI],AL

INCSI

INCDI

LOOPSUB_1

CALLCHANGE

CALLDISP

RET

MUL1:

MOVSI,OFFSETVAR3;乘法子程序

MOVDI,OFFSETVAR4

MOVAL,[DI]

MOVCL,[SI]

MULCL

AAM

MOV[DI+5],AX

MOVAL,[DI+1]

MULCL

AAM

ADDAL,[DI+6]

AAA

MOV[DI+6],AX

MOVAL,[DI]

MOVCL,[SI+1]

MULCL

AAM

MOV[SI+5],AX

MOVAL,[DI+1]

MULCL

AAM

ADDAL,[SI+6]

AAA

MOV[SI+6],AX

MOVAL,[DI+5]

MOV[DI],AL

MOVAL,[DI+6]

ADDAL,[SI+5]

AAA

MOV[DI+1],AL

MOVAL,[DI+7]

ADCAL,[SI+6]

AAA

MOV[DI+2],AL

MOVAL.00H

ADCAL,[SI+7]

AAA

MOV[DI+3],AL

CALLCHANGE

CALLDISP

RET

DIV1:

MOVSI,OFFSETVAR3;除法子程序

MOVDI,OFFSETVAR4

MOVAH,00H

MOVAL,[DI+1]

MOVCK,[SI]

DIVCL

MOV[DI+1],AL

MOVAL,[DI]

AAD

DIVCL

MOV[DI],AL

CALLCHANGE

CALLDISP

RET

LP1:

MOVCX,0004H;数据移位保存子程序(4位)

MOVSI,OFFSETVAR2

MOVDI,OFFSETVAR3

LP2:

MOVAL,[SI+3]

MOV[SI+4],AL

MOVAL,[DI+3]

MOV[DI+4],AL

DECSI

DECDI

LOOPLP2

RET

LP3:

MOVCX,0005H;保存上一次数据子程序

MOVSI,OFFSETVAR3

MOVDI,OFFSETVAR4

LP4:

MOVAL,[SI]

MOV[DI],AL

DECSI

DECDI

LOOPLP4

RET

CHANGE:

MOVSI,OFFSETVAR2

MOVDI,OFFSETVAR3

MOVBX,OFFSETTABLE

MOVCX,0005H

COMP0:

MOVAL,[DI]

XLAT

MOV[SI],AL

INCSI

INCDI

LOOPCOMP0

RET

DISP:

MOVSI,OFFSETVAR1

MOVDI,OFFSETVAR2

MOVDL,[DI+4]

CMP3FH

JNZDIR4

MOVDL,[DI+3]

CMPDL,3FH

JNZDIR3

MOVDL,[DI+2]

CMPDL,3EH

JNZDIR2

MOVDL,[DI+1]

CMPDL,3FH

JNZDIR1

JMPDIR0

DIR4:

MOVCX,0005H

JMPDIR

DIR3:

MOVCX,0004H

JMPDIR

DIR2:

MOVCX,0003H

JMPDIR

DIR1:

MOVCX,0002H

JMPDIR

DIR0:

MOVCX,0001H

DIR:

MOVAL,[SI]

OUT62H,AL

MOVAL,[DI]

OUT60H,AL

CALLTIME

INCSI

INCDI

LOOPDIR

RET

TIME:

PUSHAX

PUSHCX

MOVCX,0040H

TIME1:

MOVAX,0300H

TIME2:

DECAX

JNZTIME2

LOOPTIME1

POPCX

POPAX

RET

STTK:

CALLDISP;放键测试程序

MOVAL,00H

OUT61H,AL

INAL,62H

ANDAL,0C0H

CMPAL,0C0H

JNZSTTK

JMPSTT

CODEENDS

ENDSTART

五:

调试过程

1.对设计原理图进行电气检查。

主要针对电路连接中的电气连接进行检查,并生成对应电路的网表。

特别是对电路节点的连接检查。

2.对设计的程序进行语法检查。

检查程序中存在的语法错误。

编译连接并下载到芯片中。

3.对设计进行综合调试。

对下载到芯片中的程序进行功能检查。

直到完成设计要求的功能。

六:

课程

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 临时分类 > 批量上传

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2