第 7 章 串行接口通信
-
Upload
geraldine-reagan -
Category
Documents
-
view
107 -
download
9
description
Transcript of 第 7 章 串行接口通信
第 7 章 串行接口通信 7.1 概述
7.2 MCS-51 单片机的串行通信接口
7.3 串行口的四种工作方式
7.4 串口综合应用举例
在实际工作中,计算机的 CPU 和外部设备之间常要进行数据交换,一台计算机与其他计算机之间也往往要交换数据,所有的这些信息交换都称为通信。
常用的通信方式有两大类:串行通信和并行通信。目前串行通信协议有很多种: USB 、 I2C 、 RS-232 、 SPI 等都是串行通信协议。并行通信协议有 SPP 、 EPP 、 ECP 等。通常需要根据信息传送的距离决定采用那种通信方式,例如 PC 与外部设备(如打印机等)通信时,如果距离小于 30m ,可以采用并行通信方式,当距离大于 30m 时,则要采用串行通信方式。
7.1 概述
并行通信是指数据的各位同时进行传送(发送或接收)的通信方式,其优点是传送速度快,其缺点是数据有多少位,就要有多少根数据传送线,同时还必须有必要的控制线。并行通信在位数多、传送距离远就不太合适了。 串行通信指数据是一位一位的按顺序传送的通信方式,它的突出优点是只需要很少的传输线(根据不同的串行通信协议,数据传输线有所不同),这样大大降低了传送成本,特别适用于远距离通信,其缺点是传送速度较慢。 对串行通信主要涉及以下几个概念:串口通信的数据传输方向、同步和异步通信、波特率等
并行通信和串行通信
一般情况下,串行数据传输是在两个通信端之间进行的。其数据传输方向通常有三种:单工、半双工和全双工。 上面三种方式分别对应了 : 单行道、独木桥、双向车道的通行方式
7.1.1 数据传输方向
7.1.2 同步和异步通信1 异步通信
异步串行通信是以帧的形式发送字符数据,异步串行通信有连续发送字符和不连续发送字符两种方式,当连续发送字符时,每一帧信息由起始位、数据位、奇偶校验位和停止位组成,其帧结构如图 7-1 所示。
起始位 数据位 奇偶校验位 停止位 下一个字符的起始位
0 多种数据位形式 0/ 1 1 0
图 7-1 字符连续传送的异步通信数据传输格式
同步通信不同于异步通信,同步通信在数据传输开始前用同步字符(常约定 1 ~ 2 个),并由同步时钟来实现发送和接收端同步。即同步通信使用数据块传送信息,而不是字节,省去了每个字节的起始位和停止位等数据,直到通信结束。同步通信在每个数据块传输的开始使用同步字符,使接收和发送同步。其通信格式如图 7-3 所示
2 同步通信
同步字符1 同步字符2 数据
图 7-3 同步通信数据传输格式
7.1.3 波特率 波特率是衡量数据传送速率的指标,其定义为单位时间内传送的信息量,信息量的单位为 bit ,时间单位为秒,则 1 波特= 1 位 / 秒= 1bit/s = 1bps 。 例如,在异步通信中使用 1 位起始位, 8 位数据位,无奇偶校验位, 1 位停止位。即一帧数据长度为 10bit ,如果在应用中要求数据传送的速率是 1 秒传送 120 帧字符,则传送波特率为 1200 波特。 在异步串行通信双方中,接收和发送方必须使用相同的波特率才能正确传输数据
7.2 MCS-51 单片机的串行通信接口
7.2.1 串行通信接口结构
7.2.2 串行口控制寄存器 SCON 和 PCON
7.2.1 串行通信接口结构
1 、串行口控制寄存器 SCON MCS-51 单片机串行通信方式的选择、接收和发送控制以及串行口的状态标志等均通过对特殊功能寄存器 SCON 编程来实现。 SCON 控制字的各位定义如图 7-3 所示
SM0 SM1 SM2 REN TB8 RB8 TI RI
图 7-3 SCON 控制字格式
7.2.2 串行口控制寄存器 SCON 和 PCON
2 、电源控制寄存器 PCON PCON 是为了在 CHMOS 的 80C51 单片机上实现电源控制而附加的。 PCON 中的最高位 SMOD 与串行口工作有关,如图 7-5 所示
图 7-5 电源控制寄存器 PCON
SMOD ( PCON.7 )——波特率倍增位。在串行口方式 1 、方式 2 和方式 3 时,波特率和 SMOD 成正比,亦即当 SMOD = 1 时,波特率提高一倍。复位时, SMOD = 0
7.3 串行口的四种工作方式 7.3.1 串口工作方式 0
7.3.2 串口工作方式 1
7.3.3 串口工作方式 2
7.3.4 串口工作方式 3
7.3.1 串口工作方式 0
1 方式 0 的帧结构
2 方式 0 时的波特率
3 方式 0 工作基本原理
4 串行口方式 0 应用举例
1 方式 0 的帧结构 方式 0 为同步移位寄存器输入 / 输出方式。可外接移位寄存器以扩展 I/O 口,也可以外接同步输入 / 输出设备。串行数据通过 RXD 输入或输出,而 TXD 用来输出移位脉冲或外接部件的同步脉冲。方式 0 是以 8位数据为一帧,不设起始位和停止位,先发送或接收最低位,其帧格式如图 7-6所示
D0 D1 D2 D3 D4 D5 D6 D7 …………………
图 7- 6 方式 0 的帧格式
2 方式 0 时的波特率
/12oscf
方式 0 时,每个机器周期产生一个移位脉冲,发送或接收一位数据,因此方式0 的波特率固定为
3 方式 0 工作基本原理方式 0 的发送过程:当执行一条将数据
写入发送缓冲器 SBUF 的指令, CPU将数据写入到发送缓冲器 SBUF 时,串行口将 8位数据以固定的波特率由 RXD引脚输出,同时由 TXD引脚输出频率为 fosc/12 的同步脉冲,字符发送完毕,置中断标志 T1 = 1 ,向 CPU申请中断。
3 方式 0 工作基本原理方式 0 的接收过程:控制字除设置
为方式 0 外,还应设置接收允许控制位 REN = 1 ,清除 RI 中断标志,接收器启动后, RXD 为数据输入端, TXD 为同步信号输出端,接收器以固定的波特率采样 RXD引脚输入的数据信息。当接收完 8 位数据后又重新置 RI = 1 。
4 串行口方式 0 应用举例例 7.1 :将片内 RAM 的 30H 单元中的内容经 CD4094 并行
输出。 分析: CD4094 是一种 8 位串行输入、并行输出的同步移
位寄存器, CLK 为同步脉冲输入端, STB 为控制端,若 STB= 0 ,则 8 位并行数据输出端关闭,但允许串行数据从 DATA输入,若 STB = 1 ,则 DATA 输入端关闭,但允许 8 位数据并行输出。 CD4094 与单片机连接电路如图 7-7 所示。
RXD
TXD
P1.0
DATA
CLK
STB8051
数据输出
移位输出
D0D1D2D3D4D5D6D7
图 7-7 串口扩展并行 I/O 口
例 7.1 源程序:MAIN : MOV SCON,#00H ; 设置工作模式 0 MOV A,30H MOV SBUF,A ; 发送 30H 单元内容 CLR P1.0 WAIT : JNB TI,WAIT ; 判断是否发送完毕
CLR TISETB P1.0SJMP $
7.3.2 串口工作方式 1
1 方式 1 的帧结构
2 方式 1 时的波特率
3 方式 1 工作基本原理
4 串行口方式 1 应用举例
1 方式 1 的帧结构 方式 1 是以 10 位数据为一帧,设 1 位起始位“ 0” , 8位数据位, 1 位停止位“ 1” ,先发送或接收最低位,其帧格式如图 7-8 所示
图 7-8 方式 0 的帧格式
D0 D1 D2 D3 D4 D5 D6 D7起始位“ 0” 停止位”1”
2 方式 1 时的波特率 方式 1 的移位时钟脉冲由定时器 T1 的溢出率决定,因此,串行口方式 1 的波特率由定时器 T1 的溢出率与 SMOD值同时决定。即方式 1 的波特率如式 7-3 所示
8
21
32 12[2 ( 1)]
SMODoscf
TH
7-3方式 的波特率=
3 方式 1 工作基本原理方式 1 的发送过程:除设置 SCON 寄存器
为方式 1 和 TI = 0 外,还需要利用定时器T1 来完成波特率的设置,当执行数据写入发送缓冲器 SBUF 的命令时,就启动了发送器开始发送。发送电路自动在 8 位发送字符前后分别添加 1 位起始位和 1 位停止位。并在发送移位时钟(其频率即是用户设置的波特率)作用下在 TXD引脚依次发送一帧信息,发送完后自动维持 TXD 为高电平,发送完毕后硬件置位 TI ,并在中断服务程序中由软件将 TI 复位。
3 方式 1 工作基本原理
方式 1 的接收过程:方式 1 接收操作必须在 SCON 寄存器中 REN 位为 1 、 RI 为 0 、工作模式设置为 1 的前提下进行,同时还必须利用定时器 T1 来完成波特率的设置。当上述设置完成后, MCS- 51 单片机的 CPU会自动对 RXD引脚采样。采样频率为波特率的 16 倍,当检测到起始位( RXD 上检测到 1→0 的跳变,即起始位)时,接收电路对 RXD引脚采样启动串口数据接收。
3 方式 1 工作基本原理方式 1 的收发流程
4 串行口方式 1 应用举例例 7.3 设有 A 、 B 两个单片机,采用中断方式编程实现如下串行通信功能的程序。双机通信电路如图 7-9 所示。时钟振荡频率为 11.0592MHz 。
图 7 - 9 双机通信
A 机: 将首地址为 ADDRT 的长度为 LEN 个单元的数据块顺序向 B 机发送 , 波特率为 2400 。
B 机:将接收到的 LEN 个单元的数据块顺序存储在以 ADDRR 的数据缓冲区中
8
21
32 12[2 ( 1)]
SMODoscf
TH
方式 的波特率=
6
1
6
1 11.0592*102400
32 12(256 )
11.0592*101 256
12*32*2400256 12 244 4
TH
TH
F H
A 机发送源程序: LEN EQU 30H
ADDRT EQU 31HORG 0000H
LJMP MAIN ORG 0023H
LJMP INT_COMMORG 0030H
MAIN : MOV SCON,# 40H
MOV TMOD,#20H MOV TH1,#0F4H MOV TL1,#0F4H
SETB TR1SETB EASETB ESMOV R2,#LENMOV R0,#ADDRT
MOV A,@R0 MOV SBUF,A
LJMP $
; 中断服务子程序INT_COMM : CLR TI DJNZ R2,LOOP
CLR ESLJMP ENDCOMM
LOOP : INC R0MOV A,@R0MOV SBUF,A
ENDCOMM : RETI END
B 机接收源程序: LEN EQU 30H
ADDRR EQU 31HORG 0000H
LJMP MAIN ORG 0023H
LJMP INT_COMMORG 0030H
MAIN : MOV SCON,#50H MOV TMOD,#20H MOV TH1,#0F4H
MOV TL1,#0F4HSETB TR1SETB EASETB ESMOV R2,#LENMOV R0,#ADDRR
LJMP $
; 中断服务子程序INT_COMM : CLR RI
MOV A, SBUFMOV @R0,A
DJNZ R2,LOOPCLR ESLJMP ENDCOMM
LOOP : INC R0ENDCOMM : RETI END