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

北京邮电大学微机原理硬件实验报告

实验报告一:I/0地址译码和简单并行接口——实验一&实验二一、实验目的掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。

二、实验原理及内容a)I/0地址译码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灯)或逻辑笔b) 简单并行接口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为实验台逻辑或门)三、硬件连线图1、I/O地址译码2.简单并行接口四、软件程序流程图1、I\O地址译码2、简单并行接口五、源程序1、I\O地址译码STACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATA START:MOV AX,DATAMOV DS,AXLOP: MOVDX,2A0HOUTDX,AL;点亮灯ﻩ CALLDELAY;延时MOV DX,2A8Hﻩ OUT DX,AL ;熄灭灯CALL DELAYﻩ JMP LOPCODE ENDSEND STARTDELAY PROC NEAR ;延时子程序PUSH CXPUSHBXMOV BX,250;250×65535LP2:MOVCX,0FFFFHLP1:LOOP LP1DEC BXJNZLP2POP BXPOP CXRETDELAYENDP2、简单并行接口电路STACK SEGMENTSTACK 'STACK'DB 100DUP(?)STACKENDSDATA SEGMENTDATA ENDSCODE SEGMENTASSUMECS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATAMOVDS,AXﻩLOP: MOV AH,01Hﻩ INT21Hﻩ CMP AL,1BH;检查是否按下退出esc键ﻩ JZ ENDINGﻩ MOV DX,2A8H;将ascii码输出OUT DX,ALJMP LOPENDING:MOV AL,0OUT DX,ALMOV AX,4C00HINT 21HﻩCODE ENDSENDSTART六、实验总结在这三次实验中出现的问题以及相应的解决方法如下:实验一:因为对D触发器的特性有些遗忘,在编写程序时犯了不少错误,最终通过请教助教解决了一些疑问,从而顺利写出了代码。

实验二:实验二的程序逻辑比较简单,但连线比较多,在实验过程中,也多次连错了线,通过检查纠正了连线错误,也很快完成了实验。

七、实验收获与心得体会这次实验是第一次用汇编语言控制接口,因为理论课尚未讲到相关内容,做实验时,上手地比较慢。

通过实验一实验二,熟练了对IN、OUT指令的使用,对接口有了初步认识。

同时通过研究译码电路,对“地址”也有了进一步的认识。

实验报告二:可编程并行接口8255的应用——实验三&实验四&实验五一、实验目的1、通过实验,掌握8255工作于方式0以及设置A口为输出口,C口为输入口的方法。

、2、掌握数码管显示数字的原理。

3、掌握8255控制键盘及显示电路的基本功能及编程方法;掌握一般键盘和显示电路的工作原理。

二、实验原理及内容a)实验三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地址b)实验四1、静态显示:按4-4-1连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1、S2、S3接P C0、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地址C)实验五1、编程:使得在小键盘上每按一个健,4位数码管上显示出相应字符,它们的对应关系如下:2、接线:PC7~PC0/8255 接行3~列0 /4X4键盘PA7~PA0 /8255 接dp~a /LED数码管CS/8255 接Y1 /IO地址PB3~PCB/8255 接 S3~S0/LED数码管(或哪位数码管要显示则位选 S 接 +5V 即高电平,不想显示的数码管 S 接GND即低电平)三、硬件连线图a)实验三b)实验四c)实验五四、软件流程图a)实验三b)实验四c)实验五五、源程序a)实验三STACK SEGMENTSTACK'STACK'DB100 DUP(?)STACKENDSDATA SEGMENTDATAENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,10001001B ;A口输出C口输入,工作方式为00MOV DX,28BH ;控制端口地址OUT DX,AL;8255初始化,写入工作方式控制字ﻩLOP:MOV DX,28AH ;将开关状态读入INAL,DXMOVDX,288H;讲状态输出到A口OUT DX,ALﻩMOVAH,0BH ;检测键盘状态ﻩINT 21HCMP AL,0FFH ;如果键盘上有输入则停止程序JZ ENDINGﻩJMP LOPENDING:MOVAL,0MOV DX,288HOUT DX,ALMOV AX,4C00HINT21HCODE ENDSEND STARTb)实验四STACK SEGMENT STACK'STACK'DB 100 DUP(?)STACK ENDSDATA SEGMENTDATA ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATASTART:MOVAX,DATAMOV DS,AXﻩ MOV AL,10000000BﻩMOVDX,28BHOUT DX,AL;8255初始化LOP: MOVAL,3FH;将0的段码输出给A口ﻩ MOV DX,288Hﻩ OUT DX,ALﻩ MOV AL,08H;输出位码给C口ﻩ MOV DX,28AHﻩ OUT DX,ALﻩﻩCALL DELAY;延时程序ﻩMOV AL,06H ;将1的段码输出的A口ﻩ MOVDX,288Hﻩ OUTDX,ALﻩMOVAL,04H;输出选通位码ﻩ MOV DX,28AHOUT DX,ALﻩ CALL DELAYﻩ MOV AL,7FH ;将8的段码输出的A口ﻩ MOVDX,288HOUTDX,ALﻩMOV AL,02H;输出选通位码MOV DX,28AHOUT DX,ALCALL DELAYMOV AL,06H;将8的段码输出的A口MOVDX,288Hﻩ OUT DX,ALﻩﻩ MOVAL,01H ;输出选通位码MOVDX,28AHOUT DX,ALcall DELAYﻩ MOV AH,0BH;检查键盘是否有输入ﻩ INT21HCMP AL,0ffhJZ ENDING ;有则退出ﻩ JMPLOPENDING:MOVAL,00HMOV DX,28AHOUT DX,ALMOV AX,4C00HINT21HDELAYPROC NEARPUSH CXPUSHBXMOV BX,005H ;250×65535LP2: MOV CX,0fFFFHLP1:LOOP LP1DEC BXJNZ LP2POP BXPOP CXRETDELAY ENDPﻩCODE ENDSENDSTARTﻩﻩc)实验五STACK SEGMENTSTACK 'STACK'DB 100DUP(?)STACK ENDSDATA SEGMENTKEYVALUE DB71H,7CH,07H,4FH;键盘值对应的段码表,LINE0DB 79H,77H,7DH,5BH ;LINE1DB5EH,6FH,6DH,06H ;LINE2DB 39H,7FH,66H,3FH;LINE3ROWDB0EFH,0DFH,0BFH,7FHDATA ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK,DS:DATASTART:MOV AX,DATAMOVDS,AXﻩMOV AL,10000001B;C口高4位接键盘行输出,低4位列输入,A口输出MOV DX,28BHOUT DX,ALLEA BX,KEYVALUEMOV SI,0ﻩSCANROW:MOVAL,ROW[SI] ;扫描行MOV DX,28AHOUT DX,AL ;输出行CALL DELAY ;延迟消抖IN AL,DX;读取列ﻩﻩ AND AL,0FHCMP AL,0FHJZ NEXT ;此行无键按下CMP AL,0EHJZLINE0 ;按下第0列的键ﻩCMP AL,0DHJZLINE1;按下第1列的键CMP AL,0BHJZ LINE2;按下第2列的键JMP LINE3NEXT: INC SICMP SI,4ﻩJBNEXT1MOV SI,0NEXT1:JMP SCANROWLINE0:MOV CL,[BX+SI+0];查表或许按下的键相应的输出段码JMP OUTPUTLINE1:MOV CL,[BX+SI+4]JMP OUTPUTLINE2:MOV CL,[BX+SI+8]JMPOUTPUTLINE3:MOV CL,[BX+SI+12]OUTPUT:CMP CL,3FH ;检查是否是0,是0就退出JZENDINGMOV AL,CLMOVDX,288H;传送段码给A口OUT DX,ALﻩ MOVAL,01H ;传送位码给B口MOV DX,289HOUTDX,ALﻩ MOV SI,0JMP SCANROW;继续扫描ﻩENDING:MOVAL,00MOV DX,289HOUT DX,ALMOV AX,4C00HINT21HﻩDELAY PROC NEARPUSH CXPUSHBXﻩ MOV BX,1;250×65535LP2: MOVCX,0FFFHLP1: LOOP LP1DEC BXJNZ LP2POPBXPOPCXRETDELAYENDPﻩCODEENDSENDSTARTﻩ六、实验总结在这三次实验中出现的问题以及相应的解决方法如下:实验三:一开始没法用开关控制LED的亮灭,程序一运行就直接退出了,检查代码发现自己的退出条件写错了,修改后就能正常工作了。

相关主题