第 7章 串行接口第 7章 MCS-51的串行通信接口
7,1 串行通信概述
7,2 串行口结构及控制寄存器
7,3 串行的工作方式
7,4 串行口应用举例第 7章 串行接口计算机与计算机之间,计算机与外设之间的数据交换称为通信。
计算机与外部设备的通信有两种基本方式:并行通信和串行通信。
一个信息的各位数据被同时传送的通信方法称为 并行通信 。并行通信依靠并行 I/O接口实现。并行通信速度快,但传输线根数多,成本高,适合近距离通信,
通常传送距离小于 30米。
一条信息的各位数据被逐位顺序传输的通信方式称为 串行通信 。串行通信通过串行接口实现。串行通信速度慢,但传输线少,适宜长距离传输。
7,1 串行通信基础第 7章 串行接口异步通信 是以字符为单位传送的,数据传送可靠性高,适合低速通信的场合。
同步通信 方式是以多个字符组成的数据块为单位的方式传送的,数据传输率高,适合高速率、大容量的数据通信。
串行通信的两种基本方式,根据信息传送的格式分为:异步通信和同步通信。
第 7章 串行接口第 7章 串行接口异步通信 用起始位,0”表示字符的开始,然后从低位到高位逐位传送数据,最后用停止位,1”表示字符的结束。一个字符又称为一贞信息。图 a中,一贞信息包括一位起始位,8位数据位和 1位停止位;图 b中,
数据位增加到 9位。在 MCS-51单片机系统中,第九位数据 D8可以用作奇偶效验位,也可以用作地址 /数据贞标志,D8=1表示该贞信息传送的是地址,D8=0表示传送的是数据。两贞信息之间可以有间隔,也可以无间隔,且间隔时间可以任意改变,间隔用空闲位,1”
填充。
异步通信方式:
第 7章 串行接口异步通信中,计算机与外设之间必须约定:
( 1)字符格式 约定好字符的编码形式、奇偶效验位形式以及起始位和停止位的规定。
( 2)波特率 是每秒数据传输的位数。
1波特 =1bps(位 /秒)
异步通信要求发送与接收以相同的波特率进行。
异步通信方式:
第 7章 串行接口同步通信 在数据开始处用 1~ 2个同步字符来指示。
同步通信中,由同步时钟来实现发送和接收的同步。
在发送时要插入同步字符,接收端在检测到同步字符后,就开始接收串行数据。可见,同步通信具有较高的传输速率,通常在几十至几百千波特,但在硬件上要求较高。
同步通信方式:
第 7章 串行接口分为:单工、半双工、全双工串行通信中数据传输方向:
A B
A B
BA
单工半双工全双工第 7章 串行接口全双工异步串行接口 (UART)
数据通信的几个术语:
并行:数据各位同时进行传送串行:数据逐位顺序进行传送
全双工,(串行通信 )收 /发可同时进行半双工,(串行通信 )收 /发不可同时进行
异步串行通信,以字符为单位进行传送同步串行通信,以数据块为单位进行传送波特率 (bps.):单位时间传送的位数第 7章 串行接口
SBUF
(发)
SBUF
(收)
发送控制器 TI
接收控制器 RI
移位寄存器波特率发生器
T1
1
A
累加器
(门 )移位寄存器
RxD
TxD
去申请中断引脚引脚
CP
U
内部
7,2 串行口结构及控制寄存器第 7章 串行接口串行通信接口的结构
两个同名的接收 /发送缓冲寄存器 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位),
波特率可变,按公式计算串行口控制寄存器 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。
串行口控制寄存器 SCON(98H)
第 7章 串行接口
RI,TI:串行口收 /发数据申请中断标志位
= 1 申请中断; = 0 不申请中断
TB8:方式 2,3中,是要发送的第 9位数据。
多机通信中,TB8=0 表示发送的是数据;
TB8=1 表示发送的是地址。(奇偶校验)
RB8:在方式 2,3中,是收到的第 9位数据。
在多机通信中,用作区别地址帧 /数据帧的标志。
(奇偶校验)
SM0 SM1 SM2 REN TB8 RB8 TI R1
REN:串行口接收允许控制位,由软件置位或清 0。
= 1 表示允许接收; = 0 禁止接收。
SCON
第 7章 串行接口
SMOD — — — GF1 GF0 PD 1DL
电源控制寄存器 PCON( 97H)
—— 特殊功能寄存器 PCON不能按位寻址
SMOD:在串行口工作方式 1,2,3 中,是波特率加倍位
=1 时,波特率加倍
=0 时,波特率不加倍。
(在 PCON中只有这一个位与串口有关 )
PCON
第 7章 串行接口串行口工作方式 0
工作方式 0,8位移位寄存器 I/O方式
发送,SBUF中的串行数据由 RxD逐位移出;
TxD输出移位时钟,频率 =fosc1/12;
每送出 8位数据 TI就自动置 1;
需要用软件清零 TI。
接收:串行数据由 RxD逐位移入 SBUF中;
TxD输出移位时钟,频率 =fosc1/12;
每接收 8位数据 RI就自动置 1;
需要用软件清零 RI。
第 7章 串行接口第 7章 串行接口
经常配合“串入并出”“并入串出”移位寄存器一起使用来扩展接口(第六章)。
方式 0工作时,多用查询方式编程:
发送,MOV SBUF,A 接收,JNB RI,$
JNB TI,$ CLR RI
CLR TI MOV A,SBUF
工作方式 0,8位移位寄存器 I/O方式 (续 )
复位时,SCON 已经被清零,缺省值,方式 0。
接收前,务必先置位 REN=1 允许接收数据。
第 7章 串行接口串行口方式 0的扩展应用串行口常用工作方式 0扩展出并行 I/O口,
工作方式 1,2,3则常用于串行通信
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单片机第 7章 串行接口
特点,8位异步通信接口,传送一帧信息为 10位,
包括 1位起始位,8位数据位,1位停止位。
移位脉冲由定时器 T1的溢出信号经过 16或
32分频获得,因此,波特率可变。
RxD引脚为接收端,TxD引脚为发送端工作方式 1的接收 /发送( 8位异步通信接口)
常用于双机通信
接收信息数据有效的条件:
RI=0,表明接收缓冲器为空,即用户已经从 SBUF中取走数据,可再次写入。
接收到有效的停止位,1”(或 SM2=0)
把停止位放入 RB8中,才能置位 RI。
第 7章 串行接口第 7章 串行接口
T1作波特率发生器时初始化包括,
选定时器工作方式 2(TMOD选 8位自动重装 );
将计算 (或查表 )出的初值 X赋给 TH1,TL1;
启动 T1 (SETB TR1);
对 T1不要开中断 !!
工作方式 1的接收 /发送( 8位异步通信接口)
串行口的初始化包括,
对 SCON选工作方式对 PCON设波特率加倍位,SMOD”(缺省值 =0)
如果是接收数据,仍要先置,1”REN位波特率 =(2SMOD/32)?T1的溢出率第 7章 串行接口
由于波特率固定,常用于单片机间多机通讯。
数据由 8+1位组成,通常附加的一位
(TB8/RB8)用于,奇偶校验,或地址 /数据贞标识位。
工作方式 2:
9位 UART(1+8+1+1位 )两种波特率
方式 2的波特率 = fosc? 2SMOD/64
即,fosc?1/32 或 fosc?1/64 两种第 7章 串行接口第 7章 串行接口工作方式 3:当 SM0,SM1为 11时,串行口工作于方式 3
9位 UART(1+8+1+1位 ) 波特率可变串口方式 3和方式 2唯一的区别是波特率机制不同 。
方式 2的波特率固定为时钟周期的 32或 64分频,不可变。此工作方式与其他串行通讯设备连接困难,因此不常用。
方式 3的 波特率可变,按前面的公式计算:
波特率 =(2SMOD/32)?T1的溢出率
波特率 =
2SMOD? fosc
32? 12(2n - X)
其中,X 是定时器初值第 7章 串行接口方式 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
第 7章 串行接口波特率的设定
方式 0时,波特率是时钟频率的 1/12,是固定不变的。
方式 2时波特率可变,是波特率 = fosc? 2SMOD/64
方式 1,3时,波特率是可变的波特率 =(2SMOD/32)?T1的溢出率
初值 X = 2n -
2SMOD? fosc
32? 波特率? 12
第 7章 串行接口常用串行口波特率以及定时器 T1各参数之间的关系:
第 7章 串行接口
例 7-1:设串行口工作于方式 3,SMOD
= 0,fosc= 11.059MHz,定时器 /计数器
T1工作于定时、方式 2,TL1,TH1的初值为 FDH,计算波特率。
9600
第 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 A,SBUF
RETI
END
第 7章 串行接口
例 7-3:甲机为发送,乙机为接收。编写双机通信程序。
串行口都工作在方式 1,波特率为 1200,
fosc=11.0592MHz。甲机将内部 RAM的 20~
3FH的 32个字节的 ASCII码数据,在最高位加上奇效验,后由串行口送出。乙机接收到 32个字节数据后,存放在内部 RAM20~ 3FH单元中,
波特率和时钟频率和甲机相同。若接收到的数据奇校验出错,则置相应单元为 0FFH。
分析:
波特率选用 T1方式 2,查表 7-4知初值为 E8H。
ASCII码奇校验用下面程序设置:
MOV A,#DATA
MOV C,P
CPL C
MOV ACC.7,C
7.4.3 串行口在方式 1下的应用第 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
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下的应用
多机通信原理:
MCS-51的串行口在方式 2,3下具有多机通信功能,
可实现一台主机和多台从机之间的通信。
主机发送的信息可以传送到各个从机或指定的从机,
而各从机发送的信息只能主机接收。通信直接以 TTL
电平进行,主从机之间的连线以不超过 1m为宜。此外,
各从机应当编址,以便主机能按地址找到通信对象。
多机通信时,充分利用了单片机内的多机通信位
SM2。当从机 SM2= 1时,从机只接收主机发出的地址帧信息(第 9位为 0),对数据帧不予理睬;而当 SM2
= 0时,可接收主机发出的所有信息。
初始化时,主机的 SM2应当设置为 0,从机 SM2应当设置为 1。
第 7章 串行接口第 7章 串行接口多机通信过程:
1) 定义从机地址,00~ 0FEH,最多接入 255台从机。
2) 从机在初始化过程中,将串行口编程为方式 2或 3;并使 SM2=1,
处于只接收地址帧状态。 REN=1,允许串行口接收。
3) 主机的 TB8设置为 1,表示发送地址,发送欲通信的从机地址。
4) 若从机的串行口接收到主机发来的串行地址帧时,由于第 9位
TB8=1,置中断标志 RI为 1。
5) 各从机分别响应中断,并进入各自的中断服务程序进行地址核对。
6) 被寻址的从机确认后,将自身的 SM2清 0,准备和主机通信。
地址不符的从机 SM2保持为 1,无法接收主机的数据。
7) 主机按一定的通信协议确认无误后,进行正式通信。主机向被寻址的从机发送命令,准备与从机进行一对一通信。
第 7章 串行接口多机通信的协议及程序设计:
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
SR3,JBC RI,SR4
SJMP SR3
SR4,JNB RB8,YES
SETB SM2
SJMP SR1
YES,MOV A,SBUF

第 7章 串行接口作 业
1、什么是并行通信和串行通信?什么是异步通信和同步通信?
2,MCS-51单片机的串行口有哪几种工作方式?他们各自的功能是什么?
3、试述串行口方式 0和方式 1下发送与接收信息的过程。