文档库

最新最全的文档下载
当前位置:文档库 > 微机原理与接口技术课程设计报告加减计数器完整版

微机原理与接口技术课程设计报告加减计数器完整版

目录

1.课程设计题目 (1)

2.课程设计任务及要求 (1)

3.总体方案与设计说明 (1)

4.硬件电路设计及描述 (3)

5.软件设计流程及描述 (6)

6.源程序代码 (8)

7.系统调试 (12)

8.结论与说明 (13)

9.课程设计体会 (13)

10.参考文献 (13)

一.课程设计题目

加减计数器设计

二.课程设计任务及要求

通过键盘输入0到9之间的数字,可以在LED灯上显示出来;通过键盘进行简单的9之内的加减运算;运算过程和结果在LED灯上显示出来。

三.总体方案与设计说明

3.1 通过小键盘做加减运算。

七段数码管显示器作输入数据和结果数据的显示。

3.2 数字用小键盘0~9,R,P,M,G作功能键

R开始运算(包括撤销运算),显示‘0'

p+

m-

g=

E退出返回dos

3.3 运算顺序:

a.输入一原始数据显示器跟随显示

b.按+或-显示器内容不变

c.再输入一数据,显示器跟随显示。

d.按=显示器显示结果数据,当超出能显示的最大值,显示F(溢出)

e.按R重新开始运算

f.按E,结束退出

设计思路:首先利用程序不断扫描键盘是不是有输入,如果没有就一直扫描,如果有就停止扫描,完成输入,利用汇编的程序核对输入键的数值,通过调用子程序实现2位十

进制数以内的及减法运算。运算完成后将运算的结果储存并显示到LED显示器上。

四.硬件电路设计及描述(含所需器件、硬件原理图)

4.1硬件电路

键盘输入及LED数码管通过8255A接口与系统总线连接,键盘的16个按键组成8*2矩阵,其中8根矩阵线作为8255A的输出线与PB7~PB0连接,2根矩阵线作为8255A的输入线与PC7、PC6连接。键盘采用逐次扫描原理,16个按键中0~9座位数字健,+、-、=作为加、减和等号功能键,C为清零键。

4.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。

微机原理与接口技术课程设计报告加减计数器完整版

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

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

4.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 Array输入。8253内部有3个独立的通道和一个控制字寄存器,它们

构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3

对控制字寄存器进行写操作。这4个端口地址由最低2位地址

码A1、A0来选择。

图4-5 五.软件设计流程(模块流程图)及描述

如图5-1所示:

微机原理与接口技术课程设计报告加减计数器完整版

图5-1

六.源程序代码(要有注释)

STACK SEGMENT STCAK

DB 64 DUP(?)

STACK ENDS

DATA SEGMENT

ORG 3000H

VAR1 DB 00H,01H,02H,03H,04H

VAR2 DB 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH, 3FH

VAR3 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

VAR4 DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H, 71H

DATA ENDS

CODE SEGMENT

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

START:MOV AX,DATA

MOV DS,AX

MOV AL,88H

OUT 63H,AL ;82255A初始化

MOV BX,0000H ;BX清零

STT: MOV AL,00H ;键盘测试

OUT 61H.AL

NEXT: IN AL,62H

AND AL,0C0H

CMP AL,0C0H

JNZ KEYABC

CALL DISP ;调用显示程序 JMP STT

KEYABC:CALL TIME ;延时,去抖动 IN AL,62H

AND AL,0C0H

CMP AL,0C0H

JNZ KEY

JMP STT

KEY: MOV AL,0FEH ;键盘扫描识别 OUT 61H,AL

IN AL,62H

TEST AL,80H

JNZ KEY_0

CALL KEY8

JMP STTK

KEY_0: TEST AL,40H

JNZ KEY_9

CALL KEY0

JMP STTK

KEY_9: MOV AL,0FDH

OUT 61H,AL

IN AL,62H

TEST AL,80H

JNZ KEY_1

CALL KEY9

JMP STTK

KEY_1: TEST AL,40H

JNZ KEY_A

JMP STTK KEY_A: MOV AL,0FBH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_2 CALL KEYA

JMP STTK KEY_2: TEST AL,40H JNZ KEY_B CALL KEY2

JMP STTK KEY_B: MOV AL,0F7H OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_3 CALL KEYB

JMP STTK KEY_3: TEST AL,40H JNZ KEY_C CALL KEY3

JMP STTK KEY_C: MOV AL,0EFH OUT 61H,AL IN AL,62H TEST AL,80H

CALL KEYC

JMP STTK KEY_4: TEST AL,40H JNZ KEY_D CALL KEY4

JMP STTK KEY_D: MOV AL,0DFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_5 CALL KEYD

JMP STTK KEY_5: TEST AL,40H JNZ KEY_D CALL KEY5

JMP STTK KEY_E: MOV AL,0BFH OUT 61H,AL IN AL,62H TEST AL,80H JNZ KEY_6 CALL KEYE

JMP STTK KEY_6: TEST AL,40H JNZ KEY_F CALL KEY6

KEY_F: MOV AL,07FH

OUT 61H,AL

IN 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 STTK

KEY9: CMP BH,00H ;按键9处理子程序

JZ KEY9_1 ;未按过符号键,不清零 CALL CLEAR ;已按过符号键,清零KEY9_1:CALL LP1 ;低4位字节前移

MOV AL,6FH ;最低字节输入一个数据 MOV [SI+4],AL

MOV AL,09H

MOV [DI+4],AL

CALL 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

CALL DISP

RET

KEY1: CMP BH,00H ;按键1处理子程序 JZ KEY1_1

CALL CLEAR

KEY1_1:CALL LP1

MOV AL,06H

MOV [SI+4],AL

MOV AL,01H

MOV [DI+4],AL

CALL DISP

RET

KEY0: CMP BH,00H ;按键0处理子程序 JZ KEY0_1

CALL CLEAR

KEY0_1:CALL LP1

MOV AL,3FH

MOV [SI+4],AL

MOV AL,00H

MOV [DI+4],AL

CALL DISP

RET

KEYA: CMP BH,00H ;按键+号处理子程序 JNZ KEYA_1

CALL LP3 ;保存输入的数据KEYA_1:MOV BX,0101H ;设置符号标志

RET ;返回

KEYB: CMP BH,00H ;按键-号处理子程序 JNZ KEYB_1

CALL LP3 ;保存输入的数据KEYB_1:MOV BX,0102H ;设置符号标志

RET ;返回

KEYC: CMP BH,00H ;按键*号处理子程序 JNZ KEYC_1

CALL LP3 ;保存输入的数据KEYC_1:MOV BX,0103H ;设置符号标志

RET ;返回

KEYD: CMP BH,00H ;按键/号处理子程序 JNZ KEYD_1

CALL LP3 ;保存输入的数据KEYD_1:MOV BX,0104H ;设置符号标志

RET ;返回

KEYE: 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: CALL DIV1

JMP STTE

KEYF: CALL CLEAR ;按键C(清零)处理子序 RET

CLEAR: MOV SI,OFFSET VAR2 ;数据清零子程序

MOV DI,OFFSET VAR3

MOV CX,000AH

CLEAR1:MOV AL,3FH

MOV [SI],AL

MOV AL,00H

MOV [DI],AL

INC SI

INC DI

LOOP CLEAR1

MOV BH,00H

RET

ADD1: MOV SI,OFFSET VAR3;;加法子程序

MOV DI,OFFSET VAR4

CLC

ADD_1: MOV AL,[DI]

ADC AL,[SI]

AAA

MOV [DI],AL

INC SI

INC DI

LOOP ADD_1

CALL CHANGE

CALL DISP

RET

SUB1: MOV SI,OFFSET VAR3 ;减法子程序 MOV DI,OFFSET VAR4

CLC

MOV CX,0005H

SUB_1: MOV AL,[DI]

MOV CL,[SI]

AAS

MOV [DI],AL

INC SI

INC DI

LOOP SUB_1

CALL CHANGE

CALL DISP

RET

MUL1: MOV SI,OFFSET VAR3 ;乘法子程序 MOV DI,OFFSET VAR4

MOV AL,[DI]

MUL CL

AAM

MOV [DI+5],AX MOV AL,[DI+1] MUL CL

AAM

ADD AL,[DI+6] AAA

MOV [DI+6],AX MOV AL,[DI] MOV CL,[SI+1] MUL CL

AAM

MOV [SI+5],AX MOV AL,[DI+1] MUL CL

AAM

ADD AL,[SI+6] AAA

MOV [SI+6],AX MOV AL,[DI+5] MOV [DI],AL MOV AL,[DI+6] ADD AL,[SI+5] AAA

MOV [DI+1],AL MOV AL,[DI+7]