51单片机串行口课件解析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方式0的波特率为fosc/12,即一个机器周期发送或接 收一位数据。
2. 工作方式1 方式1是一帧10位的异步串行通信方式,包
括1个起始位(0),8个数据位和一个停止位(1),其
②SM2:多机通信控制器位。在方式0中,SM2
必须设成0。在方式1中,当处于接收状态时,若
SM2=1,则只有接收到有效的停止位“1”时,RI
才能被激活成“1”(产生中断请求)。在方式2和方 式3中,若SM2=0,串行口以单机发送或接收方 式工作,TI和RI以正常方式被激活并产生中断请 求;若SM2=1,RB8=1时,RI被激活并产生中断
时,SMOD=0。
六、串行口工作方式 8051串行通信共有4种工作方式,它们分别是 方式0、方式1、方式2和方式3,由串行控制寄存器
SCON中的SM0 SM1决定,如表8-1所示。
1. 工作方式0
在方式0下,串行口作为同步移位寄存器使用。此时SM2、
RB8、TB8均应设置为0,用来扩展并行输入输出口。
验数据在传送过程中是否出错的奇偶校验位。奇
偶校验是收发双方预先约定好的差错检验方式之
一。有时也可不用奇偶校验。
(4) 停止位:
字符帧格式的最后部分是停止位,逻辑“1”电平
有效,它可占1/2位、1位或2位(在串行通信时每
位的传送时间是固定的)。停止位表示传送一帧 信息的结束,也为发送下一帧信息作好准备。
SBUF是串行口缓冲寄存器,包括发送寄存
器和接收寄存器,以便能以全双工方式进行通信。 此外,在接收寄存器之前还有移位寄存器,从而
构成了串行接收的双缓冲结构,这样可以避免在
数据接收过程中出现帧重叠错误。发送数据时,
由于CPU是主动的,不会发生帧重叠错误,因此
发送电路不需要双重缓冲结构。
在逻辑上,SBUF只有一个,它既表示发送
同步 字符 数据 数据 字符1 字符2
图8.3
…
数据字 数 据 校 验 符n-1 字符n 字 符
(校验 字符)
同步通信数据传送格式
2. 异步通信(Asynchronous Communication)
在异步通信中,数据通常是以字符或字节为单位
组成数据帧进行传送的。收、发端各有一套彼此独 立,互不同步的通信机构,由于收发数据的帧格式 相同,因此可以相互识别接收到的数据信息。
1、串行接口的结构及寄存器
内部8051 CPU总线
SBUF (99H) 发送缓冲器 波 特 率 发 生 器 TI 接收缓冲器 SBUF (99H)
移位寄存器
TXD(P3.1)
发送控制器TI 串行口中断
接收控制器RI
串 行 控 制 寄 存 器 (98H) RXD(P3.2)
移位寄存器
(1). 串行数据缓冲器SBUF
(1)发送:TI=0时,执行“MOV SBUF,A”启动发送,8
位数据由低位到高位从RXD引脚送出,TXD发送同步脉冲。 发送完后,由硬件置位TI。 (2)接收:RI=0,REN=1时启动接收,数据从RXD输入, TXD输出同步脉冲。8位数据接收完,由硬件置位RI。可通
过“MOV A,SBUF”读取数据。
(2). 串行控制寄存器SCON 串行控制寄存器SCON用于设置串行口的工
作方式、检测串行口的工作状态、控制发送与接
收的状态等。它是一个既可以字节寻址又可以位 寻址的8位特殊功能寄存器。其格式如图8.8所示。
位地址 9FH SCON SM0
9EH SM1
9DH 9CH 9BH SM2 REN TB8
发送中断,进而作出相应的处理。单片机复位时,
SCON所有位均清0。
定时器T1工作方式的选择
TMOD : GATE C/T M1 M0 GATE C/T M1 M0 方式1(M1=0,M0=1) 定时器计满溢出时,自动进入中断服务程序,需手动再次给 定时器赋初值,导致定时器溢出速率不准确 方式2(M1=1,M0=0) 定时器计数溢满时,单片机自动为其装初值,且无需进入中 断服务程序进行任何处理,这样定时器溢出速率绝对稳定。 所以选择定时器T1的工作方式2 M0,M1选择方式2=>TL1,TH1装入初值=>启动定时器=>TL1 加一计数,TL1计满后,cpu把TH1中的数装入TL1中。 (TH1,TL1中的值相等)
发送 接收 发送 接收
A 端
B 端
图8.6 半双工制式
3. 全双工制式(Full duplex) 全双工制式是指通信双方均设有发送器和接
收器,并且将信道划分为发送信道和接收信道,
两端数据允许同时收发,因此通信效率比前两种 高。全双工制式如图8.7所示。
A 端
发送 接收 接收 发送
B 端
图8.7 全双工制式
二、串行通信的波特率
波特率(Baud Rate)是串行通信中一个重要概
念,它是指传输数据的速率, 亦称比特率。波特率 的定义是每秒传输二进制数码的位数。如:波特率 为1200bps是指每秒钟能传输1200位二进制数码。 波特率的倒数即为每位数据传输时间。例如:
波特率为1200bps,每位的传输时间为:
T d
=
1 1200
= 0. 833 ( ms )
波特率和字符帧的传输速率不同,若采用图
8.4的数据帧格式,并且数据帧连续传送(无空闲
位),则实际的字符传输速率为1200/11=108.08 帧/秒。
三、 串行通信的制式 在串行通信中,数据是在两个站之间传送的。 按照数据传送方向,串行通信可分为三种制式。
⑦RI:接收中断标志位。RI=1,表示一帧数据接收
结束。可由软件查询RI位标志,也可以向CPU申请
中断。
注意:RI在任何工作方式下也都必须由软件清0。 在8051中,串行发送中断TI和接收中断RI的中 断入口地址是同是0023H,因此在中断程序中必须 由软件查询TI和RI的状态才能确定究竟是接收还是
四、 串行通信的校验
串行通信的目的不只是传送数据信息,更重要
的是应确保准确无误地传送。因此必须考虑在通信 过程中对数据差错进行校验,校验方法有奇偶校验、 累加和校验以及循环冗余码校验等。
1. 奇偶校验 奇偶校验的特点是按字符校验,即在发送每个 字符数据之后都附加一位奇偶校验位(1或0),当设置
为奇校验时,数据中1的个数与校验位1的个数之和
信两种基本通信方式。 1. 同步通信(Synchronous Communication) 同步通信是一种连续传送数据的通信方式,一
次通信传送多个字符数据,称为一帧信息。数据传
输速率较高,通常可达56000bps或更高。其缺点是 要求发送时钟和接收时钟保持严格同步。
同步通信的数据帧格式如图8.3所示。
串行通信
计算机与外界的信息交换称为通信。通信的基本方
式可分为并行通信和串行通信两种。
所谓并行通信是指数据的各位同时在多根数据
线上发送或接收。
串行通信是数据的各位在同一根数据线上依次 逐位发送或接收。
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P2.7 RD 88C51 WR
(1) 起始位:
在没有数据传送时,通信线上处于逻辑“1”状态。
当发送端要发送1个字符数据时,首先发送1个逻 辑“0”信号,这个低电平便是帧格式的起始位。 其作用是向接收端表示发送端开始发送一帧数据。 接收端检测到这个低电平后,就准备接收数据信
号。
(2) 数据位:
在起始位之后,发送端发出(或接收端接收)的是 数据位,数据的位数没有严格的限制,5~8位均 可。由低位到高位逐位传送。 (3) 奇偶校验位: 数据位发送完(接收完)之后,可发送一位用来检
SM0 SM1 工作方式 功 能说 明 0 0 0 同步移位寄存器输入/输出,波特率固定 为fosc/12 0 1 1 10位异步收发,波特率可变(T1溢出率/n, n=32或16) 1 0 2 11位异步收发,波特率固定为fosc/n, n=64或32) 1 1 3 11位异步收发,波特率可变(T1溢出率/n, n=32或16)
接收数据时也是先对数据块求和,将所得结果与 发送方的“校验和”进行比较,若两者相同,表 示传送正确,若不同则表示传送出了差错。“校 验和”的加法运算可用逻辑加,也可用算术加。
3. 循环冗余码校验(CRC)
循环冗余码校验的基本原理是将一个数据块 看成一个位数很长的二进制数,然后用一个特定
的数去除它,将余数作校验码附在数据块之后一
请求。
③REN:串行接受允许控制位。该位由软件置位或 复位。当REN=1,允许接收;当REN=0,禁止接 收。
④TB8:方式2和方式3中要发送的第9位数据。该
位由软件置位或复位。在方式2和方式3时,TB8
是发送的第9位数据。在多机通信中,以TB8位的 状态表示主机发送的是地址还是数据:TB8=1表 示地址,TB8=0表示数据。TB8还可用作奇偶校 验位。
应为奇数;反之则为偶校验。收、发双方应具有一 致的差错检验设置,当接收1帧字符时,对1的个数 进行检验,若奇偶性(收、发双方)一致则说明传输 正确。奇偶校验只能检测到那种影响奇偶位数的错
误,比较低级,一般只用在异步通信中。
2. 累加和校验 累加和校验是指发送方将所发送的数据块求
和,并将“校验和”附加到数据块末尾。接收方
2. 电源控制寄存器PCON
PCON
D7
D6
D5
-
D4
D3
D2
D1
D0
位名称 SMOD -
- GF1 GF0 PD IDL
图8.10 电源控制寄存器PCON的格式
SMOD:串行口波特率倍增位。在工作方式1~ 工作方式3时,若SMOD=1,则串行口波特率增 加一倍。若SMOD=0,波特率不加倍。系统复位
异步通信信息帧格式如图8.4所示。
第n-1字符 帧 奇 偶停 起 校止 始 8位数据 验位 位 第n字符帧 奇 偶 停 校 止 验 位 第n+1字符帧 起 始 位 8位数据
8位数据
空闲位
D7 0/1 1
0 D0 D1 D2 D3 D4 D5 D6 D7 0/1 1
1
1
1
0
D0 D1
图8.4 异步通信帧格式
⑤RB8:接收数据第9位。在方式2和方式3时,RB8 存放接收到的第9位数据。RB8也可用作奇偶校验位。 在方式1中,若SM2=0,则RB8是接收到的停止位。 在方式0中,该位未用。
⑥TI:发送中断标志位。TI=1,表示已结束一帧数
据发送,可由软件查询TI位标志,也可以向CPU申 请中断。 注意:TI在任何工作方式下都必须由软件清0。
1. 单工制式(Simplex) 单工制式是指甲乙双方通信只能单向传送数 据。单工制式如图8.5所示。
发送器A
图8.5 单工制式
接收器B
2. 半双工制式(Half duplex)
半双工制式是指通信双方都具有发送器和接
收器,双方既可发送也可接收,但接收和发送不
能同时进行,即发送时就不能接收,接收时就不 能发送。半双工制式如图8.6所示。
9AH RB8
99H TI
98H RI
见表8-1
接收中断标志
发送中断标志
接收数据第9位 发送数据第9位 接收控制 0:禁止
1:允许 1:多机
多机通信 0:双机
图8.8 串行口控制寄存器SCON
① SM0 SM1:串行口工作方式选择位。其状态
组合所对应的工作方式如表8-1所示。
表8-1 串行口工作方式
寄存器,又表示接收寄存器,具有同一个单元地
址99H。但在物理结构上,则有两个完全独立的 SBUF,一个是发送缓冲寄存器SBUF,另一个是 接收缓冲寄存器SBUF。如果CPU写SBUF,数据 就会被送入发送寄存器准备发送;如果CPU读
SBUF,则读入的数据一定来自接收缓冲器。即
CPU对SBUF的读写,实际上是分别访问上述两 个不同的寄存器。
起发送。接收端收到该数据块和校验码后,进行
同样的运算来校验传送是否出错。目前CRC已广
泛用于数据存储和数据通信中,并在国际上形成 规范,市面上已有不少现成的CRC软件算法。
五、8051单片机的串行接口
8051内部有一个可编程全双工串行通信接口。
该部件不仅能同时进行数据的发送和接收,也可 作为一个同步移位寄存器使用。 下面将对其内部结构、工作方式以及波特率 进行介绍。
D7 D6 D5 D4 D3 D2 D1 D0 CS RD 8255 WR
发送 TXD
RXD TXD 外设
接收
RXD 88C51
图8.1 并行wenku.baidu.com信示意图
图8.2 串行通信示意图
目前串行通信在单片机双机、多机以及单片机 与PC机之间的通信等方面得到了广泛应用。
一、异步通信和同步通信
串行通信按同步方式可分为异步通信和同步通