28
第6第 MCS-51 第第第第 6.1 第第第第第第第第第 6.2 MCS-51 第第第第第第 6.3 第第第第第第第第 6.4 第第第第 6.5 第第第第第第第第 退退 退退

第 6 章 MCS-51 串行接口

Embed Size (px)

DESCRIPTION

第 6 章 MCS-51 串行接口. 6.1 串行通信的基本概念 6.2 MCS-51 串行口的结构 6.3 串行口的工作方式 6.4 应用举例 6.5 串行通信接口设计. 退出. 6.1 串行通信的基本概念. 6.1.1 并行通信与串行通信 计算机的 CPU 与外部设备之间的信息交换,以及计算机与计算机之间的信息交换过程称为通信。 1 .并行通信 数据字节的各位同时传送的通信方式。并行通信的优点是数据传送速度快,缺点是占用的传输线条数多,适用于近距离通信。. 2 .串行通信 - PowerPoint PPT Presentation

Citation preview

第 6 章 MCS-51 串行接口

6.1 串行通信的基本概念

6.2 MCS-51 串行口的结构

6.3 串行口的工作方式

6.4 应用举例

6.5 串行通信接口设计

退出退出

6.1 串行通信的基本概念 6.1.1 6.1.1 并行通信与串行通信并行通信与串行通信 计算机的计算机的 CPUCPU 与外部设备之间的信与外部设备之间的信

息交换,以及计算机与计算机之间的信息交息交换,以及计算机与计算机之间的信息交换过程称为通信。换过程称为通信。

11 .并行通信.并行通信 数据字节的各位同时传送的通信方式。数据字节的各位同时传送的通信方式。

并行通信的优点是数据传送速度快,缺点是并行通信的优点是数据传送速度快,缺点是占用的传输线条数多,适用于近距离通信。占用的传输线条数多,适用于近距离通信。

22 .串行通信.串行通信 数据字节的各位一位一位地依次传送的通数据字节的各位一位一位地依次传送的通

信方式。串行通信的速度慢,但占用的传输线信方式。串行通信的速度慢,但占用的传输线条数少,适用于远距离的数据传送。条数少,适用于远距离的数据传送。

3. 3. 波特率波特率 每秒钟传送的二进制数据的位数。每秒钟传送的二进制数据的位数。 4. 4. 异步通信格式异步通信格式

6.2 MCS-51 串行口的结构 62.1 串行口的构成

发送发送 // 接收缓冲器:接收缓冲器: SBUF SBUF 物理上是独立的两个缓冲器。物理上是独立的两个缓冲器。 MOV SBUF, AMOV SBUF, A ; 数据由; 数据由 TXD(P3.1 TXD(P3.1 即第即第 1111 引脚)送出 引脚)送出

MOV MOV AA ,SBUF,SBUF ;数据由;数据由 RXD(P3.0 RXD(P3.0 即第即第 1010 引脚)接收引脚)接收特殊功能寄存器特殊功能寄存器 SCON(98H), PCON(87H)SCON(98H), PCON(87H) 可以用软件改变两者的内容来控制工作方式和波特率。可以用软件改变两者的内容来控制工作方式和波特率。

CPU

发送器SBUF

SCON

PCON

接收器SBUF

TXD

RXD

6.2.2 串行口控制寄存器 SCON

1 .串行口的方式选择位 SM0 、 SMl

SM0 SM1 SM2 REN TB8 RB8 TI RI

位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H

D7 D6 D5 D4 D3 D2 D1 D0

SM0 SM1

0 0

0 1

1 0

1 1

方式0

1

2

3

功 能 说 明 移位寄存器方式,波特率为 fOSC/12,用于扩展I/O口 8位UART,波特率可变(T1溢出率/n)

9位UART,波特率为 fOSC/64或 fOSC/32

9位UART,波特率可变(T1溢出率/n)

2 .允许方式 2 和方式 3 进行多机通信控制位 SM2 在方式 2 或方式 3 中,若 SM2=0 ,而接收到的第 9 位

数据为 0,1 ,接收。 若 SM2=1 ,而接收到的第 9 位数据为 0 ,则不接收 , 为 1 ,

则接收。 在方式 0 时, SM2 必须是 0 。 在方式 1 时,若 SM2=1 ,则只有收到有效的停止位时

才会接收。 3 .允许串行接收位 REN REN=1 允许串行接收, REN=0 则禁止串行接收。 4 . TB8 是工作在方式 2 和方式 3 时,要发送的第 9 位数据。 5 . RB8 当工作在方式 2 和方式 3 时,为接收到的第 9 位数据。

6 .发送结束标志位 TI 每当发送完一帧串行信息,就由硬件置 1 。 7 .接收结束标志位 RI 串行接收到停止位的中间点时由硬件置 1 。

6.2.3 特殊功能寄存器 PCON 特殊功能寄存器 PCON ,格式如下:

SMOD 为波特率系数选择位。其作用是使波特率加倍。位

PCON PD IDL

7 6 5 4 3 2 1 0

波特率

一一 . . 工作方式工作方式 22 时,波特率取决于时,波特率取决于 PCONPCON 中的 中的 SS

MODMOD 位的值,当位的值,当 SMOD=0SMOD=0 时,波特率为时,波特率为 foscfosc 的的1/641/64 ;当;当 SMOD=1SMOD=1 时,波特率为时,波特率为 foscfosc 的的 1/321/32 ,,用公式表示为用公式表示为 ::

工作方式工作方式 22 波特率波特率 == (( 22SMODSMOD/64/64 )) ×fosc×fosc

二 二 . . 方式方式 11 与方式与方式 33 的波特率的波特率波特率波特率 == 定时器定时器 T1T1 的溢出率/的溢出率/ nn ;而溢出率;而溢出率 =1/=1/ 溢出周溢出周

期;期;溢出周期溢出周期 =12/fosc *(=12/fosc *( 终值终值 -- 初值)。因此,当定时器/计初值)。因此,当定时器/计

数器数器 T1T1 作于自动重装初值方式作于自动重装初值方式 22 时,终值为时,终值为 256256 。。 若波特率已给定,就可以确定定时器若波特率已给定,就可以确定定时器 T!T! 的初值的初值 TLlTLl 和和 TT

HlHl 。。 SMOD波特率 fOSC C/T定时器1方式

重装载值

方式0:1Mb

方式2:375Mb

方式1,3:62.5Mb19.2Kb

9.6Kb

4.5Kb

2.4Kb

1.2Kb

137.5Kb

110b

110b

12MHz

12MHz

12MHz

11.059MHz

11.059MHz

11.059MHz

11.059MHz

11.059MHz

11.986MHz

6MHz

12MHz

1

1

1

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

2

2

2

2

2

2

2

2

1

0FFH

0FDH

0FAH

0F4H

0E8H

1DH

72H

0FDH

0FEEBH

6.3 6.3 串行口的工作方式串行口的工作方式 66.3.2 .3.2 工作方式工作方式 11

写入SBUF

SEND

起始D0 D1 D2 D3 D4 D5 D7

TXD

D6

aTI

bRI

起始D0 D1 D2 D3 D4 D5 D7

RXD

D6 停止位

位采样

串行口方式 1 的时序(a) 发送时序; (b) 接收时序

6.3.2 6.3.2 工作方式工作方式 2,32,3

RI

写入SBUF

SEND

aTI

b

起始D0 D1 D2 D3 D4 D5 D7

TXD

D6 TB8

起始D0 D1 D2 D3 D4 D5 D7

RXD

D6 RB8

位采样

串行口方式 2 、 3 的时序

6.4 串行口的应用举例

【例 5-1 】方式 1 。有两台有两台 80318031 单片机相距很单片机相距很近,直接将它们的串行口相连,近,直接将它们的串行口相连, 1#1# 机的机的 TXDTXD

接接 2#2# 机的机的 RXDRXD ,, 2#2# 机的机的 TXDTXD 接接 1#1# 机的机的 RXDRXD

,二机的,二机的 GNDGND 相连。相连。二机的晶振频率均为二机的晶振频率均为 11.0592MHZ11.0592MHZ ,通信的波,通信的波特率为特率为 4500bps4500bps 。现将第一台。现将第一台 80318031 单片机片内单片机片内RAM40HRAM40H ~~ 5FH5FH 单元内的数据,串行发送到第单元内的数据,串行发送到第二台二台 80318031 单片机片内单片机片内 RAM60HRAM60H ~~ 7FH7FH 单元中单元中。。

1#1# 单片机发送程序:单片机发送程序:TX: MOV TMOD , #20HTX: MOV TMOD , #20H MOV TH1 , #0FAHMOV TH1 , #0FAH MOV TL1 , #0FAHMOV TL1 , #0FAH SETB TR1 SETB TR1 ;波特率的设定;波特率的设定 MOV SCON , #40HMOV SCON , #40H ;设定工作方式;设定工作方式 11 发送发送 MOV R0 , #40HMOV R0 , #40H ;设发送数据的地址指针;设发送数据的地址指针 MOV R2 , #20HMOV R2 , #20H ;设发送数据长度;设发送数据长度LOOP: MOV A , @R0LOOP: MOV A , @R0 ;取发送数据送;取发送数据送 AA MOV SBUF , AMOV SBUF , A ;启动发送;启动发送WAIT: JNB TI , WAITWAIT: JNB TI , WAIT ;判发送中断标志;判发送中断标志 CLR TICLR TI INC R0INC R0 DJNZ R2 , LOOPDJNZ R2 , LOOP RETRET

2#2# 单片机接收程序:单片机接收程序: RX: MOV TMOD , #20HRX: MOV TMOD , #20H MOV TH1 , #0FAHMOV TH1 , #0FAH MOV TL1 , #0FAHMOV TL1 , #0FAH SETB TR1SETB TR1 MOV SCON , #50HMOV SCON , #50H ;设定工作方式;设定工作方式 11 接收接收 MOV R0 , #60HMOV R0 , #60H MOV R2 , #20HMOV R2 , #20HLOOP:LOOP: JNB RI , LOOP JNB RI , LOOP ;等待接收数据;等待接收数据 CLR RICLR RI MOV A , SBUFMOV A , SBUF ;读入一帧数据;读入一帧数据 MOV @R0 , AMOV @R0 , A ;接收正确;接收正确 INC R0INC R0 DJNZ R2 , LOOPDJNZ R2 , LOOP RETRET

【例 5-2 】附加的第 9 位 ---- 奇偶校验位。 有两台有两台 80318031 单片机相距很近,直接将它们的单片机相距很近,直接将它们的

串行口相连,串行口相连, 1#1# 机的机的 TXDTXD 接接 2#2# 机的机的 RXDRXD ,,2#2# 机的机的 TXDTXD 接接 1#1# 机的机的 RXDRXD ,二机的,二机的 GNDGND

相连。二机的晶振频率均为相连。二机的晶振频率均为 11.0592MHZ11.0592MHZ 。。 现将第一台现将第一台 80318031 单片机片内单片机片内 RAM40HRAM40H ~~ 5F5F

HH 单元内的数据,串行发送到第二台单元内的数据,串行发送到第二台 80318031 单单片机片内片机片内 RAM60HRAM60H ~~ 7FH7FH 单元中。 单元中。

方式 2 :波特率为 fosc/64 1# 单片机发送程序:TX: MOV SCON , #80HTX: MOV SCON , #80H ;设定工作方式;设定工作方式 22 发发

送送 MOV R0 , #40HMOV R0 , #40H ;设发送数据的地址指针;设发送数据的地址指针 MOV R2 , #20HMOV R2 , #20H ;设发送数据长度;设发送数据长度LOOP: MOV A , @R0LOOP: MOV A , @R0 ;取发送数据送;取发送数据送 AA MOV C , PSW.0 MOV TB8 , C ;奇偶位送 TB8 MOV SBUF , AMOV SBUF , A ;启动发送;启动发送WAIT: JNB TI , WAITWAIT: JNB TI , WAIT ;判发送中断标志;判发送中断标志 CLR TICLR TI INC R0INC R0 DJNZ R2 , LOOPDJNZ R2 , LOOP RETRET

2# 单片机接收程序:出错时, F0=1 RX: MOV SCON , #90HRX: MOV SCON , #90H ;设定工作方式;设定工作方式 22 接收接收 MOV R0 , #60HMOV R0 , #60H MOV R2 , #20HMOV R2 , #20HLOOP:LOOP: JNB RI , LOOP JNB RI , LOOP ;等待接收数据;等待接收数据 CLR RICLR RI MOV A , SBUFMOV A , SBUF ;读入一帧数据;读入一帧数据 JB PSW.0 , PP1 ;判接收端奇偶 JB RB8 , ERROR ;判发送端奇偶 SJMP RIGHTPP1: JNB RB8 , ERROR ;接收出错RIGHT: MOV @R0 , A MOV @R0 , A ;接收正确;接收正确 INC R0INC R0 DJNZ R2 , LOOPDJNZ R2 , LOOP RETRETERROR: SETB PSW.5ERROR: SETB PSW.5 ;置出错标志;置出错标志 RETRET

方式 3 :波特率为 4500bps4500bps

在上述方式在上述方式 22 的程序开始,加上波特率设定指令:的程序开始,加上波特率设定指令: MOV TMOD , #20HMOV TMOD , #20H MOV TH1 , #0FAHMOV TH1 , #0FAH MOV TL1 , #0FAHMOV TL1 , #0FAH SETB TR1SETB TR1 其它同。其它同。

【例 5-3 】附加的第 9 位 ---- 多机通信。 设计一个主从方式的多机通信系统,其中有设计一个主从方式的多机通信系统,其中有

一个一个 80318031 系统为主机,系统为主机, nn 个个 80318031 应用系统为从机。应用系统为从机。不考虑口驱动问题。不考虑口驱动问题。

一、硬件组成:如图所示。主机的一、硬件组成:如图所示。主机的 RXDRXD 端与所有从端与所有从机的机的 TXDTXD 端相连,主机的端相连,主机的 TXDTXD 端与所有从机的端与所有从机的 BXBX

DD 端相连。端相连。

主机

TXD

RXD

0#8031

TXD RXD

1#8031

TXD RXD

2#8031

TXD RXD

二、软件设计依据:二、软件设计依据: SM2=1 RB8=1, SM2=1 RB8=1, 接收。 接收。 RB8=0,RB8=0, 不接收不接收 SM2=0 RB8=1, RB8=0, SM2=0 RB8=1, RB8=0, 均接收。均接收。 (1)(1) 主机向从机发送地址信息时,其附加的主机向从机发送地址信息时,其附加的

第第 99 个数据位规定为个数据位规定为 11 ;主机向从机发送的数;主机向从机发送的数据信息据信息 (( 包括向从机下达的命令包括向从机下达的命令 )) ,其第,其第 99 位位规定为规定为 00 。。

(2)(2) 从机在建立与主机通信之前,随时处于从机在建立与主机通信之前,随时处于对通信线路的监听状态对通信线路的监听状态 (SM2=1)(SM2=1) ,因此只能收,因此只能收到主机发送的地址信息到主机发送的地址信息 (( 第第 99 位为位为 1)1) ,非地址,非地址信息被丢失。信息被丢失。

(3)(3) 从机收到地址后应进行识别。是否主机从机收到地址后应进行识别。是否主机呼叫本站,如果地址符号,即可确认是呼叫本呼叫本站,如果地址符号,即可确认是呼叫本站。这时从机应解除监听状态,令站。这时从机应解除监听状态,令 SM2=0;SM2=0; 其其它从机由于地址不符,仍处于监听状态,继续它从机由于地址不符,仍处于监听状态,继续保持保持 SM2=1SM2=1 ,所以无法接收主机的数据。,所以无法接收主机的数据。

主机程序:主机程序: (( 设呼叫设呼叫 #1#1号从机)号从机)MASTRMASTR :: MOV PCONMOV PCON ,, #80H#80H MOV SCONMOV SCON ,, #98H #98H ;设串行口为方式;设串行口为方式 22 ,, TB8=1TB8=1 MOV R0MOV R0 ,, #30H #30H ;发送数据块地址指针;发送数据块地址指针 MOV R2MOV R2 ,, #10H #10H ;块长度计数初值;块长度计数初值 MOV AMOV A ,, #01H #01H ;从机地址;从机地址 #01#01

MOV SBUFMOV SBUF ,, A A ;发呼叫地址;发呼叫地址WAIT1WAIT1 : : JBC TIJBC TI ,, PP1PP1 SJMP WAIT1SJMP WAIT1

PP1PP1 : : CLR TB8 CLR TB8 ;清地址标志,发送数据;清地址标志,发送数据 MOV AMOV A ,, @R0@R0 MOV SBUFMOV SBUF ,, AA

WAIT2WAIT2 : : JBC TIJBC TI ,, PP2PP2

SJMP WAIT2SJMP WAIT2

PP2PP2 : : INC R0 INC R0

DJNZ R2DJNZ R2 ,, PP1PP1

RETRET

#1#1 从机响应呼叫的联络程序:从机响应呼叫的联络程序:SLAVESLAVE :: MOV PCONMOV PCON ,, #80H #80H

MOV SCONMOV SCON ,, #0B0H#0B0H ;设串行口方式;设串行口方式 22 ,, SM2=1SM2=1 ,, RENREN=1=1

MOV R0,#30HMOV R0,#30H

MOV R2, #10HMOV R2, #10H

SRR1: JBC RI,SRR2 ; SRR1: JBC RI,SRR2 ; 等待主机发送(监听)等待主机发送(监听) SJMP SRR1SJMP SRR1

SRR2: MOV A, SBUF; SRR2: MOV A, SBUF; 取出呼叫地址取出呼叫地址 XRL A, #01HXRL A, #01H

JNZ SRR1JNZ SRR1 ; 不是本机地址,继续监听; 不是本机地址,继续监听 CLR SM2; CLR SM2; 是本机地址,解除监听,可以取其它数据是本机地址,解除监听,可以取其它数据SRR3: JBC RI, PP3; SRR3: JBC RI, PP3; 等待主机数据等待主机数据 SJMP SRR3SJMP SRR3

PP3: MOV A, SBUFPP3: MOV A, SBUF

MOV @R0,AMOV @R0,A

INC R0INC R0

DJNZ R2, SRR3DJNZ R2, SRR3

RET RET

5.5 串行通信接口设计 5.5.1 通信双方的硬件设计:如果通信双方的通信距离

很近,可以将单片机的串行口直接相连,以实现全双工的双机通信,如图所示。

8031

TXD

RXD

GND

应用系统(甲)

8031

TXD

RXD

GND

应用系统(乙)

如果通信距离比较远,将 TTL电平转换成RS—232C 或 423 或 422电平,以提高传输可靠性。如果通信距离再增加,必须在系统中配置调制—解调器或采取其它措施。

如: MCl488 发送器将 TTL电平转换成 RS-232C电平, MCl489 接收器将 RS-232C电平转换成 TTL电平电路:

8031

TXD

RXD

8031

TXD

RXD

&

1

&

1

MC1488

MC1489

5.5.2 RS-232C 接口电平调整

RS-232C逻辑与 TIL 、 MOS逻辑电平不同。逻辑 0: +5至 +15V 之间 ; 逻辑 1:-5至 -15V 之间。抗干扰性能好。

目前 RS-232C 与 TTL 的电平转换最常用的芯片是1488 、 1489 ,其内部结构与管脚如图所示。

1

2

3

4

5

6

7 8

9

10

11

12

13

14VEE

INA

OUTA

INB1

INB2

OUTB

GND OUTC

INC2

INC1

OUTD

IND2

IND1

VCC1488 1

2

3

4

5

6

7 8

9

10

11

12

13

14VEE

响应控制A

OUTA

INB

响应控制B

OUTB

GND OUTC

响应控制C

INC

OUTD

响应控制D

IND

VCC1489

a b

TTL 和 RS-232C 的电平调整电路连接如图所示。

1/4DS1488+12VDC

4

5

TTL

数据输入

1 7

-12VDC

6

14

RS-232C

1/4DS1489+5VDC

1 TTL

27

3

14

数据输出

选用的滤波电容

5.5.3 RS—423 接口电平调整 RS—423 标准提供最高传输速率为 100kB / s ,最大

传送距离为 12m 的单向单端数据传输。 逻辑 1:4V至 6V ; 逻辑 0 : -6V 至 -4V

TTL 和 RS-232C 的电平调整电路连接如图所示。电路中采用的驱动器和接收器分别为 3691 和 26L32 。

1/4DS3691+5V

4

5

TTL数据入 2

4

- 5V

15

1 RS-423

+5V

1 TTL2

12

3

16

数据出

选用的滤波电容器

+5V +5V

+

-

1/ 4 3691 1/ 4 26L32

VCC CEX1

MDDE

GND VEE

VCC

GND

EE

47k47k

8 8

5.5.4 RS—422 接口电平调整 RS—422 标准提供单向平衡传输线路传送数据。传输

率最大为 10MB / s ,最大传输距离可达 120m ,如果采用较低传输速率,则可在最大距离为 1200m 之间传送数据,这个标准允许驱动器输出为土 2V 到 6V 。

接口信号电平转换调整电路如图。电路中采用的驱动器和接收器分别为 3691 和 26L32

+5V

4

5

TTL数据入 2

4

-5V

15

1 RS-422

+5V

1 TTL2

12

3

16

数据出14

+

-

1/ 2 3691 1/ 4 26L32

VCC

MODE

GNDVEE

VCC

GND

EE

47k

8 8TS