单片机串口市公开课一等奖省赛课获奖课件_第1页
单片机串口市公开课一等奖省赛课获奖课件_第2页
单片机串口市公开课一等奖省赛课获奖课件_第3页
单片机串口市公开课一等奖省赛课获奖课件_第4页
单片机串口市公开课一等奖省赛课获奖课件_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章MCS-51串行口1单片机串口第1页2内容介绍:通信方式:串行口与并行口串行通讯方式:异步通信和同时通信§1串行口结构§2串行口工作方式§3多机通讯§4波特率制订方法§5串行口编程和应用

单片机串口第2页3串行口与并行口并行通信:8位数据同时发送或接收。8051外部设备并行通信串行通信:数据一位一位次序发送或接收。80518051TXDTXDRXDRXD串行通信单片机串口第3页4异步通信:它用一个起始位表示字符开始,用停顿位表示字符结束。

其每帧格式以下:在一帧格式中,先是一个起始位0,然后是8个数据位,要求低位在前,高位在后,接下来是奇偶校验位(能够省略),最终是停顿位1。用这种格式表示字符,则字符能够一个接一个地传送。

在异步通信中,CPU与外设之间必须有两项要求,即字符格式和波特率。

字符格式要求是双方能够在对同一个0和1串了解成同一个意义。标准上字符格式能够由通信双方自由制订,但从通用、方便角度出发,普通还是使用一些标准为好,如采取ASCII标准。

波特率即数据传送速率,其定义是每秒钟传送二进制数位数。比如,数据传送速率是120字符/s,而每个字符如上述要求包含10数位,则传送波特率为1200波特。单片机串口第4页5同时通信:

在异步通信中,每个字符要用起始位和停顿位作为字符开始和结束标志,占用了时间;所以在数据块传递时,为了提升速度,常去掉这些标志,采取同时传送。因为数据块传递开始要用同时字符来指示,同时要求由时钟来实现发送端与接收端之间同时,故硬件较复杂。单片机串口第5页6通信方向:单工传送:在串行通讯中,把通讯接口只能发送或接收单向传送方法叫单工传送;双工传送:而把数据在甲乙两机之间双向传递,称之为双工传送。在双工传送方式中又分为半双工传送和全双工传送。

1、半双工传送:是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。

2、全双工传送:是两机之间能同时进行发送和接收。单片机串口第6页7§6.1串行口结构

MCS-51单片机内部有一个功效很强全双工串行口,该串行口有四种工作方式,波特率可用软件设置,由片内定时器/计数器产生。串行口接收、发送数据均可触发中止系统,使用十分方便。

MCS-51单片机内部串行口,有两个物理上独立地接收、发送缓冲器SBUF,可同时发送、接收数据,发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器共用一个字节地址(99H)。

控制MCS-51单片机串行口控制存放器共有两个:

串行口控制存放器SCON

特殊功效存放器PCON单片机串口第7页8§6.1.1串行口控制存放器SCONSCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98H

SM0、SM1:串行口4种工作方式选择位。

SM2:多机通讯控制位。

REN:允许串行接收控制位。TB8:是工作在方式2和3时,要发送第9位数据。RB8:当工作在方式2和3时,为收到第9位数据。

TI:发送中止标志位。

RI:接收中止标志位。单片机串口第8页9SM0、SM1:串行口4种工作方式选择位SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HSM0SM1方式 功效

00方式0同时移位存放器方式01方式18位串行口(波特率可变)10方式29位串行口(波特率固定)11方式39位串行口(波特率可变)单片机串口第9页10SM2:允许方式2和3多机通讯控制位。SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98H(1)方式2,方式3下,SM2=1,接收到第9位RB8=0时,不激活RI,不能向CPU申请中止如接收到第9位RB8=1时,激活RI,将RI=1,向CPU申请中止(2)方式2,方式3下,SM2=0,不论RB8=0或RB8=1,都激活RI=1。(3)方式1,当SM2=1时,只有接收到有效停顿位时,才激活RI当SM2=0时,正常接收。(4)方式0,SM2必须清0,即SM2=0。单片机串口第10页11REN:允许串行接收控制位SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HREN:允许串行接收控制位,由软件置位或清零。REN=1,允许串行口接收数据。REN=0,禁止串行口接收数据。单片机串口第11页12TB8和RB8:SCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HTB8:当串行口工作在方式2、方式3,要发送第9位数据时放在TB8中(D8=第9位),需要时由软件置1或清0。在许多通讯协议中该位是奇偶校验位。在多机通讯中用来表示是地址帧还是数据帧,TB8=1为地址帧,TB8=0为数据帧。RB8:方式2、方式3下,要接收第9位数据。可能是奇偶校验位或在多机通讯中为地址帧或数据帧标识位。

方式1时,SM2=0,RB8是已接收停顿位。

方式0时,不使用RB8。单片机串口第12页13TI和RISCONRITIRB8TB8RENSM2SM1SM0D7D6D5D4D3D2D1D098H9FH9EH9DH9CH9BH9AH99H98HTI:发送中止标志 由硬件在方式0串行发送第8位结束时置位或其它方式串行发送停顿位开始时置位。必须由软件清零TI。RI:接收中止标志:由硬件在方式0串行接收到第8位结束时置位或其它方式下串行接收停顿位中间时置位,必须由软件清零RI。单片机串口第13页14§6.1.2特殊功效存放器PCONPCONSMODD7D6D5D4D3D2D1D087HPCON:电源控制存放器 SMOD:串行口波特率系数控制位

SMOD=1

波特率加倍

SMOD=0

波特率不加倍D0~D6:掉电方式控制位。单片机串口第14页15§6.2串行口工作方式SM0SM1方式

功效

00方式0

同时移位存放器方式01方式1

8位串行口(波特率可变)10方式2

9位串行口(波特率固定)11方式3

9位串行口(波特率可变)单片机串口第15页16§6.2.1方式0

方式0为移位存放器输入/输出方式。可外接移位存放器以扩展I/O口,也能够外接同时输入/输出设备。8位串行数据者是从RXD输入或输出,TXD用来输出同时脉冲。

方式0输出方式0输入单片机串口第16页17方式0输出

数据从RXD引脚串行输出,TXD引脚输出移位脉冲。

当一个数据写入串行口发送缓冲器时,串行口即将8位数据以fosc/12固定波特率从RXD引脚输出,低位在先。发送完8位数据置“1”中止标志位TI。CPU响应TI中止,标志位必须由用户程序清0。单片机串口第17页18方式0输入:

REN为串行口接收器允许接收控制位,REN=0,禁止接收,REN=1,允许接收。当串行口置为方式0,并置“l”REN位,串行口处于方式0输入。引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收器也以fosc/12固定波特率采样RXD引脚数据信息,当接收器接收到8位数据时置“l”中止标志RI。CPU响应RI中止,标志位必须由用户程序清0。单片机串口第18页19方式1:串行口被控制为波特率可变8位异步通信接口。

波特率=(2SMOD/32)×T1溢出率式中SMOD为PCON存放器最高位值(0或1)。

一帧信息包含10位:1位起始位(低电平0)+8位数据位(低位在先)+1位停顿位(高电平1)方式1发送:TXD-发送端方式1接收:RXD-接收端单片机串口第19页20方式1发送

CPU执行写入SBUF指令后,开启串行口发送数据,数据从发送端发送出去,发送完成后,将TI置位,向CPU申请中止,再次发送之前必须由软件清0。单片机串口第20页21方式1接收

当REN=1且采样到RXD引脚负跳变,而且接收到有效起始位时,才开始接收本帧其余信息。当满足RI=0且SM2=0或接收到停顿位为1时,接收数据有效,装入SBUF,停顿位装入RB8中,同时置位RI=1,向CPU申请中止。若有一个条件不满足,则信息丢失。单片机串口第21页22

方式2

9位异步通信接口(固定波特率)波特率:(2SMOD/64)×fOSC

一帧信息11位:1位起始位+8位数据位+1位可编程位+1位停顿位1位可编程位:接收时放到RB8中,发送时放到TB8中,奇偶校验位可放到可编程位中作为校验。方式2发送:方式2接收:单片机串口第22页23方式2发送方式2发送:先把可编程位放到TB8中,然后CPU执行一条写入发送缓冲区,当发送数据到停顿位时,将TI置位,当要送到下一帧时,先将TI清0。单片机串口第23页24方式2接收方式2接收:与方式1相同,当REN=1且采样到RXD引脚负跳变,而且接收到有效起始位时,才开始接收本帧其余信息。当满足RI=0且SM2=0或接收到第9数据位为1时,接收数据有效,装入SBUF,第9位数据装入RB8中,同时置位RI=1,向CPU申请中止。若有一个条件不满足,则信息丢失。单片机串口第24页25

方式39位异步通信接口波特率=(2SMOD/32)×T1溢出率(同方式1算法相同)

一帧信息11位:1位起始位+8位数据位+1位可编程位+1位停顿位1位可编程位:接收时放到RB8中,发送时放到TB8中,奇偶校验位可放到可编程位中作为校验。除波特率不一样,其它同方式2发送一样:除波特率不一样,其它同方式2接收一样:单片机串口第25页26§6.3多机通信

串行口控制存放器SCON中SM2为方式2或方式3多机通信控制位,当串行口以方式2或方式3工作时,若SM2程控为l,此时只有当串行口接收到第9位数据RB8=1时,才置1中止标志RI,若接收到RB8=0,则不产生中止标志,信息被丢失。应用MCS-51串行口这个特征,便可实现多机通讯。

多机通信举例:有一个主机(MCS-5l或其它含有串行接口微机)和三个由8031组成从机系统。单片机串口第26页27多机通信

设在一个多机系统中有一个主机(MCS-5l或其它含有串行接口微机)和三个由8031组成从机系统,从机地址分别为00H、0lH和02H。(地址=1,数据=0)。1、发送地址TB8=1:当SM2=1且RB8=1,激活RI,进入中止服务子程序,进行地址比较。如地址相同,则SM2=0,不然SM2=1。2、发送数据TB8=0:当SM2=1且RB8=0,不能激活RI。

当SM2=0且RB8=0,能够激活RI。

能够进入中止服务子程序,接收数据。单片机串口第27页28§6.4波特率制订方法波特率定义:串行口每秒钟发送(或接收)位数称为波特率。

当串行口工作于方式1和方式3时,波特率是可变,由SMOD位和定时器溢出率确定,允许用户所取波特率范围比较大。一、定时器T1工作于方式0波特率求法:二、定时器T1工作于方式1波特率求法:二、定时器T1工作于方式2波特率求法:单片机串口第28页29一、定时器T1工作于方式0

波特率求法:

当串行口工作于方式1和方式3时,波特率是可变,由SMOD位和定时器溢出率确定,允许用户所取波特率范围比较大。一、定时器T1工作于方式0波特率求法:

方式0相当于定时器T1是一个13位定时器/计数器,它采取TH1八位和TL1低五位组成一个13位计数器,它波特率按下式计算:

波特率=(2SMOD/32)×T1溢出率T1溢出率=1/(T1溢出时间)T1溢出时间=(213-a+执行置13位定时器值中止处理程序机器周期数)*12/晶振频率

注意:a是定时器计数初值,就是我们所要求值。单片机串口第29页30二、定时器T1工作于方式1

波特率求法:

当串行口工作于方式1和方式3时,波特率是可变,由SMOD位和定时器溢出率确定,允许用户所取波特率范围比较大。一、定时器T1工作于方式1波特率求法:

方式1相当于定时器T1是一个16位定时器/计数器,它波特率按下式计算:

波特率=(2SMOD/32)×T1溢出率T1溢出率=1/(T1溢出时间)T1溢出时间=(216-a+执行置16位定时器值中止处理程序机器周期数)*12/晶振频率

注意:a是定时器计数初值,就是我们所要求值。单片机串口第30页31二、定时器T1工作于方式2

波特率求法:

当串行口工作于方式1和方式3时,波特率是可变,由SMOD位和定时器溢出率确定,允许用户所取波特率范围比较大。一、定时器T1工作于方式2波特率求法:

方式2是8位自动装入初值定时器,它波特率按下式计算:

波特率=(2SMOD/32)×T1溢出率T1溢出率=1/(T1溢出时间)T1溢出时间=(28-a)*12/晶振频率

注意:a是定时器计数初值,就是我们所要求值。

普通来讲,定时器方式2用来确定波特率是比较理想,它不需要中止服务程序来置数,且算出波特率比较准确,提议使用定时器T1方式2来确定波特率。单片机串口第31页

三、波特率计算在串行通信中,收发双方对发送或接收数据速率要有约定。经过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2波特率是固定,而方式1和方式3波特率是可变,由定时器T1溢出率来决定。串行口四种工作方式对应三种波特率。因为输入移位时钟起源不一样,所以,各种方式波特率计算公式也不相同。方式0波特率=fosc/12方式2波特率=(2SMOD/64)·fosc方式1波特率=(2SMOD/32)·(T1溢出率)方式3波特率=(2SMOD/32)·(T1溢出率)单片机串口第32页

当T1作为波特率发生器时,最经典使用方法是使T1工作在自动再装入8位定时器方式(即方式2,且TCONTR1=1,以开启定时器)。这时溢出率取决于TH1中计数值。

T1溢出率=fosc/{12×[256-(TH1)]}

在单片机应用中,惯用晶振频率为:12MHz和11.0592MHz。所以,选取波特率也相对固定。惯用串行口波特率以及各参数关系如表所表示。单片机串口第33页

串行口工作之前,应对其进行初始化,主要是设置产生波特率定时器1、串行口控制和中止控制。详细步骤以下:确定T1工作方式(编程TMOD存放器);计算T1初值,装载TH1、TL1;开启T1(编程TCON中TR1位);确定串行口控制(编程SCON存放器);串行口在中止方式工作时,要进行中止设置(编程IE、IP存放器)。单片机串口第34页35练习1-串行口波特率设串行口工作在方式1,定时器T1工作方式2,波特率=2400bit/sfOSC=6MHZSMOD=0,求计数初值a。(若SMOD=1呢?)。解:波特率=(2SMOD/32)*T1溢出率=(2SMOD/32)*{1/[(28-a)*(12/fOSC)]}2400=(1/32)*{1/[(28-a)*[12/(6*106)]}256-a=(6*106)/(240

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论