可编程并行接口实验
可编程并行接口实验
实验目的
理解可编程并行接口8255A芯片的结构和功能;
掌握8255A芯片初始化程序的设计方法;
掌握8255A芯片与CPU信号的连接方法以及并行接口设计和编程方法;
掌握七段数码管的静态和动态显示原理;
掌握利用七段数码管显示计算数机内部信息
实验内容
1、实验题目及要求
(1)利用8255A芯片设计接口电路并编程实现:
A口输出数据,驱动四个共阴极LED,使其顺序循环显示0~F的二进制状态,每个状态保持1秒钟;B口输入一个初态为低电平的电平开关信号,检测开关的输入状态为高电平时,使LED全部熄灭,扳动电平开关到低电平,程序结束。
程序流程图和调试正确源程序(输入或截图);
正确源程序:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,283H
MOV AL,83H
OUT DX,AL
LOOP2:MOV CX,16
PUSH CX
MOV BL,00H
MOV AL,00H
LOOP1:MOV DX,280H
OUT DX,AL
CALL DELAY
INC AL
LOOP LOOP1
PUSH AX
MOV DX,281H
IN AL,DX
CMP AL,01H
JE LOOP3
POP AX
LOOP LOOP1
POP CX
LOOP LOOP2
LOOP3:MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV AH,4CH
INT 21H
DELAY PROC NEAR
PUSH CX
MOV BX,10000
FOR1:MOV CX,20000
FOR2:LOOP FOR2
DEC BX
JNZ FOR1
POP CX
RET
DELAY ENDP
CODE ENDS
END START
程序流程图:
(2)硬件接口设计原理图(截图);
连线图:
(3)运行结果:
四个LED灯顺序显示‘0’至‘F’,每个状态保持1秒。
B口输入熄灭:
(2)设计接口电路并编程实现:
两个七段数码管分别显示“HP”,字符保持3秒 钟后两个数码管同时熄灭。
调试正确源程序(输入或截图);
正确源程序:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,80H
MOV DX,283H
OUT DX,AL
MOV CX,557
L1:MOV DX,280H
MOV AL,76H
OUT DX,AL
MOV DX,281H
MOV AL,0fdH ;选中对应的位
OUT DX,AL
CALL DELAY
MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,281H
MOV AL,0ffH
OUT DX,AL
MOV DX,280H
MOV AL,73H ;显示"P"
OUT DX,AL
MOV DX,281H
MOV AL,0FEH
OUT DX,AL
CALL DELAY
MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,281H
MOV AL,0ffH
OUT DX,AL
LOOP L1
MOV AH,4CH
INT 21H
DELAY ENDP
CODE ENDS
END START
延时子程序:
DELAY PROC NEAR ;延时1毫秒
PUSH CX
MOV BX,1
FOR1: MOV CX,0ffffh
NEXT: LOOP NEXT
DEC BX
JNZ FOR1
POP CX
RET
(2)硬件接口设计原理图(截图);
实验中遇到的问题及分析
1、实验中遇到的问题;
在实验一设置B口功能时,程序无法使用IN命令正确读入B口数据,经过排查是有两个问题,一是在IN命令之后写了一个MOV AL 0H导致AL始终为0,二是控制字设置错误,开始时写的是80H,B输入A输出应该设置为83H。
分析总结”实验报告要求”中的提问问题。
(1)通过对8255A芯片的实验,总结对8255A的认识和体会以及输出输入接口调试的过程。
8255A的认识总结:8255A总共有八条数据线(D0~D7),可以直接与CPU相连。输出口有ABC三个口,还有一个控制寄存器,故仅需两个地址线A0和A1进行寻址,在利用8255A进行与外设搭建接口电路时,需要先对各个口的工作方式和输入输出仿古式进行初始化。
输入过程:外设将数据送接口,并使“数据输入准备好”;接口把数据接收到数据输入缓冲寄存器,“数据输入应答”对外设响应;外设接到信号后,撤除和“数据输入准备好”;数据到达接口后,接口在状态寄存器中设置“输入准备好”给CPU或中断请求;CPU从接口读取数据后,接口会自动清除状态寄存器的状态位,可进行下一个输入过程。
输出过程:外设从接口取走数据,接口将“输出准备好给”CPU或中断请求;CPU输出数据到达接口的缓冲寄存器后,接口自动清除“输出准备好”状态位,并将数据送外设;外设接收数据并给接口发送“数据输出回答”信号,接口收到信号后,将状态寄存器中的“输出准备好”置1,CPU输出下一个数据。
(2)总结实验现象,简单叙述数码管接口电路设计的原则和调试方法。
在设计接口电路时,需要根据要求确定,输入输出接口,输入数据需要缓冲,输出数据需要锁存。另外还要判断使用循环结构还是分支结构还是循环结构。最后还要考虑程序的通用性和扩展性,方便下次调用或者修改扩展,而对于数码管接口电路,需要根据需求设计相应的段选信号和位选信号,只有在两个信号同时起作用时,相应的数码管才会显示所设计出的数码。若想要同时显示多个数字,可以利用间隔极短的循环显示来实现。
(3)叙述七段数码管动态显示延时时间长短对视觉有何影响?
七段数码管动态显示延时时间长若过长,视觉残留则不足以弥补间隔时间,则会使人感觉到两个数码管并非同时亮起,而是有先后顺序,不能达到同时显示的效果。若时间过短,则不会观察到数码管同时亮起的现象。