单片机串行数据通信技术第八章教学内容8.1串行通信基础知识8.2MCS-51的串行口及控制寄存器8.3MCS-51串行通信工作方式及其应用8.4单片机多机通信8.5PC机与8051间的通信一、数据通信的概念在实际工作种,计算机的CPU与外部设备之间常常要进行信息交换,一台计算机与其他计算机也往往要交换信息,所有这些信息交换均可称为通信。通信实际上也是计算机的数据的传送。数据通信方式有两种:并行数据通信和串行数据通信,如下图所示。串行数据通信是指数据按位顺序进行传送的通信方式。其特点是:数据传送是一位一位进行传送的,最少只需一根传输线即可完成,成本低但速度慢。计算机与外界的数据传送大多数是串行的,其传送的距离可以从几m到几千km。下图两种通信方式连接并行数据传送是指数据的各位同时进行传送的通信方式。其特点是:各数据位同时传送,传送速度快、效率高。但并行数据传送有多少数据位就需多少根数据线,因此传送成本高。并行数据传送的距离通常小于30m,在计算机内部的数据传送都是并行的。8.1串行通信基础知识图8-1两种通信方式连接8.1串行通信基础知识一、异步串行通信的字符格式异步串行通信以字符为单位,即一个字符一个字符的传送。帧图515异步串行通信的字符格式起始位数据位[0~(n1)位]奇偶位停止位起始位位时间8.1串行通信基础知识⑶奇偶效验位——用于对字符的传送作正确性检查,因此奇偶效验位是可选择的,共有3种可能,即奇效验、偶效验和无效验,由用户根据需要选定。⑴起始位——开始一个字符的传送的标志位。起始位使数据线处于“0”状态。⑵数据位——起始位之后传送的数据信号位。在数据位中,低位在前(左)高位在后(右)。由于字符编码方式的不同,数据位可以是5、6、7或8位。⑷停止位——用以标志一个字符的结束,它对应于“1”状态。停止位在一帧的最后,它可能是1、1.5或2位,在实际中根据需要确定。8.1串行通信基础知识⑸位时间——一个格式位的时间宽度。⑹帧(frame)——从起始位开始到停止位结束的全部内容称之为一帧。帧是一个字符的完整通信格式,因此也就把串行通信的字符格式称之为帧格式。8.1串行通信基础知识同步通信下图同步通信的数据格式同步通信中,在数据开始传送前用同步字符来指示(常约定1~2个),并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,下面就连续按顺序传送数据,直到通信告一段落。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,仅在数据块开始时用同步字符SYNC来指示,其数据格式如图8-3所示。同步字符的插入可以是单同步字符方式或双同步字符方式,如图8-3所示,然后是连续的数据块。同步字符可以由用户约定,当然也可以采用ASCII码中规定的SYN代码,即16H。按同步方式通信时,先发送同步字符,接收方检测到同步字符后,即准备接收数据。二、同步串行通信8.1串行通信基础知识图8-3同步通信的数据格式在同步传送时,要求用时钟来实现发送端与接收端之间的同步。为了保证接收正确无误,发送方除了传送数据外,还要把时钟信号同时传送。同步传送的优点是可以提高传送速率(达56kbps或更高),但硬件比较复杂。8.1串行通信基础知识三、串行通信的数据通路形式1、单工(Simplex)形式单工形式的数据传送是单向的,通信双方中一方固定为接收端。单工形式的串行通信,只需要一条数据线,如图所示数据线2接收发送端接收发送端数据线1全双工形式串行通信数据线接收发送端接收发送端半双工形式串行通信发送端接收端数据线单工形式串行通信8.1串行通信基础知识2、半双工(Half-duplex)形式半双工形式的数据传送也是双向的,但任何时刻只能由其中的一方发送数据,另一方接收数据。因此半双工形式既可以使用一条数据线,也可以使用两条数据线,如上图所示。3、全双工(Full-duplex)形式全双工形式的数据传送是双向的,且可以同时发送和接收数据,因此全双工形式的串行通信需要两条数据线,如上图所示。8.1串行通信基础知识四、异步串行通信的信号形式1、近程通信近程通信又称本地通信。近程通信采用数字信号直接传送形式,即在传送过程中不改变原数据代码的波形和频率。这种数据传送方式称之为基带传送方式。计算机内部的数据信号是TTL电平标准,而通信线上的数据信号却是RS232C电平标准。然而,尽管电平标准不同,但数据信号的波形和频率并没有改变。近程串行通信只需用传输线把两端的接口电路直接连起来即可实现,既方便又经济。8.1串行通信基础知识寄存器串行接口TTL电平寄存器串行接口TTL电平计算机A计算机BRS-232电平标准近程串行通信8.1串行通信基础知识2、远程通信在远程串行通信中,应使用专用的通信电缆,但出于经济上的考虑也可以使用电话线作为传输线。数字信号计算机MODEM计算机电话线MODEM图517远程串行通信模拟信号数字信号远距离直接传送数字信号,信号会发生畸变,因此要把数字信号变为模拟信号再进行传送。信号形式的转变通常使用频率调制法,即以不同频率的载波信号代表数字信号的两种不同电平状态。这种数据传送方式就称为频带传送方式。8.1串行通信基础知识五、波特率和接收/发送时钟(一)波特率波特率,即数据传送速率,表示每秒钟传送二进制代码的位数,它的单位是位/秒(bps)。波特率对于CPU与外界的通信是很重要的。假设数据传送速率是120bps,而每个字符格式包含10个代码位(1个起始位、1个终止位、8个数据位),这时传送的波特率为:l0×l20bps=1200bps每一位代码的传送时间td为波特率的倒数。波特率是衡量传输通道频宽的指标,它和传送数据的速率并不一致。如上例中,因为除掉起始位和终止位,每一个数据实际只占8位,所以数位的传送速率为:8×120bps=960bps异步通信的传送速度在50~9200bps之间,常用于计算机到终端机和打印机之间的通信、直通电报以及无线电通信的数据发送等。8.1串行通信基础知识(二)接收/发送时钟在串行通信过程中二进制数字系列以数字信号波形的形式出现,不论接收还是发送,都必须有时钟信号对传送的数据进行定位。接收/发送时钟就是用来控制通信设备接收/发送字符数据速度的,该时钟信号通常由微机内部时钟电路产生。在接收数据时,接收器在接收时钟的上升沿对接收数据采样,进行数据位检测;在发送数据时,发送器在发送时钟的下降沿将移位寄存器的数据串行移位输出。如下图所示。接收/发送时钟频率与波特率有如下关系:收/发时钟频率=n×收/发波特率收/发波特率其中频率系数n=1,16,64。对于同步传送方式,必须取n=l,即接收/发送时钟的频率等于收/发波特率。对于异步传送方式,n=1,16,64,即可以选择的接收/发送时钟频率是波特率的1,16或64倍。因此,可由要求的传送波特率及所选择的倍数n来确定接收/发送时钟的频率。8.1串行通信基础知识(a)接收时钟(b)发送时钟图8-7接收/发送时钟8.1串行通信基础知识(三)允许的波特率误差六、串行通信的过程及通信协议(一)串-并转换与设备同步发送时的串-并转换8.1串行通信基础知识接收时的串-并转换8.1串行通信基础知识(二)串行通信协议1.起始位当通信线上没有数据被传送时处于逻辑“1”状态。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。起始位所起的作用就是使设备同步,通信双方必须在传送数据位前协调同步。2.数据位当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5、6、7或8,PC机中经常采用7位或8位数据传送,8051串行口采用8位或9位数据传送。这些数据位被接收到移位寄存器中,构成传送数据字符。在字符数据传送过程中,数据位从最低有效位开始发送,依次在接收设备中被转换为并行数据。8.1串行通信基础知识3.奇偶校验位数据位发送完之后,便可以发送奇偶校验位。奇偶校验用于有限差错检测,通信双方应约定一致的奇偶校验方式。如果选择偶校验,那么组成数据位和奇偶位的逻辑“1”的个数必须是偶数;如果选择奇校验,那么逻辑“1”的个数必须是奇数。4.停止位约定在奇偶位或数据位(当无奇偶校验时)之后发送的是停止位。停止位是一个字符数据的结束标志,可以是1位、1.5位或2位的低电平。接收设备收到停止位之后,通信线路上便又恢复逻辑“1”状态,直至下一个字符数据的起始位到来。8.1串行通信基础知识5.波特率设置通信线上传送的所有位信号都保持一致的信号持续时间,每一位的宽度都由数据传送速率确定,而传送速率是以每秒多少个二进制位来度量的,这个速率叫波特率。如果数据以每秒300个二进制位在通信线上传送,那么这个传送速率为300bps。6.软件挂钩(握手)信号约定8.1串行通信基础知识七、RS-232C总线标准标准异步串行通信接口有以下几类:①RS-232C,RS-232E;②RS-449(RS-422,RS-423和RS-485);③20mA电流环;④USB通用接口。所谓标准接口,就是明确定义若干信号线,使接口电路标准化、通用化,借助串行通信标准接口,不同类型的数据通信设备可以很容易实现它们之间的串行通信连接。8.1串行通信基础知识RS-232C标准中的许多信号是为通信业务联系或信息控制而定义的,在计算机串行通信中主要使用如下信号:下图DB25连接器机械结构图(1)数据传送信号发送数据(TXD)接收信号(RXD)(2)调制解调器控制信号请求发送(RTS)清除发送(CTS)数据通信设备准备就绪(DSR)数据终端设备准备就绪(DTR)(3)定位信号接收时钟(RXC)发送时钟(TXC)(4)信号地和保护8.1串行通信基础知识①除信号定义外,RS-232标准的其他规定还有:RS-232C是一种电压型总线标准,以不同极性的电压表示逻辑值:-3~-25V表示逻辑l(mark)+3~+25V表示逻辑0(space)②标准数据传送速率有50、75、110、150、300、600、1200、2400、4800、9600、19200bps。表8-1RS-232信号引脚定义③采用标准的25芯插头座(DB-25)进行连接,因此该插头座也称之为RS-232C连接器,DB25连接器机械结构见下图。8.1串行通信基础知识表8-1RS-232信号引脚定义8.1串行通信基础知识八、串行接口电路——通用的异步接收/发送器(UART)FE控制电路发送数据缓冲器TBEETXCRXCCOEPERXDTXD奇偶错溢出错帧错UART接收数据缓冲器接收移位寄存器发送移位寄存器INTDBUART硬件框图RESTWERDCS8.1串行通信基础知识图8-11URAT基本组成框图8.1串行通信基础知识现把UART的主要功能综述如下1.数据的串行化/反串行化所谓串行化处理就是把并行数据变换为串行数据。所谓反串行化就是把串行数变换为并行数据。在UART中,完成数据串行化的电路属发送器,而实现数据反串行化处理的电路则属接收器。2.格式信息的插入和滤除格式信息是指异步通信格式中的启始位、奇偶位和停止位等。在串行化过程中,按格式要求把格式信息插入,与数据位一起构成串行数据位串,然后进行串行数据传送。在反串行化过程中,则把格式信息滤除而保留数据位。3.错误检验错误检验的目的在于检验数据通信过程是否正确。在串行通信中可能出现的错误包括奇偶错和帧错等。8.1串行通信基础知识MCS-51串行口寄存器结构串行口寄存器结构MCS-51单片机串行口中寄存器的基本结构如下图所示。图中SBUF是串行口的缓冲寄存器,它是一个可寻址的专用寄存器,其中包括发送寄存器和接收寄存器,以便能以全双工方式进行通信。这两个寄存器有同一地址(99H)。串行发送时,向SBUF写入数据;串行接收时,从SBUF读出数据。此外,在接收寄存器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,以避免在数据接收过程中出现帧重叠错误。与接收数据情况不同,发送数据时,由于CPU是主动的,不会发生帧