微机原理课程设计
设计报告
花式跑马灯
一、设计目的
1、熟悉Protues ISIS的基本操作,及基本电路绘制;
2、能根据电路修改理解程序;
3、能根据程序分析各种功能;
二、设计内容
用七段数码管组成日期显示电路,由开关控制的发光二极管流水灯电路和由8253控制的定时闪烁电路。
三、设计要求
K0 | K1 | K2 | K3 | 电路运行结果 |
打开 | 打开 | 打开 | 打开 | 7段位数码管显示开发者代号 |
闭合 | 打开 | 打开 | 打开 | 发光二极管流水灯亮,模式0 |
打开 | 闭合 | 打开 | 打开 | 发光二极管流水灯亮,模式1 |
打开 | 打开 | 闭合 | 打开 | 发光二极管流水灯亮,模式2 |
— | — | — | 闭合 | 闪烁灯亮 |
四、设计原理及方案
(包括整体设计原理、方案、器件选用等文字说明以及原理图)
器件选择:
元件名称 | 功能说明 | 元件名称 | 功能说明 |
8086 | 微处理器 | 8253 | 8位定时/计数器 |
74273 *3 | 八D型触发器 | SWITCH | 开关 |
NOT | 非门 | LED-BIBY*9 | LED发光管 |
74154 | 4-16译码器 | 7SEG-MPX4-CA | 4位共阳极7段位数码管 |
4078 | 8输入与非门 | 7SEG-MPX6-CA | 6位共阳极7段位数码管 |
8255A | 可编程24位接口 | POWER | 电源 |
GROUND | 地 |
|
|
K0、K1、K2分别对应发光二极管流水灯的不同模式。这三个开关中,只要有一个闭合,那么7段数码管就熄灭,系统切换到发光二极管流水灯显示模式。如果这3个开关同时闭合,则发光二极管处于哪种点亮模式由最先闭合的开关控制。K3独立控制8253的输出,实现了闪烁灯是否受8253定时器输出控制的功能。
原理图总览:
8086及74273的连接方式:
74154的连接方式:
8255A连接细节:
8253A连接细节图:
五、程序设计
(包括程序流程图,关键程序段)
否 否 否
K0是否闭合 K1是否闭合 K2是否闭合
是 是 是
执行L1 执行L2 执行L3 执行LOP1
AGAIN1 AGAIN2 AGAIN3 AGAIN4
LEDDISP
8255初始化:
MOV AX,DATA
MOV DS,AX
MOV AL,88H
MOVDX,IO3+6
OUT DX,AL
A口:方式0,输出,B口:方式0,输出,C口:高四位输入,低四位输出
8253计数器0的初始化:
MOVAL,0011000B
MOVDX,IO5+6
OUT DX,AL
MOV DX,IO5
MOV AX,500
OUT DX,AL
MOV AL,AH
OUT DX,AL
方式0,初值为500
8253计数器1的初始化:
MOVAL,01110110B
MOVDX,IO5+6
OUT DX,AL
MOVDX,IO5+2
MOV AX,5
OUT DX,AL
MOV AL,AH
OUT DX,AL
方式3,初值为5
开关控制部分:
AGAIN: MOVDX,IO3+2
MOV AL,0H
OUT DX,AL 清屏
MOV DX,IO3+4
IN AL,DX
TEST AL,20H 开关K0的地址
JZ L1
TEST AL,40H 开关K1的地址
JZ L2
TEST AL,80H 开关K2的地址
JZ L3
JMP LOP1 跳转到数码管显示
跑马灯模式:
L1:
MOV CL,06H
AGAIN1:MOVDX,IO3+2
MOV AL,CL
OUT DX,AL
MOV BX,10
CALL DELAY
ROL CL,1
MOVDX,IO3+4
IN AL,DX
TESTAL,20H
JZ AGAIN1
JMP AGAIN
数码管的显示:
AGAIN4:
MOV CL,08H
LEASI,OUTBUFF
LEDDISP:
MOV AL,CL
MOVDX,IO3+4
OUT DX,AL
LEABX,LEDTAB
MOVAL,[SI]
XLAT
MOV DX,IO3
OUT DX,AL
CALLDELAY_1S
MOVAL,0FFH
MOV DX,IO3
OUT DX,AL
CMP CL,01H
JZ NEXT
INC SI
ROR CL,1
JMPLEDDISP
六、系统仿真调试与分析(包括仿真调试方法步骤、遇到的问题及其分析解决办法)
调试步骤:
1、在proteusISIS中画出电路图
2、编写程序并用masm32生成 .obj 文件。
3、在电路图中载入程序代码。
4、设置参数
5、运行程序
6、测试电路
开始直接导入程序运行不出来,主要原因在于初始地址给的不对,没法运行处正确结果:步骤:双击8086芯片,出现如下窗口,更改地址即可。
七、设计结果及完成情况
图为开关全部打开时的情况:
当开关K0闭合时,LED灯是两个灯亮一次往下循环。
当开关K1闭合时,LED灯是闪烁着的。
当开关K2闭合时,LED灯是间隔着闪烁。
课设的题目能够完成,且可以稍微做修改。
修改 OUTBUFF DB 1,2,0,4 这段代码,改变数码管的数字,还可以修改电路图上C口的连接方式改变数码管显示。
修改 MOV CL,06H 改变LED灯的模式。
八、设计心得体会
这次课设中能够让我们更加深刻地理解8255的初始化过程,以及8253的初始化过程,还有8253方式0和方式3的模式的差别,能熟练地使用JZ和JMP跳转的使用。TEST 测试语句的具体用法,CMP比较语句的用法,更能从现象上去学习代码的具体功能。
在数码管控制模块,了解了段和位的控制机制,以及栈的使用,进栈和出栈的基本原则,PUSH 和POP的使用方法。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知 识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,及时寻求老师和同学的帮助,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,还得加强学习,完善自我。