C51串行通信及应用.ppt_第1页
C51串行通信及应用.ppt_第2页
C51串行通信及应用.ppt_第3页
C51串行通信及应用.ppt_第4页
C51串行通信及应用.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

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

文档简介

7 串行口 通信的基本方式有两种:并行通信与串行通信 (1)并行通信:数据的各位同时传送 特点: l l 传送速度快、效率高。但有多少传送速度快、效率高。但有多少 数据位就需多少根数据线,因此传数据位就需多少根数据线,因此传 送成本高。送成本高。 l l 在集成电路芯片的内部、同一插在集成电路芯片的内部、同一插 件板上各部件之间、同一机箱内各件板上各部件之间、同一机箱内各 插件板之间等的数据传送都是并行插件板之间等的数据传送都是并行 的。的。 l l 并行通信的距离通常并行通信的距离通常小于小于3030米米。 1 7 串行口 (2)串行通信:数据一位一位顺序传送 特点:特点: l l 数据传送按位顺序进行,最少数据传送按位顺序进行,最少 只需一根传输线即可完成,成本只需一根传输线即可完成,成本 低但速度慢,在图中可以看到,低但速度慢,在图中可以看到, 并行传送并行传送8 8位数只需串行发送一位数只需串行发送一 位的时间位的时间1T1T。 l l 计算机与远程终端或终端与终计算机与远程终端或终端与终 端之间的数据传送通常都是串行端之间的数据传送通常都是串行 的。的。 l l 串行通信的距离可以从串行通信的距离可以从几米到几米到 几千公里。几千公里。 2 3 9.3 串行口 按照串行数据的同步方式,串行通信又分为两种方式按照串行数据的同步方式,串行通信又分为两种方式: : 异步通信和同步通信。80518051中,使用中,使用异步异步通信方式通信方式 . . 异步通信: l l 数据通常是以字符(字节)为单位组成数据通常是以字符(字节)为单位组成字符帧字符帧传送的。传送的。 l l 字符帧由发送端字符帧由发送端一帧一帧一帧一帧地发送,通过传输线由接收设备一帧地发送,通过传输线由接收设备一帧 一帧地接收。一帧地接收。 l l 发送端和接收端可以有发送端和接收端可以有各自的时钟各自的时钟来控制数据的发送和接收,来控制数据的发送和接收, 这两个时钟源彼此独立,互不同步。这两个时钟源彼此独立,互不同步。 l l 在异步通信中,发送端和接收端依靠在异步通信中,发送端和接收端依靠字符帧格式字符帧格式规定和规定和波特率波特率 来协调数据的发送和接收。字符帧格式和波特率由用户根据实际来协调数据的发送和接收。字符帧格式和波特率由用户根据实际 情况选定。情况选定。 4 9.3 串行口 字符帧格式字符帧格式 字符帧也叫数据帧,由字符帧也叫数据帧,由起始位起始位、数据位数据位、奇偶校验位奇偶校验位和和停停 止止 位位四部分组成。四部分组成。 5 异步通信数据格式 6 9.3 串行口 l l 在这种格式标准中,信息的两种状态:在这种格式标准中,信息的两种状态: “ “mark”mark”:译为:译为“ “标记标记” ”或或“ “传号传号” ”,对应逻辑状态。,对应逻辑状态。 在发送器空闲时,数据线应保持在在发送器空闲时,数据线应保持在markmark状态状态; “ “space”space”:译为:译为“ “空白空白” ”或或“ “空号空号” ”,对应逻辑状态。,对应逻辑状态。 l 起始位:起始位:位于字符帧开头,占一位,使数据线处于位于字符帧开头,占一位,使数据线处于“ “space”space”( 逻辑逻辑 ) 状态,用于向接收设备表示发送端开始发送一帧信息。状态,用于向接收设备表示发送端开始发送一帧信息。 l l 数据位:数据位:紧跟起始位之后就传送数据位。在数据位中,低位在前(紧跟起始位之后就传送数据位。在数据位中,低位在前( 左),高位在后(右)。根据字符编码方式的不同,数据位可取左),高位在后(右)。根据字符编码方式的不同,数据位可取5 5位位 、6 6位、位、7 7位或位或8 8 位。若传送数据为位。若传送数据为ASCIIASCII码,则常取码,则常取7 7位。位。 l l 奇偶校验位:奇偶校验位:位于数据位之后,仅占一位,用于对字符传送作正确位于数据位之后,仅占一位,用于对字符传送作正确 性检查。奇偶校验位有性检查。奇偶校验位有3 3种可能的选择:奇、偶或无校验,由用户根种可能的选择:奇、偶或无校验,由用户根 据需要选定。据需要选定。 l l 停止位:停止位:位于字符帧末尾,它对应于位于字符帧末尾,它对应于“ “mark”mark”(逻辑(逻辑1 1)状态,用于)状态,用于 向接收端表示一帧字符信息已发送完毕。停止位可以是向接收端表示一帧字符信息已发送完毕。停止位可以是1 1、1.51.5或或2 2位位 的高电平,在实际应用中由用户根据需要确定。的高电平,在实际应用中由用户根据需要确定。 7 9.3 串行口 波特率(baud rate) 波特率的定义:是每秒钟传送二进制数码的位数,( 亦称 比特数),单位是bps(bit per second),即位/秒。 字符的实际传送速率:是指每秒钟内所传字符帧的帧数, 与字符帧格式有关。字符的实际传送速率与波特率不同 。波特率是串行通信的重要指标,用于表征数据传送的 速率 波特率越高,数据传输速度越快。 位时间:每位的传送时间定义为波特率的倒数。 例如:波特率为2400bps的通信系统,其位时间Td为: Td=1/2400bps=0.417ms 8 9.3 串行口 同步通信 l l 同步通信是以一种连续串行传送数据的通信方式,同步通信是以一种连续串行传送数据的通信方式,一次一次 通信只传送一帧信息通信只传送一帧信息。 l l 这里的信息帧这里的信息帧与异步通信中的字符帧不同与异步通信中的字符帧不同,通常含有若,通常含有若 干个数据字符,如下图所示。干个数据字符,如下图所示。 l l 分为分为单同步信息帧结构和双同步信息帧结构单同步信息帧结构和双同步信息帧结构。它们都是。它们都是 由同步字符、数据字符和校验字符三部分组成由同步字符、数据字符和校验字符三部分组成 9 9.3 串行口 同步字符同步字符: : 位于帧结构的开头,用于确认数据字符的开始。位于帧结构的开头,用于确认数据字符的开始。 由于接收端不断对传输线采样,并把采样到的字符与双由于接收端不断对传输线采样,并把采样到的字符与双 方约定的同步字符比较,只有比较成功后才会把后面接方约定的同步字符比较,只有比较成功后才会把后面接 收到的字符数据加以存储。收到的字符数据加以存储。 数据字符数据字符: :在同步字符之后,个数不受限制,由所传送的数在同步字符之后,个数不受限制,由所传送的数 据块长度决定。据块长度决定。 校验字符校验字符CRC:CRC:位于帧结构末尾,有位于帧结构末尾,有1212个,用于接收端对个,用于接收端对 接收到的数据字符的正确性校验。接收到的数据字符的正确性校验。 关于同步字符:关于同步字符:在单同步信息帧结构中,常采用在单同步信息帧结构中,常采用ASCIIASCII码中码中 规定的规定的SYNSYN(即(即16H16H),在双同步信息帧结构中,一般),在双同步信息帧结构中,一般 采用国际通用标准代码采用国际通用标准代码EB90HEB90H。除了可以采用统一的标。除了可以采用统一的标 准格式外,还可以由用户约定。准格式外,还可以由用户约定。 10 9.3 串行口 在串行通信中,数据是在两个不同的站之间传送的在串行通信中,数据是在两个不同的站之间传送的 。按照数据传送的方向,串行通信可分为。按照数据传送的方向,串行通信可分为3 3种制式:种制式: 单工单工 半双工 全双工全双工 8051的串行口采用全双工制式 11 串行通信中的数据传送方式12 串行口内部结构示意简图 13 7.1 与串行口有关的特殊功能寄存器 (1)数据缓冲器SBUF(99H) l8051单片机通过引脚RXD(P3.0,串行数据接收端)和 引脚TXD(P3.1,串行数据发送端)与外界通讯。 lSBUF是串行口缓冲寄存器,在物理上, 它对应着两个独 立的寄存器, 一个发送寄存器, 一个接收寄存器。 l它们有相同名字和地址空间,但不会出现冲突,因为它 们两个一个只能被CPU读出数据,一个只能被CPU写入 数据 MOV SBUF,A ;发送 MOV A,SBUF ;读入 14 7.1 与串行口有关的特殊功能寄存器 (2)串行口控制寄存器SCON (98H) 它用于定义串行口的工作方式及实施接收和发送控制 D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI SM0、SM1:串行口工作方式选择位 15 串行口控制寄存器SCON 16 7.1 与串行口有关的特殊功能寄存器 SM2:多机通讯控制位(主要用于方式2和3)。在方式0时 ,SM2一定要等于0。在方式1中,当(SM2)=1则只有接 收到有效停止位时,RI才置1。在方式2或方式3中,当( SM2)=1且接收到的第九位数据RB8=0时,RI才置1。 REN:接收允许控制位。由软件置位以允许接收,又由软件 清0来禁止接收。REN=1允许接收;REN0禁止接收。 TB8: 是要发送数据的第9位。在方式2或方式3中,要发送 的第9位数据,根据需要由软件置1或清0。例如,可约定 作为奇偶校验位,或在多机通讯中作为区别地址帧或数 据帧的标志位。 RB8:接收到的数据的第9位。在方式0中不使用RB8。在方 式1中,若(SM2)=0,RB8为接收到的停止位。在方式2 或方式3中,RB8为接收到的第9位数据。 17 7.1 与串行口有关的特殊功能寄存器 TI: 发送中断标志。在方式0中,第8位发送结束时,由硬 件置位。在其它方式的发送停止位前,由硬件置位。TI 置位既表示一帧信息发送结束,同时也是申请中断,可 根据需要,用软件查询的方法获得数据已发送完毕的信 息,或用中断的方式来发送下一个数据。TI必须用软件 清0。 RI: 接收中断标志位。在方式0,当接收完第8位数据后, 由硬件置位。在其它方式中,在接收到停止位的中间时 刻由硬件置位(例外情况见于SM2的说明)。RI置位表示 一帧数据接收完毕,可用查询的方法获知或者用中断的 方法获知。RI也必须用软件清0。 18 7.1 与串行口有关的特殊功能寄存器 (3)电源控制寄存器PCON (87H) l特殊功能寄存器PCON中, 只有一位(最高位)SMOD与串 行口的工作有关, 该位是串行口波特率系数的控制位: SMOD=1 时, 波特率加倍, 否则不加倍。 l不可位寻址, 因此初始化时需要字节传送。 19 7.2 串行口的工作方式 l方式0移位寄存器输入/输出方式 l方式1波特率可变的10位UART方式 l方式2固定波特率的11位UART方式 l方式3波特率可变的11位UART方式 20 方式0 :移位寄存器输入/输出方式(同步) l可外接移位寄存器以扩展I/O口,也可以外接同步输入/ 输出设备。8位串行数据是从RXD输入或输出,TXD用 来输出同步脉冲。 l输出串行数据从RXD引脚输出,TXD引脚输出移位脉冲 。CPU将数据写入发送寄存器时,立即启动发送,将8位 数据以fos/12的固定波特率从RXD输出,低位在前,高 位在后。发送完一帧数据后,发送中断标志TI由硬件置 位。 l输入串行数据从RXD引脚输入,先置位允许接收控制位 REN。此时,RXD为串行数据输入端,TXD仍为同步脉 冲移位输出端。当(RI)=0和(REN)=1同时满足时, 开始接收。当接收到第8位数据时,将数据移入接收寄存 器,并由硬件置位RI。 7.2 串行口的工作方式 21 7.2 串行口的工作方式 (2)方式1 :波特率可变的10位UART方式 l 发送或接收一帧信息,包括1个起始位0,8个数据位和1 个停止位1。 l 输出:当CPU执行一条指令将数据写入发送缓冲SBUF 时,就启动发送。串行数据从TXD引脚输出,发送完一 帧数据后,就由硬件置位TI。 l 输入:在(REN)=1时,串行口采样RXD引脚,当采样 到1至0的跳变时,确认是开始位0,就开始接收一帧数据 。只有当(RI)=0且停止位为1或者(SM2)=0时,停 止位才进入RB8,8位数据才能进入接收寄存器,并由硬 件置位中断标志RI;否则信息丢失。 22 7.2 串行口的工作方式 (3)方式2 :固定波特率的11位UART方式 l它比方式1增加了一位可程控为1或0的第9位数据。 l输出: 发送的串行数据由TXD端输出一帧信息为11位, 附加的第9位来自SCON寄存器的TB8位,用软件置位或 复位。它可作为多机通讯中地址/数据信息的标志位,也 可以作为数据的奇偶校验位。当CPU执行一条数据写入 SUBF的指令时,就启动发送器发送。发送一帧信息后, 置位中断标志TI。 l输入: 在(REN)=1时,串行口采样RXD引脚,当采样 到1至0的跳变时,确认是开始位0,就开始接收一帧数据 。在接收到附加的第9位数据后,当(RI)=0或者( SM2)=0时,第9位数据才进入RB8,8位数据才能进入 接收寄存器,并由硬件置位中断标志RI;否则信息丢失 。且不置位RI。再过一位时间后,不管上述条件时否满 足,接收电路即行复位,并重新检测RXD上从1到0的跳 变。 23 7.2 串行口的工作方式 (4)方式3 :波特率可变的11位UART方式 l除波特率外,其余与方式2相同。 24 7.3 串行口初始化 (1)波特率选择 在串行通讯中,收发双方的数据传送率(波特率)要有 一定的约定。在8051串行口的四种工作方式中,方式0和 2的波特率是固定的,而方式1和3的波特率是可变的,由 定时器T1的溢出率控制。 方式0 : 固定波特率fosc/12 方式2 : 方式2的波特率由PCON中的选择位SMOD来决定,可由 下式表示: 固定波特率=(2SMOD/64)fosc l当SMOD=1时,波特率为1/32fosc, l当SMOD=0时,波特率为1/64fosc 25 7.3 串行口初始化 方式1和方式3 : 定时器T1作为波特率发生器,方式1、3的的波特率其公式如下: 波特率=(2SMOD/32)定时器T1的溢出率。 定时器采用模式1时:(2SMOD/32)(focs/12)/(216 -初值) l式中T1计数率取决于它工作在定时器状态还是计数器状态。当 工作于定时器状态时,T1计数率为fosc/12;当工作于计数器状态 时,T1计数率为外部输入频率,此频率应小于fosc/24。产生溢 出所需周期与定时器T1的工作方式、T1的预置值有关。 定时器T1工作于方式0:溢出所需周期数=8192-x 定时器T1工作于方式1:溢出所需周期数=65536-x 定时器T1工作于方式2:溢出所需周期数=256-x l因为方式2为自动重装入初值的8位定时器/计数器模式,所以用 它来做波特率发生器最恰当。当时钟频率选用11.0592MHZ时, 最易获得标准的波特率,所以很多单片机系统选用这个看起来“ 怪”的晶振就是这个道理 26 7.3 串行口初始化 初值计算举例: 89C51单片机时钟振荡频率为11.0592MHz,选定 定 时器T1工作模式2作为波特率发生器,波特率为 2400b/s,设SMOD=0,求初值。 解:2400(1/32)(11.05921000000/12)/(256- x) X=244=F4H 27 7.3 串行口初始化 (2)初始化步骤 在使用串行口之前,应对其进行编程初始化,主要是设 置产生波特率的定时器1、串行口控制和中断控制。具体 步骤如下: 28 7.4 串行通信应用 除了前面的初始化,还要编写发送子程序和接收子 程序。 例1: 直接将8031的发送端TXD与接收端相连接,并采用方式 3进行串行数据传送,共发送16个数据000F,接收端 接收数据置于404FH单元内。 29 7.4 串行通信应用 汇编程序: 30 9.3.4 串行通信应用 例3:点对点通信 主方:发一个,收一个 从方:收一个,发一个 设置1200波特,串行口方式1,fosc=11.0592MHz 31 9.3.4 串行通信应用 SLAVE:MOVTMOD,#20H ; T/C1方式2 MOVTH1,#0E8H; 1200波特初值 MOVTL1,#0E8H SETBTR1 MOVPCON,#0; 不加倍 MOVSCON,#50H; 方式1,允许接收 SLP:JNBRI,$; 判接收到否 CLR RI MOV A,SBUF ; 取回 MOV SBUF, A ; 发送 JNB TI,$ ; 判发送完否 CLR TI SJMPSLP 32 9.3.4 串行通信应用 MASTER:MOVTMOD,#20H MOV TH1,#0E8H MOV TL1,#0E8H SETBTR1 MOVPCON, #0 MOV SCON, #50H MOV A, #DATA MOV SBUF,A JNB TI, $;发送出去 CLR TI JNB RI,$ CLR RI MOVA,SBUF SJMP$ 33 例7-4:89C51串行口按双工方式收发ASCII字符,最高位 用来作奇偶校验位,采用可校验方式,要求传送的波特 率为1200b/s。编写有关的通信程序。 解:7位ASCII码加1位奇校验共8位数据,故可采用串行口 方式1。 89C51单片机的奇偶校验位P是当累加器A中1的数目为 奇数时,P=1。如果直接把P的值放入ASCII码的最高位 ,恰好成了奇偶校验,与要求不符。因此,要把P的值 取反以后放入ASCII码最高位,才是要求的奇校验。 34 双工通信要求收、发能同时进行。实际上,收、发操作主要是在串 行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送 缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是RI 置位还是TI置位来决定CPU是进行发送操作还是接收操作。发送和 接收都通过调用子程序来完成,设发送数据区的首地址为20H,接 收数据区的首地址为40H,fosc为6MHz,通过查波特率初值(表7- 2)可知定时器的初装值为F3H。定时器T1采用工作模式2,可以避 免计数溢出后用软件重装定时初值的工作。 35 程序清单: 主程序 MOV TMOD ,#20H ;定时器1设为模 式2 MOV TL1 , #0F3H ;定时器初值 MOV TH1 ,#0F3H ;8位重装值 SETB TR1 ;启动定时器1 MOV SCON ,#50H ;设置为方式1, ;REN=1 MOV R0 ,#20H ;发送数据区首址 MOV R1 ,#40H ;接收数据取首址 ACALL SOUT ;先输出一个字符 SETB ES SETB EA SJMP $ ;等待中断 中断服务 ORG 0023H ;串行口中断入口 AJMP SBR1 ;转至中断服务程序 ORG 0100H SBR1: JNB RI ,SEND ;TI=1,为发送中断 ACALL SIN ;RI=1,为接收中断 SJMP NEXT ;转至统一的出口 SEND: ACALL SOUT ;调用发送子程序 NEXT: RETI ;中断返回 36 发送子程序 SOUT: CLR TI MOV A ,R0 ;取发送数据到 A MOV C ,P ;奇偶标识赋予 C CPL C ;奇校验 INC R0 ;修改发送数据指 针 MOV SBUF ,A ;发送ASCII 码 RET ;返回 接收子程序 SIN: CLR RI MOV A ,SBUF ;读出接收缓冲区内容 MOV C ,P ;取出校验位 CPL C ;奇校验 ANL A ,#7FH ;删去校验位 MOV R1 ,A ;读入接收缓冲区 INC RI ;修改接收数据指针 RET ;返回 37 例7-5:采用查询方式由串行口发送带奇偶校验位的数据块。 解:由内部RAM单元20H-3FH取出ASCII码数据,在最高位上 加奇偶校验位后由串行口发出。采用8位异步通信方式,波 特率为1200b/s,fosc=11.059MHz。 由要求可知,应把串行口设置为方式1,采用定时器1模式2 作为波特率发生器,预置值(TH1)=0E8H。 38 程序

温馨提示

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

评论

0/150

提交评论