资源描述:
《实验八七段数码管实验》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验八:七段数码管实验一、实验目的要求:1、掌握数码管显示数字的原理,加深对8255的理解和应用。二、实验内容:1、静态显示:将LEDJUMP条线全部取下,将LED1和GND相连,8255CS—CS0,PB0—LED-A,PB1—LED-B,PB2—LED-C,PB3—LED-D,PB4—LED-E,PB5—LED-F,PB6—LED-G,PB7—LED-DP。编程从键盘输入一位十进制数字(0-9),在七段数码管上显示出来。2、动态显示:将LED2—PA0,LED1—PA1,其他的接线筒静态显示方式一样。编程在两个数码管上动态显示“56”。3、动态显示(选作):编程在两个数码管上循环显示0
2、0-99三、编程提示:1、实验箱上的七段数码管为共阴型段码,采用同相驱动,输入端加高电平,选中的数码管亮,位码输入端低电平选中。2、七段数码管的位表四、程序流程图(LED1.ASM和LED2.ASM)LED1.ASMDATASEGMENTIOPORTEQU0A800HIO8255BEQUIOPORT+0A2HIO8255CONEQUIOPORT+0A6HLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHMESG1DB0DH,0AH,'Inputanum(0--9),otherkeyisexit:',0DH,0AH,'$'DATAENDSCODESEGM
3、ENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,IO8255CON;使8255的B口为输出方式MOVAX,90HOUTDX,ALSSS:MOVDX,OFFSETMESG1;显示提示信息MOVAH,09HINT21HMOVAH,01;从键盘接收字符INT21HCMPAL,'0';是否小于0JLEXIT;若是则退出CMPAL,'9';是否大于9JGEXIT;若是则退出SUBAL,30H;将所得字符的ASCII码减30HMOVBX,OFFSETLED;bx为数码表的起始地址XLAT;求出相应的段码MOVDX,IO8255B;从8255的
4、A口输出OUTDX,ALJMPSSS;转SSSEXIT:MOVAH,4CH;返回INT21HCODEENDSENDSTARTLED2.ASMDATASEGMENTIOPORTEQU0A400HIO8255AEQUIOPORT+0A0HIO8255BEQUIOPORT+0A2HIO8255CONEQUIOPORT+0A6HLEDDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;段码BUFFER1DB5,6;存放要显示的个位和十位BZDW?;位码DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMO
5、VDS,AXMOVDX,IO8255CON;将8255设为B,A口输出MOVAL,80HOUTDX,ALMOVDI,OFFSETBUFFER1;设di为显示缓冲区LOOP2:MOVBH,02LLL:MOVBYTEPTRBZ,BHPUSHDIDECDIADDDI,BZMOVBL,[DI];bl为要显示的数POPDIMOVBH,0MOVSI,OFFSETLED;置led数码表偏移地址为SIADDSI,BX;求出对应的led数码MOVAL,BYTEPTR[SI]MOVDX,IO8255B;自8255B的口输出OUTDX,ALMOVAL,BYTEPTRBZ;使相应的数码管亮MOVDX,IO8255
6、AOUTDX,ALPUSHAXMOVAX,05DELAY1:MOVCX,60000DELAY:LOOPDELAY;延时DECAXJNZDELAY1POPAXMOVBH,BYTEPTRBZSHRBH,1JNZLLLMOVDX,0FFHMOVAH,06INT21HJELOOP2;有键按下则退出MOVDX,IO8255BMOVAL,0;关掉数码管显示OUTDX,ALMOVAH,4CH;返回INT21HCODEENDSENDSTART