第7章 51单片机串行接口
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 }
• 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单片机串行接口
; 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口显示 } }
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 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 可变
起始位
数据位
奇偶校验位 空闲位 停止位
特点: 一次传送的位数比较少,对发送时钟和接收时钟的同 步性要求相对不高,线路简单。 传送速度较慢。
2017/7/30 1 7
第7章 51单片机串行接口
• 2. 串行同步通信方式
同步字符1 同步字符2 数据块 校验字符1 校验字符2
特点: 一次连续传送多个字符,传送的位数多,对发送时 钟和接收时钟同步性要求很高,控制线路复杂 传送速度快。
(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
2017/7/30
1
10
第7章 51单片机串行接口
7.2.2 串行口的结构
内 部 总 线
发 送 SBUF 门 TXD(P3.1)
发送控制器
波 特 率 发 生 器
串行口中断 +
TI RI
串 行 口 控 制 寄 存 器
接收控制器 接 收 RXD(P3.0) 输入移位寄存器
SBUF
串行口数据寄存器 (SBUF),串行口控制寄存器SCON、电源控制寄存器 PCON以及定时/计数器和中断系统中的特殊功能寄存器组成。
单片机技术及应用——基于 汇编及C51程序设计
第7章 51单片机串行接口
第7章 51单片机串行接口
主 要 章 节
• • • • 7.1 7.2 7.3 7.4 通信的基本概念 51单片机串行口的功能与结构 串行口的工作方式 串行口的应用
2017/7/30
1
2
第7章 51单片机串行接口
7.1 通信的基本概念
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
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
接收时钟
数据线
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 下一个起始位 ……
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章 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”。
第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
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
汇编语言程序:
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
根据信息传送的方向,串行通信可以分为单工、半双 工和全双工
A