微机接口实验报告

  • 格式:doc
  • 大小:153.65 KB
  • 文档页数:12


精选资料,欢迎下载
微机接口实验报告

精选资料,欢迎下载
实验一:I/O地址译码

一、实验目的
掌握I/O 地址译码电路的工作原理。

二、实验原理和内容
实验电路如图(1)所示,其中74LS74 为D 触发器,可直接使用实验台上数字
电路实验区的D 触发器,74LS138 为地址译码器。译码输出端Y0~Y7 在实验台上
I/O 地址输出端引出,每个输出端包含8 个地址,Y0:280H~287H,Y1:288H~
28FH,…… 当CPU 执行I/ O 指令且地址在280H~2BFH 范围内,译码器选中,
必有一根译码线输出负脉冲。

例如:执行下面两条指令
Y4 输出一个负脉冲,执行下面两条指令
MOV DX, 2A0H
OUT DX,AL(或IN AL,DX)
Y5 输出一个负脉冲。
MOV DX,2A8H
OUT DX,AL(或IN AL,DX)

利用这个负脉冲控制L7 闪烁发光(亮、灭、亮、灭、……),时间间隔通
过软件延时实现。

精选资料,欢迎下载
三、实验程序
L1: MOV DX, 2A0H //选通74LS138的11口
OUT DX, AL //使端口A输出,给D触发器一个时钟信号
LOOP $ //延时
LOOP $ //延时
MOV DX, 2A8H //选用74LS138的10口
OUT DX, AL //使D触发器清零
LOOP $ //延时
LOOP $ //延时
MOV AH, 11 //十一号功能调用
INT 21H //如果有键按下
INC AL //AL加一,退出循环
JNZ L1 // 如果没键按下,则继续循环
四、总结
第一次实验比较简单、主要是学会了通过程序控制芯片及其端口
的选通,其方法是根据芯片外围搭建的电路使DX进行写或读的操作、
例如本实验里,要想选通74LS138的11口操作8255的端口A,则需
要使
,同理操作10口时,则使DX=2A8H,
再加上延时DELAY功能,即可使LED灯循环亮灭。但是如果不给芯片
断电,则LED灯会一直循环,不能进进行人为的控制,所以又在后面
加上了11号功能调用,只要当AL=0,循环结束。
实验二:可编程并行接口

精选资料,欢迎下载
一、实验目的
掌握8255 方式0 的工作原理及使用方法。

二、实验内容
实验电路如图,8255C口接逻辑电平开关K0~K7,A 口接LED 显示电路L0~L7。
编程从8255C口输入数据,再从A口输出。

三、编程提示
1、8255 控制寄存器端口地址28BH
A 口的地址288H
C 口的地址28AH
2、参考流程图

精选资料,欢迎下载
四、实验程序
MOV DX,28BH //写端口C
MOV AL , 10001001B
OUT DX, AL //8255初始化
L1:MOV DX, 28AH
IN AL,DX //读取C口数据
MOV DX, 288H //写端口A
OUT DX,AL //从A口输出
MOV AH,11 //十一号功能调用
INT 21H
INC AL
JNZ L1
MOV AH, 4CH
INT 21H
五、实验总结
这个实验可以看作是第一个实验的加强,同样也考验的是对端口
的读写操作,因为有了第一次实验的经验、所以这次实验特别顺利,
没有出现什么问题。

精选资料,欢迎下载
实验三:七段数码管静态显示

一、实验目的
掌握数码管显示数字的原理
二、实验内容
静态显示:按图1连接好电路,将8255 的A 口PA0~PA6 分别与七段数码管的段
码驱动输入端a~g相连,位码驱动输入端S1 接+5V(选中),S0、dp 接地(关
闭)。编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。

图1 图2
三、编程提示
1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中
的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2、段数码管的字型代码表如下表:

精选资料,欢迎下载
3、参考流程图(见图3)

四、实验程序
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
//建立表格用于显示数字
MOV DX,28BH //写控制字寄存器
MOV AL, 10000000B //使端口C按方式0输出
OUT DX,AL //8255初始化,A口为输出
L2:MOV AH, 1
INT 21H
CMP AL,30H //和0比较
JB L1 //小于则结束程序
CMP AL,39H //和9比较

精选资料,欢迎下载
JA L1 //大于则结束程序
SUB AL,30H //ASCII码减30得到对应数字
MOV BX,OFFSET LED //将表LED的首地址赋值给BX
ADD BL, AL //将AL的值加给BL
ADC BH, 0
MOV AL, [BX] //查表
MOV DX, 288H //通过A口输出
OUT DX, AL
JMP L2 //继续循环
L1:MOV AH, 4CH
INT 21H
五、实验总结
因为以前在学习单片机和FPGA的时候都做过静态数码管的实验,
所以实验原理已经非常了解了,这里的难点就是用汇编语言来实现。
首先,要建立一个表以便于快速得到数字对应的数码管的值;其次写
一个比较程序来确定输入的值是否是自然数;然后再通过ASCII码减
30即可得到这个数的值,经过查表就可以输出了,实验思路清晰,
所以做起来并不难。

精选资料,欢迎下载
实验四:七段数码管动态显示

一、实验目的
掌握数码管显示数字的原理
二、实验内容
动态显示:按图2连接好电路,七段数码管段码连接不变,位码驱动输入端S1,
S0 接8255 C 口的PC1,PC0。编程在两个数码管上显示56。

三、参考流程图

四、实验程序
MOV DX, 28BH //写控制字寄存器
MOV AL, 80H //使端口C按方式0输出
OUT DX, AL

精选资料,欢迎下载
L1: MOV DX, 28AH //写端口C
MOV AL, 01H //控制第一个数码管的位码
OUT DX, AL
MOV DX, 288H //写端口A
MOV AL, 7DH //使第一个数码管显示6
OUT DX, AL
CALL DEALY //延时
MOV DX, 28AH //写端口C
MOV AL, 02H //控制第二个数码管的位码
OUT DX, AL
MOV DX, 28BH //写端口A
MOV AL, 6DH //使第一个数码管显示5
CALL DELAY //延时
MOV AH,11 //十一号功能调用
INT 21H
INC AL
JNZ L1
MOV AH, 4CH
INT 21H

DELAY PROC //延时子程序
MOV CX, 00FFH

精选资料,欢迎下载
D2:MOV BX, 00FFH
D1:PUSH AX
PUSH DX
POP DX
POP AX
DEC BX
JNZ D1
LOOP D2
RET
DELAY ENDP
五、实验总结
在做完了静态数码管之后,我尝试做了一下动态数码管。
再画了动态数码管流程图之后实验思路非常清晰,主要是要
先选择端口C来控制位码,再选择端口A来控制段码,并且
在两个数码管之间加入延时程序。一开始写完程序后发现两
只数码管都显示5,后来发现是因为在控制第二只数码管的
位码时第一只数码管的位码并没有关闭,所以第一只数码管
也显示了5,在发现问题后对程序进行了修改,实验现象就
显现了。

精选资料,欢迎下载
Welcome !!!
欢迎您的下载,
资料仅供参考!