您好,欢迎访问三七文档
微机实验报告书学号:XXXXX姓名:XXXXX班级:XXXXX同组名单:XXXXXXXXX实验日期:2012.12.25实验题目:8255可编程并行接口实验目标:1、掌握8255方式0的工作原理及使用方法。2、进一步掌握中断处理程序的编写。3、掌握数码管显示数字的基本原理。4、了解微机化竞赛抢答器的基本原理。实验步骤:实验一、8255A的基本输入输出图1.8255A的基本输入输出接线图实验步骤如下:(1)实验电路如图1,8255A的C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。(2)编程从8255A的C口输入数据,再从A口输出。实验二、七段数码管图2.七段数码管接线图实验步骤如下:(1)静态显示:按图2(a)连接好电路,将8255A的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1接+5V(选中),S0、dP接地(关闭)。编程从键盘输入一位十进制数字(0~9),在七段数码管上显示出来。(2)动态显示:按图2(b)连接好电路,七段数码管段码连接不变,位码驱动输入端S1接+5V(选中),S0接8255A的C口的PC1。编程在两个数码管上显示“56”。实验三、竞赛抢答器图3.竞赛抢答器电路图实验步骤如下:图3位竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当于某组抢答按钮按下。在七段数码管上将其组号(0~7)显示出来。程序框图:实验一:实验二:实验三:程序清单:;*************************;;*8255A的基本输入输出*;;*************************;IOPORTEQU0E400H-280HIO8255AEQUIOPORT+288HIO8255BEQUIOPORT+289HIO8255CEQUIOPORT+28AHIO8255KEQUIOPORT+28BHCODESEGMENTASSUMECS:CODESTART:MOVDX,IO8255K;对8255进行设定,A输出,C输入MOVAL,10001001BOUTDX,ALINPUT:MOVDX,IO8255C;从C输入INAL,DXMOVDX,IO8255A;从A输出OUTDX,ALMOVDL,0FFH;判断是否有按键MOVAH,06HINT21HJZINPUT;若无,则继续C输入,A输出MOVAH,4CH;否则,返回DOSINT21HCODEENDSENDSTART;************************************;;*键盘输入数据(0-9)控制LED数码管显示*;;************************************;DATASEGMENTIOPORTEQU0E400H-280HIO8255AEQUIOPORT+288HIO8255BEQUIOPORT+289HIO8255CEQUIOPORT+28AHIO8255KEQUIOPORT+28BHLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1DB0DH,0AH,'Inputanum(0--9),otherkeyisexit:',0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,IO8255K;使8255的A口为输出方式MOVAX,10000000BOUTDX,ALSSS:MOVDX,OFFSETMESG1;显示提示信息MOVAH,09HINT21HMOVAH,01;从键盘接收字符INT21HCMPAL,'0';是否小于0JLEXIT;若是则退出CMPAL,'9';是否大于9JGEXIT;若是则退出SUBAL,30H;将所得字符的ASCII码减30HMOVBX,OFFSETLED;BX为数码表的起始地址XLAT;求出相应的段码MOVDX,IO8255A;从8255的A口输出OUTDX,ALJMPSSS;转SSSEXIT:MOVAH,4CH;返回INT21HCODEENDSENDSTART;******************************;;*LED数码管实验动态显示“56”*;;******************************;DATASEGMENTIOPORTEQU0E400H-280HIO8255AEQUIOPORT+288HIO8255BEQUIOPORT+289HIO8255CEQUIOPORT+28AHIO8255KEQUIOPORT+28BHLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;段码BUFFER1DB6,5;存放要显示的个位和十位BZDW?;位码DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,IO8255K;将8255设为A口输出MOVAL,80HOUTDX,ALMOVDI,OFFSETBUFFER1;设di为显示缓冲区LOOP2:MOVBH,02LLL:MOVBYTEPTRBZ,BHPUSHDIDECDIADDDI,BZMOVBL,[DI];bl为要显示的数POPDIMOVAL,0MOVDX,IO8255COUTDX,ALMOVBH,0MOVSI,OFFSETLED;置led数码表偏移地址为SIADDSI,BX;求出对应的led数码MOVAL,BYTEPTR[SI]MOVDX,IO8255A;自8255A的口输出OUTDX,ALMOVAL,BYTEPTRBZ;使相应的数码管亮MOVDX,IO8255COUTDX,ALMOVCX,3000DELAY:LOOPDELAY;延时MOVBH,BYTEPTRBZSHRBH,1JNZLLLMOVDX,0FFHMOVAH,06INT21HJELOOP2;有键按下则退出MOVDX,IO8255CMOVAL,0;关掉数码管显示OUTDX,ALMOVAH,4CH;返回INT21HCODEENDSENDSTART;***************;;*模拟抢答器*;;***************;DATASEGMENTIOPORTEQU0E400H-280HIO8255AEQUIOPORT+288HIO8255BEQUIOPORT+289HIO8255CEQUIOPORT+28AHIO8255KEQUIOPORT+28BHLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H;数码表DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,IO8255K;设8255为A口输出,C口输入MOVAL,10001001BOUTDX,ALMOVBX,OFFSETLED;使BX指向段码管首址SSS:MOVDX,IO8255CINAL,DX;从8255的C口输入数据ORAL,AL;比较是否为0JESSS;若为0,则表明无键按下,转sssMOVCL,0FFH;cl作计数器,初值为-1RR:SHRAL,1INCCLJNCRRMOVAL,CLXLATMOVDX,IO8255AOUTDX,ALMOVDL,7;响铃ASCII码为07MOVAH,2INT21HWAI:MOVAH,1INT21HCMPAL,20H;是否为空格JNEEEE;不是,转eeeMOVAL,0;是,关灭灯MOVDX,IO8255AOUTDX,ALJMPSSSEEE:MOVAH,4CH;返回INT21HCODEENDSENDSTART运行结果:实验一:当逻辑开关K0~K7中的一个或几个打开时,对应的LED灯就会亮起来,即利用8255A实现了基本的输入输出控制。实验二:(1)静态显示:当从键盘输入0~9任一数字时,七段数码管上便会显示相应的数字,按下其他按键则退出程序。(2)动态显示:运行程序后,七段数码管上两个数码管显示“56”,有按键按下时,则退出程序。实验三:逻辑开关K0~K7中某个置“1”时,则七段数码管上将其数字号显示出来,表示该组抢答成功。按下任意键则退出程序。小结(体会和收获):通过本次实验,我进一步掌握了8255A的原理以及其应用方法,学习了七段数码管显示数字的原理,以及竞赛抢答器的原理。另外,通过本次实验我知道:做实验时讲究细心、耐心,遇到问题时不要慌张,在理解理论的基础上对故障进行分析并逐步解决,才能获得最后的实验成功。
本文标题:8255可编程并行接口(基本输入输出、动静态七段数码管、竞赛抢答器)微机原理实验报告
链接地址:https://www.777doc.com/doc-6343731 .html