MCS–51单片机原理及接口技术北交机电学院实验参考答案1实验二、运算处理程序设计与调试一、实验内容及要求:将30H~39H中10个无符号数,剔除最大值和最小值,求平均数,并转换成BCD码,存入50H和51H中。二、实验程序ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#30HMOVR2,#10MOV41H,@R0MOV40H,@R0LOOP:MOVA,@R0CJNEA,40H,LOOP1SJMPLOOP5LOOP1:JCLOOP4MOV40H,ALOOP4:CJNEA,41H,LOOP2SJMPLOOP5LOOP2:JNCLOOP5MOV41H,ALOOP5:INCR0DJNZR2,LOOPCLRAMOVR0,#30HMOVR2,#10LOOP6:ADDA,@R0INCR0DJNZR2,LOOP6SUBBA,41HSUBBA,40HMOV42H,AMOVB,#0BHDIVABMOV43H,AMOVB,#100DIVAB2MOV50H,AMOVA,#0AHXCHA,BDIVABSWAPAADDA,BMOV51H,ASJMP$END实验三、数据存储器扩展实验一、实验内容:1、MCS-51单片机应用板上已有8K的数据存储空间,其地址为0000H~1FFFH。本实验要求另外再扩展一片RAM6264,地址安排在C000H~DFFFH。为此,首先应该设计一个CPU与RAM芯片之间的接口电路,这个接口电路与8031单片机各种总线相接,使8031能够按照要求的地址范围对RAM6264进行读写操作。MCS-51单片机应用板已将数据线D0~D7、地址线A0~A12、RD、WR等信号接到接线端子上了(见接线端子序号定义表)。首先应该熟悉RAM6264芯片的各管脚定义及逻辑要求,然后确定译码电路。将应用板上的74LS138译码输出脚Y6接到RAM6264的片选脚,。译码确定之后,按照6264的接线要求,画出6264与8031、74LS373、74LS138译码器连接的详细电路图,并画出接线端子与6264芯片的连线图(注明端子号和6264的管脚号),实验时,将系统提供的地址线、数据线和控制线分别接到RAM6264的对应脚,确认连接无误后,方可调试。2、编一测试程序,将立即数35H送入RAM6264的C000H~DFFFH各单元,送后检查,若都对,将立即数09H送入CPU的50H,若有不对的,将其地址的DPH值送入50H,DPL值送入51H。二、实验程序:ORG0000HLJMPMAINORG1000HMAIN:MOVDPTR,#0C00HLCALLFILLLOOP:MOVXA,@DPTRCJNEA,#35H,LOOP1INCDPTRMOVA,DPHCJNEA,#0E0H,LOOPMOV50H,#09H3SJMPOVERLOOP1:MOV50H,DPHMOV51H,DPLOVER:SJMP$FILL:MOVA,#35HMOVX@DPTR,AINCDPTRMOVA,DPHCJNEA,#0E0H,FILLRETIEND实验四、LED显示器实验一、实验内容及要求:1、利用所学过的知识,编写加法运算处理程序,将30H中的数与31H中的数相加,和放入32H。2、编写动态显示程序,将被加数显示在数码管的左边两位上,加数显示在中间两位上,和显示在右边两位上。8155PB口控制各位显示器的字形,PC口控制各位显的阴极电位,使用六位共阴极显示器,显示缓冲区为79H~7EH。(动态显示参考程序,见附录。)二、实验程序:ORG0000HAJMPMAINORG0100HMAIN:MOVA,30HADDA,31HMOV32H,AMOVSP,#60HMOVDPTR,#2100HMOVA,#0EHMOVX@DPTR,AACALLFBLOOP:ACALLDIRAJMPLOOPFB:MOVR0,#30HMOVR1,#79HMOVR3,#03HLP2:MOVA,@R04MOVR2,ASWAPPANLA,#0FHMOV@R1,AINCR1MOVA,R2ANLA,#0FHMOV@R1,AINCR1INCR0DJNZR3,LP2RETDIR:MOVR0,#79HMOVR2,#01HMOVA,R2RETLP0:MOVDPTR,#2103HMOVX@DPTR,AMOVDPTR,#2102HMOVA,@R0ADDA,#0FHMOVCA,@A+PCDIR1:MOVX@DPTR,AMOVR7,#02HACALLDLINCR0MOVA,R2JBACC.5,LD1RLAMOVR2,AAJMPLP0LD1:RETDSEG0:DB3FH,06H,5BH,4FH,66H,6DHDSEG1:DB7DH,07H,7FH,6FH,77H,7CHDSEG2:DB39H,5EH,79H,71H,73H,21HDSEG3:DB31H,6EH,40H,3EH,00H,00HDL:MOVR6,#0FFHDL6:DJNZR6,DL6DJNZR7,DLRETEND5实验五、8031单片机定时/计数器应用实验一、实验内容及要求:将T1设定为计数器方式工作,将按钮开关J按下(接通)抬起(断开)次数作为外部事件脉冲从T1输入,将T0设定为定时功能,每按一次按钮开关J键,实现每隔一秒钟使P1.0、P1.1、P1.2……P1.7依次输出高电平送到发光二极管上显示出来。二、实验程序:ORG0000HAJMPMAINAJMP000BHAJMPT0INTORG001BHAJMPT1INTORG0100HMAIN:MOVSP,#60HMOVTMOD,#51HMOVTH1,0FFHMOVTL1,0FFHMOVTH0,#3CHMOVTL0,#0B0HMOVIE,#8AHSETBTR1HERE:SJMPHERET1INT:MOVTH1,#0FFHMOVTL1,#0FFHMOVR3,#20MOVA,#01HMOVP1,ASETBTR0RETIT0INT:MOVTH0,#3CHMOVTL0,#0B0HDJNZR3,OUTMOVR3,#20RLAMOVP1,AJNBP1.7,OUTCLRTR06OUT:RETI实验六、模/数与数/模转换实验一、实验内容及要求1、编写程序,当调节应用板上电位器W1时,即改变了0809输入端IN0的输入电压信号,记录下该模拟量转换成数字量值的大小,放入30H单元。2、利用板上给定的DAC0832转换器,产生不同频率的波形,如锯齿波,三角波,方波,矩形波等,周期自定,波形在示波器上输出显示。锯齿波产生的原理是:每隔一定的时间往D/A转换器送一数值,且该数值逐渐提高,达到一定值后,又回到最小值重复上述过程,因为转换器输出的模拟信号与输入的数字信号成正比,所以输出的波形类似于锯齿形状,所以称为锯齿波。编程过程中需要注意的是每送完一个数需要一段软件延时,延时的长短决定了周期的大小。3、编写程序,将A/D转换的数字量作为D/A转换的延时常数,当调节单片机应用板上的电位器W1时,D/A转换的锯齿波的频率也随之变化。二、实验程序:A/D转换ORG0000HAJMPMAORG0100HMA:MOVDPTR,#6000HMOVX@DPTR,AMOVR2,#20HDL:DJNZR2,DLHE:JBP3.3,HEMOVXA,@DPTRMOV30H,AHD:SJMPHDENDD/A转换ORG0000HAJMPMNORG0100HMN:MOVSP,#60HMOVA,#00HMOVDPTR,#4000HLOOP:MOVX@DPTR,AINCA7MOVR1,#10HDJNZR1,$CJNEA,#0FFH,LOOPSJMPMNA/D+D/A转换ORG0000HMAIN:MOVDPTR,#6000HMOVR0,#30HLOOP:MOVX@DPTR,AMOVR2,#05HDL:DJNZR2,DLWAIT:JBP3.3,WAITMOVXA,@DPTRMOV@R0,ASAN:MOVA,#00HMOVDPTR,#4000HUP:MOVX@DPTR,AINCAACALLDELAYCJNEA,#0FEH,UPSJMPMAINDELAY:MOVR4,#30HDEL:DJNZR4,DELRET周期可调三角波ORG0000HMAIN:MOVDPTR,#6000HMOVR0,#30HLOOP:MOVX@DPTR,AMOVR2,#05HDL:DJNZR2,DLWAIT:JBP3.3,WAITMOVXA,@DPTRMOV@R0,ASAN:MOVA,#00HMOVDPTR,#4000HUP:MOVX@DPTR,AINCAACALLDELAY8JNZUPMOVA,#OFEHDOWN:MOVX@DPTR,ADECAACALLDELAYJNZDOWNSJMPMAINDELAY:MOVR4,#30HDEL:DJNZR4,DELRET周期可调台阶波ORG0000HMAIN:MOVDPTR,#6000HMOVR0,#30HLOOP:MOVX@DPTR,AMOVR2,#05HDL:DJNZR2,DLWAIT:JBP3.3,WAITMOVXA,@DPTRMOV@R0,ASAN:MOVA,#00HMOVDPTR,#4000HMOVR3,#0AHUP:MOVX@DPTR,AACALLDELAYDJNZR3,DOWNMOVA,#OFEHSJMPUPDOWN:ADDA,#OAHSJMPUPDELAY:MOVR4,#30HDEL1:MOVR5,#OCHDEL2:DJNZR5,DEL2DJNZR4,DEL1RETEND