1、实 验 指 导 书前 言一单片机原理实验的任务单片机原理实验是单片机原理及应用课程的一部分,它的任务是:1.通过实验进一步了解和掌握单片机原理的基本概念、单片机应用系统的硬件设计及调试方法。2.学习和掌握单片机应用系统程序设计技术。3.提高应用计算机的能力及水平,提高逻辑思维及动手能力。二实验设备单片机实验所使用的设备由计算机、单片机实验开发系统(见下图0-1),其中计算机是软件开发平台,主要完成程序编辑、编译、下载程序等任务;单片机实验开发系统是硬件开发平台,是基于51/196单片机的扩展实验系统。计算机和单片机实验开发系统之间是通过RS232串行接口进行通信的。单片机实验开发系统RS232
2、串行口计算机图0-1 单片机原理实验设备单片机实验开发系统配有开关电源、单片机、晶振、存储器、可编程并行接口芯片、键盘显示控制芯片、24键键盘、六位LED数码管显示、A/D及D/A转换芯片、简单输出口2个、简单输入口1个、逻辑电平输入开关、发光二极管显示电路,并配有小直流电机、步进电机、继电器、音响等驱动电路。在计算机软件的控制下可完成单片机基本实验及综合设计性实验项目。所有的MCS51单片机原理及应用课程实验都是在这套实验系统上完成的。三对参加实验学生的要求1.阅读实验指导书,复习与实验有关的理论知识,明确实验目的,了解内容和方法。2.按实验指导书要求进行接线和操作,经检查和指导老师同意后再
3、通电。3.在实验中注意观察思考,记录有关数据和程序,并由指导教师复查后才能结束实验。4.实验后应断电并返回WINDOWS下关闭计算机,整理实验台,恢复到实验前的情况。5.认真写实验报告,按规定格式写出程序流程图、程序、并分析实验结果、完成思考题等。字迹要清楚,结论要明确。爱护实验设备,遵守实验室纪律。*注:本实验指导书适用于MCS51单片机原理及应用A、单片机原理及应用B等课程。目 录第一章 MC51单片机原理及应用实验3实验一 P1口实验(验证性)3实验二 外部中断实验(验证性)5实验三 定时器实验7实验四 串行口实验-串并转换实验9实验五 数码显示实验11实验六 A/D转换实验13实验七
4、数字电子钟实验(综合性)15实验八 D/A转换实验16实验九 简单I/O口扩展实验18实验十 步进电机实验20实验十一 直流电机实验22实验十二 PC机与单片机串行通信实验24实验十三 继电器与电子音响实验26实验十四 8255可编程并行接口实验28实验十五 键盘显示接口实验30第二章 单片机开发实验系统及TMSD调试程序32第一节 单片机开发实验系统32第二节 TMSD源语言调试程序简介35第一章 MCS51单片机原理及应用实验实验一 P1口实验一实验目的1.学习P1口的使用方法。2.学习延时子程序的编写和使用。3.学习单片机实验系统的使用方法和程序的调试方法二实验设备及器材配置1.单片机实
5、验开发系统。 2.计算机。3.导线。三实验内容 分别完成单片机P1口做输出口、既做输入又做输出口的实验任务。1.P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。2.P1口低四位接四只发光二极管L1-L4, P1口高四位接开关K1-K4,编写程序,将开关的状态在发光二极管上显示出来。四实验原理说明P1口为准双向口,P1口的每一位都能独立地定义为输出线或输入线,作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来往口锁存器写入过“0”,再作为输入时,需要向口锁存器对应位写入“1”。延时程序的编写可以用两种方法,一种是用定时器
6、来实现,一种使用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。如果系统晶振为6.144MHz,则一个机器周期为12/6.144s即1/0.512s。现要编写一个延时0.1s的程序,可以大致写出如下: MOV R7, #200DE1: MOV R6, #X DE2: DJNZ R6, DE2 DJNZ R7, DE1 上面 MOV、DJNZ指令均为两个机器周期,所以执行一条指令需要1/0.256us,现求出X值: 指令3 指令2 指令4 指令1 计算出X=126,代入上式可知实际延时约为0.100004s。五连线方法及实验电路题目1:8031的P1.0P1.7分别接发光二极管L1L8
7、,硬件原理图如图1-1所示。题目2:P1口的P1.0P1.3接L1-L4,P1口的P1.4P1.7接K1-K4,硬件原理图如图1-2所示。 图1-1 题目1硬件原理图 图1-2 题目2硬件原理图 六思考题及实验报告要求1.思考题(1).试说明51系列单片机4个I/O口在使用上的分工和操作上的特点。(2).修改程序,使发光二极管闪亮移位方向改变。2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。 实验二 外部中断实验一实验目的1.学习外部中断技术的基本使用方法;2.学习中断处理程序的编程方法。二实验设备及器材配
8、置1.单片机实验开发系统。 2.计算机。3.导线。三实验内容 在以下实验题目中任选一个或由老师指定。1.P1口做输出口,接八只发光二极管,编写程序,使其循环点亮。以单脉冲输出端做为中断申请,当第一次产生外部中断时,使发光二极管全亮,延时1秒后返回中断之前的状态;当第二次产生外部中断时,使发光二极管全灭,延时1秒后返回中断之前的状态;以后如上述一直循环下去。2.以单脉冲输出端做为中断申请,自行设计连线,用实验箱上的红、绿、黄发光二极管模拟交通灯控制。当有急救车通过时,两交通灯信号为全红,以便让急救车通过,延时10秒后交通灯恢复中断前状态。四实验原理说明本实验中中断处理程序的应用,最主要的地方是如
9、何保护进入中断前的状态,使得中断程序执行完毕后能返回中断前P1口及发光二极管的状态。除了保护累加器A、程序状态字PSW外、P1口的状态外,还要注意主程序中的延时程序和中断程序的延时程序不能混用,本实验中,主程序延时程序用的寄存器和中断延时用的寄存器也不能混用。五连线方法及实验电路8031的P1.0P1.7分别接发光二极管L1L8,INT0接单脉冲输出端 “ ” 外部中断实验电路如图1-3所示图1-3 外部中断实验电路六思考题及实验报告要求1.思考题(1).试说明51系列单片机外部中断如何使用。(2).修改程序,外部中断产生时,使发光二极管闪亮移位方向改变。2.实验报告要求(1).给出自行设计的
10、程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验三 定时器实验一. 实验目的1.学习8031内部定时器/计数器的使用和编程方法;2.进一步掌握中断处理程序的编程方法。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.导线。三实验内容8031内部定时器T1,按方式1工作、即做为十六位定时器使用每0.1秒溢出一次。P1口的P1.0-P1.7分别接八只发光二极管。要求编写程序模拟一时序控制装置。开机后,第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2
11、、L4、L6、L8亮,第七秒钟全亮,第八秒钟全灭,以后又从头开始,一直循环下去。四实验原理说明1.定时常数的确定定时器/计数器的输入脉冲与机器周期一样,为振荡器频率的1/12。本实验中,时钟频率为6.144MHz。实现0.1秒的延时,要在定时器1中设置一个时间常数即计数初值,使其每隔0.1秒溢出一次,再用一个寄存器计溢出的次数,计10次即可实现1秒延时。时间常数按以下公式计算:Error! No bookmark name given.计算出X之后,换算成十六进制数将高八位放在TH1中,低八位放在TL1中。2.初始化程序包括定时器初始化(采用中断方式时,还包括中断系统初始化),并将时间常数送入
12、定时器中。注意定时器1初始化时建议用如下指令:ANL TMOD, #0FHORL TMOD, #10H即不要改变T0的工作方式。五连线方法及实验电路8031的P1.0P1.7分别接发光二极管L1L8,实验电路如图1-1所示。六思考题及实验报告要求 1.思考题(1).试说明51系列单片机定时器的使用方法。(2).单片机定时器T1工作在计数器方式,编程实现四位二进制计数器,将计数值在发光二极管上显示出来。2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。 实验四 串行口实验一. 实验目的1.掌握8031串行口方式
13、0工作方式及编程方法; 2.掌握利用串行口扩展I/O通道的方法。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.导线。三实验内容利用8031串行口,和并行输出串行移位寄存器74LS164,扩展I/O口,在数码显示器上循环显示09这10个数字。四实验原理说明串行口工作在方式0时,可通过外接移位寄存器实现串并转换。在这种方式下,数据为8位,只能从RXD端输入输出,TXD端输出移位同步时钟信号,其波特率固定为振荡频率的1/12。由软件置位串行控制寄存器(SCON)的REN位后才能启动串行接收,在CPU将数据写入SBUF寄存器后,立即启动发送。待8位数据传输完成后,硬件将SCON寄存器的
14、TI位置1。图1-4中,LD0-LD5分别经反向驱动后分别至六个共阴极数码管的阴极,H-A经同向驱动器7407驱动后至数码管的阳极。五. 连线方法及实验电路1.连线方法8031的TXD端接74LS164的SCLK端, RXD端接74LS164的SIN端。74LS164的QH-QA分别接数码显示的a-h,数码显示的LD0接高电平(+5V ),LD1-LD5接低电平(GND)。2.实验电路串并转换电路原理图如图1-4所示。图1-4 串并转换电路原理图六思考题及实验报告要求1.思考题(1).试说明51系列单片机串行口工作方式及如何使用。(2).修改程序及硬件连线,使数码管显示数字0-FF。2.实验报
15、告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验五 数码显示实验一实验目的1.掌握七段数码显示数字的原理。2.了解七段数码显示数字的原理。3.掌握利用一个段锁存器、一个位锁存器同时显示多位数字的方法。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.导线。三实验内容利用实验台上的六个数码管,同时显示16或自己的学号后六位这6个数字。四实验原理说明由于有六个数码管,用静态显示所需I/O口太多,故适用于动态显示。本实验中用一个位锁存器74LS273作为位数据口,用另一个74LS273作为段数据口。CS2、
16、CS3是两片74LS273的片选控制端,08-0F、10-17是74LS138译码器的输出端,口地址的高八位固定为1BH。当数据指针DPTR指向1B08-1B0FH、1B10-1B17H时,执行指令MOVX DPTR,A时,经内部译码后,在对应的插孔上输出低电平。五连线方法及实验电路1.连线方法如果LED显示器与8279之间连接有短路片,首先将这些短路片全部拔掉(做完实验后,再将其插好)。然后,第一片74LS273(U4):CS2接08-0F, O11-O18接LED的A-H; 第二片74LS273(U5):CS3接10-17,O21-O26接LED的LD0-LD5。2.实验电路数码显示电路图
17、如图1-5所示。图1-5 数码显示电路图六思考题及实验报告要求1.思考题(1).试说明动态显示的原理。(2).修改程序,让显示的数字循环移动起来。2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验六 A/D转换实验一实验目的1.掌握模数转换器与单片机接口的连线方法。2.了解ADC0809的转换性能及编程方法。 3.通过实验了解单片机如何进行数据采集。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.导线。三实验内容利用实验台上的ADC0809做A/D转换器,实验台上的电位器提供模拟量输入,编制
18、程序,将模拟量转换成数字量,用发光二极管或数码管显示出来。 四实验原理说明 ADC0809是8通道八位逐次逼近型A/D 转换器,每采集一次需要100微秒。START端为A/D转换启动信号,ALE端为通道地址锁存信号。实验电路中已将其相连,以便同时锁存通道地址并开始A/D转换,故启动A/D转换只需如下两条指令:MOV DPTR, #1B20H MOVX DPTR, AA中内容是不重要的,这是一次虚拟写。 中断方式下,A/D转换结束后自动产生EOC信号,将其与8031 INT0相连。中断处理程序中,使用如下指令即可读取A/D转换结果。 MOV DPTR,#1B20H MOVX A, DPTR五连线
19、方法及实验电路1连线方法ADC0809的片选端CS5接20-27,EOC接INT0;2.2K电位器中间抽头接IN0,另外两个头,一端接+5V,另一端接GND。2实验电路A/D转换电路图如图1-6所示图1-6 A/D转换电路图六思考题及实验报告要求1.思考题(1).试说明ADC0809模数转换器如何使用。(2).同时采集两个通道的模拟量输入电压,将采集的数字量在在数码管上显示出来。2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验七 数字电子钟实验一实验目的1.进一步掌握定时器的使用和编程方法。2.进一步掌
20、握中断处理程序的编程方法。3.进一步掌握键盘显示接口工作原理。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.导线。三实验内容利用实验台上的六个数码管及单片机定时器,设计一个电子时钟,在六位数码显示器上实时显示计时值。格式如下:XX XX XX 由左向右分别为:时、分、秒四实验原理说明数字电子钟是一个计时装置,计时周期24小时,满刻度23时59分59秒。数字电子钟有多种设计方法。例如:采用中小规模集成电路,也可以用专用时钟芯片配以显示等外围电路组成,还可以采用单片机设计电子钟。以单片机实现电子钟,具有编程灵活,便于功能扩充等特点。用单片机来模拟时钟,由定时器/计数器产生0.1秒的
21、时基信号,定时器溢出时产生中断,以0.1秒、秒、分、时为单位计数。五连线方法及实验电路参考数码显示实验电路或自行设计。六思考题及实验报告要求1.思考题(1).如何提高电子钟的计时精度?(2).如何为电子钟增加清零及对时功能? 2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验八 D/A转换实验一实验目的1.了解D/A转换器的基本原理。2.了解D/A转换器DAC0832的性能及编程方法。3.了解单片机系统中扩展D/A转换的基本方法。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.示波器。 4.
22、导线三实验内容利用实验台上的DAC0832产生锯齿波、三角波、正弦波。三种波形轮流显示。四实验原理说明D/A转换是把数字量转换成模拟量的变换,从D/A转换输出的是模拟电压信号。产生锯齿波和三角波只需由A存放的数字量的增减来控制;要产生正弦波,较简单的手段是造一张正弦数字量表。取值范围为一个周期,采样点越多,精度越高。本实验中,输入寄存器占偶地址口,DAC寄存器占较高的奇地址口。两个寄存器均对独立进行锁存。因而要把一个数据通过0832输出,要经过两次锁存。典型程序段如下:MOV DPTR,#PORTINMOV A,#DATAMOVX DPTR,AINC DPTRMOVX DPTR, A 其中第二
23、次I/O写是一个虚拟写过程,其目的只是产生一个WR信号,启动D/A。五连线方法及实验电路1.连线方法DAC0832片选端CS6接28 -2FH,AOUT接示波器探头。2.实验电路 D/A转换电路如图1-7所示。图1-7 D/A转换电路六思考题及实验报告要求1.思考题(1). 理论分析D/A转换输出AOUT端输出电压范围。2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验九 简单I/O口扩展实验一实验目的1.学习在单片机系统中扩展简单I/O口的方法。2.学习数据输入、输出程序的编制方法。二实验设备及器材配置
24、1.单片机实验开发系统。 2.计算机。3.导线。三实验内容利用74LS244作为输入口,读取开关状态,并将此状态,通过发光二极管或数码管显示出来。四实验原理说明MCS51单片机外部扩展空间很大,但数据总线口和控制信号线的负载能力有限的。若需要扩展的芯片很多,则MCS51总线负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口负担。五连线方法及实验电路1.连线方法74LS244(U6)的I1-I8接开关的K1-K8,CS4端接18-1F。74LS273(U4)的O11-O18接数码管A-H,CS2接08-0F;P1.0、P1.1接数码管LD0-LD1。2.实验电路 简单
25、I/O口实验电路如图1-8所示。六思考题及实验报告要求1.思考题(1). 试说明74LS244的逻辑功能及实验电路图的原理。2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。图1-8 简单I/O口实验电路实验十 步进电机控制实验一实验目的1.了解步进电机控制的基本原理;2.掌握控制步进电机转动的编程方法。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.步进电机4.导线。三实验内容利用实验台上的并行口及步进电机小盒,编制程序实现步进电机的正反转旋转、转速控制。四实验原理说明步进电机驱动原理是通过对
26、它每相线圈中的电流的顺序切换来使电机作步进式旋转。驱动电路由脉冲信号来控制,所以调节脉冲信号的频率便可以改变步进电机的转速。单片机控制步进电机最合适。本实验使用国产20BY-0型步进电机,它使用+5V直流电源,每相电流为0.16A,电机线圈由四相组成,即A、B、C、D。驱动方式为两相激励方式,各线圈通电顺序如表1-1所示。表1-1两相激励通电次序相顺序ABCD01100101102001131001反向 正向 五连线方法及实验电路实验时可用P1口或并行输出口,作为步进电机四相线圈控制,分别接BA、BB、BC、BD,将步进电机插头与J8相连即可。步进电机驱动电路如图1-9所示。图1-9 步进电机
27、驱动电路六思考题及实验报告要求1.画出实验硬件电路图及程序流程图;2.写出自行设计的实验程序清单;3.如果程序中出现问题,分析原因并解决。4.给出实验结果及对实验的改进意见。实验十一 小直流电机实验一实验目的1.进一步了解D/A转换器DAC0832的性能及编程方法。2.了解直流电机控制的基本方法。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.直流电机。 4.导线三实验内容利用实验台上的DAC0832编制程序输出一串脉冲,经放大后驱动小电机,改变输出脉冲的电平及持续时间,达到电机正转、反转、加速、减速之目的。四实验原理说明小直流电机转动原理;转动方向是由电压的正负来控制的。电压为
28、正则电机正转,电压为负则电机反转。转速大小则是由AOUT输出脉冲的占空比来决定的,正向占空比越大则电机转速越快,反向转则占空比越小转速越快。本实验中,模拟量输出为双极性,当输入数字量小于80H时,输出为负,输入等于80H时则输出为0V,输入大于80H则输出为正。因而,本实验中DAC0832输入数字量只需要三个,再通过不同的延时即可达到目的。五连线方法及实验电路1.连线方法DAC0832片选端CS6接28 -2FH,AOUT接电机放大器的DJ插孔,插头J1接电机;2.实验电路 D/A转换及电机驱动电路如图1-10所示。图1-10 D/A转换及电机驱动电路六思考题及实验报告要求1.思考题(1).
29、如何测量电机转速?2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验十二 PC机与单片机串行通信实验一实验目的1.掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。2.了解实现串行通信的硬环境,数据格式的协议,数据交换的协议。3.了解PC机串行通信的基本要求。二实验设备及器材配置1.单片机实验开发系统。 2.计算机。3.串口电缆4.导线。三实验内容1.利用单片机串行口,实现与PC机串行通信。2.本实验题目要求如下:单片机串行口工作方式设定为方式1,波特率为1200;在PC机上运行串口调试助手软件,
30、要求将从PC机发送的字符(0F),显示到实验系统的数码管上,单片机将接收到字符返回到PC机屏幕上显示出来。四实验原理说明PC机上的串行接口采用RS-232C串行通信标准接口,其逻辑1电平为5V15V,表示传号状态;其逻辑0电平为5V15V,表示空号状态;其逻辑电平与TTL、CMOS电平不兼容。因此,RS232C驱动器与TTL电平连接必须经过电平转换。MC1488、MC1499是集成芯片。MC1488为TTL电平转换为RS232C电平,MC1489为RS232C电平转换为TTL电平。单片机串行口工作在方式1(波特率可变10位异步通信方式),T1为波特率发生器,以TXD为发送端,RXD为接收端,根
31、据给定的波特率可以计算计数初值。计算公式为:F=6.144MHz,B=1200,将TH1计算出并换算成16进制数。五实验连线及实验电路 1实验连线 在实验系统断电状态下,将串口电缆分别与实验系统J13插座和PC机串行口COM1或COM2相连。数码显示连线自行设计。 2实验电路 串行通信实验电路原理图如图1-11所示。图1-11 串行通信实验电路原理图六思考题及实验报告要求1.思考题(1).比较MAX232与MC1488、1489 RS232芯片的不同。计算比较波特率12009600时的误差。(2).查阅资料在PC机下是如何编程实现串行通信的?(3).修改程序及连线,使数码管可以显示0-FF。2.实验报告要求(1).给出自行设计的程序清单、程序流程图。(2).总结实验过程中调试所遇到的问题和解决方法,写出编程调试的经验和体会。实验十三 继电器与电子音响实验一实验目