当前位置:文档之家› 北京邮电大学微机原理与接口技术硬件实验报告

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

信息与通信工程学院微机原理与接口技术硬件实验报告班级:姓名:学号:序号:日期: 2015-10-30——2015-12-26目录实验一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)实验一 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输出一个负脉冲。

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

2、接线: Y4/IO地址接 CLK/D触发器Y5/IO地址接 CD/D触发器D/D触发器接 SD/D角发器接 +5VQ/D触发器接 L7(LED灯)或逻辑笔三、硬件接线图与软件程序流程图硬件连接图如下:程序流程图如下:四、源程序CODE SEGMENTASSUME CS:CODE ;定义代码段START:MOV DX,2A0H ;选通Y4OUT DX,ALCALL DELAY ;延时MOV DX,2A8H ;选通Y5OUT DX,ALCALL DELAY ;延时MOV AH,1HINT 16H ;01号功能调用,从键盘接收按键JZ START ;无键按下,返回STARTMOV AH,4CH ;有键按下,返回DOS系统INT 21HDELAY PROC NEAR ;延时子程序,循环系数为100 MOV BX,100LOOP1: MOV CX,0LOOP2: LOOP LOOP2DEC BXJNZ LOOP1RETDELAY ENDPCODE ENDSEND 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为实验台逻辑或门)三、硬件接线图与软件程序流程图硬件连接图如下:图4-2-1 图4-2-2程序流程图如下:四、源程序CODE SEGMENT ;定义代码段ASSUME CS:CODESTART:MOV AH,1INT 21H ;从键盘检测输入CMP AL,00011011BJZ EXITMOV DX,2A8H ;送出ASCII码OUT DX,ALMOV DX,2A0H ;读入ASCII码IN AL,DXMOV DL,ALMOV AH,02H ;屏幕显示ASCII码INT 21HJMP START ;循环检测EXIT:MOV AX,4C00H ;返回DOSINT 21HCODE ENDSEND START五、实验结果从键盘输入字符或数字,若不是Esc键,则二极管显示其ASCII码情况,若按下ESC,则返回dos,且各LED灯灭。

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

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

实验四七段数码管一、实验目的掌握数码管显示数字的原理二、实验原理及内容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地址三、硬件接线图与软件程序流程图硬件连接图如下:程序流程图如下:四、源程序DATA SEGMENT ;定义代码段DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV DX,28BH ;控制口地址MOV AL,80H ;控制字10000000设定工作方式0,所有口都置为输出OUT DX,ALLOP1: MOV DX,288H ;A口地址MOV AL,3fH ;段选写0OUT DX,ALMOV DX,28AH ;位选第4个LED,C口地址MOV AL,08HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV DX,288H ;段选写3MOV AL,4fHOUT DX,ALMOV DX,28AH ;位选第3个LEDMOV AL,04HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV DX,288H ;段选写0MOV AL,3fHOUT DX,ALMOV DX,28AH ;位选第2个LEDMOV AL,02HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV DX,288H ;段选写0MOV AL,3fHOUT DX,ALMOV DX,28AH ;位选第1个LED MOV AL,01HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV AH,01HINT 16HJNZ EXIT ;有键输入则退出JMP LOP1EXIT: MOV AX,4C00H ;返回DOS INT 21HCODE ENDSEND START五、实验结果结果显示了学号的后四位0300,如下如所示:当有键盘输入时,返回DOS系统。

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

七、实验收获与心得体会这次实验在前两次实验的基础上,用到了并行接口芯片和数码管,在数码管上显示数据,在8255工作在方式0时,用两个输出端口,控制数码管工作,数码管在之前数电实验的基础上比较好理解,这次实验较之前的实验更有难度,不过学到了很多知识,由于理论还没有讲到8255,实验有一定难度,不过对理论课也有一定的帮助。

实验八可编程定时器/计数器(8253/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:选择方式1D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3D3D2D1=100:选择方式4,D3D2D1=101:选择方式5D0=0:计数初值为二进制,D0=1:计数初值为BCD码数3.实验内容完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。

利用小键盘实现弹琴功能,并显示弹奏的乐谱。

三、硬件接线图与软件程序流程图接线图如下:CS /8253 接 Y0 /IO 地址GATE0 /8253 接 +5VCLK0 /8253 接 1M时钟OUT0 /8253 接喇叭或蜂鸣器程序流程图如下:四、源程序DATA SEGMENTFENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953;分频比DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管MUSIC DB5,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 ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK;延时子程序DELAY PROC NEARPUSH CXMOV CX,100HWAIT0: LOOP WAIT0POP CXRETDELAY ENDP;延时子程序2DELAY1 PROC NEARPUSH CXMOV CX,0FFFFHWAIT1: LOOP WAIT1POP CXRETDELAY1 ENDP;获取键盘输入值的子程序KEY PROC NEARPUSH AX ;保护现场PUSH CXPUSH DXMOV CX,01HCHECK: MOV DX,28AH ;C口地址给DXMOV BX,OFFSET NUMADD BX,CXMOV AL,[BX]OUT DX,AL;防抖IN AL,DX ;判断是否有键盘按下MOV AH,ALCALL DELAYIN AL,DXCMP AL,AHJNZ CHECK ;不相等说明为抖动,重新检测;判断按下的列AND AL,0FHCMP AL,0FHJZ NEXTCMP AL,0EHJZ NEXT1CMP AL,0DHJZ NEXT2CMP AL,0BHJZ NEXT3MOV BX,01HJMP GOTNEXT: INC CX ;修改变量扫描下一行CMP CX,05HJNZ JUMP1MOV CX,01HJUMP1: JMP CHECKNEXT1: MOV BX,04HJMP GOTNEXT2: MOV BX,03HJMP GOTNEXT3: MOV BX,02H;计算按下键盘的数值GOT: SUB CX,01HMOV AL,CLMOV DL,04HMUL DLADD BL,ALSUB BL,01H ;此时BX中所存即为对应的偏移量POP DX ;恢复现场POP CXPOP AXRETKEY ENDP;主程序START: MOV AX,DATAMOV DS,AX;8253初始化MOV DX, 283HMOV AL,36H 控制字为00110110,选计数器0,先读低字节再读高字节,选用工作方式3 OUT DX,AL;8255初始化MOV DX,28BHMOV AL,81H ;C口输入(10000001)OUT DX,ALMOV DX,289H ;B口位选数码管MOV AL,01HOUT DX,AL;扫描键盘LOOP1: CALL KEYCMP BX,0 ;按0播放音乐JZ PLAY0CMP BX,9 ;按9退出JZ EXIT;按1~8发出对应音MOV CX,BXMOV BX,OFFSET DIGITAL ;数码管显示音符ADD BX,CXMOV AL,[BX]MOV DX,288H ;A口输出OUT DX,AL;播放该音符MOV BX,OFFSET FENPINMOV AX,CXADD AX,AXADD BX,AX;计数,先低八位后高八位MOV AX,[BX]MOV DX,280HOUT DX,ALMOV AL,AHOUT DX,ALCALL DELAY1CALL DELAY1MOV DX,28AH ;C口输入IN AL,DX;检测键盘是否弹起MOV AH,ALLOOP2: CALL DELAYIN AL,DXCMP AL,AHJZ LOOP2;初始化8253,停止播放音乐MOV AX,0HMOV DX,283HMOV AL,36HOUT DX,ALJMP LOOP1;播放音乐PLAY0: MOV CX,01HPLAY: PUSH CX;读取音符,存于CX中MOV BX,OFFSET MUSICADD BX,CXMOV AL,[BX]MOV CL,ALMOV CH,0H;数码管显示MOV BX,OFFSET DIGITALADD BX,CXMOV AL,[BX]MOV DX,288HOUT DX,AL;播放该乐符MOV BX,OFFSET FENPINMOV AX,CXADD AX,AXADD BX,AX;计数,先低八位后高八位MOV AX,[BX]MOV DX,280HOUT DX,ALMOV AL,AHOUT DX,ALPOP CX;延时,持续播放MOV AX,90HLOOP3: CALL DELAY1DEC AXJNZ LOOP3;乐曲未结束时,CX加1INC CXCMP CX,28H;共40个音符JNZ JUMJMP LOOP1JUM: JMP PLAYEXIT: MOV AL,0MOV DX,288HOUT DX,ALMOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果按下键盘0,播放歌曲“粉刷匠”,数码管显示相应的音符;按下小键盘的1——8,喇叭播放所对应的音符,数码管显示按下的音符;按下键盘的9时,数码管熄灭,返回DOS系统。

相关主题