第7章 51单片机串行接口
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
起始位
数据位
奇偶校验位 空闲位 停止位
特点: 一次传送的位数比较少,对发送时钟和接收时钟的同 步性要求相对不高,线路简单。 传送速度较慢。
2017/7/30 1 7
第7章 51单片机串行接口
• 2. 串行同步通信方式
同步字符1 同步字符2 数据块 校验字符1 校验字符2
特点: 一次连续传送多个字符,传送的位数多,对发送时 钟和接收时钟同步性要求很高,控制线路复杂 传送速度快。
第7章 51单片机串行接口
7.4 串行口的应用
• 7.4.1 利用方式0扩展并行I/O接口
• 【例7-1】用8051单片机的串行口外接串入并出的芯片74HC164扩展并 行输出口控制一组发光二极管,使发光二极管从右至左延时轮流显示。 • 74HC164是一块8位的串入并出的芯片,共14个引脚, 除了电源和地信号外, A、B:串行数据输入端; CLK:串行时钟信号输入端; Q0~Q7:8位数据并行输出端; CLR :清零端,输入低电平时74HC164输出端清0; 在CLK=0、 CLR =1时,74HC164保持原来数据。
第7章 51单片机串行接口
(2)接收
条件:RI=0,REN(SCON.4)置“1”。 结果: SM2=0,接收的前8位数据送SBUF,第9位送RB8,RI 置“1” ,向CPU申请中断。 SM2=1,若接收的第9位为1,则前8位数据送SBUF, 第9位送RB8,RI置“1” ,向CPU申请中断。 用户处理:MOV A,SBUF
1
25
第7章 51单片机串行接口
串行口方式0数据的接收,用SCON寄存器中的REN位来控制,采用查询RI 的方式来判断数据是否输入,汇编语言程序:
ORG 0000H LJMP MAIN ORG MAIN: CLR NOP NOP NOP SETB NOP NOP NOP MOV LOOP: JNB CLR MOV MOV SJMP 2017/7/30 END 0100H P1.0
• 7.1.1 并行通信和串行通信
计 0 1 0 1 0 0 1 D0 D1 D2 D3 D4 D5 D6 D7 控制或选通 状态 0 1 0 0 1 0 0 1 计 算 机
算 0 机
(
或 外 设
计 算 机
计 算 机
)
(
或 外 设
)
(a) 并行通信
2017/7/30 1
(b) 串行通信
3
第7章 51单片机串行接口
87H
SMOD
X
X
X
GF1
GF0
PD
IDL
SMOD:波特率加倍位。当SMOD位为1,则串行口方式1、方 式2、方式3的波特率加倍。 GF1、GF0:通用标志位。由软件置位或复位 PD:掉电方式位。当PD=1时,进入掉电方式。 IDL:待机方式位。当IDL=1时,进入待机方式
。
13
2017/7/30
1
2017/7/30
1
8
第7章 51单片机串行接口
• 7.1.4 波特率
• 波特率是指串行通信中,单位时间传送的二进制 位数,单位为bps。
• 传输速度往往又可用每秒传送多少个字节来表示 (Bps)。 • 它与波特率的关系为: 波特率(bps)=一个字符的二进制位数×字符/秒(Bps)
2017/7/30
1
9
第7章 51单片机串行接口
7.2 51单片机串行口的功能与结构
7.2.1 串行口的功能
• 51单片机具有一个全双工的串行异步通信接口,可 以同时发送和接收数据。 • 有四种工作方式:方式0、方式1、方式2和方式3。 • 方式0为同步移位寄存器方式,一般用于外接移位 寄存器芯片扩展I/O接口。 • 方式1为8位的异步通信方式,通常用于双机通信。 • 方式2和方式3为9位的异步通信方式,通常用于多 机通信
(1)发送
条件:TI=0 操作:MOV SBUF,A 结果:发送完毕,TI置“1”。
第7章 51单片机串行接口
(2)接收
条件:RI=0,REN(SCON.4)置“1”。 结果:8位数据接收数据缓冲器SBUF中,同时,RI置 “1” ,向CPU申请中断。 用户处理:MOV A,SBUF
根据信息传送的方向,串行通信可以分为单工、半双 工和全双工
A
B
A s
B s
A
B
(a) 单工
(b) 半双工
(c) 全双工
2017/7/30
1
4
第7章 51单片机串行接口
7.1.2 串行通信的基本过程
• 1. 发送过程
发送时钟 数据线
0
1
1
0
0
1
1
0
2017/7/30
1
5
第7章 51单片机串行接口
• 2. 接收过程
单片机技术及应用——基于 汇编及C51程序设计
第7章 51单片机串行接口
第7章 51单片机串行接口
主 要 章 节
• • • • 7.1 7.2 7.3 7.4 通信的基本概念 51单片机串行口的功能与结构 串行口的工作方式 串行口的应用
2017/7/30
1
2
第7章 51单片机串行接口
7.1 通信的基本概念
; 74HC165并入
P1.0
; 74HC165串出
SCON,#10H RI,LOOP RI A,SBUF P0,A MAIN
;串口初始化方式0,允许接收 ;接收
;送P0口显示
1 26
第7章 51单片机串行接口
C语言程序:
#include <reg51.h> //包含特殊功能寄存器库 #include <intrins.h> // 包含内部函数库 sbit P1_0=P1^0; void main() { unsigned char i; while(1) { P1_0=0; _nop_(); _nop_(); _nop_(); //74HC165并入 P1_0=1; _nop_(); _nop_(); _nop_(); //74HC165串出 SCON=0x10; //串口初始化方式0,允许接收 while (!RI) {;} //接收 RI=0; i=SBUF; P0=i; //送P0口显示 } }
SM2:多机通信控制位。 TB8:发送数据的第9位。 TI:发送中断标志位。
2017/7/30
REN:接收允许控制位。 RB8:接收数据的第9位。 RI:接收中断标志位。
1 12
第7章 51单片机串行接口
• 7.2.4 电源控制寄存器PCON
PCON D7 D6 D5 D4 D3 D2 D1 D0
汇编语言程序:
ORG 0000H LJMP MAIN ORG 0100H MOV SCON,#00H MOV A,#0FEH MOV SBUF,A LOOP: JNB TI,LOOP ACALL DELAY CLR TI RL A SJMP START MOV R7,#80H MOV R6,#0FFH DJNZ R6,LOOP1 DJNZ R7,LOOP2 RET END
第7章 51单片机串行接口
7.3.3 方式2和方式3
TXD:发送数据端 RXD:接收数据端 数据格式: 1位起始位(0),SBUF中8位数据位(低位 在前)第9位TB8和1位停止位(1) 波特率: 2SMOD×(T1的溢出率)/32
(1)发送 条件:TI=0 操作:先准备第9位TB8 ,执行MOV SBUF,A 结果:发送完毕,TI置“1”。
2017/7/30
1
24
第7章 51单片机串行接口
VCC
VCC
P0 口 接 的 8 个 发 光 二 极 管
2017/7/30
K0 K1 K2 K3 K4 K5 K6 K7 8051
RXD TXD P1.0
P0 P1 P2 P3 P4 P5 P6 P7 QH 74HC165 CLK S/L CLK INH SIN
2017/7/30 1 11
第7章 51单片机串行接口
7.2.3 串行口控制寄存器SCON
SCON 98H D7 SM0 D6 SM1 D5 SM2 D4 REN D3 TB8 D2 RB8 D1 TI D0 RI
SM0、SM1:串行口工作方式选择位
SM0 0 0 1 1 SM1 0 1 0 1 方式 方式0 方式1 方式2 方式3 功能 移位寄存器方式 8位异步通信方式 9位异步通信方式 9位异步通信方式 波特率 fosc/12 可变 fosc/32或fosc/64 可变
23
第7章 51单片机串行接口
【例7-2】用8051单片机的串行口外接并入串出的芯片74HC165扩展8位并 行输入口,输入一组开关的状态,并通过二极管显示出来。
74HC165是一块8位的并入串出的芯片,共16个引脚,除了电源和地信号 外, • P7~P0:8位并行输入端; • SIN:串行数据输入端; • QH、QH :串行数据同相、反相输出端; • CLK:串行时钟信号输入端; • CLK INH:串行时钟允许输入端,当它为低电平时,允许CLK时钟输入; S/ L :串出/并入方式控制输入端,S/ L =1,允许串行输出,S/ L =0 允许并行置入。 • 74HC165的工作过程一般如下:(1)使控制端S/ L =0,8位并行数据 置入到内部的寄存器;(2)使控制端S/ L =1,在时钟信号CLK的控制 下,内部寄存器的内容按从P0~P7的顺序从串行输出端依次输出。
2017/7/30
1
20
第7章 51单片机串行接口
VCC
8051 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 A 74HC164 B CLK VCC VCC CLR GND
RXD TXD
2017/7/30
1
21
第7章 51单片机串行接口
设串行口采用查询方式,显示的延时依靠调用延时子程序来实现
第7章 51单片机串行接口
(2)接收
条件:RI=0 操作:REN(SCON.4)置“1” 结果:8位数据接收数据缓冲器SBUF中,同时,RI置 “1” ,向CPU申请中断。 用户处理:MOV A,SBUF
第7章 51单片机串行接口
源自文库
7.3.2 方式1---- 8位异步通信方式
TXD:发送数据端 RXD:接收数据端。 数据格式: 1位起始位(0),SBUF中8位数据位(低位 在前)和1位停止位(1)。 波特率: 2SMOD×(T1的溢出率)/32
2017/7/30
1
10
第7章 51单片机串行接口
7.2.2 串行口的结构
内 部 总 线
发 送 SBUF 门 TXD(P3.1)
发送控制器
波 特 率 发 生 器
串行口中断 +
TI RI
串 行 口 控 制 寄 存 器
接收控制器 接 收 RXD(P3.0) 输入移位寄存器
SBUF
串行口数据寄存器 (SBUF),串行口控制寄存器SCON、电源控制寄存器 PCON以及定时/计数器和中断系统中的特殊功能寄存器组成。
第7章 51单片机串行接口
7.3 串行口的工作方式 7.3.1 方式0----移位寄存器方式
方式0通常用来外接移位寄存器,用作扩展I/O口。 RXD:串行数据 TXD:同步时钟。 数据格式:低位在前,高位在后,长度8位,在SBUF中。 波特率:fosc /12。 (1)发送
条件:TI=0 操作:MOV SBUF,A 结果:发送完毕,TI置“1”。
1
MAIN: START:
;串口初始化方式0 ;51单片机串口发送 ;等待发送 ;延时
;循环移位改变显示内容
;延时子程序
DELAY: LOOP2: LOOP1:
2017/7/30
22
第7章 51单片机串行接口
C语言程序:
#include <reg51.h> //包含特殊功能寄存器库 #include <intrins.h> //包含内部函数 void main() { unsigned char i; unsigned int j; SCON=0x00; //串口初始化方式0 i=0xFE; for (; ;) { SBUF=i; //51单片机串口发送 while (!TI) { ;} //等待发送 TI=0; for (j=0;j<=20000;j++) {_nop_();} //延时 i=_crol_(i,1); //改变显示内容 } 2017/7/30 1 }
接收时钟
数据线
0 1 1 0 0 1 1 0
2017/7/30
1
6
第7章 51单片机串行接口
7.1.3 串行通信的通信方式
• 1. 串行异步通信方式
第 n 个字符 D0 D1 D2 D3 D4 D5 D6 D7 1 空闲位 1 0 0/1 0/1 0/1 0/1 0/1 0/1 0/1 0/1 1 1 1 第 n+1 个字符 D0 D1 D2 0 0/1 0/1 0/1 下一个起始位 ……