串行接口.docx
- 文档编号:26183487
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:15
- 大小:363.77KB
串行接口.docx
《串行接口.docx》由会员分享,可在线阅读,更多相关《串行接口.docx(15页珍藏版)》请在冰豆网上搜索。
串行接口
串行接口
概述
串行接口的一般概念
1.单片机与外界进行信息交换称之为通讯。
2.8051单片机的通讯方式有两种:
并行通讯:
数据的各位同时发送或接收。
串行通讯:
数据一位一位顺序发送或接收。
参看下图:
3.串行通讯的方式:
异步通讯:
它用一个起始位表示字符的开始,用停止位表示字符的结束。
其每帧的格式如下:
在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(可以省略),最后是停止位1。
用这种格式表示字符,则字符可以一个接一个地传送。
在异步通讯中,CPU与外设之间必须有两项规定,即字符格式和波特率。
字符格式的规定是双方能够在对同一种0和1的串理解成同一种意义。
原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII标准。
波特率即数据传送的速率,其定义是每秒钟传送的二进制数的位数。
例如,数据传送的速率是120字符/s,而每个字符如上述规定包含10数位,则传送波特率为1200波特。
同步通讯:
在异步通讯中,每个字符要用起始位和停止位作为字符开始和结束的标志,占用了时间;所以在数据块传递时,为了提高速度,常去掉这些标志,采用同步传送。
由于数据块传递开始要用同步字符来指示,同时要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。
通讯方向:
在串行通讯中,把通讯接口只能发送或接收的单向传送方法叫单工传送;
而把数据在甲乙两机之间的双向传递,称之为双工传送。
在双工传送方式中又分为半双工传送和全双工传送。
半双工传送是两机之间不能同时进行发送和接收,任一时刻,只能发或者只能收信息。
8051单片机的串行接口结构
8051串行接口是一个可编程的全双工串行通讯接口。
它可用作异步通讯方式(UART),与串行传送信息的外部设备相连接,或用于通过标准异步通讯协议进行全双工的8051多机系统也可以通过同步方式,使用TTL或CMOS移位寄存器来扩充I/O口。
UART(UniversalAsynchronousReceiverTransmitter)是各种设备之间进行通信的关键模块。
用它来处理数据总线和串行口之间串—并和并—串转换的。
当一个设备需要和另一个连接的设备进行通信时,通常采用数字信号。
在发送端,这种并行的数字信号必须转换成串行信号后,才能通过有线或无线传输到另一台设备。
在接收端,串行信号必须要被恢复成并行信号才能进行处理。
应用非常广泛,如手机、工业控制、PC等应用中都要用到UART。
8051单片机通过引脚RXD(P3.0,串行数据接收端)和引脚TXD(P3.1,串行数据发送端)与外界通讯。
SBUF是串行口缓冲寄存器,包括发送寄存器和接收寄存器。
它们有相同名字和地址空间,但不会出现冲突,因为它们两个一个只能被CPU读出数据,一个只能被CPU写入数据。
或门
☞两个同名的接收/发送缓冲寄存器SBUF(99H)
指令MOVSBUF,A启动一次数据发送,可向SBUF再发送下一个数
指令MOVA,SBUF完成一次数据接收,SBUF可再接收下一个数
☞接收/发送数据,
无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对RI/TI清0,以备下一次收/发。
串行口相关的SFR(SCON,PCON)
1.串行口的控制与状态寄存器
串行口控制寄存器SCON
它用于定义串行口的工作方式及实施接收和发送控制。
字节地址为98H,其各位定义如下表:
D7
D6
D5
D4
D3
D2
D1
D0
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
SM0、SM1:
串行口工作方式选择位,其定义如下:
SM0、SM1
工作方式
功能描述
波特率
00
方式0
8位移位寄存器
Fosc/12
01
方式1
10位UART
可变
10
方式2
11位UART
Fosc/64或fosc/32
11
方式3
11位UART
可变
其中fosc为晶振频率
SM2:
多机通讯控制位。
在方式0时,SM2一定要等于0。
单机通信方式
在方式1中,当SM2=1则只有接收到有效停止位时,RI才置1。
在方式2或方式3当(SM2)=1且接收到的第九位数据RB8=0时,RI才置1。
REN:
接收允许控制位。
由软件置1以允许接收,又由软件清0来禁止接收。
TB8:
是要发送数据的第9位。
在方式2或方式3中,要发送的第9位数据,根据需要由软件置1或清0。
例如,可约定作为奇偶校验位,或在多机通讯中作为区别地址帧或数据帧的标志位。
RB8:
接收到的数据的第9位。
在方式0中不使用RB8。
在方式1中,若(SM2)=0,RB8为接收到的停止位。
在方式2或方式3中,RB8为接收到的第9位数据。
TI:
发送中断标志。
在方式0中,第8位发送结束时,由硬件置位。
在其它方式的发送停止位前,由硬件置位。
TI置位既表示一帧信息发送结束,同时也是申请中断,可根据需要,用软件查询的方法获得数据已发送完毕的信息,或用中断的方式来发送下一个数据。
TI必须用软件清0。
RI:
接收中断标志位。
在方式0,当接收完第8位数据后,由硬件置位。
在其它方式中,在接收到停止位的中间时刻由硬件置位(例外情况见于SM2的说明)。
RI置位表示一帧数据接收完毕,可用查询的方法获知或者用中断的方法获知。
RI也必须用软件清0。
特殊功能寄存器PCON
PCON是为了在CHMOS高速CMOS的80C51单片机上实现电源控制而附加的。
其中最高位是SMOD。
SMOD:
在串行口工作方式1、2、3中,是波特率加倍位
=1时,波特率加倍
=0时,波特率不加倍。
(在PCON中只有这一个位与串口有关)
GF1,GF0:
用户可自行定义使用的通用标志位
串行口的工作方式
8051单片机的全双工串行口可编程为4种工作方式:
1.方式0为移位寄存器输入/输出方式。
可外接移位寄存器以扩展I/O口,也可以外接同步输入/输出设备。
8位串行数据是从RXD输入或输出,TXD用来输出同步脉冲。
输出
串行数据从RXD引脚输出,TXD引脚输出移位脉冲。
CPU将数据写入发送寄存器时,立即启动发送,将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。
发送完一帧数据后,发送中断标志TI由硬件置位。
输入
当串行口以方式0接收时,先置位允许接收控制位REN。
此时,RXD为串行数据输入端,TXD仍为同步脉冲移位输出端。
当(RI)=0和(REN)=1同时满足时,开始接收。
当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。
下面两图分别是方式0扩展输出和输入的接线图。
引脚定义
电路原理图
74LS165引脚定义:
A,B,C,D,E,F,G,H并行输入端。
QH串行输出端。
CLOCK:
时钟输入端。
CLOCKINHIBIT:
时钟禁止端。
当时钟禁止端CLK2为低电平时,充许时钟输入。
SHIFT/LOAD:
移位与置位控制端。
SER:
扩展多个74LS165的首尾连接端。
方式0工作时,多用查询方式编程:
发送:
MOVSBUF,A接收:
JNBRI,$
JNBTI,$CLRRI
CLRTIMOVA,SBUF
JNBTI,$当TI标志位不为1的时候转向自己循环等待,直到条件满足
例:
2方式1为波特率可变的10位异步通讯接口方式。
发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。
输出当CPU执行一条指令将数据写入发送缓冲SBUF时,就启动发送。
串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。
输入在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。
只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。
所以在方式1接收时,应先用软件清零RI和SM2标志。
3方式2
方式2为固定波特率的11位UART方式。
它比方式1增加了一位可程控为1或0的第9位数据。
输出:
发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。
它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。
当CPU执行一条数据写入SUBF的指令时,就启动发送器发送。
发送一帧信息后,置位中断标志TI。
输入:
在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。
在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。
且不置位RI。
再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。
4工作方式3
方式3为波特率可变的11位UART方式。
除波特率外,其余与方式2相同。
波特率选择
如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。
在8051串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。
1.方式0
方式0的波特率固定为主振频率的1/12。
2.方式2
方式2的波特率由PCON中的选择位SMOD来决定,可由下式表示:
波特率=(2SMOD/64)*fosc,
也就是当SMOD=1时,波特率为1/32fosc,
当SMOD=0时,波特率为1/64fosc
3.方式1和方式3
定时器T1作为波特率发生器,其公式如下:
波特率=
定时器T1溢出率
T1溢出率=T1计数率/产生溢出所需的周期数
式中T1计数率取决于它工作在定时器状态还是计数器状态。
当工作于定时器状态时,T1计数率为fosc/12;
当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于fosc/24。
产生溢出所需周期与定时器T1的工作方式、T1的预置值有关。
定时器T1工作于方式0:
溢出所需周期数=8192-x
定时器T1工作于方式1:
溢出所需周期数=65536-x
定时器T1工作于方式2:
溢出所需周期数=256-x
因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。
当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。
下表列出了定时器T1工作于方式2常用波特率及初值。
常用波特率
Fosc(MHZ)
SMOD
TH1初值
19200
11.0592
1
FDH
9600
11.0592
0
FDH
4800
11.0592
0
FAH
2400
11.0592
0
F4h
1200
11.0592
0
E8h
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行 接口