微机原理实验.docx
《微机原理实验.docx》由会员分享,可在线阅读,更多相关《微机原理实验.docx(12页珍藏版)》请在冰豆网上搜索。
微机原理实验
接口实验部分:
几点约定:
1、实验电路介绍中凡不加“利用通用插座”说明的均为实验台上已固定电路。
2、实验电路连线在图中均用虚线表示,实线为已连好电路。
实验一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范围内,译码器选中,必有一根译码线输出负脉冲。
例如:
执行下面两条指令
MOVDX,2A0H
OUTDX,AL(或INAL,DX)
Y4输出一个负脉冲,执行下面两条指令
MOVDX,2A8H
OUTDX,AL(或INAL,DX)
Y5输出一个负脉冲。
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
实验二可编程并行接口
(一)
(8255方式0)
一、实验目的
1.掌握8255方式0的工作原理及使用方法。
二、实验内容
1.实验电路如图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2.编程从8255C口输入数据,再从A口输出。
三、编程提示
1、8255控制寄存器端口地址28BH
A口的地址288H
C口的地址28AH
2、参考流程图
实验三七段数码管
一、实验目的
掌握数码管显示数字的原理
二、实验内容
1.静态显示:
按图1连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dp接地(关闭)。
编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。
图1图2
2.动态显示:
按图2连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。
编程在两个数码管上显示56。
3.动态显示:
(选作)按图13连接好电路,编程在两个数码管上循环显示00~99
三、编程提示
1、实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
2、段数码管的字型代码表如下表:
3、参考流程图(见图3)
实验四竞赛抢答器
一、实验目的
1、了解微机化竞赛抢答器的基本原理。
2、进一步学习使用并行接口。
二、实验内容
图27为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某
个逻辑电平开关置“1”时,相当某组抢答按钮按下。
在七段数码管上将其组号(0~7)显
示出来,并使微机扬声器响一下。
三、编程提示
设置8255为C口输入、A口输出,读取C口数据,若为0表示无人抢答,若不为0则有人抢答。
根据读取数据可判断其组号。
从键盘上按空格键开始下一轮抢答,按其它键程序退出。
四、参考流程图
五、参考程序:
QDQ.ASM
datasegment
ioportequ0d400h-0280h
io8255aequioport+28ah
io8255bequioport+28bh
io8255cequioport+288h
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h;数码表
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255b;设8255为A口输出,C口输入
movax,89h
outdx,al
movbx,offsetled;使BX指向段码管首址
sss:
movdx,io8255a
inal,dx;从8255的C口输入数据
oral,al;比较是否为0
jesss;若为0,则表明无键按下,转sss
movcl,0ffh;cl作计数器,初值为-1
rr:
shral,1
inccl
jncrr
moval,cl
xlat
movdx,io8255c
outdx,al
movdl,7;响铃ASCII码为07
movah,2
int21h
wai:
movah,1
int21h
cmpal,20h;是否为空格
jneeee;不是,转eee
moval,0;是,关灭灯
movdx,io8255c
outdx,al
jmpsss
eee:
movah,4ch;返回
int21h
codeends
endstart
实验五交通灯控制实验
一.实验目的
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
二.实验内容
如图-29,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东
西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
三.编程提示:
十字路口交通灯的变化规律要求:
(1)南北路口的绿灯、东西路口的红灯同时亮30秒左右。
(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。
(3)南北路口的红灯、东西路口的绿灯同时亮30秒左右。
(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。
(5)转
(1)重复。
四、参考流程图
五、参考程序:
JTD.ASM
;***********************************;
;*十字路口红绿灯模拟演示程序*;
;*端口各灯的设置:
*;
;*1红1黄1绿002红2黄2绿*;
;***********************************;
datasegment
ioportequ0d400h-0280h
io8255aequioport+28ah
io8255bequioport+28bh
portc1db24h,44h,04h,44h,04h,44h,04h;六个灯可能
db81h,82h,80h,82h,80h,82h,80h;的状态数据
db0ffh;结束标志
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255b
moval,90h
outdx,al;设置8255为C口输出
movdx,io8255a
re_on:
movbx,0
on:
moval,portc1[bx]
cmpal,0ffh
jzre_on
outdx,al;点亮相应的灯
incbx
movcx,20;参数赋初值
testal,21h;是否有绿灯亮
jzde1;没有,短延时
movcx,2000;有,长延时
de1:
movdi,9000;di赋初值5000
de0:
decdi;减1计数
jnzde0;di不为0
loopde1
pushdx
movah,06h
movdl,0ffh
int21h
popdx
jzon;没有,转到on
exit:
movah,4ch;返回
int21h
codeends
endstart
74LS76:
双J-K触发器(边沿)5-VCC;13-GND
74LS74:
双D触发器(上升沿)14-VCC;7-GND