前言由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在仪器仪表智能化、实时工业控制、实时数据采集、智能终端、通信设备、导航系统、家用电器等控制应用领域,具有十分广泛的用途。
目前在国内单片机应用中,MCS-51系列单片机仍然是一种主流单片机。
为配合《单片机应用技术》课程的教学,使学生尽快了解、掌握89C51单片机的使用,特编写了这本上机指导书(基础篇)。
《单片机》是一门实践性很强的课程,提高教学质量的一个重要环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的。
本实验指导书提供了9个实验的指导性材料,实验还有一些思考题,可以根据课时的安排和教学要求进行取舍。
为了达到某些实验的目的,书中提供的参考程序与实际应用中的程序会有些差别,所以不一定是最优的。
由于时间紧迫,加上编者学识有限,如有不妥之处,欢迎读者批评指正。
编者实验须知1. 实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备工作,编写好实验中要求自编或修改的程序;完成实验前要求完成的准备工作后方可以上机实验,否则不得上机操作。
2. 各种电源的电压和极性不能接错,严禁带电接线和接插元器件。
通电前须经过指导教师检查认可后方能通电。
3. 不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全。
4. 严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿芯片。
5. 实验中若损坏仪器或元器件,应及时向指导教师报告,听候处理。
6. 在实验室内保持安静和卫生,不得随意走动和喧哗,集中精力完成实验。
7. 实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁。
8. 按规定认真完成实验报告,对实验中出现的现象进行分析,在规定的时间内交上实验报告。
9. 凡实验或实验报告未能按规定完成的学生,不能参加本课程的考试或考查。
第一章实验系统介绍本实验系统采用EL-MUT-III型单片机教学实验系统。
1. 系统概述1)微处理器:89S51,P1口、P3口对用户开放,供用户使用。
2)时钟频率:6.0MHz3)存储器:程序存储器与数据存储器统一编址,最多可达64KB,板载ROM(监控程序27C256)12KB;RAM1(程序存储器6264)8KB供用户下载实验程序,可扩展达32KB;RAM2(数据存储器6264)8KB供用户程序使用,可扩展达32KB。
0000H----2FFFH为监控程序存储器区,用户不可用。
4000H----5FFFH为用户实验程序存储区,供用户下载实验程序。
数据存储器的范围为:6000H----7FFFH,供用户实验程序使用。
用户在编写实验程序时要注意,程序的起始地址应为4000H,所用的中断入口地址均应在原地址的基础上,加上4000H。
用户中断入口地址见表1-1。
2.资源分配本系统采用可编程逻辑器件(CPLD)EPM7128做为地址的译码。
地址的编译码分为两部分。
一部分为系统CPLD,提供了系统器件(如监控程序存储器、用户程序存储器、数据存储器、系统显示控制器、系统串行通讯控制器等)的地址译码功能,此外还通过插孔CS0、CS1、CS2、CS3、CS4、CS5提供固定的译码地址给用户使用。
译码地址见表1-2。
另一部分为用户CPLD,它完全对用户开放,用户可通过芯片的JTAG接口与PC机相连,对芯片进行编程,得到译码地址,由插孔LCS0、LCS1、LCS2、LCS3、LCS4、LCS5、LCS6、LCS7输出,供使用。
表1—2:CPLD地址分配表地址范围输出孔/映射器件性质(系统/用户)0000H---2FFFH 监控程序存储器系统*3000H---3FFFH 数据存储器系统*4000H---7FFFH 用户程序存储器系统*8000H---CFDFH LCS0---LCS7 用户CFE0H PC机串行通讯芯片8250 系统*CFE8H 显示、键盘芯片8279 系统CFA0H---CFA7H CS0 系统CFA8H---CFAFH CS1 系统CFB0H---CFB7H CS2 系统CFB8H---CFBFH CS3 系统CFC0H---CFC7H CS4 系统CFC8H---CFCFH CS5 系统CFD0H---FFFFH LCS0----LCS7 用户注:系统地址中带“*”的表示用户不可用,也不可改,其他系统地址用户可用,但不可改。
3.系统使用方法1)用通信电缆将EL-MUT-III型单片机教学实验系统侧面的RS232接口与PC机的COM口相连接。
2)启动EL-MUT-III型单片机教学实验系统的电源开关,EL-MUT-III型单片机教学实验系统面板上的LED显示“199502”,几秒后显示P-。
3)双击桌面MCS51快捷图标如图1-1,启动51实验系统,启动后的界面如图1-2。
图1-1 图1-24)如需改变串口和波特率,在相应列表框中修改。
点击“确定”按钮后,立即实验系统面板上的“PRESET”键,面板上的LED显示“C-”,同时PC机屏幕显示“51 EL型(80C51)教学实验环境”界面,如图1-3。
图1-3 51 EL型(80C51)教学实验环境界面5)通过“文件”菜单新建或打开汇编语言文件,也可通过工具按钮新建汇编文件。
新建汇编文件的扩展名为.ASM。
6)用“编译”菜单下的汇编命令或工具按钮对汇编文件进行汇编。
如有错误,应对文件重新编辑,直至汇编无错误为止。
7)用“调试”菜单下的“调试”命令或工具按钮进入“调试”界面,如图1-4。
图1-4 “调试”界面8)用“调试”菜单下各调试命令,如图1-5对汇编文件进行调试,或用工具按钮对汇编文件进行调试。
工具按钮的功能如图1-6。
图1-5图1-6第二章上机指导实验一P1口实验(一)一、实验目的:1.学习P1口作为输出口的使用方法。
2.延时子程序的编写和使用。
二、实验设备:EL-MUT-III型单片机实验箱、8051CPU模块。
三、实验原理:实验原理如图2-1-1。
图2-1-1 P1口输出实验电路1.P1口的使用方法P1口为准双向口,每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”。
89S51在复位时所有口锁存器均置为“1”,如果曾对口锁存器写过“0”,此时要使它作为一个输入口,则应再次写入一个“1”。
2.延时程序的实现常用两种方法实现延时程序,一是用定时器中断来实现,二是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振为6.0MHZ,则一个机器周期为12÷6 us=2 us。
延时0.1s的程序如下:MOV R7,#X (1)DEL1:MOV R6,#200 (2)DEL2:DJNZ R6,DEL2 (3)DJNZ R7,DEL1 (4)程序中X为延时值。
指令MOV、DJNZ需两个机器周期,所以每执行一条指令需要4us。
延时程序中X值应满足下式:4 + X( 4 + 200×4 + 4 )=0.1×106指令(1)时间指令(2)时间指令(3)时间指令(4)时间故X=123.75D=7CH 。
将X=123.75D=7CH代入上式,得到实际延时时间约为0.1002S。
3.程序流程图:程序流程图见图2-1-2和图2-1-3。
图2-1-2 点亮发光二极管程序流程图图2-1-3 左移循环点亮发光二极管程序流程图四、实验内容与步骤1.实验内容:1)P1口做输出口,接八只发光二极管,根据程序流程图2-1-2,编写程序使P1口8个发光二极管同时熄灭-----延时-----点亮。
2)根据程序流程图1-3,编写程序使P1口8个发光二极管每隔一个左移循环点亮。
2.实验步骤:1)将P1.0~P1.7分别连接发光二极管L1~L8。
2)按流程图2-1-2编写程序,对程序进行编辑、汇编直至无语法错误。
3)调试程序:(1)单步调试,观察并记录相应寄存器内容及发光二极管L1~L8的状态。
(2)全速运行程序,观察并记录发光二极管L1~L8的状态。
4)重复2、3步骤,进行实验内容2的实验。
五、实验报告1.写出使P1口8个发光二极管同时熄灭-----延时-----点亮源程序清单,并对每条指令给予注解。
2.写出使P1口8个LED每隔一个(或二个)左移循环点亮源程序清单,并对每条指令给予注解。
六、思考题1.改变延时常数,重做实验。
2.修改程序,使LED发光方式、方向等改变。
七、参考程序:1.点亮8个LED程序清单ORG 4000HLJMP STARTORG 4100HSTART:MOV A,#00HMOV P1,A ;点亮8个LEDLCALL DELAY ;延时0.1秒MOV A,#0FFHMOV P1,A ;熄灭8个LEDLCALL DELAY ;延时0.1秒JMP STARTDELAY:MOV R1,#124 ;延时0.1秒DEL1:MOV R2,#200DEL2:DJNZ R2,DEL2DJNZ R1,DEL1RETEND2.循环点亮LED程序清单ORG 4000HLJMP STARTORG 4100HSTART:MOV A,#0FEHLOOP:MOV P1,A ;点亮1个LEDRL A ;左移一位,点亮下一个发光二极管LCALL DELAY ;延时0.1秒JMP LOOPDELAY:MOV R1,#124 ;延时0.1秒DEL1:MOV R2,#200DEL2:DJNZ R2,DEL2DJNZ R1,DEL1RETEND实验二P1口实验(二)一、实验目的:1.P1口作为输入口的使用方法。
2.掌握数据输入、输出程序的设计方法。
二、实验设备:EL-MUT-III型单片机实验箱、8051CPU模块三、实验原理:1.P1口作为输入口实验原理见图2-2-1。
图2-2-1 P1口作为输入口实验电路2.程序流程图:程序流程图见图2-2-2。
图2-2-2 显示P1口状态程序流程图四、实验内容与步骤:1.实验内容:P1口做输入口:如图2-2-1,P1口的P1.0-P1.8分别接8个单刀双郑开关K1~ K8,74LS273做输出口接八个LED,编写程序读取开关K1-K8状态,并在LED上显示出来。
2.实验步骤:1)根据图2-2-1连线,CS273接CS0。
2)根据流程图2-2-2编写相应程序,对程序进行编辑、汇编直至无语法错误。
3)调试程序,拨动开关K1-K8,观察并记录程序运行结果。
五、实验报告仿照实验一,写出相应的实验报告。
六、思考题1.图2-2-1中芯片74LS273的作用是什么?2.在图2-2-1中,若LED反转1800,电路和程序如何修改?七、参考程序:;通过LED将P1口的状态显示ORG 0000HLJMP STARTORG 4100HSTART:MOV P1,#0FFH ;设置P1口为输入状态LP:MOV A,P1 ;P1口的状态读入累加器AMOV DPTR,#0CFA0H ;74LS273地址(输出口地址)送DPTRMOVX @DPTR,A ;A的值送LED显示JMP LP ;继续循环监测端口P1的状态END实验三P1口实验(三)一、实验目的:1.掌握P1口既做输入又做输出的使用方法。