1、单片机原理与应用实验指导书鞍 山 科 技 大 学 实 验 教 材控制系教研室 编单片机原理与应用实验指导书 鞍山科技大学电子与信息工程学院单片机原理与应用实验指导书目录第一章 MCS-51系列单片机软件实验1实验一 wave软件的使用及简单编程1实验二 分支和循环程序3实验三 无符号数十进制加法实验4实验四 无符号数十进制减法实验5实验五 双字节BCD码乘法实验6实验六 数据排序实验7第二章 MCS51系列单片机接口实验8实验一 扩展存储器读写实验8实验二 P1口输入、输出实验10实验三 P3口输出控制继电器实验12实验四 简单I/O实验(交通灯控制)14实验五 外部中断实验(急救车与交通灯)
2、16实验六 定时器实验18实验七 计数器实验20实验八 单片机串行口与PC机通讯实验22第一章 MCS-51系列单片机软件实验实验一 wave软件的使用及简单编程一.实验目的:1、 学习并掌握wave软件的基本操作,为以后的实验打下基础。2、 使用本软件进行简单编程,掌握如何调试、修改、运行程序以及得到结果。二.实验设备:486以上微机一台,wave单片机仿真软件一套。三.实验内容:1、从单片机内部RAM区50H单元开始建立015共16个数据。2、将单片机内部RAM区50H,51H的内容相加,结果存放在52H单元中。3、将外部RAM区的0010H,0011H的低4位取出,拼成一个字节数据存入外
3、部RAM区的0012H单元中。四.实验步骤:1、 启动系统:启动微机后,运行wave单片机仿真软件。2、 输入程序:进入wave 的 windows界面后,在文件菜单中选择新建文件,会出现一个汇编编程的窗口,输入所要编的汇编程序。3、 保存程序:输入完程序后保存该文件,文件的扩展名为“ASM”。4、 编译程序:在项目菜单中选择编译,编译无误后才能执行程序,如果有编译错误,在窗口的下方会有提示,按照提示修改相应的错误,保存后,再次编译,直至编译无误后为止。5、运行程序:在wave软件系统中,程序的运行方式有单步运行、断点运行及连续运行几种方式。这几种运行方式在执行菜单中可以找到。单步运行和断点运
4、行都是检查程序的逻辑错误的。而连续运行可以得出最终结果。无论哪种运行方式,都应该在执行菜单中设置PC(程序的首地址)。6、 观察结果:中间结果和最终结果通常可在存储器和寄存器中找到。在窗口菜单中,选择数据窗口,数据窗口有DATA()、XDATA()、, 双击后即可看到选择的区域的结果。7、 退出系统:实验完成后,应先停止所有运行的程序,否则将造成死机,无法退出wave系统。五.实验报告要求:1、 列出实验的汇编程序。2、 写出详细的实验步骤,并且附上结果和标志寄存器的结果。3、 分析实验中出现的问题,谈一谈实验的收获。六、思考题:如何编程实现1+2+10。实验二 分支和循环程序一.实验目的:1
5、、 掌握使用指令编制分支、循环程序及调试方法。2、 掌握使用某些指令对各标志位的影响及调试方法。二.实验设备:486以上微机一台,wave单片机仿真软件一套。三.实验内容:1、 编程实现,设x的单元地址为50H,y的单元地址为60H。2、 一组数据存放在内部RAM区从42H单元开始的连续单元中,数据的长度存放在41H 单元中,求这组数据的最大数,并将其存入40H单元中。3、 在外部RAM区0000H000FH单元中存放着一组数据,查找其中为0的数据的个数,将结果存入0020H单元中。四.实验步骤:1、输入程序检查无误。2、将实验需要的数据输入到相应的数据区的单元中(在数据窗口中选择相应的数据区
6、,即可直接输入和修改)。3、设置PC,运行程序。4、 观察结果和标志位的变化,记录下结果。5、 反复运行几组数,考查程序的正确性。6、 退出系统。五.实验报告要求:1、列出实验的汇编程序。2、写出详细的实验步骤,并且附上结果和标志寄存器的结果。3、 分析实验中出现的问题,考虑程序的简化及合理性。六.思考题: 如何查找常数表,试编写一段查平方表的程序实验三 无符号数十进制加法实验一.实验目的:掌握MCS-51汇编语言设计和调试方法二.实验设备:486以上微机一台,wave单片机仿真软件一套。三.实验内容:编写并调试一个双字节无符号十进制加法程序。其功能将41H、40H单元与51H、50H单元的2
7、字节压缩的BCD码(即4位十进制数)相加,结果写入52H、51H、50H单元中,即:(41H)(40H)+(51H)(50H)52H,51H,50H。四.实验步骤:1、输入程序检查无误。2、将实验需要的数据输入到相应的数据区的单元中(在数据窗口中选择相应的数据区,即可直接输入和修改)。3、设置PC,运行程序。4、观察结果和标志位的变化,记录下结果。5、反复运行几组数,考查程序的正确性。6、退出系统。五.实验报告要求:1、列出实验的汇编程序。2、写出详细的实验步骤,并且附上结果和标志寄存器的结果。3、分析实验中出现的问题,谈一谈实验的收获。六、思考题: 若将内部RAM改用外部RAM,应如何修改程
8、序。实验四 无符号数十进制减法实验一.实验目的:掌握MCS-51汇编语言设计和调试方法二.实验设备:486以上微机一台,wave单片机仿真软件一套。三.实验内容:编写并调试一个双字节无符号十进制减法程序。其功能将41H、40H单元与51H、50H单元的2字节压缩的BCD码(即4位十进制数)相减,结果写入52H、51H、50H单元中,即:(41H)(40H)-(51H)(50H)52H,51H,50H四.实验步骤:1、输入程序检查无误。2、将实验需要的数据输入到相应的数据区的单元中(在数据窗口中选择相应的数据区,即可直接输入和修改)。3、设置PC,运行程序。4、观察结果和标志位的变化,记录下结果
9、。5、反复运行几组数,考查程序的正确性。6、退出系统。五.实验报告要求:1、 列出实验的汇编程序。2、 写出详细的实验步骤,并且附上结果和标志寄存器的结果。3、 分析实验中出现的问题,谈一谈实验的收获。六、思考题: 试编写三字节压缩BCD码减法程序。实验五 双字节BCD码乘法实验一.实验目的:掌握MCS-51汇编语言设计和调试方法二.实验设备:486以上微机一台,wave单片机仿真软件一套。三.实验内容:编写并调试一个双字节无符号乘法程序。其功能将41H、40H单元与51H、50H单元的2字节压缩的BCD码(即4位十进制数)相乘,结果写入52H、51H、50H单元中,即:(41H)(40H)*
10、(51H)(50H)53H,52H,51H,50H四.实验步骤:1、输入程序检查无误。2、将实验需要的数据输入到相应的数据区的单元中(在数据窗口中选择相应的数据区,即可直接输入和修改)。3、设置PC,运行程序。4、观察结果和标志位的变化,记录下结果。5、反复运行几组数,考查程序的正确性。6、退出系统。五.实验报告要求:1、 列出实验的汇编程序。2、 写出详细的实验步骤,并且附上结果和标志寄存器的结果。3、 分析实验中出现的问题,谈一谈实验的收获。六、思考题: 双字节BCD码除法运算的实现 实验六 数据排序实验一.实验目的:熟悉MCS-51指令系统,掌握汇编语言设计和调试方法二.实验设备:486
11、以上微机一台,wave单片机仿真软件一套。三.实验内容:编写并调试一个排序程序。其功能用冒泡法将内部RAM中n个单字节无符号二进制整数按从小到大的次序重新排列。四.实验步骤:1、输入程序检查无误。2、将实验需要的数据输入到相应的数据区的单元中(在数据窗口中选择相应的数据区,即可直接输入和修改)。3、设置PC,运行程序。4、观察结果和标志位的变化,记录下结果。5、反复运行几组数,考查程序的正确性。6、退出系统。五.实验报告要求:1、 列出实验的汇编程序。2、 写出详细的实验步骤,并且附上结果和标志寄存器的结果。3、 分析实验中出现的问题,谈一谈实验的收获。六、思考题: 冒泡排序与一般排序的比较第
12、二章 MCS51系列单片机接口实验实验一 扩展存储器读写实验一.实验要求 编制简单程序,对实验板上提供的外部存贮器(62256)进行读写操作。二.实验目的1学习片外存储器扩展方法。2学习数据存储器不同的读写方法。三.实验设备:486以上微机一台、AEDKT598单片机实验系统一套。四.实验电路及连线-将P1.0接至L1。CS256连GND孔。五.实验说明 单片机系统中,对片外存贮器的读写操作是最基本的操作。可藉此来熟悉MCS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。本实验编写程序对片外存贮器中一固定地址单元进行读写操作,并比较读写结果是否一致。不一致则说明读写
13、操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(可通过熄灭一个发光二极管来表示出错)。读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试电路时非常有效。调试该程序时,可以灵活使用单步、断点和变量观察的等方法,来观察程序执行的流程和各中间变量的值。 六.实验步骤:1、 启动运行环境打开实验机电源,双击桌面上的LCA51软件的图标,运行LCA51软件。第一次启动LCA51需设置通讯端口。用户选择“设置通讯口”菜单项,在弹出的对话框中,选择相应的通讯串口和通讯波特率。最高通讯波特率为576
14、00。做单片机串口实验时,波特率应设为9600。点击测试串口按钮,检查通讯口是否可用。退出LCA51时,会自动保存用户最后一次的设置。2、实验项目并编译选取所要做的实验项目的文件(*.asm), 用户选择“编译编译当前文件”菜单项,将编译当前活动窗口中的源文件,编译结果的信息显示在输出窗口中。用户可以根据输出窗口中错误信息直接定位到源文件的相应位置。编译器将生成源文件的目标代码,对于单汇编文件,编译产生的目标代码可以直接加载调试,对于高级语言的源文件,编译结束还要连接才能产生可加载的目标代码。3、调试打开调试窗口并将目标码加载到实验机。然后用户就可以运用本系统提供的各种工具和方法进行调试。主要
15、是观察程序的运行是否正常、有无走飞、各主要参数中间值是否与设计吻合。4、进行实验根据实验有关说明和用户编制的程序,完成连线(最好先关闭实验机电源,再进行)。通过调试软件加载、运行程序,观察实验有关现象。若现象与设计不符,则返回第三步,重新进行。七.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、 写出详细的实验步骤,将观察到的结果记录下来。3、 分析结果,得出结论。八.思考题:本实验中62256的地址范围为多大?对实验有何影响? 实验二 P1口输入、输出实验一.实验要求 1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2.P1口做输入口,接八个拨动开关,以实
16、验机上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。二.实验目的 1.学习P1口的使用方法。 2.学习延时子程序的编写和使用。三.实验设备:486以上微机一台、AEDKT598单片机实验系统一套。四. 实验电路及连线实验一时,P1.0-P1.7接L0-L7。实验二时,P1.0-P1.7接K0-K7,PO0-PO7接L0-L7。CS273接8300H。五.实验说明 1.P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K40K,故不会对外部输入产生影
17、响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。 2.延时子程序的延时计算问题对于程序 DELAY: MOV R0,#00H DELAY1: MOV R1,#0B3H DJNZ R1,$ DJNZ R0,DELAY1查指令表可知 MOV,DJNZ 指令均需用两个机器周期,而一个机器周期时间长度为1211.0592MHz,所以该段程序执行时间为:(0B31)2561)21211059200100.002mS六.实验步骤;连接好实验电路,同实验一的实验步骤,运行实验程序,观察实验结果。七.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、写出详细的实验步骤,将观
18、察到的结果记录下来。3、分析结果,得出结论。八.思考题:修改程序:利用T0产生1秒的定时,使发光二极管每隔1秒循环点亮。实验三 P3口输出控制继电器实验一.实验要求 利用P3.5输出高低,控制继电器的开合,实现对外部装置的控制。二.实验目的 掌握继电器控制的基本方法和经验。三.实验设备:486以上微机一台、AEDKT598单片机实验系统一套。四.实验电路及连线P3.5 接JD。R-MID接L1灯,R-CLOSE接GND。五.实验说明 现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电
19、子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。电子继电器便能完成这一桥梁作用。继电器电路中一般都要在继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势,防止干扰。本电路的控制端为JD,当JD为高电平时,继电器不工作,当JD为低电平时,继电器工作,常开触点吸合。执行时,对应的LED将随继电器的开关而亮灭。六.实验步骤;连接好实验电路,同实验一的实验步骤,运行实验程序,观察实验结果。七.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、写出详细的实验步骤,将观察到的结果记录下来。3、分析结果,得出结论。 实验四 简单I/O实验(交通灯控制)一.实验要求以74L
20、S273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。二.实验目的 1.学习模拟交通灯控制的方法。 2.学习双色灯的使用。三.实验设备:486以上微机一台、AEDKT598单片机实验系统一套。四.实验电路及连线PO0-PO3接DG1-DG4,PO4-P07接 DR1-DR4。CS273 接8300H。五.实验说明 1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态3,东西绿灯通车,
21、南北红灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。 2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。六.实验步骤;连接好实验电路,同实验一的实验步骤,运行实验程序,观察实验结果。七.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、写出详细的实验步骤,将观察到的结果记录下来。3、分析结果,得出结论。八.思考题: 如出现紧急情况,如何处理,例如警车执行公务事,需人工调整时间。实验五 外部中断实
22、验(急救车与交通灯)一.实验要求 在实验四内容的基础上增加允许急救车优先通过的要求。有急救车到达时,两向交通信号为全红,以便让急救车通过。假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。本实验以按键为中断申请,表示有急救车通过。二.实验目的 1.学习外部中断技术的基本使用方法。 2.学习中断处理程序的编程方法。三.实验设备:486以上微机一台、AEDKT598单片机实验系统一套。四.实验电路及连线PO0-PO3接DG1-DG4,PO4-P07接 DR1-DR4。CS273 接8300H。K7接P3.2。五.实验说明 中断服务程序的关键是:1.保护进入中断时的状态,并在退出中
23、断之前恢复进入时的状态。2.必须在中断程序中设定是否允许中断重入,即设置EX0位。 本实验中使用了INT0中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的寄存器。本例的INT0程序保护了PSW,ACC,2等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。本例中没有涉及这种情况。 实验开始时K8应在H(高电平)端,要产生中断时先拨向L(低电平)端再拨回H端。六.实验步骤;连接好实验电路,同实验一的实验步骤,运行实验程序,观察实验结果。七.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、写出详细的实验步
24、骤,将观察到的结果记录下来。3、分析结果,得出结论。实验六 定时器实验一.实验要求 由8031内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。P1口的P1.0-P1.7分别接八个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒钟L4,L6亮,第四秒钟L5,L7亮,第五秒L0,L2,L4,L6亮,第六秒钟L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,L0,L2亮,然后L1,L3亮.一直循环下去。二.实验目的1. 学习8031内部计数器的使用和编程方法。2. 进一步掌握中断处理程
25、序的编程方法。三.实验设备:486以上微机一台、AEDKT598单片机实验系统一套。四.实验电路及连线P1.0-P1.7 接 L0L7。五.实验说明 1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定时器和计数器两个功能。本实验用的是定时器。 2.内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是12个振荡器周期。因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:机器周期=1211.0592MHz1.0857S (65536-定时常数)*1.0857S=50mS定时常数4C00H 3.定时器的有关的寄存器有工
26、作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式03,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。 4.在中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。六.实验步骤;连接好实验电路,同实验一的实验步骤,运行实验程序,观察实验结果。七.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、写出详细的实验步骤,将观察到的结果记录下来。3、分析结果,得出结论。八.思考题: 如何使用软件定时来实现上述功能。实验七 计数器实验一
27、.实验要求8031内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。使用8031的T1作定时器,50ms中断一次,看T0内每0.50ms来了多少脉冲,将其数值按二进制数在74LS273驱动LED灯上显示出来,5秒后再次测试。二.实验目的1.学习8031内部定时/计数器使用方法。 2.进一步掌握中断处理编程方法。三.实验设备:486以上微机一台、AEDKT598单片机实验系统一套。四.实验电路及连线P3.4接一计数脉冲(模块中的153.6K频率)。 PO0-PO7接 L0L7。 CS273接8300H。五.实验说明 1.本实验中内部计数器起计数器的作用。外部事件计数脉冲由
28、P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。 2.实验时P3.4对应的连线为153.6KHZ孔,0.5ms内来了80次(50H)脉冲。六.实验步骤;连接好实验电路,同实验一的实验步骤,运行实验程序,观察实验结果。七.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、写出详细的实验步骤,将观察到的结果记录下来。3、分析结果,得出结论。八.思考题: 计数器在现实生活中的应用,及如何实现,举例说明。
29、实验八 单片机串行口与PC机通讯实验一.实验要求利用8031单片机串行口,实现与PC机通讯。本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到实验机的数码管上。二.实验目的1.掌握串行口工作方式的程序设计,掌握单片机通讯的编制。2.了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议。3.了解PC机通讯的基本要求。三.实验电路及连线 实验电路已在实验机监控电路上构成。CS8279已固定接至8700H。 29模块中的十个短路套都套在8279侧。8279状态口地址为8701H;8279数据口地址为8700H;四.实验说明1.当用GR命令执行程序时,实验机内部会将8031串行口电路切换与PC机通讯,无须连线。2.程序执行前,进入LCA51,加载程序后,才进入调试菜单工具中的对话窗口,然后执行GR0,就可实行单片机串行口与PC机通信实验。五.实验参考程序框图六.实验报告要求:1、列出实验的汇编程序,画出实验的连线图。2、写出详细的实验步骤,将观察到的结果记录下来。3、分析结果,得出结论。- 24 -