单片机中级教程 第6章串行接口文档格式.docx

上传人:b****1 文档编号:3068453 上传时间:2023-05-01 格式:DOCX 页数:28 大小:58.68KB
下载 相关 举报
单片机中级教程 第6章串行接口文档格式.docx_第1页
第1页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第2页
第2页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第3页
第3页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第4页
第4页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第5页
第5页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第6页
第6页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第7页
第7页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第8页
第8页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第9页
第9页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第10页
第10页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第11页
第11页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第12页
第12页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第13页
第13页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第14页
第14页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第15页
第15页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第16页
第16页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第17页
第17页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第18页
第18页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第19页
第19页 / 共28页
单片机中级教程 第6章串行接口文档格式.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机中级教程 第6章串行接口文档格式.docx

《单片机中级教程 第6章串行接口文档格式.docx》由会员分享,可在线阅读,更多相关《单片机中级教程 第6章串行接口文档格式.docx(28页珍藏版)》请在冰点文库上搜索。

单片机中级教程 第6章串行接口文档格式.docx

波特率等于一个字符的二进制编码位数乘字符/秒,要求发送端与接收端的波特率必须一致。

异步串行通信的波特率一般为50~9600波特,高低不等。

常用于计算机到CRT终端和字符打印机之间的通信、直通电报、无线电通信的数据发送及工业现场的数据远传等。

2.同步通信方式

异步通信由于要在每个数据前后附加起始位、停止位,每发送一个字符约有20%的附加数据,占用了传输时间,降低了传送效率。

同步通信则去掉每个数据的起始位和停止位,把要发送的数据按顺序连接成一个数据块,其中每个数据也由5~8位组成。

在数据块的开头附加1~2个同步字符,在数据块的末尾加差错校验字符。

同步通信的数据格式如图6-2所示。

在数据块内部,数据与数据之间没有间隙。

图6-2同步通信的格式

同步通信时,先发送同步字符,数据发送紧随其后。

接收方检测到同步字符后,即开始接收数据,按约定的长度拼成一个个数据字节,直到整个数据接收完毕,经校验无传送错误则结束一帧信息的传送。

若发送的数据块之间有间隔,则发送同步字符填充。

同步通信进行数据传输时,发送和接收双方要保持完全的同步,因此要求发送和接收设备必须使用同一时钟。

在近距离通信时可以采用在传输线中增加一根时钟信号线来解决;

远距离通信时,可以通过解调器从数据流中提取同步信号,用锁相技术使收方得到和发送方时钟频率完全相同的时钟信号。

如上所述,异步通信技术较为简单,应用范围广;

同步通信传输速率高,适用于高速率、大容量的数据通信,但硬件复杂。

6.1.2串行通信的数据传送方式

串行通信的数据传送方式有以下3种:

(1)单工方式。

如图6-3(a)所示,单工方式的数据传送是单向的,一方(A端)固定为发送端,另一方(B端)固定为接收端。

单工方式只需要一条数据线。

(2)半双工方式。

如图6-3(b)所示,半双工方式的数据传送是双向的,数据既可以从A端发送到B端,又可以由B端发送到A端。

不过在同一时间只能做一个方向的传送。

半双工方式需要一条数据线。

(3)全双工方式。

如图6-3(c)所示,全双工方式的数据传送是双向的,A、B两端既可同时发送,又可同时接收。

全双工方式需要两条数据线。

(a)单工方式(b)半双工方式(c)全双工方式

图6-3串行通信数据传送的3种方式

6.1.3串并转换和串行接口

CPU通常是并行的输入/输出数据,但和某些外部设备或其他计算机交换信息时可采用串行通信方式。

这就要求把从CPU来的并行数据转换为串行数据送给I/O设备,或者把I/O设备送来的串行数据转换为并行数据送给CPU。

为了实现这样的串并转换,应使用专门的串行接口电路再加以适当的软件配合来完成。

现在市场上有各种多样的串行接口芯片,并且大多是可编程的多功能芯片,统称为通用异步接收/发送器——UART,或者是通用同步接收/发送器——USART。

UART的基本组成是接收器、发送器和控制器。

它的主要功能是以下几点。

(1)把并行数据转换为串行数据或者把串行数据转换为并行数据。

这主要由发送器或接收器来完成。

(2)完成格式信息的插入和滤除及错误检验。

格式信息是指异步通信中的起始位、奇偶位和停止位等。

这部分工作由控制器完成。

6.2MCS-51系列单片机的串行接口

对于单片机来说,为了进行串行通信,同样也需要有相应的串行接口电路。

只不过这个接口电路不是单独的芯片,而是集成在单片机芯片的内部,成为单片机芯片的一个组成部分。

MCS-51系列单片机有一个全双工的串行口,这个口即可以用于网络通信,也可以实现串行异步通信,还可以作为同步移位寄存器使用。

6.2.1MCS-51系列单片机串行口的结构

MCS-51系列单片机串行口主要由发送数据缓冲器、发送控制器、输出控制门、接收控制器、输入移位寄存器、接收数据缓冲器等组成,如图6-4所示。

发送缓冲器只能写入,不能读出,接收缓冲器只能读出,不能写入,故两者使用同一个符号(SBUF),占用同一个地址(99H)。

通过使用不同的读、写缓冲器的指令来决定是对哪一个缓冲器进行操作。

例:

执行MOVSBUF,A指令,是将数据写入发送缓冲器,执行MOVA,SBUF指令,是从接收缓冲器中读取数据。

串行口还有两个专用寄存器SCON、PCON,SCON用来存放串行口的控制和状态信息,PCON用于改变串行通信的波特率,波特率发生器可由定时器T1或T2构成。

MCS-51系列单片机串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信。

图6-4串行口结构框图

使用串行接口以后,串行收、发的工作主要由串行接口来完成。

在发送时,由CPU执行一条写指令把数据写入发送缓冲器,则启动串行口一位一位地向外发送。

与此同时接收端也可以一位一位地接收数据,直到把一组数据接收完,送入接收缓冲器,然后通知CPU,CPU执行一条读指令把接收缓冲器的内容读入。

可见,在整个串行收、发过程中,CPU操作的时间很少,使得CPU还可以从事其他各种操作,从而大大提高了CPU的效率。

6.2.2MCS-51单片机串行口的控制

串行口的工作主要受串行口控制寄存器SCON的控制,另外也和电源控制寄存器PCON有关。

1.串行口控制寄存器SCON

串行控制寄存器SCON用以设定串行口的工作模式、接收/发送控制及设置状态标志。

字节地址98H,可位寻址,其格式为:

D7D6D5D4D3D2D1D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0、SM1:

串行口工作模式选择位,可选择4种工作模式,见表6-1所示。

表6-1串行口的工作模式

SM0SM1

工作模式

功能说明

波特率

00

模式0

同步移位寄存器方式

/12

01

模式1

10位异步接收发送

可变(由定时器控制)

10

模式2

11位异步接收发送

/32或

/64

11

模式3

SM2:

多机通信控制位。

主要用于模式2和模式3。

若SM2=1,则允许多机通信。

在主-从式多机通信中,SM2用于从机的接收控制,当SM2=1时,从机可接收地址帧,若接收到的第9位数据(RB8)为0时(数据帧),不启动接收中断标志RI(即RI=0),并且将接收到的前8位数据丢弃;

只有当RB8为1时(地址帧),才将接收到的前8位数据送入SBUF中,并置位RI,以产生中断申请。

当SM2=0时,从机可接收所有信息,即接收到一帧数据后,不论第9位数据是0还是1,都置RI=1,接收到的数据装入SBUF中。

在模式1时,若SM2=1,则只有接收到有效停止位时,RI才置1,以便接收下一帧数据。

在模式0时,SM2必须是0。

REN:

允许接收控制位。

只有当RI=1时才允许接收数据;

若REN=0,则禁止接收;

该位相当于串行接收的开关,由软件置1或清0。

TB8:

在模式2和模式3中,TB8是发送数据的第9位,根据发送数据的需要由软件置位或复位。

它可作为奇偶校验位(单机通信),也可在多机通信中作为发送地址帧或数据帧的标志位。

多机通信时,一般约定:

发送地址帧时,设置TB8=1;

发送数据帧时,设置TB8=0。

在模式0或模式1中,该位未用。

RB8:

在模式2或模式3中,RB8为接收数据的第9位,它即可以是约定的奇偶校验位,也可以是约定的地址/数据标志位。

可根据RB8被置位的情况对接收数据进行某种判断,例如多机通信时,若RB8=1,说明收到的数据为地址帧;

RB8=0,收到的数据为数据帧。

在模式1时,若SM2=0(即不是多机通信情况),则RB8是已接收到的停止位。

模式0中该位未用。

TI:

发送中断标志,在一帧数据发送结束时由硬件置位。

在模式0中,串行发送完8位数据时,或其他模式串行发送到停止位的开始时由硬件置位,TI=1表示“发送缓冲器已空”,通知CPU可以发送下一帧数据。

TI位可作为查询;

也可作为中断申请标志位。

TI不会自动复位,必须由软件清0。

RI:

接收中断标志,在接收到一帧有效数据后由硬件置位,在模式0中,接收完8位数据后,或其他方式中接收到停止位时由硬件置位。

RI=1表示一帧数据接收完毕,并已装入接收缓冲器中,即表示’’接收缓冲器以满’’,通知CPU可取走数据。

该位可作为查询,也可作为中断申请标志位。

同样RI不会自动复位,必须由软件清0。

以准备接收下一帧数据。

2.电源控制寄存器PCON

PCON是为了在CHMOS的MCS-51系列单片机上实现电源控制而设置的,字节地址为87H,不可位寻址,PCON的内容如下:

SMOD

GF1

GF0

PD

IDL

其中,PCON的低4位是CHMOS器件的掉电方式控制位,这里不做介绍(详见2.7节)。

在HMOS的MCS-51系列单片机中,PCON寄存器中只有最高位SMOD与串行口的工作有关,其他位都是虚设的。

SMOD称为波特率倍增位。

在模式1、模式2、模式3时,若SMOD=1,则波特率提高一倍;

若SMOD=0,则波特率不加倍。

复位时,PCON=00H。

6.2.3波特率设计

在串行通信中,收发双方对发送或接收的数据速率要有一定的约定,通过软件对MCS-51系列单片机的串行口编程可设置4种工作模式。

其中,模式0和模式2的波特率是固定的,而模式1和模式3的波特率是可变的,由定时器T1或T2的溢出率决定。

串行口的4种工作模式对应着3种波特率。

由于输入的移位时钟来源不同,所以,各种模式的波特率计算公式也不同。

1.模式0的波特率

在模式0时,每个机器周期产生一个移位时钟,发送或接收一位数据。

所以,波特率固定为振荡频率的1/12,且不受SMOD的影响。

模式0的波特率=fosc/12

2.模式2的波特率

模式2波特率的产生与模式0不同,模式2的波特率由系统的振荡频率fosc和PCON的最高位SMOD确定,当SMOD=0时,波特率为fosc/64;

若SMOD=1,则波特率foscc/32,即

模式2的波特率=

·

fosc

3.模式1和模式3的波特率

模式1和模式3的移位时钟脉冲由定时器T1的溢出率决定,故波特率由定时器T1的溢出率与SMOD值共同决定,即

模式1和模式3的波特率=

T1的溢出率

当T1做波特率发生器使用时,最典型的用法是使T1工作在模式2(初值自动加载)、定时方式,若计数初值为X,则每过“256-X”个机器周期。

定时器T1就会产生一次溢出。

为了避免因溢出而引起中断,此时应禁止中断。

这时,溢出周期为

(256-X)

溢出率为溢出周期的倒数,所以

波特率=

此时,定时器T1工作在模式2时的初值为:

X=256-

对于52子系列单片机,通过设置T2CON寄存器中TCLK和RCLK这两位,可选择T2做串行口的波特率发生器。

当TCLK=1时,选T2做发送波特率发生器,当RCLK=1时,选T2做接收波特率发生器,当两者均为1时,选T2做发送/接收波特率发生器。

当T2做波特率发生器时,波特率取决于它的溢出率,而与SMOD的状态无关。

计数时钟可以来自内部,也可以来自外部,决定于T2CON中的C/

位的值,并且T2的溢出信号要经过一个16分频计数器(见5.2节T2的内部结构框图)。

当C/

=0时,选用内部时钟,计数频率为fosc/2,波特率由下式给出

波特率=

式中RCAP2H,RCAP2L为自动重装载值。

=1时,选用外部时钟,计数频率为外部时钟频率,其最高频率为fosc/24。

例6-1已知MCS-51系列单片机系统晶振频率为11.0592MHz,选用定时器T1工作模式2做波特率发生器,波特率为2400波特,求初值X。

解:

设波特率选择位SMOD=0,则有

=244=F4H

所以,(TH1)=(TL1)=F4H。

系统晶振频率选为11.0592MHz是为了使初值为整数,从而产生精确的波特率。

如果串行通信选用很低的波特率,可将定时器T1置于模式0或模式1,即13位或16位定时方式。

在这种情况下,T1溢出时,需重装初值,从而会使波特率产生一定的误差。

此时,可用改变初值的办法加以调整。

表6-2列出了各种常用的波特率及其初值。

表6-2常用波特率与其他参数的关系

波特率

定时器

C/

模式

初值

模式0:

1Mbit/s

12MHz

×

模式2:

375Kbit/s

1

模式1、模式3:

62.5Kbit/s

19.2Kbit/s

9.6Kbit/s

4.8Kbit/s

2.4Kbit/s

1.2Kbit/s

137.5bit/s

110bit/s

11.059MHz

11.059MHz

11.986MHz

6MHz

1

2

FFH

FDH

FAH

F4H

E8H

1DH

72H

FEEBH

6.3串行口工作模式

MCS-51系列单片机通过软件编程可使串行口有四种工作模式,由SCON中的SM0、SM1两位进行定义。

6.3.1模式0

模式0是同步移位寄存器输入/输出方式,用于扩展I/O口。

8位串行数据的输入或输出都是通过RXD端,而TXD端用于送出同步移位脉冲,作为外接器件的同步移位信号。

波特率固定为fosc/12。

模式0以8位为一帧数据,没有起始位和停止位,低位在前、高位在后,其帧格式为:

……

D0

D1

D2

D3

D4

D5

D6

D7

……

模式0的发送是在TI=0的情况下,由一条写发送缓冲器的指令开始。

例如

MOVSBUF,A

CPU执行完该指令,串行口即将8位数据从RXD端送出(低位在前),同时,在TXD端发出同步移位脉冲。

8位数据发送完毕后,由硬件置位TI=1。

可通过查询TI位来确定是否发送完一组数据,TI=1表示发送缓冲器已空;

TI=1也可作为中断请求信号,申请串行口发送中断。

当要发送下一组数据时,需用软件使TI清0,然后才可发送下一组数据。

模式0的接收是在RI=0和REN=1的条件下,启动串行口接收。

接收数据由RXD端输入(低位在前),TXD端仍发出同步移位脉冲。

接收到8位数据以后,由硬件使RI=1。

可通过查询RI位来确定是否接收到一组数据,RI=1表示接收数据已装入接收缓冲器,可以由CPU用指令读取;

RI=1也可作为中断请求信号,申请串行口接收中断。

,当CPU读取数据后,需用软件使RI清0,以准备接收下一组数据。

在模式0中,SCON寄存器中的SM2、RB8、TB8都不起作用,一般设它们为0即可。

6.3.2模式1

串行口定义为模式1时,是串行异步通信方式。

TXD为数据发送端,RXD为数据接收端。

波特率可变,由定时器T1的溢出率以及SMOD位决定。

一帧数据由10位组成,包括1位起始位、8位数据位、1位停止位,其帧格式为

起始

停止

模式1的发送也是在TI=0时由一条写发送缓冲器SBUF的指令开始的。

启动发送后,串行口自动地插入一位起始位(逻辑0),接着是8位数据(低位在前),然后又插入一位停止位(逻辑1),在发送移位脉冲作用下,依次由TXD端发出。

一帧信息发完之后,自动维持TXD端的信号为1。

在8位数据发完之后,也就是在插入停止位时,使TI置1,用以通知CPU可以发送下一帧数据。

模式1发送时的定时信号,也就是发送移位脉冲,是由定时器1送来的溢出信号经过16或32分频(取决于SMOD的值是0还是1)而取得的。

因此,模式1的波特率受定时器控制,可以随着定时器初值的不同而变化。

模式1的接收是在REN置1的前提下,串行口采样引脚RXD(P3.0)。

在无信号时,RXD端的状态为1,当采样到1至0的跳变时,确认是起始位“0”,就开始接收一帧数据。

在接收移位脉冲的控制下,把收到的数据一位一位地送入输入移位寄存器,直到9位数据全部收齐(包括一位停止位)。

当RI=0且停止位为1或者SM2=0时,8位数据送入接收缓冲器SBUF,停止位进入RB8,同时使RI置1;

否则,8位数据不装入SBUF,放弃接收的结果。

所以,模式1接收时,应先用软件清RI或SM2标志。

在接收操作时,定时信号有两种:

一种是接收移位脉冲,它的频率和发送波特率相同,也是由定时器1的溢出信号经过16或32分频而得到的;

另一种是接收字符的检测脉冲,它的频率是接收移位脉冲的16倍,即在接收一位数据的期间,有16个检测脉冲,并以其中的第7、8、9这3个脉冲作为真正的对接收信号的采样脉冲。

对这3次采样结果采取三中取二的原则来决定所检测到的值。

采取这种措施的目的在于抑制干扰。

由于采样信号总是在接收位的中间位置,这样即可以避开信号两端的边沿失真,也可以防止由于收发时钟频率不完全一致而带来的接收错误。

6.3.3模式2

模式2也是串行异步通信方式。

一帧数据由11位组成,包括1位起始位、8位数据位、一位可编程位、1位停止位,其帧格式为:

0/1

模式2的波特率是固定的,且有两种。

一种是fosc/32;

另一种是fosc/64。

模式2的发送包括9位有效数据,在启动发送之前,要把发送的第9位数值装入SCON寄存器中的TB8位,这第9位数据起什么作用串行口不做规定,完全由用户来安排。

用户需根据通信协议用软件设置TB8(如做奇偶校验位或地址/数据标志位)。

准备好TB8的值以后,在TI=0的条件下,就可以执行一条写发送缓冲器SBUF的指令来启动发送。

串行口能自动把TB8取出,并装入到第9位数据的位置,逐一发送出去。

发送完毕,使TI置1。

这些过程与模式1基本相同。

模式2的接收与模式1基本相似。

不同之处是要接收9位有效数据。

在模式1时是把停止位当作第9位数据来处理,而在模式2(或模式3)中存在着真正的第9位数据。

因此,接收数据真正有效的条件为:

(1)RI=0;

(2)SM2=0或收到的第9位数据为1。

第一个条件是提供“接收缓冲器已空”的信息,即CPU已把SBUF中上次收到的数据读走,允许再次写入。

第二个条件则提供了根据SM2的状态和所接收到的第9位状态来决定接收数据是否有效。

若第9位是一般的奇偶校验位(单机通信时),应令SM2=0,以保证可靠的接收。

若第9位作地址/数据标志位(多机通信时),应令SM2=1,则当第9位为1时,接收的信息为地址帧,串行口将接收该组信息。

若上述两个条件成立,接收的前8位数据进入SBUF以准备让CPU读取,接收的第9位数据进入RB8,同时置位RI。

若以上条件不成立,则这次接收无效,放弃接收结果,即8位数据不装入SBUF,也不置位RI。

6.3.4模式3

模式3同样是串行异步通信方式,其一帧数据格式,接收、发送过程与模式2完全相同,所不同的仅在于波特率。

模式2的波特率只有固定的两种,而模式3的波特率由定时器T1的溢出率及SMOD决定。

这一点与模式1相同。

6.4串行口应用举例

MCS-51系列单片机的串行口基本上是异步通信接口,利用串行口控制寄存器SCON中的有关控制位,还可以实现多机通信。

本节将介绍MCS-51系列单片机的串行口在作I/O口扩展及一般异步通信和多机通信中的应用。

6.4.1用串行口扩展I/O口

串行口的模式0不属于通信,它的主要用途是可以和外接的移位寄存器结合来进行并行I/O口的扩展。

这种方法不占用片外RAM地址,而且还能简化单片机系统的硬件结构。

缺点是操作速度较慢。

当串行口别无它用时,就可利用串行口模式0来扩展并行I/O口。

此处将给出实用电路和简单的控制指令。

1.扩展并行输出口

MCS-51系列单片机的串行口在模式0时外接一个串入/并出的移位寄存器,就可以扩展一个8位并行输出口。

所用的移位寄存器应该带有输出允许控制端,这样可以避免在数据串行输入时,并行输出端出现不稳定的输出。

图6-5(a)是使用串入/并出移位寄存器CD4094(也可用74LS164)扩展并行输出口的接口电路。

移位寄存器的STB为输出允许控制端,STB=1时,打开输出控制门,实现并行输出。

(a)扩展并行输出口(b)扩展并行输入口

图6-5利用串行口扩展并行I/O口

串行口模式0的数据输出可以采用中断方式,也可以采用查询方式,但无论采用哪种方式都要借助于TI标志。

采用中断方式时,是靠TI置位后产生中断申请,在中断服务程序中发送下一组数据。

采用查询方式时,需查询TI的值,只要TI为0就继续查询,直到TI为1后结束查询,然后进入下一组数据的发送。

无论采用什么方式,在使用串行口之前,都要先对SCO

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2