北京邮电大学微机原理硬件实验报告.docx
- 文档编号:18343205
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:42
- 大小:739.04KB
北京邮电大学微机原理硬件实验报告.docx
《北京邮电大学微机原理硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北京邮电大学微机原理硬件实验报告.docx(42页珍藏版)》请在冰点文库上搜索。
北京邮电大学微机原理硬件实验报告
实验报告一:
I/0地址译码和简单并行接口
——实验一&实验二
一、实验目的
掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。
二、实验原理及内容
a) I/0地址译码
1、实验电路如图1-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闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
2、接线:
Y4/IO地址 接CLK/D触发器
Y5/IO地址 接 CD/D触发器
D/D触发器接SD/D触发器接 +5V
Q/D触发器接L7(LED灯)或逻辑笔
b)简单并行接口
1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
5、接线:
1)输出
按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)
2)输入
按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)
三、硬件连线图
1、I/O地址译码
2.简单并行接口
四、软件程序流程图
1、I\O地址译码
2、简单并行接口
五、源程序
1、I\O地址译码
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
DATA SEGMENT
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOV AX,DATA
MOVDS,AX
LOP:
MOVDX,2A0H
OUTDX,AL;点亮灯
ﻩCALLDELAY;延时
MOVDX,2A8H
ﻩ OUTDX,AL;熄灭灯
CALLDELAY
ﻩJMP LOP
CODE ENDS
END START
DELAY PROCNEAR;延时子程序
PUSHCX
PUSHBX
MOVBX,250 ;250×65535
LP2:
MOVCX,0FFFFH
LP1:
LOOPLP1
DEC BX
JNZ LP2
POPBX
POPCX
RET
DELAY ENDP
2、简单并行接口电路
STACKSEGMENT STACK'STACK'
DB100 DUP(?
)
STACKENDS
DATASEGMENT
DATAENDS
CODESEGMENT
ASSUME CS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOV DS,AX
ﻩ
LOP:
MOV AH,01H
ﻩINT21H
ﻩCMPAL,1BH;检查是否按下退出esc键
ﻩJZENDING
ﻩMOV DX,2A8H ;将ascii码输出
OUTDX,AL
JMPLOP
ENDING:
MOVAL,0
OUTDX,AL
MOVAX,4C00H
INT21H
ﻩ
CODEENDS
ENDSTART
六、实验总结
在这三次实验中出现的问题以及相应的解决方法如下:
实验一:
因为对D触发器的特性有些遗忘,在编写程序时犯了不少错误,最终通过请教助教解决了一些疑问,从而顺利写出了代码。
实验二:
实验二的程序逻辑比较简单,但连线比较多,在实验过程中,也多次连错了线,通过检查纠正了连线错误,也很快完成了实验。
七、实验收获与心得体会
这次实验是第一次用汇编语言控制接口,因为理论课尚未讲到相关内容,做实验时,上手地比较慢。
通过实验一实验二,熟练了对IN、OUT指令的使用,对接口有了初步认识。
同时通过研究译码电路,对“地址”也有了进一步的认识。
实验报告二:
可编程并行接口8255的应用
——实验三&实验四&实验五
一、实验目的
1、通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。
、
2、掌握数码管显示数字的原理。
3、掌握8255控制键盘及显示电路的基本功能及编程方法;掌握一般键盘和显示电路的工作原理。
二、实验原理及内容
a)实验三
1、实验电路如图4-3-1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。
2、编程从8255C口输入数据,再从A口输出。
3、接线:
PC7~PC0/8255 接K7~K0/逻辑电平开关
PA7~PA0/8255接L7~L0/LED显示
CS/8255 接Y1/IO地址
b)实验四
1、静态显示:
按4-4-1连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。
(或编程在数码管上循环显示“00-99”,位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。
)
2、接线:
PA7~PA0/8255接 dp~a/LED数码管
PC3~PC0/8255接 S3~S0/LED数码管
CS/8255接Y1/IO地址
C)实验五
1、编程:
使得在小键盘上每按一个健,4位数码管上显示出相应字符,它们的对应关系如下:
2、接线:
PC7~PC0 /8255接行3~列0/4X4键盘
PA7~PA0/8255接 dp~a/LED数码管
CS/8255接Y1/IO地址
PB3~PCB/8255 接S3~S0/LED数码管
(或哪位数码管要显示则位选S接+5V即高电平,不想显示的数码管S接 GND 即低电平)
三、硬件连线图
a)实验三
b)实验四
c)实验五
四、软件流程图
a)实验三
b)实验四
c)实验五
五、源程序
a)实验三
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACK ENDS
DATASEGMENT
DATAENDS
CODE SEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOV DS,AX
MOVAL,10001001B;A口输出C口输入,工作方式为00
MOVDX,28BH ;控制端口地址
OUTDX,AL ;8255初始化,写入工作方式控制字
ﻩ
LOP:
MOVDX,28AH ;将开关状态读入
INAL,DX
MOV DX,288H ;讲状态输出到A口
OUTDX,ALﻩ
MOVAH,0BH ;检测键盘状态
ﻩINT21H
CMPAL,0FFH ;如果键盘上有输入则停止程序
JZ ENDING
ﻩJMPLOP
ENDING:
MOVAL,0
MOVDX,288H
OUTDX,AL
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
b)实验四
STACKSEGMENTSTACK 'STACK'
DB100DUP(?
)
STACKENDS
DATA SEGMENT
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
ﻩMOVAL,10000000B
ﻩ MOVDX,28BH
OUT DX,AL;8255初始化
LOP:
MOVAL,3FH;将0的段码输出给A口
ﻩ MOVDX,288H
ﻩOUTDX,AL
ﻩMOV AL,08H;输出位码给C口
ﻩMOVDX,28AH
ﻩOUTDX,AL
ﻩ
ﻩ CALLDELAY;延时程序
ﻩ MOVAL,06H;将1的段码输出的A口
ﻩMOV DX,288H
ﻩOUT DX,AL
ﻩ MOV AL,04H;输出选通位码
ﻩMOVDX,28AH
OUTDX,AL
ﻩ CALLDELAY
ﻩMOV AL,7FH;将8的段码输出的A口
ﻩMOV DX,288H
OUTDX,ALﻩ
MOVAL,02H;输出选通位码
MOV DX,28AH
OUTDX,AL
CALLDELAY
MOVAL,06H;将8的段码输出的A口
MOV DX,288H
ﻩOUT DX,ALﻩ
ﻩ MOVAL,01H;输出选通位码
MOVDX,28AH
OUTDX,AL
callDELAY
ﻩMOVAH,0BH;检查键盘是否有输入
ﻩINT 21H
CMPAL,0ffh
JZ ENDING;有则退出
ﻩJMPLOP
ENDING:
MOV AL,00H
MOVDX,28AH
OUT DX,AL
MOVAX,4C00H
INT 21H
DELAYPROCNEAR
PUSHCX
PUSH BX
MOVBX,005H;250×65535
LP2:
MOVCX,0fFFFH
LP1:
LOOPLP1
DECBX
JNZLP2
POP BX
POPCX
RET
DELAYENDPﻩ
CODEENDS
END START
ﻩ
ﻩ
c)实验五
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
DATA SEGMENT
KEYVALUEDB 71H,7CH,07H,4FH ;键盘值对应的段码表,LINE0
DB79H,77H,7DH,5BH;LINE1
DB5EH,6FH,6DH,06H;LINE2
DB39H,7FH,66H,3FH;LINE3
ROW DB0EFH,0DFH,0BFH,7FH
DATA ENDS
CODE SEGMENT
ASSUME CS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOV DS,AX
ﻩ
MOVAL,10000001B;C口高4位接键盘行输出,低4位列输入,A口输出
MOVDX,28BH
OUT DX,AL
LEABX,KEYVALUE
MOV SI,0
ﻩ
SCANROW:
MOVAL,ROW[SI] ;扫描行
MOV DX,28AH
OUT DX,AL ;输出行
CALLDELAY;延迟消抖
INAL,DX ;读取列
ﻩ
ﻩANDAL,0FH
CMP AL,0FH
JZ NEXT;此行无键按下
CMP AL,0EH
JZLINE0;按下第0列的键
ﻩ CMPAL,0DH
JZ LINE1;按下第1列的键
CMPAL,0BH
JZLINE2;按下第2列的键
JMP LINE3
NEXT:
INCSI
CMPSI,4
ﻩ JB NEXT1
MOVSI,0
NEXT1:
JMPSCANROW
LINE0:
MOV CL,[BX+SI+0];查表或许按下的键相应的输出段码
JMPOUTPUT
LINE1:
MOV CL,[BX+SI+4]
JMPOUTPUT
LINE2:
MOVCL,[BX+SI+8]
JMPOUTPUT
LINE3:
MOVCL,[BX+SI+12]
OUTPUT:
CMPCL,3FH;检查是否是0,是0就退出
JZENDING
MOV AL,CL
MOVDX,288H;传送段码给A口
OUTDX,AL
ﻩ MOVAL,01H;传送位码给B口
MOVDX,289H
OUTDX,AL
ﻩMOVSI,0
JMPSCANROW;继续扫描
ﻩ
ENDING:
MOVAL,00
MOVDX,289H
OUTDX,AL
MOVAX,4C00H
INT 21H
ﻩ
DELAYPROCNEAR
PUSH CX
PUSHBX
ﻩMOV BX,1 ;250×65535
LP2:
MOV CX,0FFFH
LP1:
LOOPLP1
DECBX
JNZLP2
POPBX
POP CX
RET
DELAYENDP
ﻩ
CODE ENDS
ENDSTART
ﻩ
六、实验总结
在这三次实验中出现的问题以及相应的解决方法如下:
实验三:
一开始没法用开关控制LED的亮灭,程序一运行就直接退出了,检查代码发现自己的退出条件写错了,修改后就能正常工作了。
实验四:
四个数码管显示不正常,四个数字都没法稳定的显示,经过调整延时的大小,能够使后两个数码管正常显示,但前两个数码管不受控制,最后发现是前两个数码管坏了。
实验五:
按下的键与数码管中显示的图形不一样,经过检查代码和实验箱,发现代码中按键对应的段码表行列顺序与实验箱不一致,经过调整,解决了不一致的问题。
七、实验收获与心得体会
这三次实验都是围绕着8255并行接口做一些小的应用,其中实验三与实验四逻辑比较简单,实验五稍微难一点,因为理论课还未讲到接口部分,硬件实验需要自己自学接口电路,但从中收获了不少知识,大致明白了如何使用一个接口芯片,学会了自己看手册,根据说明来编程使用接口电路,对地址有了更深刻的理解。
代码都是实验前自己课下独立编写的,因此上实验室操作时比较顺利,但也遇到了一些小错误,但也都独立解决了,在这样的一个过程中,增强了自己的学习能力和独立解决问题的能力。
实验报告三:
可编程定时器/计数器(8253/8254)
一、实验目的
学习掌握8253用作定时器的编程原理;
二、实验原理及内容
(1)8253应用小结
8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。
8254是8253的改进型。
1.8253初始化
使用8253前,要进行初始化编程。
初始化编程的步骤是:
①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。
②向使用的计数器端口写入计数初值。
2.8253控制字
D7D6=00:
使用0号计数器,D7D6=01:
使用1号计数器
D7D6=10:
使用2号计数器,D7D6=11:
无效
D5D4=00:
锁存当前计数值
D5D4=01:
只写低8位(高8位为0),读出时只读低8位
D5D4=10:
只写高8位(低8位为0),读出时只读高8位
D5D4=11:
先读/写低8位,后读/写高8位计数值
D3D2D1=000:
选择方式0,D3D2D1=001:
选择方式1
D3D2D1=X10:
选择方式2,D3D2D1=X11:
选择方式3
D3D2D1=100:
选择方式4,D3D2D1=101:
选择方式5
D0=0:
计数初值为二进制,D0=1:
计数初值为BCD码数
(2)实验电路
1、按图4-8-1虚线连接电路
2、接线:
CS/8253接Y0/IO地址
GATE0/8253接+5V
CLK0/8253接1M时钟
OUT0/8253接喇叭或蜂鸣器
(3)实验内容
1.完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。
2.扩展部分:
利用小键盘实现弹琴功能,并显示弹奏的乐谱。
注意:
8253输入频率应小于2MHz。
三、硬件连线图
四、软件流程图
1、主程序流程
2、放音子程序流程
3、弹琴子程序流程
4、
五、源程序
STACKSEGMENTSTACK'STACK'
DB 100 DUP(?
)
STACKENDS
DATA SEGMENT
INPUTINFODB0AH,0DH,'Please choosemode:
1 isplayingmusic;2isspieling',0AH,0DH
DB'$'
ERROR_INFO DB0AH,0DH,'illegalinput,pleaseinput again!
',0AH,0DH,'$'
TONEDW3906,3472,3125,2932,2604,2347,2083;音调1-7 计数初始值
TIMEDW1000H,1000H,1000H,2000H,2000H,4000H,4000H ;持续时间
DUANMA DB06H,5BH,4FH,66H,6DH,7DH,07H;与乐谱所对应的数码管段码
KEYVALUE DB71H,7CH,07H,4FH;键盘值对应的段码表,LINE0
DB79H,77H,7DH,5BH;LINE1
DB5EH,6FH,6DH,06H;LINE2
DB39H,7FH,66H,3FH;LINE3
TUNEK DW0,0,2083,3125
DW0,0,2347,3472
ﻩDW0,0,2604,3906
DW0,0,2932,0
ROW DB0EFH,0DFH,0BFH,7FH
DATA ENDS
CODESEGMENT
ASSUMECS:
CODE,SS:
STACK,DS:
DATA
START:
MOVAX,DATA
MOV DS,AX
MOV AL,10000001B;8255初始化;C口高4位接键盘行输出,低4位列输入,A口输出
ﻩMOVDX,28BH
ﻩ OUT DX,AL
MOVAL,00110110B ;8253初始化,工作方式3,使用计时器0ﻩ
MOVDX,283H
OUTDX,AL
BEGIN:
MOVAH,09H ;输入提醒,选择放音或弹琴模式或者退出程序
LEA DX,INPUTINFO
INT21H
MOV AH,01H
INT21H
ﻩ CMPAL,'1'
ﻩ JZPLAY_MUSIC
ﻩCMP AL,'2'
ﻩJZ SPIELING
ﻩCMPAL,1BH
JZENDING
JMPINPUT_ERROR;输入检错
INPUT_ERROR:
MOVAH,09Hﻩ
LEADX,ERROR_INFO
INT21H
JMPBEGINﻩﻩ
PLAY_MUSIC:
CALLPLAYMUSIC
JMPBEGIN
SPIELING:
CALLSPIELINGP
JMPBEGIN
ENDING:
MOVAX,4C00H
INT 21H
ﻩ
PLAYMUSIC PROC
PUSHSI ;保护现场数据
PUSHDI
PUSH AX
PUSHBX
PUSH CX
PUSHDX
LEASI,TONE ;音调表
LEADI,TIME;每一个音调持续时间表
LEA BX,DUANMA;段码表
MOV CX,7 ;循环控制变量赋值
LOP1:
MOVAX,[SI] ;计数器赋值
MOV DX,280H; 计时器0的地址
OUTDX,AL;先写入低八位,再写入高八位
ﻩ MOVAL,AH
OUTDX,AL
ﻩ INC SI
ﻩ INCSI
ﻩ
ﻩMOVAL,[BX] ;在数码管上显示乐谱
ﻩ MOVDX,288H ;8255A口地址
ﻩﻩ OUTDX,AL
ﻩINCBX
ﻩﻩ MOV AL,01H;传送位码给B口
ﻩ MOVDX,289H
ﻩ OUTDX,AL
MOVAX,[DI];延迟,AX为入口参数
ﻩ CALLDELAY
ﻩﻩINCDI
INC DI
ﻩ
ﻩ MOVAH,0BH;检测键盘是否有输入,有则跳出
INT 21H
ﻩCMPAL,0FFH
ﻩﻩJZPOUT
ﻩﻩ
LOOP LOP1
LEA SI,TONE
LEADI,TIME
LEABX,DUANMAﻩﻩ
ﻩﻩ MOVCX,7 ;重新循环
ﻩJMP LOP1
ﻩ
POUT:
POP DX
POP CX
POPBX
ﻩﻩ POP AX
ﻩPOPDI
ﻩ POPSI
RETﻩ
PLAYMUSICENDP
SPIELINGPPROC
PUSHAX
ﻩPUSH BX
ﻩPUSHCX
ﻩPUSH DX
ﻩﻩPU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北京邮电 大学 微机 原理 硬件 实验 报告