9.3 AT89C51 串行接口的应用与编程
description
Transcript of 9.3 AT89C51 串行接口的应用与编程
第 9章 串行接口及串行通信技术
9.3 AT89C51 串行接口的应用与编程
9.3.1 工作方式 0 的应用 串行口工作方式 0 主要用于扩展并行 I/O 口,扩展
成并行输出口时,需要外接一片 8 位串行输入并行输出的同步移位寄存器 74HC164 或 CD4094 。扩展成并行输入口时,需要外接一片或几片并行输入串行输出的同步移位寄存器 74HC165 或 CD4014 。
第 9章 串行接口及串行通信技术
数据的串行输出或输入可采用中断方式,也可采用查询标志位 TI 、 RI 的方法,在移位初始化时,要进行相应的设置。
[ 例 9.1] 利用串行口工作在方式 0 ,外扩一片 74H
C164 构成一个三位 LED 动态显示器,并将内部 RAM
显示单元 65H 、 66H 、 67H 中的内容输出显示。如图9-14 所示。
第 9章 串行接口及串行通信技术
1
1
1
P1.0
P1.1
P1.2
RXD
TXD
89C51
74LS164
SA
SB
CLK
VCC
CLR
£«5 V
图 9-14 串行动态显示图
第 9章 串行接口及串行通信技术
主程序如下:ORG 0100H
STPRT : MOV SCON , #00H
;串行口初始化为方式 0
SETB P1.2 ;消去最高显示位 SETB P1.1
MOV SBUF , 65H ;传送最低显示位 JNB TI , $ ;传送没结束,等待
第 9章 串行接口及串行通信技术
CLR P1.0 ;最低位显示 CLR TI ;清中断标志位 LCALL DSSJ ;调延时子程序,维持状
态 SETB P1.0 ;消去最低显示位 MOV SBUF , 66H ;传送中间显示位 JNB TI , $ ;等待传送结束 CLR P1.1 ;显示中间位 CLR TI ;清中断标志位
第 9章 串行接口及串行通信技术
LCALL DSSJ ;调延时子程序,维持状态
SETB P1.1 ;消去中间显示位 MOV SBUF , 67H ;传送最高显示位 JNB TI , $ ;等待传送结束 CLR P1.2 ;显示最高显示位 CLR TI ;清中断标志位 RET
第 9章 串行接口及串行通信技术
[ 例 9.2] 利用串行口工作方式 0 ,扩展一片并行输入串行输出的移位寄存器 74LS165 ,如图 9-15 所示,构成一个 8 位并行输入口,输入 8 位开关量 ( 每一开关量代表不同功能,如启动、停止等 ) ,并将其存入固定单元 60H 中。
第 9章 串行接口及串行通信技术
图 9-15 串行口扩展输入并行口
第 9章 串行接口及串行通信技术
串行口工作在方式 0 ,且处于接收状态,则 REN 置为“ 1” , SCON 的控制字为 10H ,并行数据采用间隔调用子程序的方式读入,程序如下:
第 9章 串行接口及串行通信技术
START : CLR P1.0 ;输入并行数据
SETB P1.0 ;允许串行移位,等待移位脉冲
MOV SCON , #10H
;设串行口方式 0 ,启动接收
JNB RI , $ ;等待接收一帧数据
CLR RI ;清中断标志位
MOV A , SBUF ;读入接收数据
MOV 60H , A ;存入固定单元
RET
第 9章 串行接口及串行通信技术
9.3.2 工作方式 1 的应用 串行方式 1 主要用于异步双机通信,波特率由定时
器 T1 产生。 [ 例 9.3] 利用串行口方式 1 实现一个数据块的传送,
数据块存在内部 RAM 的 60H ~ 6FH 中,波特率选为2400 ,并形成和校验数据一起发送。
第 9章 串行接口及串行通信技术
串行口工作为方式 1 ,且处于发送的单工模式,则SCON 控制字为 40H 。方式 1 的波特率由 T1 产生,设T1 工作于方式 2 自动重装初值模式,晶振频率为 11.0
592 MHz 时,计数初值为 F4H 。用于和校验的算术和存放在 70H 中,并在数据块的末尾传送出去。
通过上面的分析,采用查询法传送数据块的子程序如下:
第 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
第 9章 串行接口及串行通信技术
DWFP : MOV A , @R0
MOV SBUF , A ;发送数据 ADD A , 70H ;对和校验求和 MOV 70H , A
JNB TI , $ ;未发送完等待 CLR TI
第 9章 串行接口及串行通信技术
INC R0
DJNZ R1 , DWFP
MOV SBUF , A ;发送和校验JNB TI , $
CLR TI
RET
第 9章 串行接口及串行通信技术
9.3.3 工作方式 2 与工作方式 3 的应用 方式 2 和方式 3 都是 11 位异步通信方式,所不同处
仅在于波特率。方式 2 的波特率只有固定的两种,而方式 3 的波特率则可由用户设定。
[ 例 9.4] 利用串行口方式 2 编制一发送程序,将片内 RAM 中 60H ~ 6FH 单元的数据串行发送出去,第九数据位 TB8 作奇偶校验位。
根据要求,将串行口设置为方式 2 、单工发送,则SCON 控制字为 80H 。波特率选为 fosc/64 。采用中断方式发送的主程序和中断程序如下:
第 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 ;发送完关中断
第 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
第 9章 串行接口及串行通信技术
MOV R1 , #10H ;数据块长度送 R1
SETB EA ;开总中断 SETB ES ;开串行口中断 MOV A , @R0 ;取出待发数据 MOV C , PSW.0 ;将奇偶位送 TB8
MOV TB8 , C
MOV SBUF , A ;发送数据 SJMP ¥ ;等待中断
第 9章 串行接口及串行通信技术
[ 例 9.5] 试编制串行口在方式 3 下接收数据块的程序。设单片机晶振为 11.0592 MHZ ,波特率为 2400 b/
s ,接收数据存在片内 RAM 的 40H 起始单元的一段区间内,数据块长度由发送方先发送过来 ( 不超过允许值 ) ,每接收一个数据都核对其奇偶校验位,正确存储数据,否则给出出错标志。
根据要求,设 T1 工作于方式 2 ,当 SMOD=0 时,T1 计数初值为 F4H 。采用查询法编制的程序如下:
第 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
第 9章 串行接口及串行通信技术
MOV R0 , #40H ;接收数据区首址送 R0
JNB RI ,¥ ;等待接收数据块长度字节
CLR RI ;接收后清 RI
MOV A , SBUF
;将数据块长度读入后存入 R1 中
MOV R1 , A
OR0 : JNB RI ,¥ ;等待接收数据CLR RI ;接收一个字符后清 RI
第 9章 串行接口及串行通信技术
MOV A , SBUF ;将接收字符读入 A
JB PSW.0 , OR1 ;进行奇偶位校验JB RB8 , OR3
SJMP OR2
OR1 : JNB RB8 , OR3
OR2 : MOV @R0 , A
;校验正确存接收数据
第 9章 串行接口及串行通信技术
INC R0 ;存储单元地址增 1
CLR PSW.5 ;设置正确的标志DJNZ R1 , OR0 ;没接收完继续接收SJMP $ ;接收完停机OR3 : SETB PSW.5 ;置校验出错标志SJMP $ ;停机
第 9章 串行接口及串行通信技术
9.4 PC 机与单片机间的串行通信
9.4.1 RS-232C 总线标准 RS-232C 总线标准定义了 25 个引脚的连接器,各
信号引脚的定义如表 9-3 所示。
第 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)
第 9章 串行接口及串行通信技术
表 9-3 中定义的许多信号线是为通信业务联系或信息控制而设置的,在计算机串行通信中主要使用以下一些信号:
(1) 数据传输信号:发送数据 (TXD) ,接收数据(RXD) 。
(2) 调制解调器控制信号:请求发送 (RTS) ,清除发送 (CTS) ,数据准备好 (DSR) ,数据终端准备就绪 (DTR) 。
(3) 时钟信号:发送时钟 (TXC) ,接收时钟 (RXC) 。 (4) 地线:保护地 (PG) ,信号地 (GND) 。
第 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 电压。
第 9章 串行接口及串行通信技术
MAX232 芯片的引脚结构如图 9-16 所示。其中管脚1 ~ 6(C1 +、 V +、 C1 -、 C2 +、 C2 -、 V - )
用于电源电压转换,只要在外部接入相应电解电容即可;管脚 7 ~ 10 和管脚 11 ~ 14 构成两组 TTL 信号电平与 RS-232C 信号电平的转换电路,对应管脚可直接与单片机串行口的 TTL 电平引脚和 PC 机的 RS232 电平引脚相连。具体连接可参看图 9-17 。
第 9章 串行接口及串行通信技术
C1£«V£«C1£ C2£«C2£ V£ T2outR2in
12345678
VCCGNDT1outR1in
R1outT1inT2in
R2out
161514131211109
MAX232
图 9-16 MAX232 引脚图
第 9章 串行接口及串行通信技术
2. PC 机与 AT89C51 单片机串行通信电路 图 9-17 是由芯片 MAX232 实现 PC 机与 AT89C51
单片机串行通信的典型接线图。图中外接电解电容 C1 、C2 、 C3 、 C4 用于电源电压变换,提高抗干扰能力,它们可以取相同数值电容 1.0 μF/16 V 。电容 C5 用于对+ 5 V 电源的噪声干扰进行滤波,其值一般为 0.1 μF 。
第 9章 串行接口及串行通信技术
AT89C51
TXD
RXDGND
C1£«
C1£
C2£«
C2£
£«
£«
C1
C2
T1in T1out
R1inR1out
V£
GND
VCC
V£«
MAX232
£«
£«
C3
C5
C4
£«5 V
GND
TXD
RS232
RXD
IBM- PC
图 9-17 用 MAX232 实现串行通信接口电路图
第 9章 串行接口及串行通信技术
3. PC 机与多个单片机间的串行通信 图 9-18 表示一台 PC 机与多个单片机间的串行通信
电路。这种通信系统一般为主从结构, PC 机为主机,单片机为从机。主从机间的信号电平转换由 MAX232
芯片实现。
第 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 机和多个单片机串行通信电路