您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > MCS-51单片机应用教程 第4章
第4章单片机的串行通信4.1串行通信的概念4.2MCS-51串行口的结构及工作方式4.3串行通信的应用4.4小结习题本章主要介绍单片机串行通信I/O接口的结构、串行通信控制寄存器、单片机串行通信的工作方式以及串行通信波特率。通过对本章的学习,读者应掌握和了解以下知识:MCS-51单片机串行口的结构MCS-51单片机串行通信的四种工作方式和特点MCS-51单片机串行通信波特率的设置方法利用MCS-51单片机串行口扩展I/O口线的技术MCS-51单片机的双机通信和多机通信的基本原理本章学习目标CPU与外设之间的信息交换和传输称为通信,通常有并行和串行两种通信方式。用单片机的多个I/O口线同时传送若干个数码,称为并行通信方式。其优点在于传输速度较快,缺点是占用通信线较多,不适合远程通信。另一种通信方式是从单片机的一个I/O口线逐位传输二进制编码数据,称为串行通信。其优点是占用I/O口线少,适合远程通信和上、下位机之间通信,缺点是通信速度比并行通信慢得多。4.1串行通信的概念在串行通信中,数据是在两个不同的站之间传送的。按照数据传送的方向,串行通信可分为3种制式。(1)单工制式信息只能沿着一个方向传输。例如,甲设备只能发送,乙设备只能接收。只需一条数据线,如图4-1(a)所示。4.1.1串行通信的制式(2)半双工制式信息可以沿一条信号线的两个方向传输,但不能同时实现双向传输,只能交替地收或发。甲、乙两站之间只要一条数据线和一条接地线。收发开关是由软件控制的,通过半双工通信协议进行收发功能切换。如图4-1(b)所示。(3)全双工方式使用两条相互独立的数据线,分别传输两路方向相反的信息,使收和发能同时进行。因此全双工方式要占用单片机的两个I/O脚,需要包括地线在内的三根传输线。如图4-1(c)所示。图4-1点-点串行通信的制式1.异步方式在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端逐帧发送,接收端逐帧接收。发送端和接收端可以由各自的时钟来控制数据的发送和接收。这两个时钟源可以彼此独立、互不同步。4.1.2串行通信的方式(1)字符格式的约定MCS-51单片机的字符格式约定10位或11位二进制码为一帧数据。其中每一位都有自己的定义:起始位、二进制数据位、地址/数据识别位、奇偶校验位或者停止位。图4-2(a)示出了三种典型的异步帧格式。图4-2串行通信数据格式(2)波特率的约定波特率即传送二进制码的速率,其单位为b/s或1/s。波特率越高,数据传输速度越快。在异步通信中,接收端和发送端保持相同的传送波特率,并以字符数据的起始位与发送设备保持同步。(3)其他约定起始位、奇偶校验位和停止位的约定,在同一次传送过程中必须保持一致,这样才能成功地传送数据。异步方式并不要求两帧数据之间的时间间隔为常数。如果接收机接收到了一个起始位,就按波特率依次接收以后的各位数据,直至收到了停止位为止。在传输数据的过程中,规定了用符号0和1表示二进制数码,还规定了逻辑0为空号(SPACE),逻辑l为传号(MARK)。异步通信在线路空闲时总处于传号状态。总之,异步通信方式是按帧传送数据的工作方式,这种方式的优点是可靠性高,能及时发现通信中的错误码;缺点是通信效率比同步方式低。2.同步方式将一大批数据分成几个数据块,数据块之间用同步字符予以隔开,而传输的各位二进制码之间都没有间隔,所以同步方式是按数据块传送数据的,一次可以传送完一大批数据。同步方式中,每一位数据占用的传输时间都是相等的,接收机的接收时钟应该和发送机的发送时钟以及传送的码元同步。图4-2(b)中给出了典型的数据格式。与图4-2(a)相比,同步通信方式的数据格式中没有两帧之间的空闲时间,也没有一帧之内的识别标志位。显然这种方式可以大大提高通信速度,常用于高速计算机的大容量数据通信。MCS-51单片机有一个全双工异步串行I/O口,占用P3.0和P3.1两个管脚,为P3口的第二功能,即P3.0是串行数据接收端(RXD),P3.1是串行数据发送端(TXD)。MCS-51内部的可编程全双工串行通信接口,具有通用异步接收/发送器(UART)的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。4.2MCS-51串行口的结构及工作方式MCS-51单片机由两个独立的接收缓冲寄存器、发送缓冲寄存器SBUF、发送控制器、接收控制器、输入移位寄存器、输出移位寄存器和输出控制门、波特率发生器等组成。串行口结构如图4-3所示。通常定时器T1作为串行口波特率发生器使用。与串行口有关的特殊功能寄存器有SBUF、SCON、PCON,与串行口中断有关的特殊功能寄存器有IE、IP。4.2.1单片机串行口的结构及串行口控制寄存器图4-3MCS-51串行口组成1.串行口数据缓冲器SBUFSBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器共用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。CPU写SBUF,执行MOVSBUF,A指令,就是启动发送,将A累加器中的数据通过SBUF发送;CPU读SBUF,执行MOVA,SBUF指令,就是读接收缓冲器,将接收到的数据读入A累加器。串行口对外也有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工通信。2.串行口控制寄存器SCONSCON是可以进行位寻址的8位控制寄存器,地址为98H。SCON的各位的定义和功能如下:SCON.7.6.5.4.3.2.1SCON.0SM0SM1SM2RENTB8RB8TIRISM0、SM1:串行口工作方式选择位(内容见4.2.2节)。SM2:多机通信控制位。具体用法见4.3.3节。REN:串行接收允许位。由软件置位或清除。软件置1时,串行口允许接收,清零后禁止接收。TB8:在方式2和方式3中是发送的第9位数据。RB8:在方式2和方式3中是接收的第9位数据。TI:发送中断标志位。发送结束时由硬件置位。该位必须用软件清零。RI:接收中断标志位。结束接收时由硬件置位。该位必须用软件清零。3.电源控制寄存器PCONPCON的各位的定义和功能如下:PCON.7.6.5.4.3.2.1PCON.0SMODPCON是8位特殊功能寄存器,地址为87H,不可进行位寻址。它的低7位全部用于80C51/80C31子系列单片机的电源控制。只有PCON的最高位SMOD位用于MCS-5l系列各类单片机串行口波特率系数的控制位:当SMOD=l时,方式1、2、3的波特率加倍,否则不加倍。单片机串行口有4种工作方式,用特殊功能寄存器SCON中的SM0、SM1两位进行设定,见表4-1。(见书60页)4.2.2串行口的4种工作方式1.方式0串行接口工作方式0为同步移位寄存器方式,多用于I/O口的扩展,其波特率是固定的,为fosc/12。TXD引脚输出同步移位脉冲,RXD引脚串行输入输出数据。发送和接收都以8位数据为一帧,发送时低位在前,高位在后。接收时也是低位在前,高位在后。(1)方式0发送数据从RXD引脚串行输出,TXD引脚输出同步脉冲。当一个数据写入SBUF时,串行口将8位数据以fosc/12的固定波特率从RXD引脚输出,由低位到高位输出。发送完毕置位中断标志TI1,请求中断。再次发送数据之前,必须用软件将TI清零。(2)方式0接收在满足REN=1和RI=0的条件下,串行口允许输入。此时,RXD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率对RXD引脚输入的数据进行接收。当接收器接收完8位数据后,置中断标志RI=1,请求中断。当工作在方式0时,必须使SCON寄存器中的SM2位为“0”。方式0发送或接收完数据后由硬件置位TI或RI,CPU在响应中断后要用软件清除TI或RI标志。2.方式1在方式1时,串行口被设置为波特率可变的8位异步通信接口。发送/接收1帧数据为10位,包括1位起始位、8位数据位(先低位后高位)和1位停止位。(1)方式1发送串行口以方式1发送时,数据位由TXD端输出。CPU通过执行写入发送缓冲器SBUF的指令启动发送。当数据发送完毕,置位中断标志位TI。(2)方式1接收当REN=1时,串行口处于方式1接收状态。当采样到发送端发送的起始位时,则启动接收器,接收到的数据移位进入SBUF。当接收完毕,置位中断标志位RI。串行口中断标志位TI、RI由硬件置位,需要用指令清零。3.方式2串行口工作为方式2时,被定义为9位异步通信接口。发送/接收1帧数据为11位,包括1位起始位、8位数据位、1位控制/校验位和1位停止位。控制/校验位为第9位数据。(1)方式2发送发送数据由TXD端输出。要发送的8位数据在SBUF中,第9位数据在SCON中的TB8位。TB8可由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。(2)方式2接收当REN=1时,串行口以方式2接收数据。方式2的接收与方式1基本相似。当满足RI=0,且SM2=0或接收到的第9位数据为1时,前8位数据移位进入SBUF,第9位数据送入SCON中的RB8位,置位中断标志位RI;否则接收无效,也不置位RI。4.方式3方式3为波特率可变的9位异步通信方式,除了波特率有所区别之外,其余同方式2。串行口的通信波特率反映了串行传输数据的速率。通信波特率的选用不仅和所选通信设备、传输距离有关,还受传输线状况所制约。1.方式0的波特率在方式0下,串行口通信的波特率是固定的,其值为fosc/12(fosc为主机频率)。4.2.3串行通信的波特率2.方式2的波特率在方式2下,通信波特率为fosc/32或fosc/64,根据特殊功能寄存器PCON中SMOD位的状态来决定串行口在哪个波特率下工作。选择公式为:若SMOD=0,则所选波特率为fosc/64;若SMOD=1,则波特率为fosc/32。oscSMODf642波特率=3.方式1或方式3的波特率在这两种方式下,串行口波特率是由定时器的溢出率决定的,因而波特率是可变的。波特率的公式为:定时器T1的溢出率计算公式为:式中:K为定时器T1的位数;若定时器T1方式0,则K=13;若定时器T1方式1,则K=l6;若定时器T1方式2或方式3,则K=8。溢出率定时器波特率=1T322SMOD)2112fT1Kosc-初值(溢出率=定时器定时器T1作为串行口波特率发生器使用时,通常选择工作方式2。因为定时器T1在方式2下,被设定为重装计数器形式(当TL1由全“1”变为全“0”时,TH1内容重装TL1,TH1不变)。串行口方式1或方式3下所选波特率需要通过计算来确定T1初值,因为该初值要在定时器T1初始化时使用。为避免复杂的计算,波特率和定时器T1初值的关系列于表4-2中以供参考。(见书62页)由4.2节可知,MCS-51单片机串行口的工作方式0为同步移位寄存器方式,允许使用移位寄存器芯片扩展一个或多个8位并行I/O口。所以若串行口别无它用时,就可用来扩展并行I/O口,这种方法不占用片外RAM地址,而且还能简化单片机系统的硬件结构。但缺点是操作速度较慢,且扩展芯片越多,速度越慢。4.3串行通信的应用4.3.1利用串行口扩展I/O口1.用74LS165扩展并行输入口图4-4是利用两片74LS165首尾相连扩展两个8位并行输入口的实用电路。74LS165是并行输入串行输出的8位移位寄存器。当移位/置入端S/L由“1”变为“0”时,并行输入端的数据被置入各寄存器。当S/L=1,且时钟禁止端(15脚)为低时,在时钟脉冲的作用下,数据由QA向QH方向移动(SIN为串行输入端)。图中RXD(P3.0)作为串行输入端与74LS165的串行输出端相连,TXD(P3.1)为移位脉冲输出端,与74LS165芯片的移位脉冲输入端连接,用一根I/O口线来控制移位与置位,图中用P1.0与74LS165芯片的移位/置入端S/L相连。图4-4利用串行口扩展并行输入口原理图2.用74LS164扩展并行输出口如图4-5所示
本文标题:MCS-51单片机应用教程 第4章
链接地址:https://www.777doc.com/doc-4006012 .html