易妖游戏网
您的当前位置:首页北京邮电大学微机原理与接口技术硬件实验报告

北京邮电大学微机原理与接口技术硬件实验报告

来源:易妖游戏网


信息与通信工程学院

微机原理与接口技术硬件实验报告

级: 名: 号: 号:

姓 学 序

日 期: 2015-10-30——2015-12-26

1

目录

实验一 I/O地址译码 ............................................................................................................................. 3

一、 实验目的 ............................................................................................................................ 3 二、 实验原理及内容 .............................................................................................................. 3 三、 硬件接线图与软件程序流程图 .................................................................................. 3 四、源程序 ....................................................................................................................................... 4 五、 实验结果 ................................................................................................................................ 5 六、 实验总结 ................................................................................................................................ 5 七、 实验收获与心得体会 ........................................................................................................ 5 实验二 简单并行接口 ........................................................................................................................... 5

一、 实验目的 ............................................................................................................................ 5 二、 实验原理及内容 .............................................................................................................. 5 三、硬件接线图与软件程序流程图........................................................................................ 6 四、源程序 ....................................................................................................................................... 6 五、实验结果 .................................................................................................................................. 7 六、 实验总结 ................................................................................................................................ 7 七、 实验收获与心得体会 ........................................................................................................ 7 实验四 七段数码管 ................................................................................................................................ 7

一、 实验目的 ................................................................................................................................ 7 二、 实验原理及内容 .................................................................................................................. 8 三、硬件接线图与软件程序流程图........................................................................................ 8 四、源程序 ....................................................................................................................................... 9 五、实验结果 ............................................................................................................................... 11 六、 实验总结 ............................................................................................................................. 11 七、 实验收获与心得体会 ..................................................................................................... 11 实验八 可编程定时器/计数器(8253/8254) ...................................................................... 11

一、 实验目的 ............................................................................................................................. 11 二、 实验原理及内容 ............................................................................................................... 11 三、硬件接线图与软件程序流程图..................................................................................... 12 四、源程序 .................................................................................................................................... 13 五、实验结果 ............................................................................................................................... 17 六、 实验总结与思考题 .......................................................................................................... 17 七、 实验收获与心得体会 ..................................................................................................... 17 实验十六 串行通讯8251 ................................................................................................................. 18

一、 实验目的 ............................................................................................................................. 18 二、 实验原理及内容 ............................................................................................................... 18 三、硬件接线图与软件程序流程图..................................................................................... 18 四、源程序 .................................................................................................................................... 19 五、实验结果 ............................................................................................................................... 22 六、 实验总结与思考题 .......................................................................................................... 22 七、 实验收获与心得体会 ..................................................................................................... 22

2

实验一 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,2A0H

OUT DX,AL(或IN AL,DX)

Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H

OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。 2、接线: Y4/IO地址 接 CLK/D触发器 Y5/IO地址 接 CD/D触发器

D/D触发器 接 SD/D角发器 接 +5V Q/D触发器 接 L7(LED灯)或 逻辑笔

三、 硬件接线图与软件程序流程图

硬件连接图如下:

3

程序流程图如下:

四、源程序

CODE SEGMENT

ASSUME CS:CODE ;定义代码段

START:

MOV DX,2A0H ;选通Y4 OUT DX,AL

CALL DELAY ;延时

MOV DX,2A8H ;选通Y5 OUT DX,AL

CALL DELAY ;延时

MOV AH,1H

INT 16H ;01号功能调用,从键盘接收按键 JZ START ;无键按下,返回START MOV AH,4CH ;有键按下,返回DOS系统 INT 21H

DELAY PROC NEAR ;延时子程序,循环系数为100 MOV BX,100

4

LOOP1: MOV CX,0 LOOP2: LOOP LOOP2 DEC BX JNZ LOOP1 RET DELAY ENDP

CODE ENDS

END START

五、 实验结果

按下键盘时L7闪烁发光,交替亮灭。

六、 实验总结

实验一开始时不理解怎样选通Y4和Y5的地址,对整个接口电路分析后才明白了译码电路真正的原理。

七、 实验收获与心得体会

本次实验主要了解了端口的输出,D触发器作为一个外部端口实现了向D触发器内写值并正确输出,控制灯泡亮灭,实现了译码功能。对I/O接口有了更深的理解,对以后的实验很有帮助。这次实验是第一次用汇编语言来让硬件实现功能,和之前学过的C++有很大的区别,也让我进一步看到了他们的不同之处。

实验二 简单并行接口

一、 实验目的

掌握简单并行接口的工作原理及使用方法。

二、 实验原理及内容

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为实验台逻辑或门)

5

三、硬件接线图与软件程序流程图

硬件连接图如下:

图4-2-1 图4-2-2

程序流程图如下:

四、源程序

6

CODE SEGMENT ;定义代码段 ASSUME CS:CODE START:MOV AH,1

INT 21H ;从键盘检测输入 CMP AL,00011011B JZ EXIT

MOV DX,2A8H ;送出ASCII码 OUT DX,AL

MOV DX,2A0H ;读入ASCII码 IN AL,DX MOV DL,AL

MOV AH,02H ;屏幕显示ASCII码 INT 21H

JMP START ;循环检测

EXIT:MOV AX,4C00H ;返回DOS INT 21H CODE ENDS END START

五、实验结果

从键盘输入字符或数字,若不是Esc键,则二极管显示其ASCII码情况,若按下ESC,则返回dos,且各LED灯灭。

六、 实验总结

实验一开始不太明白如何把输入的字符通过二极管显示出来,后来参考了实验一的译码输

出,理解了实验原理。

七、 实验收获与心得体会

这次实验是对I/O接口译码电路的运用,进一步熟悉了译码电路、键盘输入检测等功能的运用,让我很好的明白了CPU的地址总线与外部接口是如何工作,也进一步了解了硬件实验,希望在以后的实验中有更多的收获。

实验四 七段数码管

一、 实验目的

掌握数码管显示数字的原理

7

二、 实验原理及内容

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地址

三、硬件接线图与软件程序流程图

硬件连接图如下:

程序流程图如下:

8

四、源程序

DATA SEGMENT ;定义代码段 DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV DX,28BH ;控制口地址 MOV AL,80H ;控制字10000000设定工作方式0,所有口都置为输出 OUT DX,AL

LOP1: MOV DX,288H ;A口地址 MOV AL,3fH ;段选写0 OUT DX,AL MOV DX,28AH ;位选第4个LED,C口地址 MOV AL,08H OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL MOV DX,288H ;段选写3 MOV AL,4fH OUT DX,AL MOV DX,28AH ;位选第3个LED MOV AL,04H

9

OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL MOV DX,288H ;段选写0 MOV AL,3fH OUT DX,AL MOV DX,28AH ;位选第2个LED MOV AL,02H OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL MOV DX,288H ;段选写0 MOV AL,3fH OUT DX,AL MOV DX,28AH ;位选第1个LED MOV AL,01H OUT DX,AL MOV DX,28AH ;熄灭数码管 MOV AL,0 OUT DX,AL MOV AH,01H INT 16H JNZ EXIT ;有键输入则退出 JMP LOP1

EXIT: MOV AX,4C00H ;返回DOS INT 21H CODE ENDS END START

10

五、实验结果

结果显示了学号的后四位0300,如下如所示:

当有键盘输入时,返回DOS系统。

六、 实验总结

本次实验用了8255并行接口芯片,采用方式0,所有口都用输出模式,A口为段选,控制输出的数据,C口为位选,控制不同的位不断扫描、交替亮灭。

七、 实验收获与心得体会

这次实验在前两次实验的基础上,用到了并行接口芯片和数码管,在数码管上显示数据,在

8255工作在方式0时,用两个输出端口,控制数码管工作,数码管在之前数电实验的基础上比较好理解,这次实验较之前的实验更有难度,不过学到了很多知识,由于理论还没有讲到8255,实验有一定难度,不过对理论课也有一定的帮助。

实验八 可编程定时器/计数器(8253/8254)

一、 实验目的

学习掌握8253用作定时器的编程原理;

二、 实验原理及内容

1.8253初始化

使用8253前,要进行初始化编程。初始化编程的步骤是:

11

① 向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。 ② 向使用的计数器端口写入计数初值。 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码数

3.实验内容

完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。利用小键盘实现弹琴功能,并显示弹奏的乐谱。

三、硬件接线图与软件程序流程图

接线图如下:

CS /8253 接 Y0 /IO 地址 GATE0 /8253 接 +5V CLK0 /8253 接 1M时钟

OUT0 /8253 接 喇叭或蜂鸣器

12

程序流程图如下:

四、源程序

DATA SEGMENT

FENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953;分频比 DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管 MUSIC DB

5,3,5,3,5,3,1,1,2,4,3,2,5,5,5,5,5,3,5,3,5,3,1,1,2,4,3,2,1,1,1,1,2,2,4,4,3,1,5,5 ;存放播放的乐曲音符

NUM DB 00H,070H,0B0H,0D0H,0E0H ;检测键盘输入 DATA ENDS

STACK SEGMENT STACK 'STACK' DB 100 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

;延时子程序

13

DELAY PROC NEAR PUSH CX

MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

;延时子程序2

DELAY1 PROC NEAR PUSH CX

MOV CX,0FFFFH WAIT1: LOOP WAIT1 POP CX RET DELAY1 ENDP

;获取键盘输入值的子程序 KEY PROC NEAR

PUSH AX ;保护现场 PUSH CX PUSH DX

MOV CX,01H

CHECK: MOV DX,28AH ;C口地址给DX MOV BX,OFFSET NUM ADD BX,CX MOV AL,[BX] OUT DX,AL ;防抖

IN AL,DX ;判断是否有键盘按下 MOV AH,AL CALL DELAY

IN AL,DX CMP AL,AH

JNZ CHECK ;不相等说明为抖动,重新检测 ;判断按下的列

AND AL,0FH CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH JZ NEXT2 CMP AL,0BH JZ NEXT3 MOV BX,01H JMP GOT

NEXT: INC CX ;修改变量扫描下一行 CMP CX,05H JNZ JUMP1

14

MOV CX,01H JUMP1: JMP CHECK NEXT1: MOV BX,04H JMP GOT NEXT2: MOV BX,03H JMP GOT NEXT3: MOV BX,02H

;计算按下键盘的数值

GOT: SUB CX,01H MOV AL,CL MOV DL,04H MUL DL ADD BL,AL

SUB BL,01H ;此时BX中所存即为对应的偏移量 POP DX ;恢复现场 POP CX POP AX RET KEY ENDP

;主程序

START: MOV AX,DATA MOV DS,AX ;8253初始化 MOV DX, 283H

MOV AL,36H 控制字为00110110,选计数器0,先读低字节再读高字节,选用工作方式3 OUT DX,AL

;8255初始化 MOV DX,28BH

MOV AL,81H ;C口输入(10000001) OUT DX,AL

MOV DX,2H ;B口位选数码管 MOV AL,01H OUT DX,AL ;扫描键盘

LOOP1: CALL KEY

CMP BX,0 ;按0播放音乐 JZ PLAY0

CMP BX,9 ;按9退出 JZ EXIT ;按1~8发出对应音 MOV CX,BX

MOV BX,OFFSET DIGITAL ;数码管显示音符 ADD BX,CX MOV AL,[BX]

MOV DX,288H ;A口输出 OUT DX,AL ;播放该音符

MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX

15

ADD BX,AX

;计数,先低八位后高八位 MOV AX,[BX] MOV DX,280H OUT DX,AL MOV AL,AH OUT DX,AL

CALL DELAY1 CALL DELAY1

MOV DX,28AH ;C口输入 IN AL,DX ;检测键盘是否弹起 MOV AH,AL LOOP2: CALL DELAY IN AL,DX CMP AL,AH JZ LOOP2

;初始化8253,停止播放音乐 MOV AX,0H MOV DX,283H MOV AL,36H OUT DX,AL

JMP LOOP1

;播放音乐

PLAY0: MOV CX,01H PLAY: PUSH CX

;读取音符,存于CX中 MOV BX,OFFSET MUSIC ADD BX,CX MOV AL,[BX] MOV CL,AL MOV CH,0H ;数码管显示

MOV BX,OFFSET DIGITAL ADD BX,CX MOV AL,[BX] MOV DX,288H OUT DX,AL ;播放该乐符

MOV BX,OFFSET FENPIN MOV AX,CX ADD AX,AX ADD BX,AX

;计数,先低八位后高八位 MOV AX,[BX] MOV DX,280H OUT DX,AL MOV AL,AH

16

OUT DX,AL POP CX ;延时,持续播放 MOV AX,90H LOOP3: CALL DELAY1 DEC AX

JNZ LOOP3

;乐曲未结束时,CX加1 INC CX

CMP CX,28H;共40个音符 JNZ JUM JMP LOOP1 JUM: JMP PLAY

EXIT: MOV AL,0 MOV DX,288H OUT DX,AL MOV AX,4C00H INT 21H

CODE ENDS

END START

五、实验结果

按下键盘0,播放歌曲“粉刷匠”,数码管显示相应的音符;按下小键盘的1——8,喇叭播放所对应的音符,数码管显示按下的音符;按下键盘的9时,数码管熄灭,返回DOS系统。

六、 实验总结与思考题

实验主要用了8253计数器,其工作在方式3下,作为方波发生器,产生不同音符的不同频率的方波。根据音符频率和1M的时钟确定输入频率,检测键盘的输入,判断输入的字符,8253产生相应的频率,喇叭播放音符,数码管输出按下的音符。实验的难点在于怎样判断键盘的输入。

思考题:写出8253计数初值,输入频率和输出频率的关系:

答:输出频率 = 输入频率/8253计数初值

七、 实验收获与心得体会

这次实验较之前的实验难度较大,用到了8255、8253、数码管,是个相对来说系统点的

实验,这也使得代码在实现起来比较多而复杂。一开始实验时不理解8255计数器的工作原理,对音符如何通过喇叭显示出来也不明白,在弄清楚了他们的原理和相互之间的联系之后,才慢慢理解。实验的内容要求编一小段音乐,虽然实验很难,但是也增加了我们对实验的兴趣。

17

实验十六 串行通讯8251

一、 实验目的

1、了解串行通讯的基本原理。

2、掌握串行接口芯片8251的工作原理和编程方法。

二、 实验原理及内容

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

三、硬件接线图与软件程序流程图

硬件接线图如下:

18

程序流程图如下:

四、源程序

DATA SEGMENT ;定义数据段 STRING DB 'SEND ','$' ;定义字符串 STRING1 DB 'RECEIVE ','$' STRING2 DB 0DH,0AH,'$'

DATA ENDS

STACK SEGMENT STACK 'SATCK' ;定义堆栈段 DB 100 DUP(?) STACK ENDS

19

CODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATA,SS:STACK

;延时子程序

DELAY PROC NEAR PUSH CX

MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

START: MOV AX,DATA MOV DS,AX ;8254初始化 MOV DX,283H

MOV AL,16H ;(00010110)计数器0,只读低字节,方式3,二进制 OUT DX,AL CALL DELAY

MOV DX,280H ;计数器0,初值为52 MOV AL,34H ;初值52 OUT DX,AL CALL DELAY ;8251初始化

MOV DX,2B9H ;控制端口地址

MOV AL,40H ;(01000000)内部复位命令 OUT DX,AL NOP

CALL DELAY MOV AL,5E ;(01011110)方式控制字:波特率因子为16,一位停止位,一位奇校

验的异步方式

OUT DX,AL

MOV AL,37H ;(00110111)命令控制字 OUT DX,AL CALL DELAY ;发送数据

GOON: MOV DX,2B9H ;读状态字 IN AL,DX

TEST AL,01H ;检测是否可以发送字符 JZ GOON

;显示提示语句 MOV AH,09H

MOV DX,OFFSET STRING INT 21H

MOV AH,01H INT 21H

20

;检测是否为ESC键 CMP AL,1BH JZ EXIT INC AL;加1

MOV DX,2B8H ;访问数据寄存器 OUT DX,AL ;接收数据

RECEIVE: MOV DX,2B9H ;读状态字 IN AL,DX

TEST AL,02H ;检测是否收到新数据 JZ RECEIVE

;显示提示语句 MOV AH,09H

MOV DX,OFFSET STRING2 INT 21H MOV AH,09H

MOV DX,OFFSET STRING1 INT 21H

MOV DX,2B8H

IN AL,DX MOV DL,AL

MOV AH,02H ;显示接收的数据 INT 21H MOV AH,09H

MOV DX,OFFSET STRING2 INT 21H

JMP GOON ;不断的发送读写

EXIT: MOV AX,4C00H ;返回DOS INT 21H

CODE ENDS

END START

21

五、实验结果

实验结果如上图所示,输出字符为输入字符的下一个,可以连续的发送接收,按下Esc健时,返回DOS。

六、 实验总结与思考题

实验用到了串行通信接口芯片8251A,采用异步方式,确定了方式控制字。8254计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接 1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。

实验的难点在于发送和接收,当TxRDY为高电平时发送缓存区空,此时可以写入数据,8251A与01进行与运算,若结果为1表示可以发送数据;当RxRDY为高电平时接收缓存区满,此时可以读数据,8251A与10进行与运算,若结果为1表示可以接收数据。

思考题:在实验中,你如何确定RxC,TxC的值,写出计算公式 答:RxC=TxC=8253输出时钟频率=8251波特率*波特率因子

七、 实验收获与心得体会

这次实验主要用了串行接口8251A,相比并行接口较为简单,还用到了计数器8253,又加

强了对其的了解,这次实验课是在理论课刚上完之后,对8251A的理解也比较到位,所以整个实验都进行的比较顺利,对理论课不太懂得知识,经过实验后也都弄得比较清楚。这是硬件实验的最后一次,用到了两个芯片,还是比较系统的。这学期的硬件实验让我提高了自己的实际操作能力,帮助更好的理解了理论课所学的知识,也对汇编语言有了更直观的了解,收获了很多。

22

因篇幅问题不能全部显示,请点此查看更多更全内容