第十九讲 单片机串行接口及其应用
教学方法: 讲授法
授课时数: 2学时
教学目的:
1、了解单片机的基础知识。
2、了解单片机的发展概况。
3、熟悉数制的转换。
教学重点:
单片机的含义及作用
教学难点:
掌握逻辑分析仪的使用方法
教学环节:
组织教学:(5分钟) 检查学生人数,强调课堂纪律和要求,自我介绍
组织教学:检查学生装人数,引导学生进入听课状态。
直接引入新课:
§4-3 MCS-51单片机串行接口
一、串行通信概述
1、什么叫串行通信?
并行、串行举生活中的例子(排横队行走,排纵队行走)说明;
引出并行通信,串行通信的概念。
P00
P01 外设1
P02
P03
单片机
RXD
外设2
TXD
2、同步通信、异步通信
提问:数字电路中移位寄存器是怎样进行移位的?
同步——发送设备时钟等于接收设备时钟。
同步字符1 同步字符2 数据1 数据2 ··· 数据n 校验字符 校验字符
异步——发送时钟不一定等于接收时钟。
空闲位 起始位 5 ~ 8位数据 奇偶校验位 停止位 空闲位
3、串行通信方向
A B
发 单工 收
A B
发 半双工 发
收 收
A 全双工 B
发 收
收 发
4、波特率
即串行通信速率。 b/s 、 bps
举例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为
240个字符。求波特率。
解:
(1+8+1)×240 = 2400 b/s = 2400波特。
5、串行通信接口
发送: 展示投影胶片 CPU
D7 D6 D5 D4 D3 D2 D1 D0 发送数据寄存器
SBUF(99H)
1 D7 D6 D5 D4 D3 D2 D1 D0 0 发送数据
发送时钟
接收: 展示投影胶片
接收时钟
0 D0 D1 D2 D3 D4 D5 D6 D7 1 接收数据
D0 D1 D2 D3 D4 D5 D6 D7 接收数据寄存器
SBUF(99H)
CPU
二、MCS-51机串行接口
单片机内有:通用异步接收/发送器 UART
全双工,4种工作方式,波特率可编程设置,可中断。
1、串口的组成
从编程角度讲来看主要由以下寄存器组成。
PCON SMOD
SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
SBUF D7 D6 D5 D4 D3 D2 D1 D0 SBUF发
SBUF收
SM0、SM1:工作方式选择位(后面再讲)
SM2:多机通信控制位,常与RB8配合,决定是否激活RI
REN:允许接收
TB8:发送的第九位数
RB8:接收的第九位数
TI :中断标志
RI
SMOD:波特系数选择位,0 —— 20 = 1
1 —— 21 = 2
2、串行口的工作方式
(1)方式0:同步移位寄存器方式,波特率固定为fosc / 12
RXD —— 接收发送数据
TXD —— 产生同步移位脉冲
接收/发送完,置位RI / TI ,(要求SM2 = 0)
方式0 D7 D6 D5 D4 D3 D2 D1 D0 发送
D0 D1 D2 D3 D4 D5 D6 D7 接收
无起始位,无停止位
(2)方式1:8位UART,波特率为(2SMOD×T1的溢出率)/ 32
停止位 D7 D6 D5 D4 D3 D2 D1 D0 起始位 发送位
起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位 接收位
1帧信息,10位。 送RB8位
波特率可变: 2SMOD / 32 ×(T1的溢出率)
发送完置位TI。
接收完数据置位RI。
置位RI是有条件的。即:
REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位为1。
此时,数据装载SBUF,停止位进入RB8,RI置1。
(3)方式2、方式3 :9位UART,多机通信。
停止位 TB8 D7 D6 D5 D4 D3 D2 D1 D0 起始位 发送
起始位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 接收
送RB8
方式2波特率:(固定)2SMOD / 64 × fosc
方式3波特率: 2SMOD / 32 ×(T1溢出率)
发送完数据置位TI。
接收到有效数据完毕,置位RI。
有效数据条件:REN = 1,RI = 0 且SM2 = 0或接收到第9位数据为1。
此时,数据装载SBUF,第9位数据(TB8) RB8,RI置1。
3、波特率的设置
方式0、方式2固定。
方式1,方式3可变。波特率 = 2SMOD / 32 ×(T1的溢出率)
T1溢出率 = 单位时间内溢出次数 = 1 /(T1的定时时间)
而T1的定时时间t就是T1溢出一次所用的时间。此情况下,一般设T1工作在模式2(8位自动重装初值)。
N = 28- t / T, t = (28-N)T =(28-N)×12 / fosc
所以,T1溢出率 = 1/t = fosc / 12(28-N),
故, 波特率 = 2SMOD / 32 × fosc / 12(256-N)。
若已知波特率,则可求出T1的计数初值:
y = 256-2SMOD×fosc / (波特率×32×12)
巩固新课:
例、若fosc = 6MHz,波特率为2400波特,设SMOD = 1,则定时/计数器T1的计数初值为多少?并进行初始化编程。
解:y = 256-2SMOD×fosc / (2400×32×12)= 242.98≈243 = F3H
同理,fosc = 11.0592MHz,波特率为2400,设SMOD = 0,则
y = F4H
初始化编程:
MOV TMOD,#20H
MOV PCON,#80H
MOV TH1,#0F3H
MOV TL1,#0F3H
SETB TR1
MOV SCON,#50H
小结:
1、什么叫串行通信?
2、UART叫什么?(通用异步接收/发送器)
3、单工、半双工、全双工?
4、串口工作用到哪些寄存器?(PCON、SCON、SBUF)
5、串口有几种工作方式?
6、波特率如何设置?(T1的计数初值如何确定)
布置作业:P141 7、9、10
版书设计
串行通信概述
1、….
2、…….
3、
4、…
二、MCS-51机串行接口
1、……..
2、……..
巩固新课
1、…….
2、…….
3、……..
….
小结:
1、……..
2、……
作业: