第 7章 串行通信接口第 7章 MCS-51的串行通信接口第 7章 串行通信接口
7.1 串行通信概述
7.2 串行口结构及控制寄存器
7.3 串行的工作方式
7.4 串行口应用举例总目录第 7章 串行通信接口计算机与计算机之间,计算机与外设之间的数据交换称为通信。 计算机与外部设备的通信有两种基本方式:并行通信和串行通信。
一个信息的各位数据被同时传送的通信方法称为 并行通信 。
并行通信依靠并行 I/O接口实现。并行通信速度快,但传输线根数多,成本高,适合近距离通信,通常传送距离小于 30米。
一条信息的各位数据被逐位顺序传输的通信方式称为 串行通信 。串行通信通过串行接口实现。串行通信速度慢,但传输线少,适宜长距离传输。
7.1 串行通信基础
7.1.1数据通信的两种基本方式第 7章 串行通信接口异步通信,是以字符为单位传送的,数据传送可靠性高,适合低速通信的场合。
同步通信,方式是以数据块的方式传送的,数据传输率高,
适合高速率、大容量的数据通信。
根据信息传送的格式分为,异步通信和同步通信 。
7.1.2串行通信的两种基本方式第 7章 串行通信接口异步通信 用起始位,0”表示字符的开始,然后从低位到高位逐位传送数据,最后用停止位,1”表示字符的结束。一个字符又称为一贞信息。图 a中,一贞信息包括一位起始位,8位数据位和 1位停止位;图 b中,数据位增加到 9位。
1、异步通信方式:
异步通信中,计算机与外设之间必须约定:
( 1)字符格式 约定好字符的编码形式、奇偶效验位形式以及起始位和停止位的规定。
( 2)波特率 是每秒数据传输的位数。
1波特 =1bps(位 /秒)
异步通信要求发送与接收以相同的波特率进行。
第 7章 串行通信接口第 7章 串行通信接口同步通信 在数据开始处用 1~ 2个同步字符来指示。
同步通信中,由同步时钟来实现发送和接收的同步。在发送时要插入同步字符,接收端在检测到同步字符后,就开始接收串行数据。可见,同步通信具有较高的传输速率,通常在几十至几百千波特,但在硬件上要求较高。
2、同步通信方式:
第 7章 串行通信接口分为:单工、半双工、全双工
7.1.3串行通信中数据传输方向
A B
A B
BA
单工半双工全双工第 7章 串行通信接口全双工异步串行接口 (UART)
数据通信的几个术语:
并行:数据各位同时进行传送串行:数据逐位顺序进行传送
全双工,(串行通信 )收 /发可同时进行半双工,(串行通信 )收 /发不可同时进行
异步串行通信,以字符为单位进行传送同步串行通信,以数据块为单位进行传送波特率 (bps.):单位时间传送的位数本章目录第 7章 串行通信接口
SBUF
(发)
SBUF
(收)
发送控制器 TI
接收控制器 RI
移位寄存器波特率发生器
T1
1
A
累加器
(门 )移位寄存器
RxD
TxD
去申请中断引脚引脚
CP
U
内部
7,2 串行口结构及控制寄存器第 7章 串行通信接口
1、串行通信接口的结构
两个同名的接收 /发送缓冲寄存器 SBUF
指令 MOV SBUF,A 启动一次数据发送,可向 SBUF
再发送下一个数指令 MOV A,SBUF 完成一次数据接收,SBUF可再接收下一个数
接收 /发送数据,无论是否采用中断方式工作,每接收 /发送一个数据都必须用指令对 RI/TI清 0,以备下一次收 /发。
串行口相关的 SFR(SCON,PCON)
第 7章 串行通信接口
SM0 SM1 SM2 REN TB8 RB8 TI R1SCON
SM0,SM1:串行口 4种工作方式的选择位。
0 0 方式 0,8位移位寄存器 I/O,波特率固定为 fosc/12
0 1 方式 1,8位 UART( 1+8+1位),
波特率可变,按公式计算
1 0 方式 2,9位 UART( 1+8+1+1位),
波特率固定 =fosc /32或 1/64
1 1 方式 3,9位 UART( 1+8+1+1位),
波特率可变,按公式计算
2、串行口控制寄存器 SCON(98H)
第 7章 串行通信接口
SM0 SM1 SM2 REN TB8 RB8 TI R1SCON
SM2:串行口多机通信控制位
(作为方式 2、方式 3的附加控制位)
在方式 0时,SM2必须为 0。
在方式 1时:若 SM2=1,则只有接收到有效的停止位时,才能置位 RI。若 SM2=0,则接收一贞信息的第九位数据不管是 0还是 1,都由软件置位 RI。
在方式 2或方式 3时,若 SM2=1,当接收到的第 9位数据
RB8=0时,不能置位 RI,接收数据无效。若 SM2=0,不管接收到的第 9位数据为 0或 1,前 8位数据都送入 SBUF,并使 RI=1。
第 7章 串行通信接口
TB8:方式 2,3中,是要发送的第 9位数据。
多机通信中,TB8=0 表示发送的是数据;
TB8=1 表示发送的是地址。(奇偶校验)
SM0 SM1 SM2 REN TB8 RB8 TI R1
REN:串行口接收允许控制位,由软件置位或清 0。
= 1 表示允许接收; = 0 禁止接收。
SCON
第 7章 串行通信接口
RI,TI:串行口收 /发数据申请中断标志位
= 1 申请中断; = 0 不申请中断
RB8:在方式 2,3中,是收到的第 9位数据。
在多机通信中,用作区别地址帧 /数据帧的标志。
(奇偶校验)
SM0 SM1 SM2 REN TB8 RB8 TI R1SCON
第 7章 串行通信接口
SMOD — — — GF1 GF0 PD 1DL
3、电源控制寄存器 PCON( 97H)
—— 特殊功能寄存器 PCON不能按位寻址
SMOD:在串行口工作方式 1,2,3 中,是波特率加倍位
=1 时,波特率加倍
=0 时,波特率不加倍。
(在 PCON中只有这一个位与串口有关 )
PCON
本章目录第 7章 串行通信接口
7.3串行口工作方式
1、工作方式 0,8位移位寄存器 I/O方式
发送,SBUF中的串行数据由 RxD逐位移出;
TxD输出移位时钟,频率 =fosc1/12;
每送出 8位数据 TI就自动置 1;
需要用软件清零 TI。
接收:串行数据由 RxD逐位移入 SBUF中;
TxD输出移位时钟,频率 =fosc1/12;
每接收 8位数据 RI就自动置 1;
需要用软件清零 RI。
第 7章 串行通信接口
经常配合“串入并出”“并入串出”移位寄存器一起使用扩展接口(第六章)。
方式 0工作时,多用查询方式编程:
发送,MOV SBUF,A 接收,JNB RI,$
JNB TI,$ CLR RI
CLR TI MOV A,SBUF
1、工作方式 0,8位移位寄存器 I/O方式 (续 )
复位时,SCON 已经被清零,缺省值,方式 0。
接收前,务必先置位 REN=1 允许接收数据。
第 7章 串行通信接口串行口方式 0的扩展应用串行口常用工作方式 0扩展出并行 I/O口
A
B
CLK
h g f e d c b a
CLR AB CLK CLR AB CLK CLR
+5V
74LS164 74LS164 74LS164
74LS164是串入并出芯片; 74LS165是并入串出芯片
h g f e d c b a h g f e d c b a
+5V
共阳 LED
数码管
VCC
TxD
RxD
51单片机串行口在方式 0下的应用举例第 7章 串行通信接口
特点,8位异步通信接口,传送一帧信息为 10位,包括 1位起始位,8位数据位,1位停止位。
移位脉冲由定时器 T1的溢出信号经过 16或 32分频获得,
因此,波特率可变。 RxD引脚为接收端,TxD引脚为发送端
2、工作方式 1的接收 /发送( 8位异步通信接口)
常用于双机通信
接收信息数据有效的条件:
RI=0,表明接收缓冲器为空,即用户已经从 SBUF中取走数据,
可再次写入。 SM2=1或 RB8(停止位)为 1,才能置位 RI,引起中断。
第 7章 串行通信接口第 7章 串行通信接口
T1作波特率发生器时初始化包括,
① 选定时器工作方式 2(TMOD选 8位自动重装 );
② 将计算 (或查表 )出的初值 X赋给 TH1,TL1;
③ 启动 T1 (SETB TR1);
④ 对 T1不要开中断 !!
2、工作方式 1的接收 /发送( 8位异步通信接口)
串行口的初始化包括,
① 对 SCON选工作方式
② 对 PCON设波特率加倍位,SMOD”(缺省值 =0)
③ 如果是接收数据,仍要先置,1”REN位第 7章 串行通信接口
由于波特率固定,常用于单片机间多机通讯。
数据由 8+1位组成,通常附加的一位
(TB8/RB8)用于“奇偶校验”或地址 /数据贞标识位。
3、工作方式 2:
9位 UART(1+8+1+1位 )两种波特率
方式 2的波特率 = fosc? 2SMOD/64
即,fosc?1/32 或 fosc?1/64 两种第 7章 串行通信接口第 7章 串行通信接口
4、工作方式 3:
当 SM0,SM1为 11时,串行口工作于方式 3,9位 UART(1+8+1+1
位 ),波特率可变。
串口方式 3和方式 2唯一的区别是波特率机制不同。方式 2的波特率固定为时钟周期的 32或 64分频,不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。
波特率 =(2SMOD/32)?T1的溢出率
波特率 =
2SMOD? fosc
32? 12(2n - X)
其中,X 是定时器初值
方式 3的 波特率可变,按前面的公式计算:
第 7章 串行通信接口
5、方式 1,2,3的区别
( 1)传送位数方式 1是 8位异步通信接口,方式 2,3是 9位异步通信接口。
( 2)波特率方式 1,3的波特率是可变的,其波特率取决于定时器 T1的溢出率(此时 T1作为波特率发生器用,禁止其中断)和 PCON
中的 SMOD的值,即 波特率 =(2SMOD/32)?T1的溢出率方式 2的波特率只取决于时钟频率 fosc和 PCON中的 SMOD的值,
即 波特率 = fosc? 2SMOD/64
常用串行口波特率以及定时器 T1各参数之间的关系:
本章目录第 7章 串行通信接口
6、波特率的设定
方式 0时,波特率是时钟频率的 1/12,是固定不变的。
方式 2时波特率可变,是波特率 = fosc? 2SMOD/64
方式 1,3时,波特率是可变的波特率 =(2SMOD/32)?T1的溢出率
初值 X = 2n -
2SMOD? fosc
32? 波特率? 12
第 7章 串行通信接口
例 7-1:设串行口工作于方式 3,SMOD= 0,fosc=
11.059MHz,定时器 /计数器 T1工作于定时、方式 2,
TL1,TH1的初值为 0FDH,计算波特率。
(FDH)?253,所以:
T1溢出率 =11.059× 106/[12× (256-253)]=307194.4
波特率 =20× 307194.4/32=9599.82≈9600bps
第 7章 串行通信接口
例 7-2:用 8051串行口外接 CD4049扩展 8位并行输出口。
分析:采用方式 0,8位移位寄存器方式。
CD4049是一种 8位串入并出的同步移位寄存器。 STB
为控制端。
若 STB= 0,允许串行输入,禁止并行输出。
若 STB= 1,禁止串行输入,允许并行输出。
7.4.2 串行口在方式 0下的应用第 7章 串行通信接口
采用查询方式,程序清单:
ORG 2000H
MOV SCON,#00H
MOV A,#80H
CLR P1.0
NEXT,MOV SBUF,A
LOOP,JNB TI,LOOP
CLR TI
SETB P1.0
ACALL DELAY
RR A
CPL P1.0
SJMP NEXT
END
第 7章 串行通信接口若采用中断方式,程序清单如下:
ORG 0000H
LJMP MAIN
ORG 0023H
AJMP NEXT
ORG 2000H
MAIN,MOV SCON,#00H
MOV A,#80H
CLR P1.0
MOV SBUF,A
LOOP,SJMP $
ORG 2500H
NEXT,CLR TI
ACALL DELAY
RR A
CPL P1.0
MOV SBUF,A
RETI
END
第 7章 串行通信接口
例 7-3:甲机为发送,乙机为接收。编写双机通信程序。
串行口都工作在方式 1,波特率为 1200,
fosc=11.0592MHz。甲机将内部 RAM
的 20~ 3FH的 32个字节的 ASCII码数据,
在最高位加上奇效验,后由串行口送出。乙机接收到 32个字节数据后,存放在内部 RAM20~ 3FH单元中,波特率和时钟频率和甲机相同。若接收到的数据奇校验出错,则置相应单元为
0FFH。
7.4.3 串行口在方式 1下的应用第 7章 串行通信接口
分析:
波特率选用 T1方式 2,查表 7-4知初值为 E8H。
ASCII码 奇校验 用下面程序设置:
MOV A,#DATA
MOV C,P
CPL C
MOV ACC.7,C
第 7章 串行通信接口甲机发送程序清单:
ORG 2000H
START,MOV TMOD,#20H
MOV TL1,#0E8H
MOV TH1,#0E8H
SETB TR1
MOV SCON,#40H
MOV R0,#20H
MOV R7,#20H
LOOP,MOV A,@R0
MOV C,P
CPL C
MOV ACC.7,C
MOV SBUF,A
NEXT,JNB TI,NEXT
CLR TI
INC R0
DJNZ R7,LOOP
AJMP START
第 7章 串行通信接口乙机接收程序清单:
ORG 2000H
START,MOV TMOD,#20H
MOV TL1,#0E8H
MOV TH1,#0E8H
SETB TR1
MOV R0,#20H
MOV R7,#20H
LOOP,MOV SCON,#50H
NEXT,JNB RI,NEXT
CLR RI
MOV A,SBUF
MOV C,P
CPL C
第 7章 串行通信接口乙机接收程序清单:
JC ERROR
ANL A,#7FH
MOV @R0,A
LOOP,INC R0
DJNZ R7,LOOP
AJMP START
ERROR,MOV @R0,#0FFH
SJMP LOOP1
第 7章 串行通信接口
7.4.4 串行口在方式 2,3下的应用
1、多机通信原理:
MCS-51的串行口在方式 2,3下具有多机通信功能,
可实现一台主机和多台从机之间的通信。
主机发送的信息可以传送到各个从机或指定的从机,
而各从机发送的信息只能主机接收。通信直接以 TTL电平进行,主从机之间的连线以不超过 1m为宜。此外,各从机应当编址,以便主机能按地址找到通信对象。
第 7章 串行通信接口第 7章 串行通信接口
2、多机通信初始化:
初始化时,主机 的 SM2应当设置为 0(可接受主机任意信息),从机 SM2应当设置为 1(只收地址祯)。
n 地址,用于指示所需要的通信的从机地址,由串行数据的第九位 RB8为,1”来标识。
如:上图中从机地址定义为,00H,01H,02H…,发送 1号机的地址祯为:
起始位 0 1号机地址 第 9位 1 停止位 1
0 10000000 1 1
第 7章 串行通信接口
2、多机通信初始化:
2) 数据,当从机确认主机呼叫自己就把 SM2设置为 0,可以接收数据,主机发送数据由第 9位为,0”来标识。
如向从机发送字 20H时,其数据祯为:
起始位 0 数据 第 9位 0 停止位 1
0 00000100 0 1
第 7章 串行通信接口
3、多机通信过程:
1) 定义从机地址,00~ 0FEH,最多接入 255台从机。
2) 从机在初始化过程中,将串行口编程为方式 2或 3;并使
SM2=1,处于只接收地址帧状态。 REN=1,允许串行口接收。
3) 主机的 TB8设置为 1,表示发送地址,发送欲通信的从机地址。
4) 若从机的串行口接收到主机发来的串行地址帧时,由于第 9位 TB8=1,置中断标志 RI为 1。
第 7章 串行通信接口
3、多机通信过程:
5) 各从机分别响应中断,并进入各自的中断服务程序进行地址核对。
6) 被寻址的从机确认后,将自身的 SM2清 0,准备和主机通信。地址不符的从机 SM2保持为 1,无法接收主机的数据。
7) 主机按一定的通信协议确认无误后,进行正式通信。主机向被寻址的从机发送命令,准备与从机进行一对一通信。
第 7章 串行通信接口
4、多机通信的协议及程序设计:
1) 主机发送地址,从机验证地址,并把地址消息反馈回主机。
2) 主机验证反馈地址,如相符把 TB8清 0,开始发送数据;如不相符把 TB8置 1,继续发送地址。
第 7章 串行通信接口主机呼叫 1号从机程序清单如下:
MAIN,MOV SCON,#98H
ADR0,MOV SBUF,#01H
MS1,JBC TI,MS2
SJMP MS1
MS2,JBC RI,MR1
SJMP MS2
MR1,MOV A,SBUF
XRL A,#01H
JZ YES
SJMP ADR0
YES,CLR TB8

第 7章 串行通信接口从机响应呼叫程序清单如下:
SUB,MOV SCON,#0B0H
SR1,JBC RI,SR2
SJMP SR1
SR2,MOV A,SBUF
XRL A,#01H
JNZ SR1
CLR SM2
MOV SBUF,#01H
SSR,JBC TI,SR3
SJMP SSR
第 7章 串行通信接口从机响应呼叫程序清单如下:
SR3,JBC RI,SR4
SJMP SR3
SR4,JNB RB8,YES
SETB SM2
SJMP SR1
YES,MOV A,SBUF

第 7章 串行通信接口
51单片机有一个全双工的串行通讯口,和 PC机之间可以方便地进行串口通讯。电脑的串口是 RS232电平的,而单片机的串口是 TTL电平的,两者之间必须有一个电平转换电路,可以采用专用芯片 MAX232,也可以用几个三极管进行转换,但还是用专用芯片简单可靠。
一般采用了三线制连接串口,也就是说和电脑的 9针串口只连接其中的 3根线:第 5脚的 GND、第 2脚的 RXD、
第 3脚的 TXD。
附加:单片机和 PC之间利用串行口进行通信第 7章 串行通信接口
1、串行通信 RS- 232C
1969年公布的通信协议 / EIA(电子工业联合会 )与 BELL /
RS( recommeded standard)代表推荐标准 ;
数据传输速率范围,0~ 20000b/s 标准明确规定串行通信接口的有关问题,如信号线功能、电器特性。
PC机两个 RS- 232串行口 COM1和 COM2,通常是 9针 D
形连接器
RS- 232串行口第 7章 串行通信接口
2,RS-232C的接口信号
9针串口( DB9)
针号 功能说明 缩写
1 数据载波检测 DCD
2 接收数据 RXD
3 发送数据 TXD
4 数据终端准备 DTR
5 信号地 GND
6 数据设备准备好 DSR
7 请求发送 RTS
8 清除发送 CTS
9 振铃指示 DELL
第 7章 串行通信接口
3,RS- 232C电器特性及接口信号
电气特性
在数据线 TXD和 RXD上:逻辑 1=- 3V~- 15V 逻辑 0=+ 3V~+ 15V
在控制线和状态线 RTS,CTS,DSR,DTR和 DCD上:
信号有效=+ 3V~+ 15V 信号无效=- 3V~- 15V
RS- 232C与 TTL转换终端的 TTL器件
RS- 232C是用正负电压来表示逻辑状态,与 TTL以高低电平表示逻辑状态的规定不同第 7章 串行通信接口
① 为实际电路。该电路的不便之处是需要 ± 12V电压,并且功耗较大,不适合用于低功耗的系统。
②采用 MAX232芯片的转换接口 功耗低、价格低廉、
外围电路简单
③为采用分立元件第 7章 串行通信接口
PC机和单片机串行通信接口
C 1 +
C 1 -
C 2 +
C 2 -
V s +
V s -
V C C
G N D
T1 I N T1 O U T
T2 I N T2 O U T
R 1 O U T R 1 I N
R 2 O U T R 2 I N
M A X 2 3 2
R X D
TX D
10
11
8 0 5 1
1
6
2
7
3
8
4
9
52
6
16
15
14
7
13
8
1
3
4
5
11
10
12
9
本章目录