微机原理与接口技术课程设计---模拟计算器设计.docx
《微机原理与接口技术课程设计---模拟计算器设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计---模拟计算器设计.docx(30页珍藏版)》请在冰点文库上搜索。
微机原理与接口技术
课程设计
题目:
模拟计算器设计
学 院:
电气工程学院
专 业:
测控技术及仪器
班 级:
09表2
-30-
成绩评定表
答辩成绩:
(占总成绩70%)平时成绩:
(占总成绩30%)
目 录
一、背景 4
二、硬件电路 4
2.1、CPU控制模块 4
2.2、键盘输入模块 7
2.4、可编程计数器/定时器 10
2.5、总原理图 11
2.3、可编程并行通信接口芯片8255A 7
三、软件设计框图 12
四、源程序 13
五、调试过程 28
六、课程设计体会 28
七、参考文献 29
摘要:
学了微型计算机原理与应用课程之后,为了巩固和检测所学知识,我
选择基于8088CPU的模拟计算器设计。
要完成设计首先需要构建简单的微型计算机应用系统,其次是确定组成各部件的芯片,然后画原理图并且用仿真软件仿真。
仿真正确后再连接硬件电路,电路连接完成后进行调试。
设计过程中我们用到了8088CPU、可编程计时器8253、可编程并行输入/输出芯片
8255A、74LS138、2*8矩阵式键盘、六位七段LED数码管。
原理图设计完成之后用PROTUES仿真软件对原理图进行了仿真得到了预期的结果。
我们的模拟计算器能实现5位十进制数以内的及减法运算和2位十进制数以内的乘除法运算。
关键词:
模拟计算器,8088CPU,PROTUES,8255A,74LS138,8253
一、背景:
随着电子技术的发展,微型计算机的应用的日益广泛和深入,接口技术有了迅速的发展,已成为直接影响微机系统功能和推广应用的关键。
微机接口技术是采用硬件与软件相结合的方法,研究微处理器如何与“外部世界”进行最佳连接,以实现CPU与“外部世界”进行高效可靠的信息交换的一门技术。
而如今接口技术正在逐渐改善着人们的学习、生活、工作,因此开发本系统希望能够给人们多带来一点生活上的乐趣,接口技术与计算的结合不断加深。
二、硬件电路:
硬件电路 键盘输入及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
公用信号引脚
名称
功能
引脚号
类型
AD15~AD0
地址/数据总线(分时复用)
2~16,39
双向,三态
A19/S6~A16/S3
地址/状态总线(分时复用)
35~38
输出,三态
BHE/S7(SSO)
数据总线高8位允许/状态
34
输出
MN/MX
最小/最大方式控制
33
输入
RD
读控制
32
输出
TEST
测试信号
23
输入
READY
存储器或I/O准备好信号
22
输入
RESET
系统复位
21
输入
NMI
不可屏蔽中断请求
17
输入
(上升沿触发)
INTR
可屏蔽中断请求
18
输入
CLK
系统时钟
19
输入
VCC
+5V电源
40
输入
GND
接地
1,20
输入
最小工作方式信号引脚
名称
功能
引脚号
类型
HOLD
总线保持请求信号
31
输入
HLDA
总线保持响应信号
30
输出
WR
写信号
29
输出,三态
M/IO(M/IO)
存储器/IO控制
28
输出,三态
DT/R
数据发送/接受
27
输出,三态
DEN
数据允许
26
输出,三态
ALE
地址锁存允许
25
输出
INTA
中断响应
24
输出
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)读/写控制部件
图2-3.8255A芯片图
8255A完成读/写控制功能的部件。
能接收CPU的控制命令,并根据控制命令向各个功能部件发出操作指令。
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.数据总线缓冲器
数据总线缓冲器与系统总线连接,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来选择。
D7D6D5D4D3D2D1D0CLK0OUT0GET0GND
24
23
22
21
20
1
2
3
4
5
+5v
WR
RD
CSA1
19
18
17
16
15
14
13
8253
6
7
8
9
10
11
12
A0CKL2GATE2OUT2CLK1GATE10UT1
图2-6、8253芯片图
5、总原理图
图2-7、PROTUES画出的总原理图
有无压键?
N
Y
Y
是数字键?
N
有标志?
N
加号?
Y
Y
N
Y
减号?
N
Y
乘号?
N
Y
放键?
除号?
Y
N
N
等号?
Y
N
Y
清零?
N
进行加、减、乘、除运算,存结果
清零显示器
显示扫描
设除标志
设乘标志
设减标志
设加标志
保存数据
清零显示器,清标志
显示扫描
8255A初始化
三、软件设计框图:
开始
四、源程序:
一、源程序
STACKSEGMENTSTCAK
DB64DUP(?
)STACKENDS
DATA SEGMENT
ORG3000H
VAR1DB00H,01H,02H,03H,04H
VAR2DB3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FH,3FHVAR3DB00H,00H,00H,00H,00H,00H,00H,00H,00H,00HVAR4DB00H,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
DATA ENDSCODE SEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKSTART:
MOVAX,DATA
MOVDS,AXMOVAL,88H
OUT63H,AL ;82255A初始化
MOVBX,0000H ;BX清零
STT:
MOVAL,00H ;键盘测试
OUT61H.ALNEXT:
INAL,62H
ANDAL,0C0HCMPAL,0C0HJNZKEYABC
CALLDISP ;调用显示程序
JMP STT
KEYABC:
CALLTIME ;延时,去抖动
IN AL,62HAND AL,0C0HCMP AL,0C0HJNZ KEY
JMP STT
KEY:
MOV AL,0FEH ;键盘扫描识别
OUT 61H,ALIN AL,62HTESTAL,80HJNZ KEY_0CALLKEY8JMP STTK
KEY_0:
TESTAL,40H
JNZ KEY_9CALLKEY0JMP STTK
KEY_9:
MOV AL,0FDH
OUT 61H,ALIN AL,62HTESTAL,80HJNZ KEY_1CALLKEY9JMP STTK
KEY_1:
TESTAL,40H
JNZ KEY_ACALLKEY1JMP STTK
KEY_A:
MOV AL,0FBH
OUT 61H,ALIN AL,62HTESTAL,80HJNZ KEY_2CALLKEYAJMP STTK
KEY_2:
TESTAL,40H
JNZ KEY_BCALLKEY2JMP STTK
KEY_B:
MOV AL,0F7H
OUT 61H,ALIN AL,62HTESTAL,80HJNZ KEY_3CALLKEYBJMP STTK
KEY_3:
TESTAL,40H
JNZ KEY_CCALLKEY3JMP STTK
KEY_C:
MOV AL,0EFH
OUT 61H,ALIN AL,62HTESTAL,80HJNZ KEY_4CALLKEYCJMP STTK
KEY_4:
TESTAL,40H
JNZ KEY_DCALLKEY4JMP STTK
KEY_D:
MOV AL,0DFH
OUT 61H,ALIN AL,62HTESTAL,80HJNZ KEY_5CALLKEYDJMP STTK
KEY_5:
TESTAL,40H
JNZ KEY_DCALLKEY5JMP STTK
KEY_E:
MOV AL,0BFH
OUT 61H,ALIN AL,62HTESTAL,80HJNZ KEY_6CALLKEYEJMP STTK
KEY_6:
TESTAL,40H
JNZ KEY_FCALLKEY6JMP STTK
KEY_F:
MOV AL,07FH
OUT 61H,ALIN AL,62H
TEST
AL,80H
JNZ
KEY_7
CALL
KEYF
JMP
STTK
KEY_7:
TEST
AL,40H
JNZ
KEY_71
CALL
KEY7
JMP
STTK
KEY_71:
JMP
KEY9:
CMP
STTK
BH,00H
;按键9处理子程序
JZ
KEY9_1
;未按过符号键,不清零
CALL
CLEAR
;已按过符号键,清零
KEY9_1:
CALL
LP1
;低4位字节前移
MOV
AL,6FH
;最低字节输入一个数据
MOV
[SI+4],AL
MOV
AL,09H
MOV
CALL
[DI+4],AL
DISP
;显示
RET
;返回
KEY8:
CMP
BH,00H
;按键8处理子程序
JZ
KEY8_1
CALL
CLEAR
KEY8_1:
CALL
LP1
MOV
AL,7FH
MOV
[SI+4],AL
MOV
AL,08H
MOV
[DI+4],AL
CALL
DISP
RET
KEY7:
CMP
BH,00H
;按键7处理子程序
JZ
KEY7_1
CALL
CLEAR
KEY7_1:
CALL
LP1
MOV
AL,07H
MOV
[SI+4],AL
MOV
AL,07H
MOV
[DI+4],AL
CALL
DISP
RET
KEY6:
CMP
BH,00H
;按键6处理子程序
JZ
KEY6_1
CALL
CLEAR
KEY6_1:
CALL
LP1
MOV
AL,7DH
MOV
[SI+4],AL
MOV
AL,06H
MOV
[DI+4],AL
CALL
DISP
RET
KEY5:
CMP
BH,00H
;按键5处理子程序
JZ
KEY5_1
CALL
CLEAR
KEY5_1:
CALL
LP1
MOV
AL,6DH
MOV
[SI+4],AL
MOV
AL,05H
MOV
[DI+4],AL
CALL
DISP
RET
KEY4:
CMP
BH,00H
;按键4处理子程序
JZ
KEY4_1
CALL
CLEAR
KEY4_1:
CALL
LP1
MOV
AL,66H
MOV
[SI+4],AL
MOV
AL,04H
MOV
[DI+4],AL
CALL
DISP
RET
KEY3:
CMP
BH,00H
;按键3处理子程序
JZ
KEY3_1
CALL
CLEAR
KEY3_1:
CALL
LP1
MOV
AL,4FH
MOV
[SI+4],AL
MOV
AL,03H
MOV
[DI+4],AL
CALL
DISP
RET
KEY2:
CMP
BH,00H
;按键2处理子程序
JZ
KEY2_1
CALL
CLEAR
KEY2_1:
CALL
LP1
MOV
AL,5BH
MOV
[SI+4],AL
MOV
AL,02H
MOV
[DI+4],AL
CALLDISPRET
KEY1:
CMP BH,00H ;按键1处理子程序
JZ KEY1_1CALLCLEAR
KEY1_1:
CALLLP1
MOV AL,06HMOV [SI+4],ALMOV AL,01HMOV [DI+4],ALCALLDISP
RET
KEY0:
CMP BH,00H ;按键0处理子程序JZ KEY0_1
CALLCLEAR
KEY0_1:
CALLLP1
MOV AL,3FHMOV [SI+4],ALMOV AL,00HMOV [DI+4],ALCALLDISP
RET
KEY+:
CMP BH,00H ;按键+号处理子程序
JNZ KEYA_1
CALLLP3 ;保存输入的数据
KEYA_1:
MOV
BX,0101H
;设置符号标志
RET
;返回
KEY-:
CMP
JNZ
BH,00H
KEYB_1
;按键-号处理子程序
CALL
LP3
;保存输入的数据
KEYB_1:
MOV
BX,0102H
;设置符号标志
RET
;返回
KEY*:
CMP
BH,00H
;按键*号处理子程序
JNZ
CALL
KEYC_1
LP3
;保存输入的数据
KEYC_1:
MOV
BX,0103H
;设置符号标志
RET
;返回
KEY/:
CMP
BH,00H
;按键/号处理子程序
JNZ
CALL
KEYD_1
LP3
;保存输入的数据
KEYD_1:
MOV
BX,0104H
;设置符号标志
RET
;返回
KEY=:
MOV
BH,01H
;按键=号处理子程序
CMP
BL,01H
;是+号?
JZ
K1
;进行加法运算
CMP
BL,02H
;是-号?
JZ
K2
;进行减法运算
CMP
BL,03H
;时*号?
JZ
K3
;进行乘法运算
CMP
BL,04H
;是/号?
JZ
K4
;进行除法运算
STTE:
RET
K1:
CALL
ADD1
JMP
STTE
K2:
CALL
SUB1
JMP
STTE
K3:
CALL
MUL1
JMP
STTE
K4:
CALLDIV1JMP STTE
RET
CLEAR:
MOV
SI,OFFSET
VAR2
MOVMOV
CLEAR1:
MOV
DI,OFFSETCX,000AH
AL,3FH
VAR3
KEYON/C:
CALLCLEAR ;按键C(清零)处理子序
;数据清零子程序
MOV [SI],ALMOV AL,00HMOV [DI],ALINC SI
INC DILOOPCLEAR1MOV BH,00HRET
ADD1:
MOV SI,OFFSETVAR3; ;加法子程序
MOV DI,OFFSETVAR4CLC
MOV CX,0005HADD_1:
MOV AL,[DI]
ADC AL,[SI]AAA
MOV [DI],ALINC SI
INC DILOOPADD_1CALLCHANGECALLDISP
RET
SUB1:
MOV SI,OFFSETVAR3 ;减法子程序
MOV DI,OFFSETVAR4CLC
MOV CX,0005HSUB_1:
MOV AL,[DI]
MOV CL,[SI]AAS
MOV [DI],ALINC SI
INC DILOOPSUB_1CALLCHANGECALLDISPRET
MUL1:
MOV SI,OFFSETVAR3 ;乘法子程序
MOV DI,OFFSETVAR4MOV AL,[DI]
MOV CL,[SI]MUL CL
AAM
MOV[DI+5],AXMOVAL,[DI+1]MULCL
AAM
ADD AL,[DI+6]AAA
MOV [DI+6],AXMOV AL,[DI]
MOV CL,[SI+1]MUL CL
AAM
MOV[SI+5],AXMOVAL,[DI+1]MULCL
AAM
ADD AL,[SI+6]AAA
MOV [SI+6],AXMOV AL,[DI+5]MOV [DI],ALMOV AL,[DI+6]ADD AL,[SI+5]AAA
MOV[DI+1],ALMOVAL,[DI+7]ADCAL,[SI+6]AAA
MOV [DI+2],ALMOV AL.00HADC AL,[SI+7]AAA
MOV [DI+3],ALCALLCHANGECALLDISP
RET
DIV1:
MOV SI,OFFSETVAR3 ;除法子程序
MOV DI,OFFSETVAR4
MOV
AH,00H
MOV
AL,[DI+1]
MOV
CK,[SI]
DIV
CL
MOV
[DI+1],AL
MOV
AL,[DI]
AAD
DIV
CL
MOV
[DI],AL
CALL
CHANGE
CALL
DISP
LP1:
RE