微机接口实验报告.docx
- 文档编号:27896003
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:13
- 大小:343.57KB
微机接口实验报告.docx
《微机接口实验报告.docx》由会员分享,可在线阅读,更多相关《微机接口实验报告.docx(13页珍藏版)》请在冰豆网上搜索。
微机接口实验报告
微机接口实验报告
实验一:
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输出一个负脉冲,执行下面两条指令
MOVDX,2A0H
OUTDXAL(或INAL,DX
Y5输出一个负脉冲。
MOVD,2A8H
OUTDXAL(或INAL,DX
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
三、实验程序
L1:
MOVDX,2A0H
//选通74LS138的11口
OUTDX,AL
//使端口A输出,给D触发器个时钟信
LOOP$
//延时
LOOP$
//延时
MOVDX,2A8H
//选用74LS138的10口
OUTDX,AL
//使D触发器清零
LOOP$
//延时
LOOP$
//延时
MOVAH,11
//十号功能调用
INT21H
//如果有键按下
INCAL
//AL加一,退出循环
JNZL1
//如果没键按下,则继续循环
四、总结
第一次实验比较简单、主要是学会了通过程序控制芯片及其端口的选通,其方法是根据芯片外围搭建的电路使DX进行写或读的操作、例如本实验里,要想选通74LS138的11口操作8255的端口A,贝懦要使AtyA^AyA^A^A^A^A^A=1010100000==2A0H同理操作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、参考流程图
\
四、实验程序
MOVAL,B
L1:
MOVDX,28AH
INT21H
INCAL
JNZL1
MOVAH,4CH
INT21H
五、实验总结
这个实验可以看作是第一个实验的加强,同样也考验的是对端口
的读写操作,因为有了第一次实验的经验、所以这次实验特别顺利,没有出现什么问题。
实验三:
七段数码管静态显示
、实验目的
掌握数码管显示数字的原理
二、实验内容
静态显示:
按图1连接好电路,将8255的A口PALPA6分别与七段数码管的段码驱动输入端a〜g相连,位码驱动输入端S1接+5V(选中),SOdp接地(关闭)。
编程从键盘输入一位十进制数字(0〜9),在七段数码管上显示出来。
\
三、编程提示
1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2、段数码管的字型代码表如下表:
显朋字形
£
f
e
d
c
b
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
]
1
0
1
1
5bh
3
1
0
0
1
1
1
1
dfh
1
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
g
3、参考流程图(见图3)
四、实验程序
LEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MOVDX,28BH
//建立表格用于显示数字
//写控制字寄存器
MOVAL,B//使端口C按方式0输出
OUTDX,AL
〃8255初始化,A口为输出
L2:
MOVAH,1
INT21H
CMPAL,30H
//和0比较
JBL1
//小于则结束程序
CMPAL,39H
//和9比较
JAL1
//大于则结束程序
SUBAL,30H
//ASCII码减30得到对应数字
MOVBX,OFFSETLED//将表LED的首地址赋值给BX
ADCBH,0
JMPL2
OUTDX,AL
//继续循环
L1:
MOVAH,4CH
INT21H
五、实验总结
因为以前在学习单片机和FPGA的时候都做过静态数码管的实
验,所以实验原理已经非常了解了,这里的难点就是用汇编语言来实现。
首先,要建立一个表以便于快速得到数字对应的数码管的值;其次写一个比较程序来确定输入的值是否是自然数;然后再通过ASCII
码减30即可得到这个数的值,经过查表就可以输出了,实验思路清晰,所以做起来并不难。
实验四:
七段数码管动态显示
一、实验目的
掌握数码管显示数字的原理
二、实验内容
动态显示:
按图2连接好电路,七段数码管段码连接不变,位码驱动输入端S1,
S0接8255C口的PC1,PC0编程在两个数码管上显示56。
三、参考流程图
四、实验程序
MOVDX,28BH
MOVAL,80H
//写控制字寄存器
//使端口C按方式0输出
OUTDX,AL
L1:
MOVDX,28AH
MOVAL,01H
OUTDX,AL
MOVDX,288H
MOVAL,7DH
OUTDX,AL
CALLDEALY
MOVDX,28AH
MOVAL,02H
OUTDX,AL
MOVDX,28BH
MOVAL,6DH
CALLDELAY
MOVAH,11
INT21H
INCAL
JNZL1
MOVAH,4CH
INT21H
//写端口C
//控制第一个数码管的位码
//写端口A
//使第一个数码管显示6
//延时
//写端口C
//控制第二个数码管的位码
//写端口A
//使第一个数码管显示5
//延时
//十一号功能调用
//延时子程序
DELAYPROC
MOVCX,00FFH
D2:
MOVBX,00FFH
D1:
PUSHAX
PUSHDX
POPDX
POPAX
DECBX
JNZD1
LOOPD2
RET
DELAYENDP
五、实验总结
在做完了静态数码管之后,我尝试做了一下动态数码
管。
再画了动态数码管流程图之后实验思路非常清晰,主要是要先选择端口C来控制位码,再选择端口A来控制段码,并且在两个数码管之间加入延时程序。
一开始写完程序后发现两只数码管都显示5,后来发现是因为在控制第二只数码管的位码时第一只数码管的位码并没有关闭,所以第一只数码管也显示了5,在发现问题后对程序进行了修改,实验现象就显现了。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 接口 实验 报告