北邮微原硬件实验报告.docx
- 文档编号:16016669
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:37
- 大小:827.41KB
北邮微原硬件实验报告.docx
《北邮微原硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北邮微原硬件实验报告.docx(37页珍藏版)》请在冰点文库上搜索。
北邮微原硬件实验报告
(此文档为word格式,下载后您可任意编辑修改!
)
2014—2015学年第一学期
《微机原理硬件》实验报告
专业电子信息工程
班级
姓名申宇飞
学号
班内序号03
报告日期2015年1月
实验一I/O地址译码3
一、实验目的3
二、实验内容及原理,实验硬件接线图3
三、程序流程图及源代码5
1、程序流程图:
5
2、源代码:
5
四、实验结果6
五、实验收获与心得体会6
实验二简单并行接口7
一、实验目的7
二、实验内容及原理,实验硬件接线图7
三、程序流程图及源代码9
1、程序流程图:
9
2、源代码:
9
四、实验结果10
五、实验收获与心得体会10
实验四七段数码管10
一、实验目的10
二、实验内容及原理,实验硬件接线图10
三、程序流程图及源代码12
1、程序流程图:
13
2、源代码:
13
四、实验结果15
五、实验收获与心得体会15
实验八可编程定时器/计数器(8253/8254)15
一、实验目的16
二、实验内容及原理,实验硬件接线图16
三、程序流程图及源代码17
四、实验结果24
五、实验收获与心得体会24
实验十六串行口8251A实验24
一、实验目的24
二、实验内容及原理,实验硬件接线图25
三、程序流程图及源代码32
1、程序流程图32
2、源程序:
32
四、实验结果34
五、实验收获与心得体会35
实验一I/O地址译码
一、实验目的
1.通过实验了解和熟悉实验台的结构,功能及使用方法。
2.掌握I/O地址译码电路的工作原理。
二、实验内容及原理,实验硬件接线图
图1-1实验硬件接线图
1、硬件接线提示:
Y4/IO地址接CLK/D触发器
Y5/IO地址接CD/D触发器
D/D触发器接SD/D角发器接+5V
Q/D触发器接L7(LED灯)或逻辑笔
2、实验内容及原理:
实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:
280H~287H,Y1:
288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
根据图1-1,我们可以确定A9~A3,AEN,IOW,IOR的值。
要使译码电路正常工作,必须使处于低电平有效。
因而可以确定A6=A8=0,A7=A9=1,AEN=0,IOW与IOR不可同时为1(即不能同时读写)。
当要从Y4输出低脉冲时,A5A4A3=100;从Y5输出时,A5A4A3=101。
综上所述,Y4输出时,应设置值2A0H(A9~A0=B);Y5输出时,应设置值2A8H(A9~A0=B)。
执行下面两条指令
MOVDX,2A0H
OUTDX,AL(或INAL,DX)
Y4输出一个负脉冲到D触发器的CLK上,因为D=1(接了高电平+5V),所以Q被赋值为1.
延时一段时间(delay);
执行下面两条指令;
MOVDX,2A8H
OUTDX,AL(或INAL,DX)
Y5输出一个负脉冲到CD,D触发器被复位,Q=0。
再延时一段时间,然后循环上述步骤。
利用这两个个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
三、程序流程图及源代码
1、程序流程图:
图1-2程序流程图
2、源代码:
outport1equ2a0h;预置,方便修改
outport2equ2a8h
codesegment
assumecs:
code
start:
movdx,outport1;根据原理图设定A9~A0的值(Y4)
outdx,al;让译码器Y4口输出一个负脉冲
calldelay;延时
movdx,outport2;根据原理图设定A9~A0的值(Y5)
outdx,al;让译码器Y5口输出一个负脉冲
calldelay;延时
movah,1;调用1号DOS功能,等待键盘输入
int16h
jestart;若有键盘输入则退出程序,否则继续循环
movah,4ch
int21h
delayprocnear;延时子程序
movbx,200;时延长度(200)
a:
movcx,0
b:
loopb
decbx
jnea
ret
delayendp
codeends
endstart
四、实验结果
LED灯处于闪烁状态,键盘有输入后,成功退出。
五、实验收获与心得体会
遇到的问题:
需要合理设置时延值。
本次是第一次进入微原硬件实验室,熟悉了将要使用的实验仪器、系统,学习了最基本I/O地址译码的方法,学会了在实验的环境下进行单步调试,对接口的地址、LED灯的控制有了初步的了解。
为后续实验做了准备。
实验二简单并行接口
一、实验目的
掌握简单并行接口的工作原理及使用方法。
二、实验内容及原理,实验硬件接线图
1、按下面图2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
图2-1实验电路图
三、程序流程图及源代码
1、程序流程图:
图2-2流程图
2、源代码:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1;调用一号DOS命令,等待键盘输入
INT21H
CMPAL,1BH;是否键入“ESC”
JZFINNAL;当键入“ESC”则退出程序
MOVDX,288H;288H为端口地址
OUTDX,AL;向该端口输出对应的ASCII码
JMPSTART;循环
FINNAL:
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
四、实验结果
键盘输入一个字符,LED灯显示相应的ASCII码。
键入ESC后成功退出。
五、实验收获与心得体会
本次实验让我对实验有了更深的了解,硬件实验需要经常读取硬件的状态,根据其状态采取相应的控制方案,同时需要向接口输出数据和控制信息,驱动硬件正常工作。
通过键盘的输入还记下了一些字符的ASCII码。
实验四七段数码管
一、实验目的
1、通过实验,掌握8255工作方式0以及设置A口为输出口,C口为输入口的方法。
2、掌握数码管显示数字的原理
二、实验内容及原理,实验硬件接线图
1、8255芯片工作原理:
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位(如图3-1),存放在8255控制寄存器中。
最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。
根据上图,方式控制字应为:
B,即80H。
8255控制寄存器端口地址--28BH,A口的地址--288H,B口的地址--289H,C口的地址--28AH。
2、七段数码管及接线图:
1)静态显示:
按3-2连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。
(或编程在数码管上循环显示“00-99”,位码驱动输入端S0、S1接PC0、PC1;S2、S3接地。
)
图3-2接线图
接线:
PA7~PA0/8255接dp~a/LED数码管
PC3~PC0/8255接S3~S0/LED数码管
CS/8255接Y1/IO地址
2)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
七段数码管的字型代码表如下表:
图3-18255方式控制字
(向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。
)
图3-3数码管字型代码
三、程序流程图及源代码
1、程序流程图:
图3-4程序框图
2、源代码:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,80H
MOVDX,28BH
OUTDX,AL
LOOP1:
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,3FH;0的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,08H;最高位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,4FH;3的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,04H;次高位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,5BH;1的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,02H;第3位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,6FH;1的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,01H;第4位显示
OUTDX,AL
MOVAH,1;调用DOS功能,监视键盘是否有输入
INT16H
JZLOOP1;键盘有输入跳出循环,否则继续显示
MOVAH,4CH;返回DOS
INT21H
CODEENDS
ENDSTART
四、实验结果
数码管上静态显示我的学号后四位0064。
五、实验收获与心得体会
通过这次实验,我对如何控制数码管的显示有了更深一步的了解,尤其是知道了显示完毕以后的清零操作。
另外使用了8255芯片也让我对它的工作原理更加熟悉,也知道了应该如何通过方式控制字设置其工作方式。
懂得了置8255的工作方式以及C口的置/复位的方法。
在本实验中数码管的显示是一位写,当然也可以用查表方法来进行。
实验八可编程定时器/计数器(8253/8254)
一、实验目的
学习掌握8253用作定时器的编程原理。
二、实验内容及原理,实验硬件接线图
1、8253芯片
1)8253初始化
使用8253前,要进行初始化编程。
初始化编程的步骤是:
A、向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。
B、向使用的计数器端口写入计数初值。
2)8253控制字:
图8-18253控制字
附:
8253控制寄存器地址283H计数器0地址280H
计数器1地址281H计数器2地址282H
定时器可工作在方式3下。
综上所述,设置控制字为:
B,即选择零号计数器,先读/先写低8位、再读/写高8位,选择方式3,计数初值为二进制。
2、音乐产生原理
由参考资料中的音符与频率对应表,根据计数器的性质,利用公式,使用MATLAB矩阵运算可以快速计算出七种音符在高中低音时计数器应该对应的初始计数值,如下表所示。
图8-2音符频率图
3、接线图
如下图所示(虚线为实际要接的线路):
图8-3接线图
接线:
CS/8253接Y0/IO地址
GATE0/8253接+5V
CLK0/8253接1M时钟
OUT0/8253接喇叭或蜂鸣器
三、程序流程图及源代码
源代码:
DATASEGMENT
BUFDB'31151';两只老虎的乐谱
LTHEQU$-BUF;乐谱长度
ENDS
STACKSEGMENT
DB100DUP(?
)
STACKENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACK
DELAYPROCNEAR;延时子程序
PUSHCX;避免改变原始CX值,将其压入堆栈
MOVCX,0FFFFH;光靠设置CX的值延时还不够长
L:
MOVAX,50;嵌套循环,总循环长度为AX*CX
WA:
DECAX
JNZWA
LOOPL
POPCX;提取原CX值
RET
DELAYENDP
START:
MOVAX,DATA
MOVDS,AX
MOVAL,80H
MOVDX,28BH
OUTDX,AL;初始化8255
MOVDX,283H
MOVALB
OUTDX,AL;初始化8254
BEGIN:
MOVBX,OFFSETBUF;载入音谱
MOVCX,LTH;根据音谱长度设定循环变量
PRO:
MOVAL,[BX];载入音符
ADDBX,1;准备载入下一个音符
CMPAL,31H;通过比较ASCII码,读取单个音符
JZN1;跳往DO
CMPAL,32H
JZN2
CMPAL,33H
JZN3
CMPAL,34H
JZN4
CMPAL,35H
JZN5
CMPAL,36H
JZN6
CMPAL,37H
JZN7
CMPAL,38H
JZN8
PRO2:
LOOPPRO
JMPFIN;音乐播完
N1:
JMPDO;由于程序过长,此处设置跳转中转处
N2:
JMPRE
N3:
JMPMI
N4:
JMPFA
N5:
JMPSO
N6:
JMPLA
N7:
JMPSII
N8:
JMPDOI
DO:
MOVDX,280H;设置零号计数器的初始值
MOVAL,42H;42H是通过公式算得的初始值低8位
OUTDX,AL
MOVAL,0FH;高8位
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;给数码管送出1的段码
MOVAL,06H
OUTDX,AL
MOVDX,28AH;给数码管送出位码(最高位显示)
MOVAL,08H
OUTDX,AL
CALLDELAY;调用延时子程序,以免乐谱播放过快
JMPPRO2;准备接收下一个音符
;以下代码解释雷同
RE:
MOVDX,280H
MOVAL,90H
OUTDX,AL
MOVAL,0DH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,5BH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
MI:
MOVDX,280H
MOVAL,34H
OUTDX,AL
MOVAL,0CH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,4FH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
FA:
MOVDX,280H
MOVAL,74H
OUTDX,AL
MOVAL,0BH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,66H
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
SO:
MOVDX,280H
MOVAL,2CH
OUTDX,AL
MOVAL,0AH
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,6DH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
N9:
JMPBEGIN;代码跳转中转处
LA:
MOVDX,280H
MOVAL,28H
OUTDX,AL
MOVAL,09H
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,7DH
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
SII:
MOVDX,280H
MOVAL,24H
OUTDX,AL
MOVAL,08H
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,07H
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
DOI:
MOVDX,280H
MOVAL,0A2H
OUTDX,AL
MOVAL,07H
OUTDX,AL
MOVDX,28AH
MOVAL,00H
OUTDX,AL
MOVDX,288H
MOVAL,75H
OUTDX,AL
MOVDX,28AH
MOVAL,08H
OUTDX,AL
CALLDELAY
JMPPRO2
FIN:
MOVDX,280H;乐谱播完,进入静音状态,设置初值
MOVAL,0AH;发出超声波(人耳听不到),低8位
OUTDX,AL
MOVAL,00H;高8位
OUTDX,AL
MOVAH,01H;调用1号DOS功能,等待键盘输入
INT21H
CMPAL,1BH;是否输入“ESC”
JNZN9;是则退出,否则进行下一次播放
MOVAH,4CH;程序结束,返回DOS界面
INT21H
CODEENDS
ENDSTART
四、实验结果
8253可以正确播放出存放在数据段的歌曲《欢乐颂》,同时数码管可以正确显示出音符。
五、实验收获与心得体会
在编程时首先要进行8253的初始化,包括计数器的选择、读入计数初值的方式、工作方式的选择以及计数的方式等等。
实验开始之前自己是想设计出一个播放器,可以比较准确的播放出歌曲,数据段存储其音符、音高以及节拍,但是调试到最后也没有成功,于是最后只是进行了功能十分简单的音乐播放,应该说这是一个遗憾。
本次实验颇具趣味性,通过使用8253和8255,我对它们的使用方法有了更深的理解。
进行实验的时候还没有学习过8253,所以在进行实验的时候经历了许多周折。
但最终完成了音乐的播放,也算是一个成功吧,在这次实验中我学会了8253的设置以及编程实现,对之后的理论课学习有非常大的帮助。
实验中对每一个音符的计数初值是一个一个写入的,其实也可以通过查表的方法进行,在尝试写功能比较完备的音乐播放时就用了查表的方法。
实验十六串行口8251A实验
一、实验目的
1、了解串行通讯的基本原理。
2、掌握串行接口芯片8251的工作原理和编程方法。
二、实验内容及原理,实验硬件接线图
1、实验原理:
1)8251A的基本性能:
可以工作在同步或异步方式下,两种方式下的字符位数5-8个;
同步方式时传输速率可达0-64K,异步方式时传输速率可达0-19.2K;
异步传输时,可自动产生一个起始位,程控产生1个、1.5个、2个停止位;
具有奇偶错、数据丢失和帧错误和检测能力;
同步方式时,可自动检测,插入同步字符。
2)8251A的工作原理:
异步接收方式
当8251A工作于异步方式且允许接收和准备好接收数据时,它监视RXD线。
在没有字符信息时,RxD为高电平。
一旦8251A检测到RxD线为低电平,即认为是起始位(Space)到达,便启动内部计数器开始计数。
假设接收时钟频率为波特率的16倍频,8251A的内部寄存器计数接收始终的第8个脉冲时,又一次采样RXD线,看两次采样的信号是否一致。
如果相同,即都为低,则表示一个起始位的到来。
此后,每隔一位的时间,在每个数据中间的一个接收时钟的上升沿采样一次RxD线作为输入信号,送至串→并移位寄存器。
在移位寄存器中数据被转换成并行,并且进行奇偶校验并去除停止位后,经8251A内部数据总线送至接收缓冲器,同时发出RxRDY信号,表示一个字符的接收和转换全部完成。
如果在第二次采样RxD线发现为高电平,则可能是一个干扰噪声。
于是8251A将不予理会,重新进行下一次的采样。
异步发送方式
异步发送时,首先必须由程序设置TxEN(TransmitterEnable――发送允许)和(ClearToSend――由外设发来的对CPU请求发送信号的响应信号)有效后,方可发送。
发送时,发送器为每个字符自动地加上1位起始位,并按照程序的要求加上1位奇偶校验位,1、1.5、或2位停止位,在发送时钟的下降沿经发送移位
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮微原 硬件 实验 报告
![提示](https://static.bingdoc.com/images/bang_tan.gif)