mcs-51单片机串行通信_第1页
mcs-51单片机串行通信_第2页
mcs-51单片机串行通信_第3页
mcs-51单片机串行通信_第4页
mcs-51单片机串行通信_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1. 串行通信概述2. 串行通信原理3. 串行通信的控制寄存器4. 串行通信的工作方式5. 多机通信第8章串行通信本章内容Single Chip Microcomputer串行通信概述单片机与外围设备的通信有并行和串行两种方式。并行通信是多位数据同时传送,速度快,效率高,但需要的数据线条数也比较多,只适合短距离通信。串行通信是按先后次序一位一位传送数据,所需的数据线条数少,特别适用长距离传送。 MCS-51单片机内部有一个全双工的串行口,可以通过软件设定以 4种工作模式和不同的波特率进行工作。v 串行通信的通信方式异步通信方式异步通信方式 : 单片机的串行通信使用的是单片机的串行通信使用的是异步串行通信,异步串行通信, 异步通信是指发送方和接收方采用独立的时钟, 即双方没有一个相同的参考时钟作为基准。 在异步通信中数据一般在异步通信中数据一般以一个字符为单位进行传送。用一帧来表示以一个字符为单位进行传送。用一帧来表示一个字符,一帧信息由起始位(为一个字符,一帧信息由起始位(为 0信号,占信号,占1位)、数据位(传输时低位在先,高位在后位)、数据位(传输时低位在先,高位在后)、奇偶较验位(可要可不要)和停止位()、奇偶较验位(可要可不要)和停止位(为为 1信号,可信号,可 1位、位、 1位半或位半或 2位)组成。位)组成。同步通信方式:同步通信方式: 在同步通信中,每个数据块的开头以同步字符 SYN加以指示,使发送与接受双方取得同步。数据块的各字符之间没有起始位和停止位,提高了通信的速度。但为了能保持同步传送,在同步通信中须用一个时钟来协调收发器的工作,这就增加了设备的复杂性。 v 字符格式双方要事先约定字符的编码形式、奇偶校验形式及起始位和停止位的规定。例如用 ASCII码通信,有效数据为7位,加一个奇偶校验位、一个起始位和一个停止位共 10位。 v 波特率波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位 /秒。它与字符的传送速率 (字符 /秒 )之间有以下关系:波特率 =1个字符的二进制编码位数 字符 /秒注:在异步通信中,通信双方必须事先约定字符格式和波特率v 串行通信的三种数据传输模式)单工方式: 数据仅按一个固定方向传送。常用于串行口的打印数据传输与简单系统间的数据采集。 )半双工方式: 使用同一根传输线,数据可双向传送,但不能同时进行,实际应用中采用某种协议实现收 /发开关转换。 )全双工方式: 数据的发送和接收可同时进行,通信双方都能在同一时刻进行发送和接收操作,但一般全双工传输方式的线路和设备比较复杂。 发送端 接受端数据线地线单工方式发送 /接收端接收 /发送端数据线地线半双工方式发送 /接收器接收 /发送端数据线地线全双工方式串行通信工作原理v 串行通信接口MCS-51单片机串行口的数据传送为全双工传送方式。接收、发送数据均可工作在查询或中断方式,能方便实现双机和多机通信。 MCS-51单片机内部的串行接口,有一个发送缓冲器和一个接收缓冲器,它们在物理上是独立的。发送缓冲器只能写入信息,不能被读出,用于存储发送信息。接收缓冲器只能读出信息,不能被写入,用于存储接收到的信息。 这两个缓冲器共用一个地址: 99H。另外,在串行通讯时用二个特殊功能寄存器 SCON、 PCON控制串行接口的工作方式和波特率。如下图所示。/12TH1 TL1/2/16 发送 SBUF(99H)接收 SBUF(99H)输入移位寄存器/16起始位检测内部 BUS移位时钟T1溢出率fsocSMOD-1SMOD-0PXD(P3.0)TIRITXD(P3.1)写 SBUF读 SBUF装载SBUFv 注:接收 /发送缓冲寄存器 SBUF,虽然共用一个地址,但由于操作是独立的,故不会发生冲突。对接收 /发送缓冲寄存器 SBUF的操作,必须通过累加器 A进行。指令 MOV SBUF, A 启动一次数据发送指令 MOV A, SBUF 完成一次数据接收 ,SBUF可再接收下一个数据接收 /发送数据 ,无论是否采用中断方式工作 ,每接收/发送一个数据都必须用指令对 RI/TI清 0,以备下一次收 /发。v 串行通信控制寄存器( SCON)串行通信控制寄存器 SCON的字节地址为 98H,位地址为 98H-9FH。可以对串行接口的工作方式、接收发送和串行接口的工作状态标志进行设置。其格式如下 : 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI1) SM0 、 SM1 串行口工作方式选择位其状态组合和对应工作方式为:SM0 SM1 工作方式0 0 方式 00 1 方式 11 0 方式方式 21 1 方式方式 32) M2 多机通信控制位 ,主要用于方式 2和方式 3中在接收状态时,当串行口工作于方式 2或 3,以及 SM2=1时,只有当接收到的第 9位数据( RB8)为 1时,才把接收到的前 8位数据送入SBUF,且置位 RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第 9位数据是 0还是 1,都将前 8位数据送入 SBUF,并发出中断申请。在方式 0时, SM2必须为 0。在方式 1,若 SM2=1,只有接收到有效的停止位时,才能置位 RI。 3) REN 允许串行接收控制位 REN 0 禁止接收数据REN 1 允许接收数据4) TB8 发送数据第 9位。 在方式 2和方式 3时, TB8为所要发送的第 9位数据在多机通信中,以 TB8位的状态表示主机发送的是地址还是数据:TB8=0为数据TB8=1为地址也可用作数据的奇偶校验位。该位由软件置位或复位 。 5) RB8 接收数据第 9位在方式 2、 3时, RB8是接收的第 9位数据。可作为奇偶校验位或 地址帧 /数据帧的标志 在方式 1时,若 SM2=0,RB8是接收的停止位在方式 0时,不使用 RB86) TI 发送中断标志位在方式 0时,发送完第 8位数据后,该位由硬件置位。在其它方式下,于发送停止位之前,由硬件置位 ,并向 CPU申请中断CPU在响应中断后,必须用软件清零。 在非中断方式, TI也可供查询使用。 7) RI 接收中断标志位在方式 0时,接收完第 8位数据后,该位由硬件置位。在其它方式下,于接收到停止位之前,该位由硬件置位 ,并向CPU申请中断在 CPU响应中断后,也必须用软件清零 在非中断方式, RI也可供查询使用。 v 3电源控制寄存器电源控制寄存器 PCON的字节地址为 87H,没有位寻址功能。主要实现对单片机电源的控制管理,但 PCON的最高位 SMOD是串行口波特率系数控制位。其格式如下:位序 D7 D6 D5 D4 D3 D2 D1 D0位符号 SMOD / / / GF1 GF0 PD IDL) SMOD波特率倍增位在串行口工作方式 1、 2、 3中,是波特率加倍位:SMOD=1:波特率加倍 SMOD=0:表示波特率不加倍。) GF1,GF0用户可自行定义的通用标志位 ) PD掉电方式控制位PD=0:常规工作方式PD=1:进入掉电方式CPU处于掉电方式时 ,振荡器停振,片内 RAM和 SRF的值保持不变, P0P3 口维持原状,程序停止。只有复位能退出掉电方式。 4) IDL待机方式 (空闲方式 )控制位。 IDL=0:常规工作方式IDL=1:进入待机方式CPU处于待机方式时 ,振荡器继续振荡,中断、定时器、串口功能继续有效,片内 RAM和 SRF保持不变, CPU状态保持, P0P3口维持原状,程序停顿。中断、复位都能退出待机状态。 串行通信工作方式串行口的工作方式由 SM0和 SM1确定,编码和功能如下表所示 :SM0 SM1 方式 功能说明 波特率0 0 方式 0 移位寄存器方式 fosc/120 1 方式 1 8位 UART 可变1 0 方式 2 9位 UART fosc/64 或者 fosc/321 1 方式 3 9位 UART 可变注: 方式 0和方式 2的波特率是固定的,而方式 1和方式 3的波特率是可变的,由 T1的溢出率决定。v 工作方式串行口的工作方式 0为移位寄存器方式,可外接移位寄存器以扩展 I/O口,也可以外接同步输入 /输出设备。一帧信息有 8位数据,低位在前,高位在后,没有起始位和停止位,数据从 RXD输入或输出。 TXD用来输出同步脉冲。波特率固定为 fosc/12。数据格式如下:D0 D1 D2 D3 D4 D5 D6 D7v 1)发送数据将数据写入发送缓冲器 SBUF后, TXD端输出移位脉冲,串行口把 SBUF中的数据依次由低到高以 fosc/12的波特率从 RXD端输出,一帧数据发送完毕后硬件置发送中断标志位 TI为 1。若要再次发送数据,必须用指令将TI清零。v )接收数据在 RI=0的条件下,用指令置 REN=1即可开始串行接收。 TXD端输出移位脉冲,数据依次由低到高以 fosc/12的波特率经 RXD端接收到 SBUF中,一帧数据接收完成后硬件置接收中断标志位 RI为 1。若要再次接收一帧数据,应该用指令 MOV A, SBUF将上一帧数据取走,并用指令将 RI清零。 v )方式 0工作时,多用查询方式编程:发送: MOV SBUF, A JNB TI, $ CLR TI 接收: JNB RI, $CLR RIMOV A, SBUF注)复位时, SCON被清零,工作方式的缺省值为方式 0。接收前,务必先置位 REN=1方允许接收数据。v 工作方式串行接口工作方式 1为 8位异步通信接口,传送一帧数据有 1O位, 1位起始位 (低电平信号 ), 8位数据位 (先低位后高位 ), 1位停止位 (高电平信号 )。波特率可变,由定时器 /计数器 T1的溢出率和 SMOD(PCON.7)决定。其格式如下:起始位数据位 停止位 D0 D1 D2 D3 D4 D5 D6 D7 1v 1)发送数据将数据写入发送缓冲器 SBUF后,在串行口由硬件自动加入起始位和停止位来构成完整的字符帧,并在移位脉冲的作用下将其通过 TXD端向外串行发送,一帧数据发送完毕后硬件自动置 TI=1。再次发送数据前,用指令将 TI清零。 v )接收数据在 REN=1的条件下,串行口采样 RXD端,当采样到从1向 0的状态跳变时,就认定为已接收到起始位。随后在移位脉冲的控制下,数据从 RXD端输入。在方式 1接收数据时,必须同时满足以下两个条件: RI=0, SM2=0或接收到的停止位 =1。若有任一条件不满足,则所接收的数据帧就会丢失。在满足上述接收条件时,接收到的 8位数据位进入接收缓冲器 SBUF,停止位送入 RB8,并置中断标志位 RI=1。再次接收数据前,需用指令将 RI清零。 v 工作方式串行接口工作方式 2为 9位异步通信接口,传送一帧数据有 11位, 1位起始位 (低电平信号 ), 8位数据位 (先低位后高位 ), 1位可编程位, 1位停止位 (高电平信号 )。其格式如下: 起始位数据位 停止位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 1v 1)发送数据发送数据前,由指令将 TB8置位或清零,将数据写入发送缓冲器 SBUF后,在串行口由硬件自动加入起始位和停止位来构成完整的字符帧,并在移位脉冲的作用下将其通过 TXD端向外串行发送,发送完毕后硬件自动置TI=1。在工作方式 2下,波特率只有二种: SMOD 0时,波特率为 f0SC/64, SMOD 1时,波特率为 f0SC/32。 v )接收数据在 REN=1的条件下,串行口采样 RXD端,当检测到有从 1向 0的状态跳变,便在移位脉冲的控制下,从 RXD端接收数据。在方式 2的接收中,也必须同时满足以下两个条件: RI=0, SM2=0或接收到的第 9位数据位为 1。若有任一条件不满足,则所接收的数据帧就会丢失。在满足上述接收条件时,接收到的 8位数据位进入接收缓冲器 SBUF中,第 9位数据位送入 RB8中,并置 RI=1。再次接收数据时,需用指令将 RI清零。 v )工作方式串 行接口工作方式 3也是 9位异步通信接口,传送一帧数据有 11位, 1位起始位 (低电平信号 ), 8位数据位 (先低位后高位 ), 1位可编程位, 1位停止位 (高电平信号 )。但波特率与工作方式 1相同,由定时器 /计数器 T1的溢出率和 SMOD( PCON.7)决定。也就是说方式 3的工作机制与方式 2相同,波特率与方式 1相同,它是方式 1和方式 2的综合运用。 多机通信MCS-51单片机工作在串行方式 2、 3时,具有多机通信功能,可以实现一台主机与多台从机的信息交流。通信只在主从机之间进行,而从机与从机之间不可以直接通信。下图为 8051单片机的主从式多机通讯系统。 RXDTXD主机8051RXD TXD80510#从机RXD TXD80511#从机RXD TXD8051N#从机v 主从多机通信的过程如下:) 使所有的从机工作在方式 2或方式 3,且 SM2位置 1,REN=1,以便接收主机发来的地址。)主机发出要寻址的从机的一帧地址信息,其中包括 8位需要与之通信的从机地址,第 9位 TB8=1。)所有从机接收到地址帧后,置 RI=1。)各从机相应中断,进入中断服务程序,进行地址比较。对于地址相同的从机,使 SM2 0,准备接收主机随后发来的数据信息;对于地址不符合的从机,仍保持SM2=1的状态,对主机随后发来的数据不予理睬,直至发送新的地址帧。)主机给已被寻址的从机发送控制指令和数据 (数据帧的第 9位为 0)实现主从通信。 串行通信波特率设置v 四种工作方式下的波特率计算)工作方式 O: 波特率固定不变,它与系统的振荡频率 fosc的大小有关,其值为 fosc/12。)工作方式 1和方式 3: 波特率是可变的,波特率=2SMOD/32 定时器 T1的溢出率)工作方式 2: 波特率有两种固定值。)当 SM0D=1时 , 波特率 =2SM0D/64fosc=fosc/32)当 SM0D=0时 , 波特率 =2SM0D/64fosc=fosc/64v 定时器 T1的溢出率计算定时器的溢出率是指在 1秒钟内产生溢出的次数。定时器的溢出率与定时器的工作模式有关,可以改变单片机内部的特殊功能寄存器 TM0D中的 T1方式字段中的 M1、 M0二位,即 TM0D.5和 TMOD.4位,选择定时器工作的四种工作模式中的一种进行工作。在串行口通信中,一般都使定时器 T1工作在模式 2。在工作方式 2时,定时器 T1的溢出一次所需要的时间为: (28N) 12时钟周期 =(28N) 12/fosc(秒 )于是,定时器每秒所溢出的次数为:定时器 T1的溢出率 =fosc/(12(28N) 。 式中的 N为时间常数,即 TH1的预置初值。 串行通信应用举例用 MCS

温馨提示

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

评论

0/150

提交评论