1、 第八章 单片机串行数据通信 8.1 串行通信的基础知识 串行数据通信要解决两个关键技术问题,一个是数据传送,另一个是数据转换。所谓数据传送就是指数据以什么形式进行传送。所谓数据转换就是指单片机在接受数据时,如何把接收到的串行数据转化为并行数据,单片机在发送数据时,如何把并行数据转换为串行数据进行发送。8.1.1 数据传送单片机的串行通信使用的是异步串行通信,所谓异步就是指发送端和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。 1. 字符帧的帧格式字符帧由四部分组成,分别是起始位、数据位、奇偶校
2、验位、停止位。如图 8.1所示:1) 起始位:位于字符帧的开头,只占一位,始终位逻辑低电平,表示发送端开始发送一帧数据。2) 数据位:紧跟起始位后,可取 5、 6、 7、 8位,低位在前,高位在后 。3)奇偶校验位:占一位,用于对字符传送作正确性检查,因此奇偶校验位是可选择的,共有三种可能,即奇偶校验、偶校验和无校验,由用户根据需要选定。4)停止位:末尾,为逻辑 “1”高电平,可取 1、 1.5、 2位,表示一帧字符传送完毕。图 8.1 字符帧格式 2. 传送的速率串行通信的速率用波特率来表示,所谓波特率就是指一秒钟传送数据位的个数。每秒钟传送一个数据位就是 1波特。即: 1波特 1bps(
3、位 /秒) 。在串行通信中,数据位的发送和接收分别由发送时钟脉冲和接收时钟脉冲进行定时控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。8.1.2 数据转换串行接口电路为用户提供了两个串行口缓冲寄存器(SBUF), 一个称为发送缓存器,它的用途是接收片内总线送来的数据,即发送缓冲器只能写不能读。发送缓冲器中的数据通过 TXD引脚向外传送。另一个称为接收缓冲器,它的用途是向片内总线发送数据,即接收缓冲器只能读不能写。接收缓冲器通过 RXD引脚接收数据。因为这两个缓冲器一个只能写,一个只能读,所以共用一个地址 99H。 串行接口电路如图 8.2所示。图 8.2
4、 MCS-51串行口寄存器结构 8.2 MCS-51单片机串行通信的控制寄存器1. 串行口控制寄存器( SCON)SCON是 MCS-51单片机的一个可位寻址的专用寄存器,用于串行数据通信的控制。单元地址为 98H, 位地址为 98H 9FH。 寄存器的内容及位地址表示如下:位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI各位的说明如下:1) SM0 、 SM1 串行口工作方式选择位其状态组合和对应工作方式为:SM0 SM1 工作方式0 0 方式 00 1 方式 11 0 方式 21 1 方式 32) M2
5、 允许方式 2、 3的多机通信控制位在方式 2和 3中,若 SM2 1且接收到的第九位数据(RB8) 为 1,才将接收到的前 8位数据送入接收 SBUF 中,并置位 RI产生中断请求;否则丢弃前 8位数据。若 SM2 0, 则不论第九位数据( RB8) 为 1还是为 0,都将 前 8位送入接收 SBUF中,并产生中断请求。方式 0时, SM2必须置 0。3) REN 允许接收位REN 0 禁止接收数据REN 1 允许接收数据4) TB8 发送数据位 8在方式 2、 3时, TB8的内容是要发送的第 9位数据 ,其值由用户通过软件来设置。5) RB8 接收数据位 8在方式 2、 3时, RB8是接收的第 9位数据。在方式 1时, RB8是接收的停止位在方式 0时,不使用 RB86) TI 发送中断标志位在方式 0时,发送完第 8位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位。因此, TI 1表示帧发送结束,其状态既可供软件查询使用,也可请求中断。TI由软件清 “ 0” 。7) RI 接收中断标志位在方式 0时,接收完第 8位数据后,该位由硬件置位。在其它方式下,于接收到停止位之前,该位由硬件置位。因此, RI 1表示帧接收结束,其状态既可供软件查询使用, 也可请求中断。RI由软件清 “ 0” 。