当前位置:文档之家› 北邮微原硬件实验报告

北邮微原硬件实验报告

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范围内,译码器选中,必有一根译码线输出负脉冲。

例如:执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲,执行下面两条指令MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。

原理:地址2A0H的A5,A4,A5为100,在输入或输出时,IOW或I OR为0,使得74LS138被选中,经过译码,在Y4口输出负脉冲。

其他同理。

图1-1利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

2.接线:Y4/IO地址接CLK/D触发器Y5/IO 地址 接 CD/D 触发器D/D触发器 接 SD/D 角发器 接 +5VQ /D 触发器 接 L7(L ED 灯)或 逻辑笔三.程序流程图四.源程序DA TA ﻩSE GMENTD ATA ﻩﻩENDSST ACK SE GME NT ST ACK 'STA CK'DB 100H DU P(?)STA CK ENDS否CODE SEGMENTﻩASSUME ﻩCS:CODE,DS:DATA,SS:STACK;延时子程序DELAYPROCﻩNEARﻩMOV BX,500ﻩPUSHﻩCXLOOP2: ﻩMOV CX,0FFFHWAIT: LOOPWAITﻩﻩDECBXﻩﻩJNZ LOOP2POPﻩCXﻩRETDELAYﻩENDPSTART:ﻩﻩMOV CX,0FFFFHﻩ;二极管闪烁部分LOOP1: MOV DX,2A0H ﻩ;灯亮ﻩOUT DX,ALﻩCALL ﻩDELAYﻩﻩMOVDX,2A8Hﻩ;灯灭ﻩOUT ﻩDX,ALﻩCALL DELAYﻩﻩLOOPLOOP1CODE ﻩﻩENDSEND START五.实验结果LED7正常闪烁显示六.实验总结这是我们第一次做微原硬件实验,我开始一直觉得编程很重要,发现按照实验要求很快就编出了程序,完成了实验,但是当给老师验收时,老师问我为什么向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输出。

三.程序流程图四.源程序DATA SEGMENTDATA ENDSSTACK ﻩSEGMENTSTACK'STACK'ﻩDB100DUP(?)STACK E NDSCODE ﻩSEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV ﻩAH,1ﻩ;键盘输入ﻩINT 21HﻩCMPAL,27;检测是否为ESC键ﻩJZ ﻩﻩEXITﻩMOV ﻩDX,2A8Hﻩ;输出OUTﻩDX,ALﻩJMP START;返回DOSEXIT: MOV AX,4C00HINT21HCODE ﻩENDSENDSTART五.实验结果键盘输入字符,然后二极管显示键盘输入字符的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。

三.程序流程图四.源程序DATASEGMENTDATA ENDSSTACK SEGMENTDBﻩ100DUP(?)STACKﻩENDSCODESEGMENTﻩASSUME CS:CODE,DS:DATA,SS:STACKSTARTﻩPROC ﻩFARPUSHﻩDSXORﻩAX,AXPUSHAX;准备返回DOSMOV AL,10001001B;8255初始化,设置A口为输出,C口输入MOVDX,28BHOUT DX,ALLOOP1:MOV DX,28AH ;从C口读入开关状态INAL,DXMOV DX,288H;向A口输出,点亮对应二极管OUTDX,ALJMPLOOP1ﻩRETﻩﻩﻩSTART ENDPCODE ENDSENDSTART五.实验结果打开开关,对应的LED灯被点亮六.实验总结本次实验是关于并行接口8255,由于在实验前我们还没有讲8255,使得我在做实验过程中发生了很多困难,主要是在对硬件连接的分析上一直没有搞懂,后来我和周围同学看着课本一点点的讨论,最终弄懂了硬件连接和响应的过程,也使得我们对8255有了深刻的理解,画出硬件连接图后,很快编写了程序,完成了实验内容。

在此,还要感谢老师对我们严格要求,使得我们能真正搞懂硬件,再去完成软件编程。

实验四七段数码管一.实验目的掌握数码管显示数字的原理二.实验原理和内容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地址三.程序流程图四.源程序DATASEGMENTDA TA ﻩENDSSTACKSEGMENTSTACK'STACK'ﻩﻩDB 100DUP(?)STACKﻩENDSCODEﻩSEGMENTﻩASSUME CS:CODE,DS:DA TA,SS:STACKSTART:ﻩMOVﻩAX,DATAﻩMOVﻩDS,AXMOV DX,28BHﻩ;写控制口,设置A,C口为输出MOVﻩAL,80HﻩOUT DX,ALﻩMOV CX,100AGAIN:ﻩMOV ﻩDX,28AH ;第一个数码管显示MOV ﻩAL,00HOUT DX,ALMOV DX,288HﻩMOV ﻩAL,3FHﻩOUT ﻩDX,ALMOVDX,28AHMOV AL,01HOUT DX,ALMOV ﻩDX,28AH;第二个数码管显示MOVAL,00HOUT ﻩDX,ALMOV ﻩDX,288HﻩMOV AL,5BHOUT DX,ALﻩMOVﻩDX,28AHﻩMOV ﻩAL,02HﻩOUT ﻩDX,ALﻩMOV ﻩDX,28AH ;第三个数码管显示ﻩMOV ﻩAL,00HOUTﻩDX,ALMOVﻩDX,288HMOV AL,06HﻩOUTDX,ALﻩMOVﻩDX,28AHMOV AL,04HOUT DX,ALﻩﻩﻩMOV DX,28AH;第四个数码管显示ﻩMOV AL,00HOUT DX,ALMOV ﻩDX,288HﻩMOV AL,3FHOUT ﻩDX,ALMOVﻩDX,28AHﻩMOV AL,08HﻩOUTﻩDX,ALLOOPAGAINMOVAH,4CHINT 21HCODE ENDSﻩEND START五.实验结果数码管显示我的学号后四位0120六.实验总结实验中遇到的问题:由于有上一个实验的基础,我在做这个实验时对8255的工作方式和硬件连接已经十分熟悉了,因此开始很快就分析了硬件,画出流程图,编写了代码,原本以为可以很快做完这个实验,后来发现数码管显示有问题,显示有重影,还有些闪烁,后来,经过分析,我觉得是因为点亮每个数码管之前没有复位导致的,所以我在每次显示数码管之前对数码管的位码复位:MOV ﻩDX,28AHﻩMOV ﻩAL,00HOUT DX,AL经过修改显示了稳定、清晰的数字。

相关主题