北邮微原硬件实验报告.docx
- 文档编号:3565563
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:34
- 大小:773.49KB
北邮微原硬件实验报告.docx
《北邮微原硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北邮微原硬件实验报告.docx(34页珍藏版)》请在冰豆网上搜索。
北邮微原硬件实验报告
2013年微机原理硬件实验报告
学院:
信息与通信工程学院
班级:
2011211104
姓名:
实验一I/O地址译码
一.实验目的
掌握I/O地址译码电路的工作原理。
二.实验原理和内容
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输出一个负脉冲。
原理:
地址2A0H的A5,A4,A5为100,在输入或输出时,IOW或IOR为0,使得74LS138被选中,经过译码,在Y4口输出负脉冲。
其他同理。
图1-1
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
2.接线:
Y4/IO地址接CLK/D触发器
Y5/IO地址接CD/D触发器
D/D触发器接SD/D角发器接+5V
Q/D触发器接L7(LED灯)或逻辑笔
3.程序流程图
4.源程序
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100HDUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
;延时子程序
DELAYPROCNEAR
MOVBX,500
PUSHCX
LOOP2:
MOVCX,0FFFH
WAIT:
LOOPWAIT
DECBX
JNZLOOP2
POPCX
RET
DELAYENDP
START:
MOVCX,0FFFFH
;二极管闪烁部分
LOOP1:
MOVDX,2A0H;灯亮
OUTDX,AL
CALLDELAY
MOVDX,2A8H;灯灭
OUTDX,AL
CALLDELAY
LOOPLOOP1
CODEENDS
ENDSTART
5.实验结果
LED7正常闪烁显示
6.实验总结
这是我们第一次做微原硬件实验,我开始一直觉得编程很重要,发现按照实验要求很快就编出了程序,完成了实验,但是当给老师验收时,老师问我为什么向2A0口输出一下,就会在Y4产生一个负脉冲,我瞬间就僵住了,的确我没有考虑过这个问题。
后来,经过我对电路图的分析思考,得出了正确的结论,我才明白,硬件才是这个实验的核心,最重要的是要理解硬件是如何工作的,而不是仅仅按照要求编个程序就可以了。
同时,我也十分感谢老师对我们的严格要求!
实验二简单并行接口
一.实验目的
掌握简单并行接口的工作原理及使用方法。
二.实验原理和内容
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为实验台逻辑或门)
由于,我的实验台上的芯片是74LS273,因此本实验仅涉及74LS273输出。
3.程序流程图
四.源程序
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAH,1;键盘输入
INT21H
CMPAL,27;检测是否为ESC键
JZEXIT
MOVDX,2A8H;输出
OUTDX,AL
JMPSTART
;返回DOS
EXIT:
MOVAX,4C00H
INT21H
CODEENDS
ENDSTART
五.实验结果
键盘输入字符,然后二极管显示键盘输入字符的ASCⅡ码
六.实验总结
本次实验相较上一次实验,顺利很多,因为有了第一次实验的基础,我在编代码之前,先仔细研究课硬件电路图,分析了整个过程中硬件是如何工作的,都会有怎样的反应,而后才编写了程序,并验收通过。
实验三可编程并行接口8255
一.实验目的
通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。
二.实验原理和内容
1.8255的工作方式
一片8255内部有3个端口,A口可以工作在方式0、方式1或方式2,B口可以工作在方式0、方式1,C口可以工作在方式0。
方式0是基本型输入/输出。
这种方式和外设交换数据时,8255端口与外设之间不使用联络线。
方式1为选通型输入/输出。
用这种方式和外界交换数据时,端口和外设之间要有联络信号。
方式2是双向数据传送,仅A口有这项功能。
当A口工作在方式2时,B口仍可以工作在方式0或方式1,但此时B口方式1只能用查询方式与CPU交换信息。
2.工作方式选择字
8255工作方式选择字共8位(如图),存放在8255控制寄存器中。
最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。
3.C口置/复位控制字
8255的C口可进行位操作,即:
可对8255C口的每一位进行置位或清零操作,该操作是通过设置C口置/复位字实现的。
C口置/复位字共8位,各位含义如下:
4.8255A的控制信号与传输动作的对应关系:
5.命令字与初始化编程
8255有两个命令字,即方式选择控制字和C口置0/置1控制字,初始化编程的步骤是:
①向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。
②当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0/置1控制字”。
这一操作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断允许触发器置1,从而允许端口提出中断请求。
注意:
“C口置0/置1控制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。
③向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据”
6.实验内容
(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地址
8255控制寄存器端口地址--28BH,A口的地址--288H,B口的地址--289H,C口的地址--28AH。
三.程序流程图
四.源程序
DATASEGMENT
DATAENDS
STACKSEGMENT
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
STARTPROCFAR
PUSHDS
XORAX,AX
PUSHAX;准备返回DOS
MOVAL,10001001B;8255初始化,设置A口为输出,C口输入
MOVDX,28BH
OUTDX,AL
LOOP1:
MOVDX,28AH;从C口读入开关状态
INAL,DX
MOVDX,288H;向A口输出,点亮对应二极管
OUTDX,AL
JMPLOOP1
RET
STARTENDP
CODEENDS
ENDSTART
五.实验结果
打开开关,对应的LED灯被点亮
六.实验总结
本次实验是关于并行接口8255,由于在实验前我们还没有讲8255,使得我在做实验过程中发生了很多困难,主要是在对硬件连接的分析上一直没有搞懂,后来我和周围同学看着课本一点点的讨论,最终弄懂了硬件连接和响应的过程,也使得我们对8255有了深刻的理解,画出硬件连接图后,很快编写了程序,完成了实验内容。
在此,还要感谢老师对我们严格要求,使得我们能真正搞懂硬件,再去完成软件编程。
实验四七段数码管
一.实验目的
掌握数码管显示数字的原理
2.实验原理和内容
1.数码管原理
实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
七段数码管的字型代码表如下表:
2.实验内容
静态显示:
按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接地。
)
3.接线:
PA7~PA0/8255接dp~a/LED数码管
PC3~PC0/8255接S3~S0/LED数码管
CS/8255接Y1/IO地址
三.程序流程图
四.源程序
DATASEGMENT
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
START:
MOVAX,DATA
MOVDS,AX
MOVDX,28BH;写控制口,设置A,C口为输出
MOVAL,80H
OUTDX,AL
MOVCX,100
AGAIN:
MOVDX,28AH;第一个数码管显示
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,3FH
OUTDX,AL
MOVDX,28AH
MOVAL,01H
OUTDX,AL
MOVDX,28AH;第二个数码管显示
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,5BH
OUTDX,AL
MOVDX,28AH
MOVAL,02H
OUTDX,AL
MOVDX,28AH;第三个数码管显示
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,06H
OUTDX,AL
MOVDX,28AH
MOVAL,04H
OUTDX,AL
MOVDX,28AH;第四个数码管显示
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,3FH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
LOOPAGAIN
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
五.实验结果
数码管显示我的学号后四位0120
六.实验总结
实验中遇到的问题:
由于有上一个实验的基础,我在做这个实验时对8255的工作方式和硬件连接已经十分熟悉了,因此开始很快就分析了硬件,画出流程图,编写了代码,原本以为可以很快做完这个实验,后来发现数码管显示有问题,显示有重影,还有些闪烁,后来,经过分析,我觉得是因为点亮每个数码管之前没有复位导致的,所以我在每次显示数码管之前对数码管的位码复位:
MOVDX,28AH
MOVAL,00H
OUTDX,AL
经过修改显示了稳定、清晰的数字。
这次实验再一次巩固了我对8255并行接口的理解和使用,同时,学会了数码管的使用。
收获颇丰,也对我的理论课学习有十分大的帮助!
实验八可编程定时器/计数器(8253/8254)
一.实验目的:
学习掌握8253用作定时器的编程原理;
二.实验原理和内容
1.8253/8254的使用
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.实验电路
3.接线:
CS/8253接Y0/IO地址
GATE0/8253接+5V
CLK0/8253接1M时钟
OUT0/8253接喇叭或蜂鸣器
8253控制寄存器地址283H,计数器0地址280H,计数器1地址281H,计数器2地址282H,CLK0连接时钟1MHZ
4.实验内容:
完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。
扩展部分:
利用小键盘实现弹琴功能,并显示弹奏的乐谱。
三.程序流程图
四.源程序
1.基础实验:
(自动播放预存乐曲)
DATASEGMENT
NOTEDW0,3906,3472,3125,2932,2604,2344,2083,1953;频率
TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管
MUSICDB1,1,5,5,6,6,5,4,4,3,3,2,2,1,5,5,4,4,3,3,2,5,5,4,4,3,3,2,1,1,5,5,6,6,5,4,4,3,3,2,2,1;存放的乐符
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
;延时子程序
DELAYPROCNEAR
PUSHCX
MOVCX,0FFFFH
WAIT1:
LOOPWAIT1
POPCX
RET
DELAYENDP
START:
MOVAX,DATA
MOVDS,AX
;8254初始化
MOVDX,283H
MOVAL,36H;零号计数器,工作在方式3
OUTDX,AL
;8255初始化
MOVDX,28BH
MOVAL,80H
OUTDX,AL
MOVDX,28AH
MOVAL,01H
OUTDX,AL
AGAIN:
MOVSI,0
MOVCX,42
PLAY:
MOVBL,MUSIC[SI]
MOVBH,0
MOVAL,TABLE[BX]
MOVDX,288H;显示音符
OUTDX,AL
ADDBX,BX
MOVAX,NOTE[BX]
MOVDX,280H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVAX,120H
LOOP1:
CALLDELAY
DECAX
JNZLOOP1
MOVAX,0
MOVDX,280H
OUTDX,AL
MOVAL,AH
OUTDX,AL
CALLDELAY
INCSI
LOOPPLAY
JMPAGAIN
CODEENDS
ENDSTART
2.拓展实验:
(DOS调用键盘输入弹奏乐曲)
DATASEGMENT
NOTEDW0,3906,3472,3125,2932,2604,2344,2083,1953;频率
TABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;数码管
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
;延时子程序
DELAYPROCNEAR
PUSHCX
MOVCX,0FFFFH
WAIT1:
LOOPWAIT1
POPCX
RET
DELAYENDP
START:
MOVAX,DATA
MOVDS,AX
;8254初始化
MOVDX,283H
MOVAL,36H;零号计数器,工作在方式3
OUTDX,AL
;8255初始化
MOVDX,28BH
MOVAL,80H
OUTDX,AL
MOVDX,28AH
MOVAL,01H
OUTDX,AL
PLAY:
MOVAH,01H
INT21H
SUBAL,30H
MOVAH,0
MOVBX,AX
MOVAL,TABLE[BX]
MOVDX,288H;显示音符
OUTDX,AL
ADDBX,BX
MOVAX,NOTE[BX]
MOVDX,280H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVAX,90H
LOOP1:
CALLDELAY
DECAX
JNZLOOP1
MOVAX,0
MOVDX,280H
OUTDX,AL
MOVAL,AH
OUTDX,AL
CALLDELAY
JMPPLAY
CODEENDS
ENDSTART
五.实验结果
基础实验:
正常播放出预存的《小星星》歌曲
拓展实验:
由键盘输入,可以弹奏乐曲
六.实验总结
实验中遇到的问题:
1.播放音乐声音刺耳,发现是因为用了蜂鸣器,改用喇叭后声音不再刺耳。
2.播放音乐音调有问题,发现是分频比计算错误导致
这次实验是我第一次接触8254,为了能顺利完成实验,我按照老师的要求在课前做好了预习工作,提前编写了代码,并画了硬件连接图和对应的程序流程图。
于是在课上节省了很多时间,很快便调试成功。
而后,我有对实验进行了拓展,将自动播放音乐,改为由键盘输入弹奏音乐,并实现成功。
通过这次实验,我基本学会了8254计数器的使用,对我理论课的学习有很大帮助!
七.思考题
写出8253计数初值、输入频率和输出频率的关系。
输出频率=输入频率/8253计数初值
实验十六串行通讯8251
一.实验目的
1.了解串行通讯的基本原理。
2.掌握串行接口芯片8251的工作原理和编程方法。
二.实验原理和内容
1.按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。
2.编程:
从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一批数据通过8251A的TXD发送出去,然后从RXD接收回来,并在屏幕上或数码管上显示出来。
)实现自发自收。
3.接线:
CLK0/8254接1M时钟
GATE0/8254接+5V
0UT0/8254接TX/RXCLK/8251
CS/8254接Y0/IO地址
CS/8251接Y7/IO地址
RXD/8251接TXD/8251
(1)图示电路8251的控制口地址为2B9H,数据口地址为2B8H。
(2)8254计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
14
(3)收发采用查询方式。
扩展:
双机通信,将发送端用小键盘发送数据,接收端用数码管显示接收的数据。
连线:
将发送端的TXD与接收端的RXD,将发送端的RXD与接收端的TXD,(即交叉连接),并将两台接口板的地连在一起。
其余与上面连线相同。
三.程序流程图
四.源程序
1.基础部分:
(自发自收)
DATASEGMENT
ERRMSGDB0DH,0AH,'error',0DH,0AH,'$'
STRINGDB0DH,0AH,'Pleaseinputaword.',0DH,0AH,'$',0DH,0AH
DATAENDS
STACKSEGMENTSTACK'STACK'
DB100DUP(?
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮微原 硬件 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)