《单片机原理及应用》实验指导书姓名:学号:专业班级:所在学院:成人教育学院2012年5月日22单片机实验指导书目录实验一系统认识实验............................................................................3实验二程序调试....................................................................................6实验三外部中断实验............................................................................6实验四串口实验....................................................................................833实验一系统认识实验一、实验目的1.掌握SICElab-G2200实验/仿真系统的结构与使用方法;2.熟悉单片机系统开发软件WAVE6000。二、实验设备1.G2200/2100实验平台1台2.仿真器/仿真板1台3.连线若干根4.计算机1台三、实验内容P1端口接发光二极管,加1点亮。四、连线方案:五、实验步骤1.连接Lab51CPU板。(已由实验师连好)2.仿真器与实验平台的连接将Lab51板的DC34芯插座与G6W仿真器上的DC34插座用扁平电缆连接起来。(已由实验师连好)3.仿真器与计算机的连接用随机配带的串口通讯电缆,将仿真器与计算机连接起来,串口1、串口2均可。特别注意:在仿真器与计算机连接串口电缆时,两台机器必须都断电,否则易损坏计算机和仿真器。4.实验连线按连线方案,用随机配带的实验连线插入孔后,轻轻转动一下锁紧插头,保证良好接触。拆线时,应先回转一下,不要硬拨,以免损坏线路板。不管是拆线还是插线,都应在断电的情况下进行。实验中“连线方案”的粗线即为需用户动手接连的线。实验箱内部已连好445.检查接线是否有误,确信没有接错后,接上电源,打开电源开关。6.在计算机上打开“WAVE6000集成调试环境”,界面如下图所示:7.建立新程序(如果程序已编好,直接跳到第9步)选择菜单[文件|新建文件]功能。出现一个文件名为NONAME1的源程序窗口,在此窗口中输入以下程序ORG0MOVP1,#0;熄灭发光二极管LOOP:INCP1CALLDelaySJMPLOOPDelay:MOVR2,#3;延时程序MOVR1,#0MOVR0,#0DLP:DJNZR0,DLPDJNZR1,DLPDJNZR2,DLPRETEND8.保存程序选择菜单[文件|保存文件]或[文件|另存为]功能。9.建立新的项目选择菜单[文件|新建项目]功能。新建项目会自动分三步走。(1)加入模块文件。在加入模块文件的对话框中选择刚才保存的文件MY1.ASM,按打开键。如果你是多模块项目,可以同时选择多个文件再打开。(2)加入包含文件。在加入包含文件对话框中,选择所要加入的包含文件(可多选)。如果没有包含文件,按取消键。(3)保存项目。在保存项目对话框中输入项目名称。MY1无须加后缀。软件会自动将后缀设成“.PRJ”。按保存键将项目存在与你的源程序相同的文件夹下。10.设置项目11.编译程序选择菜单[项目|编译]功能或按编译快捷图标或按F9键,编译项目。在编译过程中,如果有错可以在信息窗口中显示出来。双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误。在编译之前,软件会自动将项目和程序存盘。在编译没有错误后,就可以执行、调试程序了。12.执行、调试程序有四种方法执行程序:全速执行、程序单步跟踪、执行到光标处和设置断点。(1)全速执行(2)程序单步跟踪选择[执行|跟踪]功能或按跟踪快捷图标或按F7键进行单步跟踪调试程序。(3)执行到光标处(4)设置断点(5)观察各变量值的方法55六、思考题1.改写实验程序实现流水灯功能。写出源程序。ORG0MOVP1,#01HLOOP:MOVA,P1RLAMOVP1,ACALLDelaySJMPLOOPDelay:MOVR2,#3;延时程序MOVR1,#0MOVR0,#0DLP:DJNZR0,DLPDJNZR1,DLPDJNZR2,DLPRETEND2.在执行调试程序过程中,遇到了哪些问题?你是如何解决的?(根据调试的实际情况填写:)(1)指令写错:MOVR1,#0中的R1写成了字母Rl(2)程序编译不成功,没有加入源文件66实验二程序调试一、实验目的1.学习WINDOWS平台下的编辑、编译、排错、调试方法。2.学习修改和观察变量的方法;综合使用单步、断点调试的方法。3.了解数据排序的简单算法。二、实验内容编写并调试一个排序子程序,其功能为用冒泡法将外部RAM(2040H—2049H)中10个单字节无符号数,按从大到小的次序重新排列,并把结果放在外部RAM(2050H—2059H)区域。三、实验器材安装了WAVE6000集成调试环境软件的计算机1台。四、实验说明本程序采用的是“冒泡排序”法。算法是将一个数与后面的数相比较,如果比后面的数小,则交换,如此将所有的数比较一遍后,最小的数就会在数列的最后面。再进行下一轮比较,找出第二小数据,直到全部数据有序。五、程序框图(排序部分)六、实验步骤1.打开WAVE6000调试环境,打开“仿真器设置”对话框,选择好仿真器,并选择使用77伟福软件模拟器。2.根据流程图编写程序,并编译通过。程序清单:ORG0LJMP0030HORG0030HSTART:MOVDPTR,#2040HMOVR0,#40HMOVR7,#10LOOP0:MOVXA,@DPTRMOV@R0,AINCDPTRINCR0DJNZR7,LOOP0MOVPSW,#00HMOVR2,#9LOOP1:MOVR0,#40HMOVR1,#41HMOV03H,R2CLR7FHLOOP2:MOVA,@R0MOV30H,AMOVA,@R1CJNEA,30H,LOOP3SJMPL1LOOP3:JCL1MOV@R0,AXCHA,30HMOV@R1,ASETB7FHL1:INCR0INCR1DJNZR3,LOOP2JNB7FH,LOOP4DJNZR2,LOOP1LOOP4:MOVDPTR,#2050HMOVR0,#40HMOVR7,#10LOOP5:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR7,LOOP5END3.打开XDATA数据窗口,在弹出的XDATA窗口中从2040H开始的单元中输入10个不同数。4.打开DATA数据窗口,把打开的窗口进行并排,单步或跟踪运行程序,观察DATA数据窗口40H开始的单元和XDATA窗口2050H开始的单元内容的变化。七、思考题1.补全程序。2.在排序前,程序对片外数据做了什么工作?排序后,对结果又进行了什么处理?并在源程序中标明。在排序前,程序将片外数据存储器2040H开始的10个地址中的数据读到片内40h~49h地址中。LOOP0子程序实现此功能。排序后又将40h~49h地址中的输出送到片外2050H~2059H中。LOOP4\LOOP5子程序实现此功能。66实验三外部中断实验一、实验目的:掌握MCS-51单片机中断原理及编程使用方法。二、实验设备1.G2200/2100实验平台1台2.仿真器/仿真板1台3.连线若干根4.计算机1台三、实验内容:在实验一的基础上,增加中断功能。如果中断请求得到响应,用L0-L7实现从右到左逐个点亮,直至中断请求撤消,中断返回。四、连线方案五、实验源程序ORG0LJMP0030HORG0013HLJMPINT10ORG0030HMOVPSW,#00HORLIE,#84HORLIP,#04HMOVSP,#30HMOVP1,#0;熄灭发光二极管LOOP:INCP1CALLDelaySJMPLOOPDelay:MOVR2,#3;延时程序MOVR1,#0MOVR0,#0DLP:DJNZR0,DLPDJNZR1,DLPDJNZR2,DLPRETINT10:PUSHPSWPUSHP1MOVPSW,#08HMOVP1,#0;熄灭发光二极管MOVA,#01HMOVR3,#16LOOP1:MOVP1,ARLACALLDelayDJNZR3,LOOP1POPP1POPPSWRETIEND77六、实验步骤1.按连线方案连线。注意:拨动开关K0置为高电位(打在上方)。2.打开WAVE6000调试环境,打开“仿真器设置”对话框,设置好仿真器。3.输入源程序,并编译通过。4.执行程序。在执行程序的过程中,将K0置为低电位(打在下方),表示有故障发生,再将K0置为高电位,观察现象。七、思考题1.补全程序。2.在执行中断服务程序过程中,如果K0没有及时返回高电平,观察到什么现象?如果K0及时返回高电平,又观察到什么现象?解释原因。如果K0没有及时返回高电平,程序又一次进入中断,LED灯再次循环点亮16次,中断被多次触发。如果K0及时返回高电平,只响应一次中断。原因是,程序中中断设置为低电平触发方式。3.如果希望用L0-L7实现从左到右逐个点亮,该改哪条指令,请写出原指令及更改后的指令。将LOOP1子程序中的RLA,改为RRA指令。88实验四串行口实验(基于PROTEUS软件)一、实验目的1.掌握MCS-51单片机串行口方式0、方式1的工作原理;2.了解方式0时的应用,即通过串行口扩展并行口,进行静态显示的方法;3.掌握串行移位寄存器芯片74LS164的工作原理;4.了解方式1时的应用,即10位UART,利用方式1实现双机通讯;5.熟悉并掌握PROTEUS软件的使用方法。二、实验内容本实验包含两个小实验,可任选做一个。1.利用串行口的工作方式0,将单片机的串口通过74LS164芯片转换成并口并驱动数码管循环依次显示0-9。在PROTEUS软件中设计出相应的电路,并进行仿真。2.利用串行口的工作方式1,实验两个单片机间的双机通讯。其中单片机甲向单片机乙循环发送9-0(递减),同时单片机乙向单片机甲发送0-9(递增)。三、实验器材装有PROTEUS软件的计算机一台。四、实验原理图五、示范程序1.方式0示范程序MAIN:MOVSCON,#0MAIN1:MOVB,#0FFHMOVR0,#0AH99LP:INCBLCALLDSPLYLCALLDL1SDJNZR0,LPLJMPMAIN1DSPLY:MOVDPTR,#TABLEMOVA,BMOVCA,@A+DPTRMOVSBUF,ALP1:JNBTI,LP1CLRTIRETTABLE:DB0C0H,0F9H,0A4HDB0B0H,99H,92HDB82H,0F8H,80H,90HDL1S:MOVR7,#10DL1:MOVR6,#200DL2:MOVR5,#250DL3:DJNZR5,DL3DJNZR6,DL2DJNZR7,DL1RET思考题1.你在实验中是否采用了示范程序?在做实验过程中遇到了哪些问题?如何解决的?采用了改示范程序,出现问题。MAIN:MOVSCON,#0编译不通过。MAIN:后的“:”为全角格式,需改为英文半角“:”2.如果改为从9显示到0,如何更改程序。MAIN1:MOVB,#09HMOVR0,#0AHLP:LCALLDSPLYLCALLDL1SDECBDJNZR0,LPLJMPMAIN1