1、第第8章章 51单片机串行通信单片机串行通信n8.1 8.1 串行通信概述串行通信概述 n8.2 8.2 常用的串行通信总线常用的串行通信总线 n8.3 MCS-518.3 MCS-51的串行接口的串行接口 n8.4 MCS-518.4 MCS-51单片机之间的通信单片机之间的通信8.1 串行通信概述n8.1.1 串行通信的基本方式 n8.1.2 串行通信的数据传送方式 n8.1.3 串行通信接口电路 8.1 串行通信概述n在计算机系统中,在计算机系统中,CPU与外部通信的基本方式有两种:与外部通信的基本方式有两种:l并行通信并行通信数据的各位同时传送。数据的各位同时传送。l串行通信串行通信数
2、据一位一位顺序传送。数据一位一位顺序传送。n并行通信的特点:并行通信的特点:各数据位同时传送各数据位同时传送,传送速度快传送速度快、效率高效率高。但有多少数据位就需要有多少根数据线,因此但有多少数据位就需要有多少根数据线,因此传送成本高传送成本高。在集成电路芯片的内部、同一插件板上各部件之间、同一机在集成电路芯片的内部、同一插件板上各部件之间、同一机箱内各插件板之间等的数据传送都是并行的。并行数据箱内各插件板之间等的数据传送都是并行的。并行数据传送传送的距离通常小于的距离通常小于30米米。n串行通信的特点:串行通信的特点:数据传送按位顺序进行数据传送按位顺序进行,最少只需一根传,最少只需一根传
3、输线即可完成,输线即可完成,成本低成本低,但,但速度慢速度慢。计算机与远程终端或终。计算机与远程终端或终端与终端之间的数据传送通常都是串行的。串行数据端与终端之间的数据传送通常都是串行的。串行数据传送的传送的距离可以从几米到几千公里距离可以从几米到几千公里。n串行通信有串行通信有同步通信同步通信和和异步通信异步通信两种基本方式。两种基本方式。8.1 串行通信概述串行通信概述 发送 接收 D0 D1 D2 D3 D4 D5 D6 D7 控制 状态 1 0 1 0 1 0 0 1 计算机或外设 计算机 计算机 计算机 或外设 (a)并行通信(b)串行通信 10101001 基本通信方式示意图 8.
4、1.1 串行通信的基本方式1.1.异步通信方式异步通信方式(Asynchronous Communication)(Asynchronous Communication)n在异步通信中,数据通常是以字符在异步通信中,数据通常是以字符(或字节或字节)为单位组成字符为单位组成字符帧传送的。帧传送的。字符帧字符帧由发送端一帧一帧地发送,通过传输线被由发送端一帧一帧地发送,通过传输线被接收设备一帧一帧地接收。发送端和接收端可以有各自的时接收设备一帧一帧地接收。发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立,互不钟来控制数据的发送和接收,这两个时钟源彼此独立,互不同步。同步。
5、n在异步通信中,接收端是依靠字符帧格式来判断发送端是何在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送及何时结束发送。平时,发送线为高电平时开始发送及何时结束发送。平时,发送线为高电平(逻辑逻辑“1 1”),每当接收端检测到传输线上发送过来的低电平逻辑,每当接收端检测到传输线上发送过来的低电平逻辑“0 0”(字符帧中起始位字符帧中起始位)时,就知道发送端已开始发送,每当时,就知道发送端已开始发送,每当接收端接收到字符帧中的停止位时,就知道一帧字符信息己接收端接收到字符帧中的停止位时,就知道一帧字符信息己发送完毕。发送完毕。异步通信方式异步通信方式(1)(1)字符帧字符帧(Char
6、acter Frame)(Character Frame)字符帧也叫字符帧也叫数据帧数据帧,由起始位、数据位、奇偶校验位和停,由起始位、数据位、奇偶校验位和停止位等四部分组成。各部分结构和功能分述如下:止位等四部分组成。各部分结构和功能分述如下:起始位起始位:位于字符帧开头,只占一位,始终为逻辑:位于字符帧开头,只占一位,始终为逻辑“0 0”(低低电平电平),用于向接收设备表示发送端开始发送一帧信息。,用于向接收设备表示发送端开始发送一帧信息。数据位数据位:紧跟起始位之后,用户根据情况可取:紧跟起始位之后,用户根据情况可取5 5位、位、6 6位、位、7 7位或位或8 8位,低位在前高位在后。若
7、所传数据为位,低位在前高位在后。若所传数据为ASCIIASCII字符,则字符,则常取常取7 7位。位。奇偶校验位奇偶校验位:位于数据位后,仅占一位,用来表征串行通:位于数据位后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户根据需要决定。信中采用奇校验还是偶校验,由用户根据需要决定。停止位停止位:位于字符帧末尾,为逻辑:位于字符帧末尾,为逻辑“1 1”(高电平高电平),通常可,通常可取取1 1位、位、1.51.5位或位或2 2位,用于向接收端表示一帧字符信息已发位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备。送完毕,也为发送下一帧字符作准备。(1)(1)字符帧字
8、符帧(Character Frame)(Character Frame)在串行通信中,发送端一帧一帧发送信息,接收端一帧一在串行通信中,发送端一帧一帧发送信息,接收端一帧一帧接收信息。两相邻字符帧之间可以无空闲位,也可以有帧接收信息。两相邻字符帧之间可以无空闲位,也可以有若干空闲位,这由用户根据需要决定。若干空闲位,这由用户根据需要决定。异步通信的字符帧格式(2)(2)波特率波特率(baud rate)(baud rate)l波特率的定义为每秒钟传送二进制数码的位数波特率的定义为每秒钟传送二进制数码的位数(亦称比特数亦称比特数),单位是单位是bit/sbit/s,即位,即位/秒。秒。l波特率是
9、串行通信的重要指标,用于表征数据传输的速度。波特率是串行通信的重要指标,用于表征数据传输的速度。波特率越高,数据传输速度越快,但和字符的实际传输速率波特率越高,数据传输速度越快,但和字符的实际传输速率不同。字符的实际传输速率是指每秒内所传字符帧的帧数,不同。字符的实际传输速率是指每秒内所传字符帧的帧数,和字符帧格式有关。和字符帧格式有关。例如:波特率为例如:波特率为1200 bit/s1200 bit/s的通信系统,的通信系统,若采用上图若采用上图(a)(a)的字符帧,则字符的实际传输速率为的字符帧,则字符的实际传输速率为 1200/11=109.091200/11=109.09帧帧/秒秒 若
10、改用上图若改用上图(b)(b)的字符帧,则字符的实际传输速率为的字符帧,则字符的实际传输速率为 1200/14=85.711200/14=85.71帧帧/秒秒l每位的每位的传输时间传输时间定义为波特率的倒数。例如:波特定义为波特率的倒数。例如:波特率为率为1200 bit/s1200 bit/s的通信系统,其每位的传输时间应的通信系统,其每位的传输时间应为:为:l波特率还和信道的频带有关。波特率还和信道的频带有关。波特率越高,信道频波特率越高,信道频带越宽。带越宽。因此,波特率也是衡量因此,波特率也是衡量通道频宽通道频宽的重要指的重要指标,通常,异步通信的波特率在标,通常,异步通信的波特率在5
11、0bit/s50bit/s9600bit/s9600bit/s之间。波特率不同于发送时钟和接收时之间。波特率不同于发送时钟和接收时钟,它通常是钟,它通常是时钟频率的时钟频率的1/161/16或或1/641/64。d10.833(ms)1200T d10.833(ms)1200T 2.2.同步通信同步通信(Synchronous Communication)(Synchronous Communication)n同步通信是一种连续串行传送数据的通信方式,一次通信只同步通信是一种连续串行传送数据的通信方式,一次通信只传送一帧信息。这里的信息帧和异步通信中的字符帧不同,传送一帧信息。这里的信息帧和异
12、步通信中的字符帧不同,通常有若干个数据字符,如下图所示。通常有若干个数据字符,如下图所示。n同步字符帧由同步字符、数据字符和校验字符三部分组成。同步字符帧由同步字符、数据字符和校验字符三部分组成。其中,同步字符位于帧结构开头,用于确认数据字符的开始其中,同步字符位于帧结构开头,用于确认数据字符的开始(接收端不断对传输线采样,并把采到的字符和双方约定的接收端不断对传输线采样,并把采到的字符和双方约定的同步字符比较,只有比较成功后才会把后面接收到的字符加同步字符比较,只有比较成功后才会把后面接收到的字符加以存储以存储);数据字符在同步字符之后,个数不受限制,由所;数据字符在同步字符之后,个数不受限
13、制,由所需传输的数据块长度决定;校验字符有需传输的数据块长度决定;校验字符有1 12 2个,位于帧结构个,位于帧结构末尾,用于接收端对接收到的数据字符的正确性的校验。末尾,用于接收端对接收到的数据字符的正确性的校验。d10.833(ms)1200T 2.2.同步通信同步通信(Synchronous Communication)(Synchronous Communication)n在同步通信中,同步字符可以采用统一标准符式,也可由用在同步通信中,同步字符可以采用统一标准符式,也可由用户约定。户约定。l在单同步字符帧结构中,同步字符常采用在单同步字符帧结构中,同步字符常采用ASCIIASCII码
14、中规定的码中规定的SYN(SYN(即即16H)16H)代码;代码;l在双同步字符帧结构中,同步字符一般采用国际通用标准代在双同步字符帧结构中,同步字符一般采用国际通用标准代码码EB90HEB90H。d10.833(ms)1200T 同步 字符 1 同步 字符 2 数据 1 数据 2 校验 字符 2 校验 字符 1 数据 n(b)双同步字符帧结构 同步 字符 数据 1 数据 2 数据 3(a)单同步字符帧结构 数据 n 校验 字符 1 校验 字符 2 同步通信的字符帧格式 2.2.异步通信与同步通信的特点异步通信与同步通信的特点l异步通信的优点是不需要传送同步脉冲,字符帧长度也不异步通信的优点是
15、不需要传送同步脉冲,字符帧长度也不受限制,故所需设备简单。受限制,故所需设备简单。l异步通信的缺点是字符帧中因包含有起始位和停止位而降异步通信的缺点是字符帧中因包含有起始位和停止位而降低了有效数据的传输速率。低了有效数据的传输速率。l同步通信的优点是传输速率较高,通常可达同步通信的优点是传输速率较高,通常可达56000bit/s56000bit/s或或更高。更高。l同步通信的缺点是要求发送时钟和接收时钟保持严格同步,同步通信的缺点是要求发送时钟和接收时钟保持严格同步,故发送时钟除应和发送波特率保持一致外,还要求把它同故发送时钟除应和发送波特率保持一致外,还要求把它同时传送到接收端去。时传送到接
16、收端去。d10.833(ms)1200T 8.1.2 串行通信的数据传送方式 n在串行通信中,数据是在两个站之间传送的。按照数据传在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可分为单工、半双工和全双工三种传送送方向,串行通信可分为单工、半双工和全双工三种传送方式。如下图所示。方式。如下图所示。l单工方式单工方式:通信线的一端接发送器,另一端接接收器,它:通信线的一端接发送器,另一端接接收器,它们形成单向连接,只允许数据按照一个固定的方向传送。们形成单向连接,只允许数据按照一个固定的方向传送。数据只能单方向传送。数据只能单方向传送。l半双工方式半双工方式:系统中的每个通信设
17、备都由一个发送器和一系统中的每个通信设备都由一个发送器和一个接收器组成,通过收发开关接到通信线上。数据能够实个接收器组成,通过收发开关接到通信线上。数据能够实现双方向传送,但任何时刻只能由其中的一方发送数据,现双方向传送,但任何时刻只能由其中的一方发送数据,另一方接收数据。其收发开关并不是实际的物理开关,而另一方接收数据。其收发开关并不是实际的物理开关,而是由软件控制的电子开关,通信线两端通过半双工协议进是由软件控制的电子开关,通信线两端通过半双工协议进行功能切换。行功能切换。l全双工方式全双工方式:系统的每端都含有发送器和接收器,数据可系统的每端都含有发送器和接收器,数据可以同时在两个方向上
18、传送。以同时在两个方向上传送。n尽管许多串行通信接口电路具有全双工功能,但在实际尽管许多串行通信接口电路具有全双工功能,但在实际应用中,大多数情况下只工作于半双工方式,即两个工应用中,大多数情况下只工作于半双工方式,即两个工作站通常并不同时收发。这种用法并无害处,虽然没有作站通常并不同时收发。这种用法并无害处,虽然没有充分发挥效率,但简单、实用。充分发挥效率,但简单、实用。8.1.3 串行通信接口电路 n串行接口电路芯片的种类和型号很多。能够完成异步通信串行接口电路芯片的种类和型号很多。能够完成异步通信的硬件电路称为的硬件电路称为UARTUART,即,即通用异步接收器通用异步接收器/发送器发送
19、器(Universal Asynchronous Receive/Transmitter)(Universal Asynchronous Receive/Transmitter);能够;能够完成同步通信的硬件电路称为完成同步通信的硬件电路称为USRTUSRT(Universal(Universal Synchronous Receive/Transmitter)Synchronous Receive/Transmitter);既能异步又能同步;既能异步又能同步通信的硬件电路称为通信的硬件电路称为USARTUSART(Universal Synchronous (Universal Synchr
20、onous Asynchronous Receive/Transmitter)Asynchronous Receive/Transmitter)。n从本质上说,所有的串行接口电路都是从本质上说,所有的串行接口电路都是以并行数据形式与以并行数据形式与CPUCPU接口接口、而、而以串行数据形式与外部逻辑接口以串行数据形式与外部逻辑接口传送数据。它传送数据。它们的基本功能都是从外部逻辑接收串行数据,转换成并行们的基本功能都是从外部逻辑接收串行数据,转换成并行数据后传送给数据后传送给CPUCPU,或从,或从CPUCPU接收并行数据,转换成串行数接收并行数据,转换成串行数据后输出给外部逻辑。据后输出给外
21、部逻辑。1.1.异步通信硬件电路异步通信硬件电路UARTUART工作原理工作原理n串行发送时,串行发送时,CPUCPU可以通过数据总线把可以通过数据总线把8 8位并行数据送到位并行数据送到“发送数据缓冲器发送数据缓冲器”,然后并行送给,然后并行送给“发送移位寄存器发送移位寄存器”,并在发送时钟和发送控制电路控制下通过并在发送时钟和发送控制电路控制下通过TxDTxD线一位一位地线一位一位地发送出去。起始位和停止位是由发送出去。起始位和停止位是由UARTUART在发送时自动添加上在发送时自动添加上去的。去的。UARTUART发送完一帧后产生中断请求,发送完一帧后产生中断请求,CPUCPU响应后可以
22、把响应后可以把下一个字符送到发送数据缓冲器,然后重复上述过程。下一个字符送到发送数据缓冲器,然后重复上述过程。n串行接收时,串行接收时,UARTUART监视监视RxDRxD线,并在检测到线,并在检测到RxDRxD线上有一个线上有一个低电平低电平(起始位起始位)时就开始一个新的字符接收过程。时就开始一个新的字符接收过程。UARTUART每每接收到一位二进制数据位后就使接收到一位二进制数据位后就使“接收移位寄存器接收移位寄存器”左移左移一次。连续接收到一个字符后并行传送到一次。连续接收到一个字符后并行传送到“接收数据缓冲接收数据缓冲器器”,并通过中断促使,并通过中断促使CPUCPU从中取走所接收的
23、字符。从中取走所接收的字符。UART硬件框图硬件框图2.UART2.UART对对RxDRxD线的采样线的采样nUARTUART对对RxDRxD线的采样是由接收时钟线的采样是由接收时钟RxCRxC完成的。其周期完成的。其周期T TC C和和所传数据位的传输时间所传数据位的传输时间T Td d(位速率的倒数位速率的倒数)必须满足如下关必须满足如下关系:系:式中,式中,K K=16=16或或6464。现以。现以K K=16=16来说明来说明UARTUART对对RxDRxD线上字符帧线上字符帧的接收过程。的接收过程。n平常,平常,UARTUART按按RxCRxC脉冲上升沿采样脉冲上升沿采样RxDRxD
24、线。当连续采到线。当连续采到RxDRxD线线上上8 8个低电平个低电平(起始位二分之一位置起始位二分之一位置)后,后,UARTUART便确认对方在便确认对方在发送数据发送数据(不是干扰信号不是干扰信号)。此后,。此后,UARTUART便每隔便每隔1616个个RxCRxC脉冲脉冲采样采样RxDRxD线一次,并把采到的数据作为输入数据,以移位方线一次,并把采到的数据作为输入数据,以移位方式存入接收移位寄存器。式存入接收移位寄存器。dCTTK DATA 123456789 10 11 12 13 14 15 16 123456789 T 16T 启动位 RxD RxC 启动检测 确认启动位 采样数据
25、 8 个 16 个 UART对数据的采样 3.3.错误校验错误校验n数据在长距离传送过程中必然会发生各种错误,奇偶校验数据在长距离传送过程中必然会发生各种错误,奇偶校验是一种最常用的校验数据传送错误的方法。是一种最常用的校验数据传送错误的方法。n奇偶校验分奇校验和偶校验两种。奇偶校验分奇校验和偶校验两种。UARTUART的奇偶校验是通过的奇偶校验是通过发送端的奇偶校验位添加电路和接收端的奇偶校验检测电发送端的奇偶校验位添加电路和接收端的奇偶校验检测电路实现的。路实现的。8.2 常用的串行通信总线n8.2.1 RS-232C总线 n8.2.2 RS-422A和RS-485总线 n8.2.3 20
26、mA电流环串行接口 8.2.1 RS-232C总线nRS-232C是使用最早、应用最多的一种异步串行通信总线是使用最早、应用最多的一种异步串行通信总线标准,它主要用来定义计算机系统的一些数据终端设备标准,它主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备和数据电路终接设备(DCE)之间的接口的电气特性。之间的接口的电气特性。nCRT、打印机与、打印机与CPU的通信大都采用的通信大都采用RS-232C接口。由于接口。由于MCS-51系列单片机系列单片机本身有一个本身有一个异步串行通信接口异步串行通信接口,因此,因此,该系列单片机用该系列单片机用RS-232C串行接口总线极为方
27、便。串行接口总线极为方便。nRS-232C采用按位串行方式采用按位串行方式。RS-232C传递信息的格式标传递信息的格式标准准对所传递的信息规定如下:信息的开始为起始位,信息对所传递的信息规定如下:信息的开始为起始位,信息的结尾为停止位,它可以是一位、一位半或两位;信息本的结尾为停止位,它可以是一位、一位半或两位;信息本身可以是身可以是5、6、7、8位再加一位奇偶校验位;如果两个信位再加一位奇偶校验位;如果两个信息之间无信息,则应写息之间无信息,则应写“1”,表示空。,表示空。0 0/1 0/1 0/1 0/1 0/1 1 0/1 0 数据位 第 n 个信息 起始位 停止位 奇偶校验位 起始位
28、 RS-232C数据传输格式 nRS-232C传送的传送的比特率比特率(bit/s)规定为规定为19200、9600、4800、2400、600、300、150、110、75、50。nRS-232C接口总线的接口总线的传送距离传送距离一般不超过一般不超过15m。n由于由于RS-232C,它使用,它使用负逻辑负逻辑,其低电平,其低电平“0”在在+5+15V之间,高电平之间,高电平“1”在在-5-15V之间。因此,之间。因此,RS-232C不能和不能和TTL电平直接相连,使用时必须加上适当的接口否电平直接相连,使用时必须加上适当的接口否则将使则将使TTL电路烧毁。电路烧毁。nRS-232C的的25
29、条总线中,条总线中,4条数据线、条数据线、11条控制线、条控制线、3条定条定时线、时线、7条备用和未定义线,条备用和未定义线,常用的只有常用的只有9根根。8.2.2 RS-422A和RS-485总线 n1.RS-422A1.RS-422AnRS-422ARS-422A接口是双端线传送信号。它通过传输线驱动器,把接口是双端线传送信号。它通过传输线驱动器,把逻辑电平变换成电位差,完成发送端的信息传递;通过传逻辑电平变换成电位差,完成发送端的信息传递;通过传输线接收器,把电位差变换成逻辑电平,实现接收端的信输线接收器,把电位差变换成逻辑电平,实现接收端的信息接收。息接收。RS-422ARS-422A
30、比比RS-232CRS-232C传输距离长、速度快,传输速传输距离长、速度快,传输速率最大可达率最大可达10Mbit/s10Mbit/s,在此速率下电缆允许长度为,在此速率下电缆允许长度为12m12m。如。如果采用低速率传输,如果采用低速率传输,如90000bit/s90000bit/s,最大传输距离可达,最大传输距离可达1200m1200m。nRS-422ARS-422A每个通道要用两条信号线,如果其中一条每个通道要用两条信号线,如果其中一条是逻辑是逻辑“1 1”状态,另一条就是逻辑状态,另一条就是逻辑“0 0”状态。状态。RS-RS-422A422A电路由发送器、平衡连接电缆、电缆终端负载
31、、电路由发送器、平衡连接电缆、电缆终端负载、接收器等部分组成。在电路中规定只许有一个发送接收器等部分组成。在电路中规定只许有一个发送器,可有多个接收器,因此通常采用点对点的通信器,可有多个接收器,因此通常采用点对点的通信方式。该标准允许驱动器输出电压为方式。该标准允许驱动器输出电压为2V2V6V6V,接收器可以检测到的输入信号电压可低到接收器可以检测到的输入信号电压可低到200mV 200mV。2.RS-4852.RS-485nRS-485RS-485是是RS-422ARS-422A的变型:的变型:RS-422ARS-422A用于全双工,而用于全双工,而RS-485RS-485则用于半双工。则
32、用于半双工。RS-485RS-485是一种多发送器标准,在通信线路是一种多发送器标准,在通信线路上最多可以使用上最多可以使用32 32 对差分驱动器对差分驱动器/接收器。如果在一个网接收器。如果在一个网络中连接的设备超过络中连接的设备超过3232个,还可以使用中继器。个,还可以使用中继器。RS-485RS-485电电路允许共用电话线通信。电路结构是在平衡连接电缆两端路允许共用电话线通信。电路结构是在平衡连接电缆两端有终端电阻,在平衡电缆上挂发送器、接收器和组合发收有终端电阻,在平衡电缆上挂发送器、接收器和组合发收器。器。nRS-485RS-485的信号传输采用两线间的电压来表示逻辑的信号传输采
33、用两线间的电压来表示逻辑1 1和逻辑和逻辑0 0。由于发送方需要两根传输线,接收方也需要两根传输线。由于发送方需要两根传输线,接收方也需要两根传输线。传输线采用差动信道,所以它的干扰抑制性极好,又因为传输线采用差动信道,所以它的干扰抑制性极好,又因为它的阻抗低,无接地问题,所以传输距离可达它的阻抗低,无接地问题,所以传输距离可达12001200米,传米,传输速率可达输速率可达1Mbps1Mbps。nRS-485RS-485最小型由两条信号电路线组成。每条连接最小型由两条信号电路线组成。每条连接电路必须有接地参考点,这电缆能支持电路必须有接地参考点,这电缆能支持3232个发送个发送接收器对。为了
34、避免地面漏电流的影响,每个设接收器对。为了避免地面漏电流的影响,每个设备一定要接地。电缆应包括连至每个设备地的第备一定要接地。电缆应包括连至每个设备地的第三信号参考线。若用屏蔽电缆,屏蔽应接到设备三信号参考线。若用屏蔽电缆,屏蔽应接到设备的机壳。的机壳。RS-485RS-485主从多机通信主从多机通信8.2.3 20mA电流环串行接口 n20mA20mA电流环是目前串行通信中广泛使用的一种接口电路,电流环是目前串行通信中广泛使用的一种接口电路,其原理如下图所示。其原理如下图所示。n由可图知,发送正、发送负、接收正、接收负四根线组成由可图知,发送正、发送负、接收正、接收负四根线组成一个输入电流回
35、路,一个输出电流回路。当发送数据时,一个输入电流回路,一个输出电流回路。当发送数据时,根据数据的逻辑根据数据的逻辑0 0、1 1使回路有规律地形成通、断状态使回路有规律地形成通、断状态(图中图中用开关示意用开关示意)。n由于由于20mA20mA电流环是一种异步串行接口标准,所以在每次发电流环是一种异步串行接口标准,所以在每次发送数据时必须以无电流的起始状态作为每一个字符的起始送数据时必须以无电流的起始状态作为每一个字符的起始位,接收端检测到起始位时便开始接收字符数据。位,接收端检测到起始位时便开始接收字符数据。n电流环串行通信接口的最大优点是低阻传输线对电气噪声电流环串行通信接口的最大优点是低
36、阻传输线对电气噪声不敏感,而且易实现光电隔离,因此不敏感,而且易实现光电隔离,因此在长距离通信时要比在长距离通信时要比RS-232CRS-232C优越得多优越得多。计算机+RT 发送+数据 20mA 发送-20mA 20mA 20mA 数据 接收+接收-RT+RL RL 接收 放大器 接收 放大器 终端 20mA电流环原理图 8.3 MCS-51的串行接口 n8.3.1 MCS-51串行接口结构 n8.3.2 MCS-51串行口的工作方式 n8.3.3 MCS-51串行通信的波特率 8.3.1 MCS-51串行接口结构nMCS-51MCS-51有两个独立的有两个独立的接收、发送缓冲器接收、发送
37、缓冲器SBUF(SBUF(属于特殊功能属于特殊功能寄存器寄存器),一个用作发送,一个用作接收。发送缓冲器只能,一个用作发送,一个用作接收。发送缓冲器只能写入不能读出;接收缓冲器只能读出不能写入,两者共用写入不能读出;接收缓冲器只能读出不能写入,两者共用一个字节地址一个字节地址(99H)(99H)。串行接口结构如下图所示。串行接口结构如下图所示。n在发送时,在发送时,CPUCPU由一条写发送缓冲器的指令把数据由一条写发送缓冲器的指令把数据(字符字符)写写入串行口的发送缓冲器入串行口的发送缓冲器SBUF(SBUF(发发)中,然后从中,然后从TXDTXD端一位位地端一位位地向外发送。与此同时,接收端
38、向外发送。与此同时,接收端RXDRXD也可一位位地接收数据,也可一位位地接收数据,直到收到一个完整的字符数据后通知直到收到一个完整的字符数据后通知CPUCPU,再用一条指令把,再用一条指令把接收缓冲器接收缓冲器SBUF(SBUF(收收)的内容读入累加器。可见,在整个串的内容读入累加器。可见,在整个串行收发过程中,行收发过程中,CPUCPU的操作时间很短,使得的操作时间很短,使得CPUCPU还可以从事还可以从事其他的各种操作其他的各种操作(指工作在中断方式下指工作在中断方式下),从而大大提高了,从而大大提高了CPUCPU的效率。的效率。发送 SBUF(99H)接收 SBUF(99H)输入移位寄存
39、器 RI(接收中断)RxD 串行输入 8051 内部总线 TxD 串行输出 移位 时钟 TI(发送中断)串行接口结构示意图 发送SBUF(99H)门发送控制器接收控制器1输入移位寄存器串行控制寄存器(98H)定时器1接收SBUF(99H)888TIRI内部总线TXD(P3.1)RXD(P3.0)串行口中断1.1.串行接口数据缓冲器串行接口数据缓冲器SBUFSBUFlSBUFSBUF是两个在物理上独立的接收、发送缓冲器,是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。可同时发送、接收数据。l两个缓冲器只用一个字节地址两个缓冲器只用一个字节地址99H99H,可通过指令对,可通过指令对S
40、BUFSBUF的读写来区别是对接收缓冲器的操作还是对的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。发送缓冲器的操作。lCPUCPU写写SBUFSBUF,就是修改发送缓冲器;读,就是修改发送缓冲器;读SBUFSBUF,就是,就是读接收缓冲器。读接收缓冲器。l串行口对外也有两条独立的收发信号线串行口对外也有两条独立的收发信号线RxD(P3.0)RxD(P3.0)、TxD(P3.1)TxD(P3.1),因此可以同时发送、接收数据,实现,因此可以同时发送、接收数据,实现全双工。全双工。n2.串行口控制寄存器SCONnSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址
41、。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)位76543210功能SM0 SM1 SM2 RENTB8RB8TIRISM0SM0、SMlSMl:串行口工作方式选择位:串行口工作方式选择位SM0SM1工作方式工作方式功能说明功能说明001101010123同步移位寄存器输入同步移位寄存器输入/输出,波特率为输出,波特率为fOSC/128位位UART,波特率可变(,波特率可变(TI溢出率溢出率/n,n=16或或32)9位位UART,波特率为,波特率为fosc/n,n=32或或64)9位位UART,波特率可变(,波特率可变(TI溢出率溢出率/n,n=16或或32)n2.串行口控
42、制寄存器SCONnSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)位76543210功能SM0 SM1 SM2 RENTB8RB8TIRISM2:多机通信控制位,用于方式:多机通信控制位,用于方式2和方式和方式3中。中。在方式在方式2和方式和方式3处于接收方式时处于接收方式时 若若SM2=1,表示置多机通信功能。,表示置多机通信功能。若若SM2=0,不论接收到的第,不论接收到的第9位位RB8是是0还是还是l,TI、RI都以正常方式被激活,接收都以正常方式被激活,接收到的数据装入到的数据装入SBUF。在
43、方式在方式1,若,若SM2=1,则只有收到有效的停止位后,则只有收到有效的停止位后,RI=1。在方式。在方式0中,中,SM2=0。n2.串行口控制寄存器SCONnSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)位76543210功能SM0 SM1 SM2 RENTB8RB8TIRIRENREN:允许串行接收控制位。:允许串行接收控制位。REN=lREN=l时,允许接收;时,允许接收;REN=0REN=0时,禁止接收。时,禁止接收。n2.串行口控制寄存器SCONnSCON寄存器用来控制串行口的工作方式和
44、状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)位76543210功能SM0 SM1 SM2 RENTB8RB8TIRITB8:发送数据的第:发送数据的第9位。位。在在方式方式2和方式和方式3中,中,TB8是第是第9位发送数据,可做奇偶校验位。位发送数据,可做奇偶校验位。在在多机通信多机通信中,可作为区别地址帧或数据帧的标识位,一般约定发送地中,可作为区别地址帧或数据帧的标识位,一般约定发送地址帧时,址帧时,TB8为为1,发送数据帧时,发送数据帧时,TB8为为0。TB8由软件置位或复位;由软件置位或复位;n2.串行口控制寄存器SCONnSC
45、ON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)位76543210功能SM0 SM1 SM2 RENTB8RB8TIRIRB8:接收数据的第:接收数据的第9位。位。在在方式方式2和方式和方式3中,接收第中,接收第9位数据。位数据。在在方式方式1下,若下,若SM2=0,则,则RB8用于存放接收到的停止位;用于存放接收到的停止位;方式方式0下,不使用下,不使用RB8;n2.串行口控制寄存器SCONnSCON寄存器用来控制串行口的工作方式和状态,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格
46、式如下所示:SCON(98H)位76543210功能SM0 SM1 SM2 RENTB8RB8TIRITI:发送中断标志位,用于指示一帧数据发送完否。:发送中断标志位,用于指示一帧数据发送完否。当当TI=l时,向时,向CPU申请串行中断,响应中断后,必须由软件清除申请串行中断,响应中断后,必须由软件清除TI。就是说:就是说:TI在发送前必须由软件复位,发送完一帧后由硬件置位。在发送前必须由软件复位,发送完一帧后由硬件置位。因此,因此,CPU查询查询TI状态便可知一帧信息是否已发送完毕。状态便可知一帧信息是否已发送完毕。n2.串行口控制寄存器SCONnSCON寄存器用来控制串行口的工作方式和状态
47、,字节地址为98H。它可以位寻址。在复位时所有位被清零。SCON的格式如下所示:SCON(98H)位76543210功能SM0 SM1 SM2 RENTB8RB8TIRIRI:接收中断标志位。用于指示一帧信息是否接收完。:接收中断标志位。用于指示一帧信息是否接收完。在在方式方式1中,接收到第中,接收到第8位数据时由硬件置位;位数据时由硬件置位;在在其它方式其它方式中在接收停止位的中间点由硬件置位。中在接收停止位的中间点由硬件置位。接收完一帧数据接收完一帧数据RI=l,向,向CPU申请中断,供申请中断,供CPU查询。查询。RI由软件复位由软件复位。n 在进行串行通信时,当一帧发送完时,必须用软件
48、来设置SCON的内容。当由指令改变SCON的内容时,改变的内容是在下一条指令的第一个周期的S1P1状态期间才锁存到SCON寄存器中,并开始有效。n 在进行串行通信时,当一帧发送完毕时,发送中断标志置位,向CPU请求中断;当一帧接收完毕时,接收中断标志置位,也向CPU请求中断。若CPU响应中断,则要进入中断服务程序。CPU事先并不能区分是RI请求中断还是TI请求中断,只有在进入中断服务程序后,通过查询来区分,然后进入相应的中断处理。nSCON的所有位复位时被清零。n3电源及波特率选择寄存器PCONnPCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,没有位寻址功能。字节地址为87H。
49、在HMOS的8051单片机中,PCON只有最高位被定义,其它位都是虚设的。位位76543210功能功能SMODxxxxxxGF1GF0PDIDLPCONPCON的最高位的最高位SMODSMOD为串行口波特率的倍增位。为串行口波特率的倍增位。在方式在方式1 1、2 2和和3 3时,串行通信的波特率与时,串行通信的波特率与SMODSMOD有关。有关。当当SMOD=lSMOD=l时,通信波特率加倍,时,通信波特率加倍,当当SMOD=0SMOD=0时,波特率不变。其它各位为掉电方式控制位时,波特率不变。其它各位为掉电方式控制位。8.3.2 MCS-51串行口的工作方式 1.1.方式方式0 0 串行接口
50、工作方式串行接口工作方式0 0为同步移位寄存器方式,其波特率是固定的,为为同步移位寄存器方式,其波特率是固定的,为f foscosc(振荡频率振荡频率)的的1/121/12。(1)(1)方式方式0 0发送发送 数据从数据从RxDRxD引脚串行输出,引脚串行输出,TxDTxD引脚输出同步脉冲。当一个数据写引脚输出同步脉冲。当一个数据写入串行口发送缓冲器时,串行口将入串行口发送缓冲器时,串行口将8 8位数据以位数据以f fosc/12osc/12的固定波特率的固定波特率从从RxDRxD引脚输出,从低位到高位。发送后置中断标志引脚输出,从低位到高位。发送后置中断标志TITI为为1 1,请求中,请求中