首页 理论教育 串行通信的工作方式及应用领域

串行通信的工作方式及应用领域

时间:2023-06-22 理论教育 版权反馈
【摘要】:数据位紧跟起始位后,低位在前,高位在后,根据串行通信工作方式的不同,数据位可为8位或9位。串行通信的速率用波特率来表示,所谓波特率就是指每秒钟传送数据位的个数。在串行通信中,数据位的发送和接收分别由发送时钟脉冲与接收时钟脉冲进行控制。2)同步通信同步通信是一种连续串行传送数据的通信方式。这两位用于选择串行口的四种工作方式,其状态组合和对应工作方式见表8.3。

串行通信的工作方式及应用领域

1.串行通信简介

在计算机系统中,CPU和外部通信有两种方式:并行通信和串行通信。并行通信如图8.1所示,数据的各位同时传送,传送速度快,但传送距离短。

串行通信如图8.2所示,数据和控制信息一位一位按顺序串行传送。特点是传送速度较慢,传送距离比并口通信远。按照串行数据的时钟控制方式可分为异步通信和同步通信两类。

图8.1 并行通信

图8.2 串行通信

1)异步通信

异步通信通常以字符(或者字节)为单位组成字符帧传送。字符帧由发送端一帧一帧地传送,接收端通过传输线一帧一帧地接收。

字符帧由三个部分组成,分别是起始位、数据位和停止位,如图8.3所示。

图8.3 字符帧格式

起始位位于字符帧的开头,占一位,为0(低电平),表示发送端开始发送一帧数据。

数据位紧跟起始位后,低位在前,高位在后,根据串行通信工作方式的不同,数据位可为8位或9位。

停止位位于字符帧的末尾,占一位,为1(高电平),表示一帧数据发送完毕。

(1)串行接收。在串行接收数据时,当CPU允许接收(串行口控制寄存器SCON中的REN位为1)时,外部数据通过引脚RXD(P3.0)串行输入,数据低位在前,高位在后,一帧数据接收完毕,再并行送入接收缓冲器SBUF中,同时由硬件将接收中断标志位RI置“1”。

(2)串行发送。在串行发送数据时,将发送数据并行写入发送缓冲器SBUF中,同时启动数据由TXD(P3.1)引脚串行发送,当一帧数据发送完毕(发送缓冲器空),由硬件自动将发送中断请求标志位TI置“1”。

(3)数据传送速率。串行通信的速率用波特率来表示,所谓波特率就是指每秒钟传送数据位的个数。每秒钟传送一个数据位就是1波特,即1波特=1 b/s(位/秒)。在串行通信中,数据位的发送和接收分别由发送时钟脉冲与接收时钟脉冲进行控制。时钟频率高,则波特率高,通信速度就快;反之,时钟频率低,波特率就低,通信速度就慢。

2)同步通信

同步通信是一种连续串行传送数据的通信方式。在数据开始传送前,用同步字符(通常为1或2个)来指示数据的开始,并由时钟来实现发送端和接收端同步,即检测到规定的同步字符后,就连续按顺序传送数据,直到数据传送结束。同步传送时,字符与字符之间没有间隙,也不用起始位和停止位,同步传送的数据格式如图8.4所示。

图8.4 同步传送的数据格式

同步通信的数据传输速率较高,通常可达56 000 b/s或更高,其缺点是要求发送时钟和接收时钟必须保持严格同步。

3)串行通信的制式

在串行通信中,数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工、半双工全双工三种制式。

在单工制式下,通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送。

在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,数据能从A传送到B,也可以从B传送到A,但是不能同时在两个方向上传送,只能一端发送,一端接收。

在全双工制式下,通信系统的每端都有发送器和接收器,并可以同时发送和接收,即数据可以在两个方向上同时传送。

一般情况下常用半双工制式,简单、实用。

2.MCS-51的串行接口的结构

51系列单片机串行接口主要由两个数据缓冲器SBUF、一个输入移位寄存器、一个串行控制寄存器SCON及一个波特率发生器组成,其结构框图如图8.5所示。发送和接收缓冲寄存器采用同一个地址99H,其寄存器名也同样为SBUF。CPU通过不同的操作指令来区别这两个寄存器,所以不会因地址和名称相同而产生错误

图8.5 串行口结构框图

在发送和接收数据前,先设置波特率(设置PCON中的SMOD位,T1方式2的初值,注意发送和接收端的波特率要相同),并设置好SCON中的相应控制位;发送时向SBUF中写入要发送的数据,串行口自动启动数据发送,串行数据从TXD(P3.1)引脚输出,当一帧数据发送完毕时,将TI位置“1”,供CPU采用中断或查询方式进行串行发送处理;接收时串行数据从RXD(P3.0)引脚输入,当一帧数据接收完毕,将RI位置“1”,通知CPU将接收到的数据取走,并进行相应的接收处理;无论采用中断方式还是查询方式,在相应的处理程序中都要用指令将TI位和RI位清“0”。

串行通信主要是由串行口控制寄存器SCON控制的,其主要用于串行通信的工作方式(串行移位工作方式、双机通信工作方式和多机通信工作方式)控制,多机通信时传送数据或地址的控制,是否允许接收数据控制、串行数据接收或发送完毕控制等。

1)串行口控制寄存器SCON

SCON是51系列单片机的一个可位寻址的专用寄存器,用于串行通信方式选择、接收和发送控制、串行口状态指示等。单元地址为98H,位地址为98H~9FH。寄存器的内容及位符号见表8.2。

表8.2 SCON寄存器的内容及位符号

(1)SM0、SM1——串行口工作方式选择位。这两位用于选择串行口的四种工作方式,其状态组合和对应工作方式见表8.3。

(2)SM2、TB8、RB8——多机通信控制位。在方式2和方式3时,TB8是发送数据的第9位,RB8是接收数据的第9位,由用户用指令进行置“1”或清“0”,TB8和RB8是对应的,在发送端发的TB8位就是接收端接收的RB8位。

方式2和方式3用于多机通信时,在发送端若TB8=1,则表示发送的为地址帧;若TB8=0,则表示发送的为数据帧。

表8.3 SM0、SM1的状态组合和对应工作方式

接收端若SM2=1,表示地址接收状态,若接收到RB8=1,即接收的为地址帧时,将接收到的地址送入接收SBUF中,并置位RI产生中断请求;若RB8=0,即接收到的为数据帧,RI不置“1”,同时将接收到的数据帧丢弃。若SM2=0,表示数据接收状态,则不论RB8=1或RB8=0,都将接收到的数据送入接收SBUF中,并产生中断请求。

在方式2和方式3用于双机通信时,TB8、RB8可作奇偶校验位用。

在方式1中,当SM2=0时,RB8为接收到的停止位;当SM2=1,则只有接收到有效停止位时,RI才置“1”。而串行口工作在方式0中,SM2必须置“0”,不用TB8和RB8位。

(3)REN——允许接收位。由指令置“1”或清“0”,REN=1时,允许接收数据;REN=0时,禁止接收数据。

(4)TI——发送中断标志位。在方式0时,发送完第8位数据后,该位由硬件置“1”。在其他方式下,在发送停止位之初,由硬件置“1”。

因此,TI=1表示帧发送结束,其状态既可供软件查询使用,也可用于请求中断。TI在查询方式或中断方式下都必须由指令清“0”。

(5)RI——接收中断标志位。在方式0时,接收完第8位数据后,该位由硬件置“1”。在其他方式下,在接收停止位的中间,该位由硬件置“1”。因此,RI=1表示帧接收结束,其状态既可供软件查询使用,也可用于请求中断。同样,RI在查询方式或中断方式下都必须由指令清“0”。

2)电源控制寄存器PCON(www.xing528.com)

PCON不可位寻址,字节地址为87H。PCON主要是为CHMOS型51系列单片机的电源控制而设置的专用寄存器,其各控制位的符号见表8.4。

表8.4 PCON寄存器各控制位的符号

与串行通信有关的只有D7位(SMOD),该位为波特率倍增位。当SMOD=1时,串行口波特率增加1倍;当SMOD=0时,串行口波特率为设定值。当系统复位时,SMOD=0。

GF1、GF0、PD和IDL位为电源控制位,其中GF1和GF0为通用标志位,由指令置“1”或清“0”。PD和IDL位为低功耗方式控制位,其中PD位为掉电方式控制位,PD=1时,进入掉电工作方式;IDL位为待机方式控制位,IDL=1时,进入待机工作方式。

3.串行口的四种工作方式

51系列单片机串行通信有四种工作方式,由SCON中的SM0和SM1位确定。

1)方式0

串行口工作在方式0时,作同步移位寄存器使用,以8位数据为一帧,无起始位和停止位。串行数据由RXD(P3.0)端输入或输出端,同步移位脉冲由TXD(P3.1)端输出。这种工作方式常用于扩展I/O口中,外接移位寄存器(并入串出移位寄存器74LS165或串入并出移位寄存器74LS164),实现数据并行输入或输出。工作在方式0时,波特率固定为fosc/12,即每个机器周期输入或输出一位数据。

(1)数据发送。当数据写入SBUF后,从RXD端输出,在移位脉冲的控制下,逐位移入74LS164,并完成数据的串并转换。当8位数据全部输出后,由硬件将TI置“1”,发出中断请求。数据由74LS164并行输出,其接口电路如图8.6所示,RXD端接74LS164的串行输入端A、B,TXD接74LS164的时钟脉冲输入端CLK,P1.0接74LS164的清零端。由图8.6可知通过外接74LS164,串行口能够实现数据的并行输出。

图8.6 方式0 外接移位寄存器输出

(2)数据接收。要实现接收数据,必须首先把SCON中的允许接收位REN置“1”。当REN为1时,数据在移位脉冲的控制下,从RXD端输入。当接收完8位数据时,将接收中断标志位RI置“1”,发出中断请求。数据由74LS165并行输入,其接口电路如图8.7所示。RXD接74LS165的数据输出端Q,TXD接74LS165的时钟脉冲输入端CLK,P1.0接移位/置数端。由该电路可知,通过外接74LS165,串行口能够实现数据的并行输入。

图8.7 方式0外接移位寄存器输入

2)方式1

方式1为10位异步串行通信方式,其帧格式为1个起始位、8个数据位和1个停止位,其波特率可调。

(1)数据发送。数据写入SBUF后,就启动发送器开始发送,此时由硬件加入起始位和停止位,构成一帧数据,由TXD串行输出。发送完一帧数据后,将TI置“1”,通知CPU可以进行下一个数据的发送。

(2)数据接收。REN=1且接收到起始位后,就开始接收一帧数据。当停止位到来后,把停止位送入RB8中,并置位RI,通知CPU接收到一个数据,将其从SBUF中取走。

(3)波特率确定。工作在方式1时,其波特率是可变的,波特率的计算公式为

其中,SMOD为PCON寄存器的最高位,其值为1或0。

定时器1作波特率发生器使用时,选用工作方式2(自动重装初值方式),可以避免因程序反复装入定时初值所引起的定时误差,使波特率更加稳定。设T1初值为X,则溢出周期为

溢出率为溢出周期的倒数,则波特率的计算公式为

T1的初值为

3)方式2

方式2为11位异步串行通信方式。其帧格式为1个起始位、9个数据位和1个停止位。与方式1相比,增加了一个第9位数据位(D8),其功能由用户确定,是一个可编程位。

(1)数据发送。发送前先根据通信协议用指令设置SCON中的TB8(发送端发送的第9位数据,双机通信时作奇偶校验位;多机通信时作地址/数据标识位,TB8为1时发送的为地址,TB8为0时发送的为数据)。然后将要发送的数据(D0~D7)写入SBUF中,而D8位的内容则由硬件电路从TB8中直接送到发送移位寄存器的第9位,并以此来启动串行发送。一帧发送完毕,将TI位置“1”,其他过程与方式1相同。

(2)数据接收。方式2的接收过程也与方式1基本类似,所不同的只在第9位数据上,串行口把接收到的前8位数据送入SBUF,而把第9位数据送入RB8。在接收前先将REN位置“1”,将RI位清“0”。然后根据SM2的状态和接收到的RB8的状态决定串行口在数据到来后是否使RI置“1”,如RI置“1”则接收数据,否则不接收数据。

当SM2=0时,单片机处于数据接收状态,不管RB8为0还是为1,RI均置“1”,此时串行口将接收发送来的数据。

当SM2=1时,单片机处于地址接收状态。如接收到的RB8为1时,表示接收到的为地址,此时RI置“1”,串行口接收发来的地址;如接收到的RB8为0时,表示接收到的为数据,因本机当前处于地址接收状态,所以该数据不能被接收,RI不置“1”,此数据为发送给其他单片机的数据。

(3)波特率确定。方式2的波特率是固定的,由晶振频率及SMOD的值确定。当SMOD为0时,波特率为晶振频率1/32,即fosc/32;当SMOD为1时,波特率为晶振频率的1/64,即fosc/64。用公式表示为

4)方式3

方式3同方式2相似,只不过方式3的波特率是可变的,由用户来确定。其波特率的确定同方式1。

4.串行口初始化编程

串行口初始化时,主要对波特率发生器T1、串行口控制寄存器SCON及电源控制寄存器PCON中的波特率倍增位SMOD进行设置,串行口初始化编程格式如下:

5.RS-232C接口

RS-232C是EIA(美国电子工业协会)1969年修订的RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。

RS-232C(阳头)接口规定使用9针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。RS-232C外形及指针排布如图8.8和图8.9所示。

图8.8 RS-232C外形

图8.9 RS-232C指针排布

6.串行通信应用举例

【例8.1】使用74LS164的并行输出端接8支发光二极管,利用它的串入并出功能,把发光二极管从左到右依次点亮并反复循环。假定发光二极管为共阴极接法。

解:使用74LS164的并行输出端电路原理图如图8.10所示。软件部分程序如下:

图8.10 使用74LS164的并行输出端电路原理图

【例8.2】单片机可接收PC发送的数字字符,按下单片机的K1键后,单片机可向PC发送字符串,其电路如图8.11所示。在Proteus环境下完成本实验时,需要安装Virtual Serial Port Driver和串口调试助手。本例缓冲100个数字字符,缓冲满后新数字从前面开始存放(环形缓冲)。

图8.11 单片机与PC接收和发送字符的电路

程序如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈