您好,欢迎访问三七文档
第7章MCS-51系列单片机的串行口及应用概述单片机应用于数据采集或工业控制时,往往作为前端机安装在工业现场,远离主机,现场数据采用串行通信方式发往主机进行处理,以降低通信成本,提高通信可靠性。7.1串行通信概述1.通信的概念单片机与外界进行信息交换统称为通信。通信的基本方式有两种:并行通信和串行通信。并行通信:将数据字节的各位用多条数据线同时发送或接收。其特点是传送速度快,效率高,但成本高,适用于短距离传送数据。计算机内部的数据传送一般均采用并行方式。串行通信:将数据字节分成一位一位的形式在一条传输线上逐个地传送。其特点是传送速度慢,但成本低,适用于较长距离传送数据,但数据的传送控制比并行通信复杂。计算机与外界的数据传送一般均采用串行方式。2.数据串行通信的线路形式常用于数据通信的传输形式有单工、半双工、全双工。1).单工方式:一端固定为发送端,另外一端固定为接收端。数据传送是单向的,因此,只需要一条数据线。这种传输方式的用途有限,常用于串行口的打印数据传输与简单系统间的数据采集。2).半双工方式数据可实现双向传送,但不能同时进行,实际的应用采用某种协议实现收/发开关转换。数据传送是双向的,但任一时刻数据只能是一端发送另一端接收。3).全双工方式允许双方同时进行数据双向传送,两端都可以同时发送和接收数据。3.串行通信的基本通信方式串行通信的分类:同步串行通信和异步串行通信1).同步通信(SynchronousCommunication)所谓同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),这就保证了通信双方在发送和接收数据时具有完全一致的定时关系。同步通信把许多字符组成一个信息组,或称为信息帧,每帧的开始用同步字符来指示。同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。其信息帧的格式为:同步通信传送信息的位数几乎不受限制,通常一次通信传的数据有几十到几千个字节,且字符间不留间隙,通信效率较高。但它要求在通信中保持精确的同步时钟,所以其发送器和接收器比较复杂,成本也较高,一般用于传送速率要求较高的场合。2).异步通信(AsynchronousCommunication)异步通信方式不需要固定的同步字符,在发送多个数据时也不要求保持数据流的连续性,收发双方在传送每个数据时都进行一次同步。在异步通信方式中,接收器和发送器都有各自的时钟。不发送数据时,数据信号线总是呈现高电平,称其为空闲态。异步通信用一帧来表示一个字符,以字符帧为单位进行传输。字符与字符之间的间隔(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的。每一字符帧都是由起始位、数据位、校验位和停止位构成的。帧与帧之间可以连续发送,也可以用高电平间隔。其字符帧的数据格式为:在一帧格式中,先是一个起始位“0”(低电平),然后是5~8个数据位,规定低位在前,高位在后,接下来是1位奇偶校验位(可以省略),最后是1~2位的停止位“1”(高电平)。起始位:当发送方需要发送一帧数据时,先要发送一位低电平信号。其作用就是控制收发双方的同步,表示一帧数据传输的开始。数据位:就是串行输出的待传送数据的各个二进制位。串行数据在传送时从最低位开始。校验位:紧跟数据位之后的一位可选位。其作用是对发送的数据进行校验。多采用奇偶校验位方式。停止位:串行帧必须通过停止位来表示一帧的结束。停止位可以是1位、1.5位或2位,用固定的高电平表示。常用的帧格式是:1位起始位、8位数据位、1为停止位,即10位数据传递优点:不要求收发双方的时钟严格一致,可靠性高,硬件结构简单缺点:每个字符要附加2-3位用于起止位,各帧之间还有间隔,因此传输效率不高。在单片机中,主要使用异步通信方式在异步通信中,收发双方有两项设定必须保持一致:帧格式的设定必须一致。即一帧数据中的数据长度、校验方式及停止位个数的设定都必须一致;波特率的设定必须一致。收发双方必须按设定的帧格式和波特率进行通信,才能保证数据传输的成功。例如,在异步通信中传输速度为360字符/s,每个字符又包含10bit,则波特率为:360字符/s×10bit/字符=3600bit/s(波特)国际推荐波特率:110、300、600、1200、2400、4800、9600、19200、38400波特等。波特率:表示信息的传输速率,即每秒传送的二进制位数,其单位是波特率,1波特率=1位/秒(b/s)通信时钟信号一般由定时器产生D0D1D2D3D4D5D6D7通信时钟通信数据7.2MCS-51系列单片机的串行接口MCS-51单片机内部有一个全双工的串行通信口,它可工作在异步通信方式(UART)下,与串行传送信息的外部设备相连接,或用于通过标准异步通信协议进行全双工通信的8051多机系统,也可以工作在同步方式下。7.2.1串行口寄存器结构MCS-51串行口内部结构如图所示。MCS-51单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界进行通信。MCS-51单片机串行口主要由两个物理上独立的串行数据缓冲寄存器SBUF、发送控制器、接收控制器、输入移位寄存器和输出控制门组成。SBUF为串行口的收/发缓冲寄存器,它是可寻址的专用寄存器,其中包含了发送寄存器SBUF(发送)和接收寄存器SBUF(接收),可以实现全双工通信。发送SBUF和接收SBUF共用一个地址99H。发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。只能写入数据,不能读出数据。接收SBUF存放已接收成功的8位数据,供CPU读取。只能读出数据,不能写入数据。(1)发送数据过程(中断法)数据并行写入SBUF发→数据串行送出→中断标志位TI硬件置1→CPU响应中断→TI软件清零,并行写入下一数据→(2)接收数据的过程(中断法)外部数据串行送入移位寄存器→数据并行送入SBUF收→标志位RI硬件置1→CPU响应中断→RI软件清零,读走数据→同步时钟和传送数据的关系:发送数据时,发送时钟的下降沿将数据串行移位输出;接收数据时,接收时钟的上升沿开始对数据位采样。(1)串行数据缓冲器,SBUF在物理上有两个SBUF:一个用于发送,另一个用于接收。在逻辑上只有一个SBUF(99H)。可根据用法区分功能:unsignedcharcounter;待发送存放变量…SBUF=counter;完成一次数据发送…counter=SBUF;完成一次数据接收CPU串行口控制寄存器:(2)串口控制寄存器,SCON(98H)D7D6D5D4D3D2D1D0SCONSM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H①SM0,SM1:串行口工作方式控制位②TI:发送中断标志位,用于指示一帧信息发送是否完成,可寻址标志位。串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将TI清0.③RI:接收中断标志位,用于指示一帧信息是否接收完,可寻址标志位。当串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。在中断服务程序中,必须用软件将RI清0.④TB8:工作方式2、3中要发送的第9位数据。可根据需要由软件置1或清零。⑤RB8:工作方式2、3中,用于存放接收到的第9位数据。⑥SM2:多机通信控制位,主要用于方式2和方式3。以上三位主要用于多机通信中⑦ REN:允许接收控制位,用于控制数据接收的允许和禁止,REN=1,允许接收;REN=0,禁止接收。(3)电源控制寄存器,PCON(87H)PCOND7D6D5D4D3D2D1D0地址(87H)SMOD———GF1GF0PDIDLSMOD是串行口波特率倍增位,在串行口方式1、方式2、方式3时,波特率与SMOD有关。当SMOD=1时,串行口波特率加倍。系统复位时默认为SMOD=0。(4)中断允许寄存器IED7D6D5D4D3D2D1D0IEEA——ESET1EX1ET0EX0位地址0AFH0AEH0ADH0ACH0ABH0AAH0A9H0A8H其中,对串行口有影响的位是ES。ES为串行中断允许控制位,ES = 1,允许串行中断;ES = 0,禁止串行中断。(5)中断优先级寄存器IPPS是串行口优先级设置位。PS = 1,设串行口中断为高级;PS = 0,则为低级。7.2.2波特率的计算在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定的。串行口的四种工作方式对应三种波特率。方式0的波特率=fosc/12方式2的波特率=(2SMOD/64)*fsoc方式1的波特率=(2SMOD/32)*(T1溢出率)方式3的波特率=(2SMOD/32)*(T1溢出率)当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装载的8位定时方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。T1溢出率=fsoc/{12*[256-(TH1)]}在单片机的应用中,常用的晶振频率为:12MHZ和11.0592MHZ。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表表示。常用波特率fosc/MHZSMODTH1初值1920011.059210FDH960011.059200FDH480011.059200FAH240011.059200F4H120011.059200E8H表定时T1工作于模式2常用波特率及初值所以,用定时器/计数器的模式2作波特率发生器最恰当。选用11.0592MHZ时钟频率,可获得标准的波特率。串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器、串行口控制和中断控制。具体步骤如下:确定定时器的工作方式(TMOD设置)计算定时器的初值,装载TH、TL启动定时器(置位TR)确定串行口控制(设置SCON)串行口在中断方式工作时,要进行中断设置(设置IE、IP)串口编程初始化,例如:SCON=0x50;//串口方式1,允许接收,TI和RI清零PCON=0x80;//波特率加倍(×2)TMOD=0x20;//T1设为定时方式2TH1=0xfd;//T1计数初值,9.6k波特率TL1=0xfd;//T1计数初值,9.6k波特率IE=10010000B;//中断使能(开总中断,开串口中断)TR1=1;//启动T1GATETMODC/TM1M0M0M1GATEC/T(89H)序号波特率SMODa16250010xff21920010xfd3960000xfd4480000xfa5240000xf46120000xe87.3串行通信工作方式方式0——八位同步移位寄存器方式数据传输波特率固定为fosc/12由RXD引脚输入或输出数据TXD引脚输出fosc/12时钟信号以8位数据为一帧,不设起始位和停止位,先发送或接收最低位方式0主要用于扩展I/O口(串并转换)。扩展输出口扩展输入口扩展输出芯片:CD4094、74LS164……扩展输入芯片:CD4014、74LS165……方式1——10位数据异步通讯方式一帧信息=1个起始位(0)+8位数据位+1个停止位(1),(起始位和停止位是自动插入的)。指定T1为波特率时钟发生器,一般选择定时方式2)(212322anfoscSMOD波特率时钟序号波特率SMODa16250010xff21920010xfd3960000xfd4480000xfa5240000xf46120000xe8(fosc=11.0592MHz)方式1主要用于点对点通信接线关系:主机TXD、RXD分别与外设RXD、TXD相接;两机共地接线关系:利用RS-232C进行电平转换——(1:-5~-15V,0:+5~+15V)实例2:采用双机串行通信,其中甲机发送数据,乙机接收数据,
本文标题:第7章串行通信.
链接地址:https://www.777doc.com/doc-2111638 .html