第七章UART串行接口_第1页
第七章UART串行接口_第2页
第七章UART串行接口_第3页
第七章UART串行接口_第4页
第七章UART串行接口_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、第第7 7章章UART UART 串行接口串行接口 教学目的:了解80C51系列单片机UART串行接口的结构、原理及应用;能够采用查询方式进行串行通信。教学重点:1. UART串行接口的工作原理; 2. UART串行接口的4种工作方式的编 程、应用。教学难点:1 .多机通信方式 2.波特率值的设置7.1 串行通信概述 在实际应用中,不但计算机与外部设备之间常常要进行信息交换,而且计算机之间也需要交换信息,所有这些信息的交换均称为“通信”。 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。并行通信 并行通信:所传送数据的各位用多条数据线同时发送或接收

2、 。 并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难。串行通信 串行通信串行通信:所传送数据的各位按顺序一位一位地发送或接收。 串行通信的特点串行通信的特点:传输线少,长距离传送时成本:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的低,且可以利用电话网等现成的设备,但数据的传送控制比并行通信复杂。传送控制比并行通信复杂。7.1.1 同步通信和异步通信方式1 1、异异步通信步通信ASYNCASYNC(Asynchronous Data CommunicatioAsynchronous Data Communication n)

3、 异步通信是以字符(构成的帧)为单位进行传输(也称为帧格式),字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间是异步的(字符之间不一定有“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间的距离均为“位间隔”的整数倍)。一个字符由起始位、数据位、奇偶校验位和停止位4个部分组成。起始位为0信号占1位;其后接着的就是数据位,它可以是5位、6位、7位或8位,传送时低位在先、高位在后;再后面的1位为奇偶校验位,可要也可以不要;最后是停止位,它用信号1来表示字符的结束,可以是1位、1位半或2位。p 起始位:通信线上没有数据传送时,为高电平(逻辑1)

4、;当要发送数据时,首先发1个低电平信号(逻辑0),此信号称为“起始位”,表示开始传输1帧数据。p 数据位:起始位之后的位即数据位。一般从最低位开始传送,最高位在最后。p 奇偶校验位:通过对数据奇偶性的检查,可用于判别字符传送的正确性,有3种可能的选择,即奇、偶、无校验。通信双方须事先约定是采用奇校验还是偶校验。p 停止位:表示一帧结束,用高电平(逻辑1)表示。停止位可以是1、1.5或2位。 例如,采用串行异步通信方式传送ASCII码字符5,规定为7位数据位,1位偶校验位,1位停止位,无空闲位。 由于5的ASCII码为35H,其对应7位数据位为0110101,如按低位在前、高位在后顺序排列应为1

5、010110。前面加1位起始位,后面配上偶校验位1位0,最后面加1位停止位1,因此传送的字符格式为0101011001,其对应的波形如图所示。传送ASCII码字符5的波形图 在串行异步传送中,CPU与外设之间事先必须约定:字符格式。 双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。例如用ASCII码通信,有效数据为7位,加1个奇偶校验位、1个起始位和1个停止位共10位。当然停止位也可大于1位。波特率(Baudrate)。 波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位/秒。 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2

6、3位用于起止位,各帧之间还有间隔,因此传输效率不高。2 2、同步通信、同步通信SYNCSYNC(Synchronous Data CommunicationSynchronous Data Communication) 在异步传送中,每1个字符都要用起始位和停止位作为字符开始和结束的标志,占用了一定的时间。为了提高传送速度,有时就去掉这些标志,而采用同步传送,即1次传送1组数据。在这1组数据的开始处要用同步字符SYN(12个)来加以指示,实现发送端和接收端同步。一旦检测到约定同步字符,下面就连续、顺序地发送和接受数据。 同步通信时要建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时

7、,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。 同步通信所传输的一帧数据可以是任意位。所以传输的效率较高,但实现的硬件设备比异步通信复杂。7.1.2 串行通信的数据传送速率 传送速率是指数据传送的速度。 在串行通信中数据传送速率的单位用波特率(Baud rate)表示,其意义是每秒钟传送多少位二进制数。单位为b/s或bps 波特率与字符的传送速率(字符/秒)之间存在如下关系: 波特率=位/字符字符/秒=位/秒 例如,假设字符传送的速率为120字符/秒,而每1个字符为10位,那么传送的波特率为:10位/字符120字符/秒=1200

8、位/秒=1200波特 每1位二进制位的传送时间Td就是波特率的倒数,例如上例中: Td=1/1200=0.833ms7.1.3 串行通信的方式串行通信的数据传送方向有3种形式。单工(Simplex):只允许单方向传送,只需一条数据线。半双工(Half Duplex) :接收和发送分时双向进行,只需一条数据线。全双工(Full Duplex) :甲、乙两机之间数据的发送和接收可以同时进行,通信必须使用二根数据线 。图7-2 通信方式示意图7.1.4 通信协议 计算机之间进行数据传输时的一些约定,包括通信方式、帧格式、波特率、命令码的约定等 。7.2 80C51串行口简介 80C51的串行口是一个

9、可编程的全双工串行通信接口,通过软件编程它可以做通用异步接收和发送器UART(Universal Asynchronous ReceiverTransmitter),也可做同步移位寄存器用。其帧格式可设置8位、10位或11位,并能设置不同的波特率 。7.2.1 串行口结构与工作原理图 73 串行口结构框图 主要由接收与发送缓冲寄存器SBUF、输入移位寄存器以及串行控制寄存器SCON等组成。 波特率发生器可以利用定时器T1或T2控制发送和接收的速率。 SCON用于存放串行口的控制和状态信息。 发送数据缓冲寄存器SBUF用于存放准备发送出去的数据;接收数据缓冲寄存器SBUF用于接收由外部输入到输入

10、移位寄存器中的数据。 80C51串行口正是通过对上述专用寄存器的设置、检测与读取来管理串行通信。 串行口的接收发送操作:首先对串行口初始化。发送时CPU写SBUF ,一方面修改发送寄存器,同时启动数据串行发送到TXD端,发送完毕后置标志位TI;接收时置允许接收位REN才开始接受操作,接受完毕置位RI,这时CPU可以读SBUF,即读接收到的数据。 发送操作:数据写入发送缓冲寄存器SBUF(99H),串行口即把8位数据以fosc 12 波特率从RXD端送出(低位在前), TXD端送出同步移位脉冲,发送完后置中断标志TI=1。MOV TMOD, #00HMOV SBUF, #dataJNB TI,

11、$CLR TIRET 接收操作:REN是串行口接收器允许接收控制位。当RI=0,软件置REN为1时,即开始从RXD端以fosc 12波特率输入数据(低位在前), TXD端送出同步移位脉冲,当接收到8位数据时,置中断标志RI=1。RECV:MOV TMOD,#00H CLR RI SETB REN JNB RI, $ MOV A,SBUF CLR RI RET7.2.2 串行口寄存器 与串行口工作有关的寄存器有6个:串行口控制寄存器SCON、接收与发送缓冲寄存器SBUF、电源控制寄存器PCON、中断允许控制寄存器IE、中断优先级寄存器IP。1、串行口控制寄存器 SCON用于串行通信的方式选择、接

12、收和发送控制,并可反映串行口的工作状态SM0、SM1:串行方式选择位SM2:多机通信控制位 主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB80时不激活RI,收到的信息丢弃;RB81时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。 在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。REN:允许串行接收位 由软件置REN=1,

13、则启动串行口接收数据;若软件置REN=0,则禁止接收。TB8:发送数据的第9位 在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。在方式0和方式1中,该位未用。RB8:接收数据的第9位在方式2或方式3中,是接收到数据的第九位,双机通信是奇偶位,多机通信是地址数据标识位。 TI:发送中断标志位 在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。RI:接收中断标志位 在方式0时,当串行接收第8位

14、数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。复位时,SCON的所有位均清02、数据缓冲寄存器SBUF 数据缓冲寄存器SBUF实际上是2个独立的寄存器:接收数据缓冲寄存器和发送数据缓冲寄存器,采用同一个地址代码99H,寄存器名都是SBUF。 CPU通过不同的操作指令区别这2个寄存器,CPU发出写SBUF命令时,即向发送缓冲寄存器中装载新的信息,同时启动数据串行发送,51系列单片机没有专门的启动发送状态的指令;当CPU发出读SBUF命令时,即读接收缓冲寄存器的内容。 接收寄存器是双缓冲的,以避免

15、在接收下一帧数据之前,CPU未能及时响应接收器的中断,没有把上一帧数据读走,而产生两帧数据重叠的问题。3、电源控制寄存器PCON PCON中只有一位(最高位)SMOD与串行口的工作有关, 该位是串行口的波特率倍增位; SMOD=1 时, 波特率加倍, 否则不加倍;复位时,SMOD=0。4、中断允许控制寄存器IE IE用于控制与管理单片机的中断系统。IE的ES位用于控制串行口的中断:ES=0时,禁止串行口中断;ES=1时,允许串行口中断。5、中断优先级寄存器IP IP用于管理单片机中各中断源中断优先级。IP的PS位用于设置串行口中断的优先级:PS=0时,串行口中断为低优先级;PS=1时,串行口中

16、断为高优先级。7.2.3 80C51的帧格式 80C51串行口通过编程可设置4种工作方式,三种帧格式。 方式0以8位数据为一帧,不设起始位和停止位,先发送或接收最低位。 方式1以10位为一帧传输,设有一个起始位“0”,8个数据位和一个停止位“1”。 方式2和3以11位为一帧传输,设有1个起始位“0”,8个数据位,1个可编程位(第九数据位)D8和1个停止位“1”。7.2.4 波特率的设置 在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。 串行口的四种

17、工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。方式0的波特率 = fosc/12方式2的波特率 =(2SMOD/64) fosc 方式1的波特率 =(2SMOD/32)(T1溢出率)方式3的波特率 =(2SMOD/32)(T1溢出率) 当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。为了避免因溢出而产生不必要的中断,此时应禁止T1中断。这时溢出率取决于TH1中的计数值。 T1 溢出率 = fosc /12256 (TH1) 在单片机的应用中,常用的晶振频率为:12M

18、Hz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。7.3 串行口通信工作方式7.3.1 方式0 方式0时,串行口为同步移位寄存器的输入输出方式。以8位数据为一帧,发送和接收均为8位数据,低位在先,高位在后。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。波特率固定为fosc/12。主要用于扩展并行输入或输出口。方式0发送 数据从RXD引脚串行输出,TXD引脚输出同步脉冲。当1个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的固定波特率从RXD引脚输出,从低位到高位。发送完后置中断标志TI

19、为1,呈中断请求状态,在再次发送数据之前,必须用软件将TI清0。方式0接收 在满足REN=1和RI=0的条件下,串行口处于方式0输入。此时,RXD为数据输入端,TXD为同步信号输出端,接收器也以fosc/12的波特率采样RXD引脚输入的数据信息。当接收器接收完8位数据后,置中断标志RI=1为请求中断,在再次接收之前,必须用软件将RI清0。 在方式0工作时,必须使SCON寄存器中的SM2位为“0”;TB8和RB8在方式0中也未用。 方式0发送或接收完8位数据后由硬件置位TI或RI中断请求标志,CPU在响应中断后要用软件清除TI或RI标志。方式0接收和发送电路7.3.2 方式1 方式1是10位通用

20、异步通信接口。TXD(P3.1)为数据发送引脚,RXD( P3.0)为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。 波特率是可变的, 它取决于定时器 T1 的溢出速率及SMOD的状态。方式1的波特率=(2SMOD/32)定时器T1的溢出率方式1发送 用软件清除 TI后, CPU执行任何一条以 SBUF为目标寄存器的指令, 就启动发送过程。数据由TXD引脚输出。一帧信号发送完时, 将置位发送中断标志TI=1, 向CPU申请中断, 完成一次发送过程 用软件置REN为1时,且RI=0,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发

21、生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。方式1接收7.3.3 方式2和方式3 方式2或方式3时为11位的异步通信方式。TXD为数据发送引脚,RXD为数据接收引脚 。 方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为1

22、1位。 方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。发送 发送前,先根据通信协议由软件设置TB8(如作奇偶校验位或地址数据标识位),然后执行任何一条以SBUF作为目的寄存器的写指令即启动发送器,同时TB8自动装到发送移位寄存器的第9位位置上 ,从TXD端输出一帧数据 ,发送完毕,TI标志=1。多机通信中,TB8=1为地址帧; TB8=0为数据帧。接收 先置位REN为1,使串行口处于允许接收状态,同时还要将RI清0。在满足这个条件的前提下,再根据SM2的状态和所接收到的RB8的状态决定是否会使RI置1,并申请中断,接收数据。 当SM20时,不管RB8

23、为0还是为1,RI都置1,此串行口将接收发来的信息。 当SM21,且RB8为l时,表示在多机通信情况下,接收的信息为地址帧,此时RI置1。串行口将接收发来的地址。 当SM21,且RB8为0时,表示接收的信息为数据帧,但不是发给本从机的,此时RI不置1,因而SBUF中所接收的数据帧将丢失。 8 位数据装入接收缓冲器SBUF,第9位数据装入SCON中的RB8以及置位 RI的信号只有在产生最后一个移位脉冲且同满足下列两个条件, 才会产生: RI=0; SM2=0或接收到的第9位数据为“1”。 上述两个条件中任一个不满足, 所接收的数据帧就会丢失, 不再恢复。 两者都满足时, 第9位数据装入 TB8, 前8位数据装入SBUF。7.3.4 多机通信图7-4多机通信连接图主从多机通信的具体过程如下:(1) 使所有的从机的SM2位置1,以便接收主机发来的地址。(2) 主机发出一帧地址信息,其中包括8位需要与之通信的从机地址,第9位为1。(3) 所有从机接收到地址帧后,各自将所接收到的地址与本机地址相比较,对于地址相同的从机,使SM2位清零以接收主机随后发来的所有信息;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧。(4) 主机给已被寻址的从机发送控制指令和数据(数据帧的第9位为0)。(5)本次通信结束后,主、从机重置SM2

温馨提示

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

评论

0/150

提交评论