第十七讲单片机串行接口及其应用教学目的:1、了解串行通信的特点2、了解MCS-51单片机机串行接口3、掌握MCS-51单片机机串行接口的运用教学重点、难点:MCS-51单片机机串行接口的运用主要教学内容(提纲)一、串行通信的特点二、MCS-51单片机机串行接口三、MCS-51单片机机串行接口的运用讲授要点一、串行通信概述1、什么叫串行通信?并行、串行举生活中的例子(排横队行走,排纵队行走)说明;引出并行通信,串行通信的概念。P00P01外设1P02P03单片机RXD外设2TXD2、同步通信、异步通信提问:数字电路中移位寄存器是怎样进行移位的?同步——发送设备时钟等于接收设备时钟。同步字符1同步字符2数据1数据2···数据n校验字符校验字符异步——发送时钟不一定等于接收时钟。空闲位起始位5~8位数据奇偶校验位停止位空闲位3、串行通信方向AB发单工收AB发半双工发收收A全双工B发收收发4、波特率即串行通信速率。b/s、bps举例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为240个字符。求波特率。解:(1+8+1)×240=2400b/s=2400波特。5、串行通信接口发送:展示投影胶片CPUD7D6D5D4D3D2D1D0发送数据寄存器SBUF(99H)1D7D6D5D4D3D2D1D00发送数据发送时钟接收:展示投影胶片接收时钟0D0D1D2D3D4D5D6D71接收数据D0D1D2D3D4D5D6D7接收数据寄存器SBUF(99H)CPU二、MCS-51单片机机串行接口单片机内有:通用异步接收/发送器UART全双工,4种工作方式,波特率可编程设置,可中断。1、串口的组成从编程角度讲来看主要由以下寄存器组成。PCONSMODSCONSM0SM1SM2RENTB8RB8TIRISBUFD7D6D5D4D3D2D1D0SBUF发SBUF收SM0、SM1:工作方式选择位(后面再讲)SM2:多机通信控制位,常与RB8配合,决定是否激活RIREN:允许接收TB8:发送的第九位数RB8:接收的第九位数TI:中断标志RISMOD:波特系数选择位,0——20=11——21=22、串行口的工作方式(1)方式0:同步移位寄存器方式,波特率固定为fosc/12RXD——接收发送数据TXD——产生同步移位脉冲接收/发送完,置位RI/TI,(要求SM2=0)方式0D7D6D5D4D3D2D1D0发送D0D1D2D3D4D5D6D7接收无起始位,无停止位(2)方式1:8位UART,波特率为(2SMOD×T1的溢出率)/32停止位D7D6D5D4D3D2D1D0起始位发送位起始位D0D1D2D3D4D5D6D7停止位接收位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,多机通信。停止位TB8D7D6D5D4D3D2D1D0起始位发送起始位D0D1D2D3D4D5D6D7TB8停止位接收送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初始化编程:MOVTMOD,#20HMOVPCON,#80HMOVTH1,#0F3HMOVTL1,#0F3HSETBTR1MOVSCON,#50H小结:1、什么叫串行通信?2、UART叫什么?(通用异步接收/发送器)3、单工、半双工、全双工?4、串口工作用到哪些寄存器?(PCON、SCON、SBUF)5、串口有几种工作方式?6、波特率如何设置?(T1的计数初值如何确定)