收藏 分销(赏)

北邮微原硬件实验报告.doc

上传人:Fis****915 文档编号:551811 上传时间:2023-12-06 格式:DOC 页数:30 大小:854.88KB
下载 相关 举报
北邮微原硬件实验报告.doc_第1页
第1页 / 共30页
北邮微原硬件实验报告.doc_第2页
第2页 / 共30页
北邮微原硬件实验报告.doc_第3页
第3页 / 共30页
北邮微原硬件实验报告.doc_第4页
第4页 / 共30页
北邮微原硬件实验报告.doc_第5页
第5页 / 共30页
点击查看更多>>
资源描述

1、 信息与通信工程学院 微机原理硬件实验报告 2013年微机原理硬件实验报告 学 院:信息与通信工程学院班 级:2011211104姓 名: 实验一 I/O地址译码 一实验目的 掌握I/O地址译码电路的工作原理。 二实验原理和内容 1.实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H287H,Y1:288H28FH, 当CPU执行I/O指令且地址在280H2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指

2、令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,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、或 逻辑笔 三 程序流程图 开始 设置循环次数 输出负脉冲点亮L7调用延时子程序延时 输出另一个负脉冲,熄灭L7调用延时子程序延时循环次数是否到零 结束否是 四 源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACK DB 100H DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延时子程序DELAY PROC NEARMOV BX,500PUSH CXLOOP2:MOV CX,0FFFHWAIT: LOOP WAITDEC BXJNZ LOOP2POP CXRETDELAY

4、ENDPSTART:MOV CX,0FFFFH;二极管闪烁部分LOOP1:MOV DX,2A0H;灯亮OUT DX,ALCALL DELAYMOV DX,2A8H;灯灭OUT DX,ALCALL DELAYLOOP LOOP1CODE ENDSEND START五 实验结果 LED7正常闪烁显示六. 实验总结这是我们第一次做微原硬件实验,我开始一直觉得编程很重要,发现按照实验要求很快就编出了程序,完成了实验,但是当给老师验收时,老师问我为什么向2A0口输出一下,就会在Y4产生一个负脉冲,我瞬间就僵住了,的确我没有考虑过这个问题。后来,经过我对电路图的分析思考,得出了正确的结论,我才明白,硬件才

5、是这个实验的核心,最重要的是要理解硬件是如何工作的,而不是仅仅按照要求编个程序就可以了。同时,我也十分感谢老师对我们的严格要求! 实验二 简单并行接口 一实验目的 掌握简单并行接口的工作原理及使用方法。 二实验原理和内容 1.按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0D7,8个Q输出端接LED显示电路L0L7。 2.编程从键盘输入一个字符或数字,将其ASC码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。 3.按下面图4-2-2简单并行输入接口电路图连接电

6、路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0K7,8个数据输出端分别接数据总线D0D7。 4.用逻辑电平开关预置某个字母的ASC码,编程输入这个ASC码,并将其对应字母在屏幕上显示出来。 5.接线: 1)输出 按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门) 2)输入 按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门) 由于,我的实验台上的芯片是74LS273,因此本实验仅涉及74LS273输出。三 程序流程图 四源程序DATA SEGMENTDATA EN

7、DSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: MOV AH,1;键盘输入 INT 21H CMP AL,27;检测是否为ESC键 JZ EXIT MOV DX,2A8H;输出 OUT DX,AL JMP START;返回DOSEXIT: MOV AX,4C00H INT 21HCODE ENDS END START五实验结果 键盘输入字符,然后二极管显示键盘输入字符的ASC码六实验总结本次实验相较上一次实验,顺利很多,因为有了第一次实验的

8、基础,我在编代码之前,先仔细研究课硬件电路图,分析了整个过程中硬件是如何工作的,都会有怎样的反应,而后才编写了程序,并验收通过。 实验三 可编程并行接口8255 一实验目的 通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。 二实验原理和内容 18255的工作方式 一片8255内部有3个端口,A口可以工作在方式0、方式1或方式2,B口可以工作在方式0、方式1,C口可以工作在方式0。 方式0是基本型输入/输出。这种方式和外设交换数据时,8255端口与外设之间不使用联络线。 方式1为选通型输入/输出。用这种方式和外界交换数据时,端口和外设之间要有联络信号。 方式2是双向数

9、据传送,仅A口有这项功能。当A口工作在方式2时,B口仍可以工作在方式0或方式1,但此时B口方式1只能用查询方式与CPU交换信息。 2. 工作方式选择字8255工作方式选择字共8位(如图),存放在8255控制寄存器中。最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。 3C口置/复位控制字8255的C口可进行位操作,即:可对8255C口的每一位进行置位或清零操作,该操作是通过设置C口置/复位字实现的。C口置/复位字共8位,各位含义如下: 48255A的控制信号与传输动作的对应关系 : 5命令字与初始化编程 8255有两个命令

10、字,即方式选择控制字和C口置0/置1控制字,初始化编程的步骤是: 向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。 当端口预置为方式1或方式2时,再向控制寄存器写入“C口置0/置1控制字”。这一操作的主要目的是使相应端口的中断允许触发器置0,从而禁止中断,或者使相应端口的中断允许触发器置1,从而允许端口提出中断请求。 注意:“C口置0/置1控制字”虽然是对C口进行操作,但是该控制字是命令字,所以要写入控制寄存器,而不是写入C口控制寄存器。 向8255数据寄存器写入“数据”或从8255数据寄存器读出“数据” 6.实验内容(1)实验电路如图4-3-1,8255C口接逻辑电平开关

11、K0K7,A口接LED显示电路L0L7。 (2)编程从8255C口输入数据,再从A口输出。 (3)接线:PC7PC0/8255 接 K7K0/逻辑电平开关 PA7PA0/8255 接 L7L0/LED显示 CS/8255 接 Y1/IO地址 8255控制寄存器端口地址-28BH, A口的地址-288H, B口的地址-289H,C口的地址-28AH。 三程序流程图 四源程序DATASEGMENTDATAENDSSTACKSEGMENT DB100 DUP(?)STACKENDSCODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTARTPROC FAR PUS

12、HDSXOR AX,AX PUSHAX ;准备返回DOS MOV AL,10001001B;8255初始化,设置A口为输出,C口输入 MOV DX,28BH OUT DX,AL LOOP1: MOV DX,28AH ;从C口读入开关状态 IN AL,DX MOV DX,288H ;向A口输出,点亮对应二极管 OUT DX,AL JMP LOOP1RETSTARTENDPCODE ENDS END START 五实验结果打开开关,对应的LED灯被点亮六实验总结本次实验是关于并行接口8255,由于在实验前我们还没有讲8255,使得我在做实验过程中发生了很多困难,主要是在对硬件连接的分析上一直没有搞

13、懂,后来我和周围同学看着课本一点点的讨论,最终弄懂了硬件连接和响应的过程,也使得我们对8255有了深刻的理解,画出硬件连接图后,很快编写了程序,完成了实验内容。在此,还要感谢老师对我们严格要求,使得我们能真正搞懂硬件,再去完成软件编程。 实验四 七段数码管 一实验目的 掌握数码管显示数字的原理 二 实验原理和内容 1.数码管原理实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。七段数码管的字型代码表如下表: 2.实验内容 静态显示:按4-4-1连接好电路,将8255的A口PA0PA7分别与七段数码管的段码驱动输入端adp相连

14、,位码驱动输入端S0、S1 、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。(或编程在数码管上循环显示“00-99”, 位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。) 3.接线: PA7PA0/8255 接 dpa/LED数码管 PC3PC0/8255 接 S3S0/LED数码管 CS/8255 接 Y1/IO地址 三程序流程图 四源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODESEGMENTASSUME CS:CODE,DS:DATA,S

15、S:STACKSTART:MOV AX,DATA MOVDS,AX MOV DX,28BH;写控制口,设置A,C口为输出 MOV AL,80H OUT DX,AL MOV CX,100AGAIN:MOV DX,28AH;第一个数码管显示MOV AL,00HOUT DX,ALMOV DX,288HMOV AL,3FHOUT DX,ALMOV DX,28AHMOV AL,01HOUT DX,ALMOV DX,28AH ;第二个数码管显示MOV AL,00HOUT DX,ALMOV DX,288HMOV AL,5BHOUT DX,ALMOV DX,28AHMOV AL,02HOUT DX,ALMOV

16、 DX,28AH ;第三个数码管显示MOV AL,00HOUT DX,ALMOV DX,288HMOV AL,06HOUT DX,ALMOV DX,28AHMOV AL,04HOUT DX,ALMOV DX,28AH ;第四个数码管显示MOV AL,00HOUT DX,ALMOV DX,288HMOV AL,3FHOUT DX,ALMOV DX,28AHMOV AL,08HOUT DX,AL LOOP AGAIN MOV AH,4CHINT 21HCODEENDSEND START五实验结果 数码管显示我的学号后四位0120六实验总结 实验中遇到的问题: 由于有上一个实验的基础,我在做这个实验

17、时对8255的工作方式和硬件连接已经十分熟悉了,因此开始很快就分析了硬件,画出流程图,编写了代码,原本以为可以很快做完这个实验,后来发现数码管显示有问题,显示有重影,还有些闪烁,后来,经过分析,我觉得是因为点亮每个数码管之前没有复位导致的,所以我在每次显示数码管之前对数码管的位码复位: MOV DX,28AH MOV AL,00H OUT DX,AL 经过修改显示了稳定、清晰的数字。 这次实验再一次巩固了我对8255并行接口的理解和使用,同时,学会了数码管的使用。收获颇丰,也对我的理论课学习有十分大的帮助! 实验八 可编程定时器计数器(8253/8254) 一实验目的: 学习掌握8253用作定

18、时器的编程原理; 二实验原理和内容 1.8253/8254的使用8253和8254都是可编程计数器,它们的引脚兼容,功能与使用方法相同。8254是8253的改进型。 (1)8253初始化 使用8253前,要进行初始化编程。初始化编程的步骤是: 向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。 向使用的计数器端口写入计数初值。 (2)8253控制字 D7D600:使用0号计数器,D7D601:使用1号计数器 D7D610:使用2号计数器,D7D611:无效 D5D400:锁存当前计数值 D5D401:只写低8位(高8位为0),读出时只读低8位 D5D410:只写高8位(低8位为0),读

19、出时只读高8位 D5D411:先读/写低8位,后读/写高8位计数值 D3D2D1000:选择方式0,D3D2D1001:选择方式1 D3D2D1X10:选择方式2,D3D2D1X11:选择方式3 D3D2D1100:选择方式4,D3D2D1101:选择方式5 D00:计数初值为二进制,D01:计数初值为BCD码数 2. 实验电路 3.接线: CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟 OUT0 /8253 接 喇叭或蜂鸣器 8253控制寄存器地址 283H ,计数器0地址 280H ,计数器1地址 281H ,计数器2地址

20、282H ,CLK0连接时钟 1MHZ 4.实验内容: 完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。 扩展部分:利用小键盘实现弹琴功能,并显示弹奏的乐谱。 三程序流程图 开始 初始化8254 初始化8255设置循环次数为歌曲长度 取一个音符 数码管显示音符按照音符频率,输出给8254计数初值将分频后的时钟,输出给喇叭发声 循环次数减一循环次数是否到0 结束是否四源程序1.基础实验:(自动播放预存乐曲)DATA SEGMENTNOTE DW 0,3906,3472,3125,2932,2604,2344,2083,1953;频率TABLE DB 3FH,06H,5BH,4

21、FH,66H,6DH,7DH,07H,7FH,6FH;数码管MUSIC DB 1,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;存放的乐符DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延时子程序DELAY PROC NEAR PUSH CX MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX R

22、ETDELAY ENDPSTART: MOV AX,DATA MOV DS,AX;8254初始化 MOV DX,283H MOV AL,36H ;零号计数器,工作在方式3 OUT DX,AL;8255初始化 MOV DX,28BH MOV AL,80H OUT DX,AL MOV DX,28AH MOVAL,01H OUT DX,AL AGAIN: MOV SI,0 MOV CX,42 PLAY: MOV BL,MUSICSI MOV BH,0 MOV AL,TABLEBX MOV DX,288H ;显示音符 OUT DX,AL ADD BX,BX MOV AX,NOTEBX MOV DX,2

23、80H OUT DX,AL MOV AL,AH OUT DX,AL MOV AX,120HLOOP1: CALL DELAY DEC AX JNZ LOOP1 MOV AX,0 MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL CALL DELAY INC SI LOOP PLAY JMP AGAINCODE ENDS END START 2. 拓展实验:(DOS调用键盘输入弹奏乐曲) DATA SEGMENTNOTE DW 0,3906,3472,3125,2932,2604,2344,2083,1953;频率TABLE DB 3FH,06H,5BH,4FH

24、,66H,6DH,7DH,07H,7FH,6FH;数码管DATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK;延时子程序DELAY PROC NEAR PUSH CX MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX RETDELAY ENDPSTART: MOV AX,DATA MOV DS,AX;8254初始化 MOV DX,283H MOV AL,36H ;零号计数器,工作在方式3 OUT DX,AL;8255

25、初始化 MOV DX,28BH MOV AL,80H OUT DX,AL MOV DX,28AH MOVAL,01H OUT DX,AL PLAY: MOV AH,01H INT 21H SUB AL,30H MOV AH,0 MOV BX,AX MOV AL,TABLEBX MOV DX,288H ;显示音符 OUT DX,AL ADD BX,BX MOV AX,NOTEBX MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL MOV AX,90HLOOP1: CALL DELAY DEC AX JNZ LOOP1 MOV AX,0 MOV DX,280H O

26、UT DX,AL MOV AL,AH OUT DX,AL CALL DELAY JMP PLAYCODE ENDS END START五实验结果 基础实验:正常播放出预存的小星星歌曲拓展实验:由键盘输入,可以弹奏乐曲六实验总结实验中遇到的问题:1. 播放音乐声音刺耳,发现是因为用了蜂鸣器,改用喇叭后声音不再刺耳。2. 播放音乐音调有问题,发现是分频比计算错误导致这次实验是我第一次接触8254,为了能顺利完成实验,我按照老师的要求在课前做好了预习工作,提前编写了代码,并画了硬件连接图和对应的程序流程图。于是在课上节省了很多时间,很快便调试成功。而后,我有对实验进行了拓展,将自动播放音乐,改为由键

27、盘输入弹奏音乐,并实现成功。通过这次实验,我基本学会了8254计数器的使用,对我理论课的学习有很大帮助!七思考题写出8253计数初值、输入频率和输出频率的关系。 输出频率 = 输入频率 / 8253计数初值 实验十六 串行通讯8251 一实验目的 1.了解串行通讯的基本原理。 2.掌握串行接口芯片8251的工作原理和编程方法。 二实验原理和内容 1.按图4-16-1连接好电路,(8251插通用插座)其中8254计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。 2.编程: 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,(或将内存制定区域内存放的一

28、批数据通过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

29、 (3) 收发采用查询方式。 扩展:双机通信,将发送端用小键盘发送数据,接收端用数码管显示接收的数据。 连线:将发送端的TXD与接收端的RXD,将发送端的RXD与接收端的TXD,(即交叉连接),并将两台接口板的地连在一起。其余与上面连线相同。 三程序流程图四源程序1.基础部分:(自发自收) DATA SEGMENTERRMSG DB 0DH,0AH,error,0DH,0AH,$STRING DB 0DH,0AH,Please input a word.,0DH,0AH,$,0DH,0AHDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK

30、 ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: ;8253初始化 MOV DX,283H MOV AL,00010110B OUT DX,AL MOV DX,280H MOV AL,52 OUT DX,AL MOV AH,09H MOV DX,SEG STRING MOV DS,DX MOV DX,OFFSET STRING INT 21H ;初始化8251A GOON: MOV DX,2B9H MOV AL,40H OUT DX,AL NOP MOV AL,5EH ;设置异步方式,1位停止位,字符长度为8位,奇校验,波特率因子为

31、16 OUT DX,AL MOV AL,37H ;命令控制字对应位置一 OUT DX,AL ;查询工作 AGAIN: MOV DX,2B9H IN AL,DX TEST AL,38H;检查是否出错 JNZ ERR TEST AL,01H;检查是否可以发送数据 JZ AGAIN MOV AH,01H;从键盘输入一个字符,ACSII码加一后在输出 INT 21H CMP AL,1BH JZ EXIT INC AL MOV DX,2B8H OUT DX,AL MOV CX,100H LOOP1: LOOP LOOP1 RECEIVE: MOV DX,2B9H IN AL,DX TEST AL,02H

32、;检查是否收到新数据 JZ RECEIVE MOV DX,2B8H IN AL,DX MOV DL,AL MOV AH,02H INT 21H JMP GOON ERR: MOV AH,09H MOV DX,SEG ERRMSG MOV DS,DX MOV DX,OFFSET ERRMSG INT 21H EXIT: MOV AX,4C00H INT 21H CODE ENDS END START2. 拓展双机通信:(1) 单工:发送方: DATA SEGMENTERRMSG DB 0DH,0AH,error,0DH,0AH,$STRING DB 0DH,0AH,Please input a word.,0DH,0AH,$,0DH,0AHDATA ENDSSTACK SEGMENT STACK STACK DB 100 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACKSTART: ;8253初始化 MOV DX,283H MOV AL,00010110B OUT DX,AL MOV DX,280H MOV AL,52

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 行业资料 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服