第十九讲 单片机串行接口及其应用 教学方法: 讲授法 授课时数: 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、…… 作业: