9.3 AT89C51 串行接口的应用与编程

34
第9第 第第第第第第第第第第第 9.3 AT89C51 第第第第第第第第第第 9.3.1 工工工工 0 工工工 工工工工工工工 0 工工工工工工工工 I/O 工工 工工工工工工工工 工工工工工 工 ,一 8 工工工工工工工工工工工工工工工工工 74HC164 工 CD4 094 工工工工工工工工工工 工工工工工 工工工工工工工工工工工工工工工工工工 。,一 工工 74HC165 工 CD4014

description

9.3 AT89C51 串行接口的应用与编程. 9.3.1 工作方式 0 的应用 串行口工作方式 0 主要用于扩展并行 I/O 口,扩展成并行输出口时,需要外接一片 8 位串行输入并行输出的同步移位寄存器 74HC164 或 CD4094 。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器 74HC165 或 CD4014 。. 数据的串行输出或输入可采用中断方式,也可采用查询标志位 TI 、 RI 的方法,在移位初始化时,要进行相应的设置。 - PowerPoint PPT Presentation

Transcript of 9.3 AT89C51 串行接口的应用与编程

Page 1: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

9.3 AT89C51 串行接口的应用与编程

9.3.1 工作方式 0 的应用 串行口工作方式 0 主要用于扩展并行 I/O 口,扩展

成并行输出口时,需要外接一片 8 位串行输入并行输出的同步移位寄存器 74HC164 或 CD4094 。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器 74HC165 或 CD4014 。

Page 2: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

数据的串行输出或输入可采用中断方式,也可采用查询标志位 TI 、 RI 的方法,在移位初始化时,要进行相应的设置。

[ 例 9.1] 利用串行口工作在方式 0 ,外扩一片 74H

C164 构成一个三位 LED 动态显示器,并将内部 RAM

显示单元 65H 、 66H 、 67H 中的内容输出显示。如图9-14 所示。

Page 3: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

1

1

1

P1.0

P1.1

P1.2

RXD

TXD

89C51

74LS164

SA

SB

CLK

VCC

CLR

£«5 V

图 9-14 串行动态显示图

Page 4: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

主程序如下:ORG 0100H

STPRT : MOV SCON , #00H

;串行口初始化为方式 0

SETB P1.2 ;消去最高显示位 SETB P1.1

MOV SBUF , 65H ;传送最低显示位 JNB TI , $ ;传送没结束,等待

Page 5: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

CLR P1.0 ;最低位显示 CLR TI ;清中断标志位 LCALL DSSJ ;调延时子程序,维持状

态 SETB P1.0 ;消去最低显示位 MOV SBUF , 66H ;传送中间显示位 JNB TI , $ ;等待传送结束 CLR P1.1 ;显示中间位 CLR TI ;清中断标志位

Page 6: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

LCALL DSSJ ;调延时子程序,维持状态

SETB P1.1 ;消去中间显示位 MOV SBUF , 67H ;传送最高显示位 JNB TI , $ ;等待传送结束 CLR P1.2 ;显示最高显示位 CLR TI ;清中断标志位 RET

Page 7: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

[ 例 9.2] 利用串行口工作方式 0 ,扩展一片并行输入串行输出的移位寄存器 74LS165 ,如图 9-15 所示,构成一个 8 位并行输入口,输入 8 位开关量 ( 每一开关量代表不同功能,如启动、停止等 ) ,并将其存入固定单元 60H 中。

Page 8: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

图 9-15 串行口扩展输入并行口

Page 9: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

串行口工作在方式 0 ,且处于接收状态,则 REN 置为“ 1” , SCON 的控制字为 10H ,并行数据采用间隔调用子程序的方式读入,程序如下:

Page 10: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

START : CLR P1.0 ;输入并行数据

SETB P1.0 ;允许串行移位,等待移位脉冲

MOV SCON , #10H

;设串行口方式 0 ,启动接收

JNB RI , $ ;等待接收一帧数据

CLR RI ;清中断标志位

MOV A , SBUF ;读入接收数据

MOV 60H , A ;存入固定单元

RET

Page 11: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

9.3.2 工作方式 1 的应用 串行方式 1 主要用于异步双机通信,波特率由定时

器 T1 产生。 [ 例 9.3] 利用串行口方式 1 实现一个数据块的传送,

数据块存在内部 RAM 的 60H ~ 6FH 中,波特率选为2400 ,并形成和校验数据一起发送。

Page 12: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

串行口工作为方式 1 ,且处于发送的单工模式,则SCON 控制字为 40H 。方式 1 的波特率由 T1 产生,设T1 工作于方式 2 自动重装初值模式,晶振频率为 11.0

592 MHz 时,计数初值为 F4H 。用于和校验的算术和存放在 70H 中,并在数据块的末尾传送出去。

通过上面的分析,采用查询法传送数据块的子程序如下:

Page 13: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

MOV TMOD , #20H ;设置 T1 为工作方式 2

MOV TL1 , #0F4H ;给 T1 送初值MOV TH1 , #0F4H

SETB TR1

MOV SCON , #40H ;设置串行口为工作方式1

MOV R0 , #60H ;数据块首址送 R0

MOV R1 , #10H ;数据块长度送 R1

MOV 70H , #00H

Page 14: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

DWFP : MOV A , @R0

MOV SBUF , A ;发送数据 ADD A , 70H ;对和校验求和 MOV 70H , A

JNB TI , $ ;未发送完等待 CLR TI

Page 15: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

INC R0

DJNZ R1 , DWFP

MOV SBUF , A ;发送和校验JNB TI , $

CLR TI

RET

Page 16: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

9.3.3 工作方式 2 与工作方式 3 的应用 方式 2 和方式 3 都是 11 位异步通信方式,所不同处

仅在于波特率。方式 2 的波特率只有固定的两种,而方式 3 的波特率则可由用户设定。

[ 例 9.4] 利用串行口方式 2 编制一发送程序,将片内 RAM 中 60H ~ 6FH 单元的数据串行发送出去,第九数据位 TB8 作奇偶校验位。

根据要求,将串行口设置为方式 2 、单工发送,则SCON 控制字为 80H 。波特率选为 fosc/64 。采用中断方式发送的主程序和中断程序如下:

Page 17: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

ORG 0000H

AJMP ZCX1 ;转主程序

NOP

0RG 0023H ;串行中断程序

INC R0 ;被发送数据地址增 1

MOV A , @R0 ;取出待发数据

MOV C , PSW.0 ;将奇偶位送 TB8

MOV TB8 , C

MOV SBUF , A ;发送数据

DJNZ R1 , CSJS ;判断是否发送完

CLR ES ;发送完关中断

Page 18: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

CSJS : CLR TI ;清中断标志 RETI

NOP

ZCX1 : ORG 0100H ;主程序 MOV SP , #20H ;置堆栈指针 MOV SCON , #80H ;串行口设置为方

式 2

MOV PCON , #00H ;波特率选为 fosc/6

4

MOV R0 , #60H ;数据块首址送 R0

Page 19: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

MOV R1 , #10H ;数据块长度送 R1

SETB EA ;开总中断 SETB ES ;开串行口中断 MOV A , @R0 ;取出待发数据 MOV C , PSW.0 ;将奇偶位送 TB8

MOV TB8 , C

MOV SBUF , A ;发送数据 SJMP ¥ ;等待中断

Page 20: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

[ 例 9.5] 试编制串行口在方式 3 下接收数据块的程序。设单片机晶振为 11.0592 MHZ ,波特率为 2400 b/

s ,接收数据存在片内 RAM 的 40H 起始单元的一段区间内,数据块长度由发送方先发送过来 ( 不超过允许值 ) ,每接收一个数据都核对其奇偶校验位,正确存储数据,否则给出出错标志。

根据要求,设 T1 工作于方式 2 ,当 SMOD=0 时,T1 计数初值为 F4H 。采用查询法编制的程序如下:

Page 21: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

START : MOV TMOD , #20H ;置 T1 工作于方式 2

MOV TH1 , #0F4H ;置 T1 计数初值 MOV TL1 , #0F4H

SETB TR1 ;启动 T1

MOV SCON , #0D0H

;置串行口工作于方式 3 允许接收

MOV PCON , #00H ;设 SMOD=0

Page 22: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

MOV R0 , #40H ;接收数据区首址送 R0

JNB RI ,¥ ;等待接收数据块长度字节

CLR RI ;接收后清 RI

MOV A , SBUF

;将数据块长度读入后存入 R1 中

MOV R1 , A

OR0 : JNB RI ,¥ ;等待接收数据CLR RI ;接收一个字符后清 RI

Page 23: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

MOV A , SBUF ;将接收字符读入 A

JB PSW.0 , OR1 ;进行奇偶位校验JB RB8 , OR3

SJMP OR2

OR1 : JNB RB8 , OR3

OR2 : MOV @R0 , A

;校验正确存接收数据

Page 24: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

INC R0 ;存储单元地址增 1

CLR PSW.5 ;设置正确的标志DJNZ R1 , OR0 ;没接收完继续接收SJMP $ ;接收完停机OR3 : SETB PSW.5 ;置校验出错标志SJMP $ ;停机

Page 25: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

9.4 PC 机与单片机间的串行通信

9.4.1 RS-232C 总线标准 RS-232C 总线标准定义了 25 个引脚的连接器,各

信号引脚的定义如表 9-3 所示。

Page 26: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

表 9-3 RS-232C 信号引脚定义 引 脚 定 义 ( 助记符 ) 引 脚 定 义 ( 助记符 )

1 保护地 (PG) 14 辅助通道发送数据 (STXD)

2 发送数据 (TXD) 15 发送时钟 (TXC)

3 接收数据 (RXD) 16 辅助通道接收数据 (SRXD)

4 请求发送 (RTS) 17 接收时钟 (RXC)

5 清除发送 (CTS) 18 未定义

6 数据准备好 (DSR) 19 辅助通道请求发送 (SRTS)

7 信号地 (GND) 20 数据终端准备就绪 (DTR)

8 接收线路信号检测 (DCD) 21 信号质量检测

9 未定义 22 音响指示 (RI)

10 未定义 23 数据信号速率选择

11 未定义 24 发送时钟

12 辅助通道接收线信号检测 (SDCD) 25 未定义

13 辅助通道允许发送 (SCTS)    

Page 27: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

表 9-3 中定义的许多信号线是为通信业务联系或信息控制而设置的,在计算机串行通信中主要使用以下一些信号:

(1) 数据传输信号:发送数据 (TXD) ,接收数据(RXD) 。

(2) 调制解调器控制信号:请求发送 (RTS) ,清除发送 (CTS) ,数据准备好 (DSR) ,数据终端准备就绪 (DTR) 。

(3) 时钟信号:发送时钟 (TXC) ,接收时钟 (RXC) 。 (4) 地线:保护地 (PG) ,信号地 (GND) 。

Page 28: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

RS-232C 总线的其他标准规定如下: (1)  RS-232C 总线标准逻辑电平:+ 5 ~+ 15 V 表示逻

辑“ 0” ,- 15 ~- 5 V 表示逻辑“ 1” ,噪声容限为 2 V 。 (2) 标准数据传输速率: 50 b/s 、 75 b/s 、 110 b/s 、 300

b/s 、 600 b/s 、 1200 b/s 、 2400 b/s 、 4800 b/s 、 9600 b/s 、19 200 b/s 。

9.4.2 RS-232C 接口电路 1. MAX232 接口电路 MAX232 芯片是 MAXIM 公司生产的具有两路接收器

和驱动器的 IC 芯片,其内部有一个电源电压变换器,可以将输入+ 5 V 的电压变换成 RS-232C 输出电平所需的 ±12

V 电压。

Page 29: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

MAX232 芯片的引脚结构如图 9-16 所示。其中管脚1 ~ 6(C1 +、 V +、 C1 -、 C2 +、 C2 -、 V - )

用于电源电压转换,只要在外部接入相应电解电容即可;管脚 7 ~ 10 和管脚 11 ~ 14 构成两组 TTL 信号电平与 RS-232C 信号电平的转换电路,对应管脚可直接与单片机串行口的 TTL 电平引脚和 PC 机的 RS232 电平引脚相连。具体连接可参看图 9-17 。

Page 30: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

C1£«V£«C1£ C2£«C2£ V£ T2outR2in

12345678

VCCGNDT1outR1in

R1outT1inT2in

R2out

161514131211109

MAX232

图 9-16 MAX232 引脚图

Page 31: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

2. PC 机与 AT89C51 单片机串行通信电路 图 9-17 是由芯片 MAX232 实现 PC 机与 AT89C51

单片机串行通信的典型接线图。图中外接电解电容 C1 、C2 、 C3 、 C4 用于电源电压变换,提高抗干扰能力,它们可以取相同数值电容 1.0 μF/16 V 。电容 C5 用于对+ 5 V 电源的噪声干扰进行滤波,其值一般为 0.1 μF 。

Page 32: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

AT89C51

TXD

RXDGND

C1£«

C1£

C2£«

C2£

£«

£«

C1

C2

T1in T1out

R1inR1out

GND

VCC

V£«

MAX232

£«

£«

C3

C5

C4

£«5 V

GND

TXD

RS232

RXD

IBM- PC

图 9-17 用 MAX232 实现串行通信接口电路图

Page 33: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

3. PC 机与多个单片机间的串行通信 图 9-18 表示一台 PC 机与多个单片机间的串行通信

电路。这种通信系统一般为主从结构, PC 机为主机,单片机为从机。主从机间的信号电平转换由 MAX232

芯片实现。

Page 34: 9.3  AT89C51 串行接口的应用与编程

第 9章 串行接口及串行通信技术

IBM- PC

TXD

RXD

TXD RXD

AT89C51(1#)

MAX232T1out R1in

T1in R1out

TXD RXD

AT89C51(2#)

MAX232T1out R1in

T1in R1out

TXD RXD

AT89C51(3#)

MAX232T1out R1in

T1in R1out

TXD RXD

AT89C51(4#)

MAX232T1out R1in

T1in R1out

图 9-18 PC 机和多个单片机串行通信电路