c51的串行通信

上传人:san****019 文档编号:70306144 上传时间:2019-01-16 格式:PPT 页数:66 大小:621.51KB
返回 下载 相关 举报
c51的串行通信_第1页
第1页 / 共66页
c51的串行通信_第2页
第2页 / 共66页
c51的串行通信_第3页
第3页 / 共66页
c51的串行通信_第4页
第4页 / 共66页
c51的串行通信_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《c51的串行通信》由会员分享,可在线阅读,更多相关《c51的串行通信(66页珍藏版)》请在金锄头文库上搜索。

1、第7章 串行通信,本章要点,异步通信和同步通信 串行通信波特率 串行通信的制式 串行通信的校验 串行口特殊功能寄存器 串行工作方式,串行通信优点:便于长距离传送 缺点:传送速度较慢,计算机与外界信息交换称为通信。,通信的基本方式可分为并行通信和串行通信:,并行通信是数据的各位同时发送或同时接收;,串行通信是数据的各位依次逐位发送或接收。,并行通信优点:传送速度快 缺点:不便长距离传送,串行通信的基本特征是数据逐位顺序进行传送 串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平等)不同,形成了多种串行通信的协议与接口标准。 常见的有: 通用异步收发器(UART)本课程介绍的串口

2、通用串行总线(USB) I2C总线 CAN总线 SPI总线 RS-485,RS-232C,RS422A标准等等,异步通信对硬件要求较低,实现起来比较简单、灵活,适用于数据的随机发送/接收,但因每个字节都要建立一次同步,即每个字符都要额外附加两位,所以工作速度较低,在单片机中主要采用异步通信方式。,6-1 串行通信概述,一、异步通信和同步通信,串行通信按同步方式可分为异步通信和同步通信。,1、异步通信,异步通信依靠起始位、停止位保持通信同步。,异步通信数据传送按帧传输,一帧数据包含起始位、数据位、校验位和停止位。,同步通信传输速度较快,但要求有准确的时钟来实现收发双方的严格同步,对硬件要求较高,

3、适用于成批数据传送。,2、 同步通信,同步通信依靠同步字符保持通信同步。,同步通信是由12个同步字符和多字节数据位组成,同步字符作为起始位以触发同步时钟开始发送或接收数据;多字节数据之间不允许有空隙,每位占用的时间相等;空闲位需发送同步字符。,波特率的倒数即为每位传输所需的时间。相互通信的甲乙双方必须具有相同的波特率,否则无法成功地完成串行数据通信。,二、串行通信波特率,波特率bps(bit per second)定义: 每秒传输数据的位数,即:,1波特 = 1位/秒(1bps),三、串行通信的制式,串行通信按照数据传送方向可分为三种制式:,单工制式是指甲乙双方通信时只能单向传送数据,发送方和

4、接收方固定。,1、单工制式(Simplex),半双工制式是指通信双方都具有发送器和接收器,既可发送也可接收,但不能同时接收和发送,发送时不能接收,接收时不能发送。,2、半双工制式(Half Duplex),全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送。,3、全双工制式(Full Duplex),四、串行通信的校验,3、循环冗余码校验 (Cyclic Redundancy Check,简称CRC),1、奇偶校验,2、累加和校验,累加和校验是指发送方将所发送的数据块求和,并将“校验和”附加

5、到数据块末尾。接收方接收数据时也是先对数据块求和,将所得结果与发送方的“校验和”进行比较,相符则无差错,否则即出现了差错。“校验和”的加运算可用逻辑加,也可用算术加。累加和校验的缺点是无法检验出字节位序(或1、0位序不同)的错误。,循环冗余码校验的基本原理是将一个数据块看成一个位数很长的二进制数,然后用一个特定的数去除它,将余数作校验码附在数据块后一起发送。接收端收到该数据块和校验码后,进行同样的运算来校验传送是否出错。目前CRC已广泛用于数据存储和数据通信中,并在国际上形成规范,已有不少现成的CRC软件算法。,89C51系列单片机有一个全双工的串行口,这个口既可以用于网络通信,也可以实现串行

6、异步通信,还可以作为同步移位寄存器使用。 全双工的异步通讯串行口 4种工作方式 ,波特率由片内定时器/计数器控制。 每发送或接收一帧数据,均可发出中断请求。 除用于串行通讯,还可用来扩展并行I/O口。,控制寄存器共两个:特殊功能寄存器SCON和PCON。,7.1 串行口的结构 串行口内部结构如下图,两个物理上独立地接收和 发送缓冲器,可同时收、发数据(全双工)。 两个缓冲器共用一个特殊功能寄存器字节地址:SBUF(99H),发送时,只需将发送数据输入SBUF,CPU将自动启动和完成串行数据的发送; 接收时,CPU将自动把接收到的数据存入SBUF,用户只需从SBUF中读出接收数据。,1、串行数据

7、缓冲器SBUF,在逻辑上只有一个,既表示发送寄存器,又表示接收寄存器,具有同一个单元地址99H,用同一寄存器名SBUF。 在物理上有两个,一个是发送缓冲寄存器,另一个是接收缓冲寄存器。,指令 MOV SBUF,A 启动一次数据发送,可向SBUF 再发送下一个数 指令 MOV A,SBUF 完成一次数据接收,SBUF可再 接收下一个数,2、串行控制寄存器SCON, SM0 SM1 串行口工作方式选择位。 SM2 多机通信控制位。 REN 允许接收控制位。REN=1,允许接收。 TB8 方式2和方式3中要发送的第9位数据。 RB8 方式2和方式3中要接收的第9位数据。 TI 发送中断标志。 RI

8、接收中断标志。, SM0 SM1串行口工作方式选择位。其状态组合所对应的工作方式如表6-2所示。, SM2-多机通信控制位。在方式2和方式3中,若SM2=1,且RB8(接收到的第9位数据)=1时,将接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则,将接收到的8位数据丢弃。而当SM2=0时,则不论第9位数据为0还是为1,都将前8位数据装入 SBUF中,并产生中断请求。 在方式0时,SM2必须为0。,REN-允许接收控制位。REN位用于对串行数据的接收进行控制:REN=0,禁止接收;REN=1,允许接收。该位由软件置位或复位。 TB8-方式2和方式3中要发送的第9位数据。在方式2和方式

9、3时,TB8是发送的第9位数据。在多机通信中,以TB8位的状态表示主机发送的是地址还是数据:TB8=0表示数据,TB8=1表示地址。该位由软件置位或复位。 TB8还可用于奇偶校验位。 RB8-方式2和方式3中要接收的第9位数据。在方式2或方式3时,RB8存放接收到的第9位数据。,TI-发送中断标志。当方式0时,发送完第8位数据后,该位由硬件置位。在其他方式下,遇发送停止位时,该位由硬件置位。因此TI=1,表示帧发送结束,可软件查询TI位标志,也可以请求中断。TI位必须由软件清0。 RI-接收中断标志。当方式0时,接收完第8位数据后,该位由硬件置位。在其他方式下,当接收到停止位时,该位由硬件置位

10、。因此RI=1,表示帧接收结束,可软件查询RI位标志,也可以请求中断。RI位也必须由软件清0。,接收/发送数据,无论是否采用中断方式工作,每接收/发送一个数据都必须用指令对 RI/TI 清0,以备下一次收/发。,3、电源控制寄存器PCON,SMOD=1,串行口波特率加倍。PCON寄存器不能进行位寻址。, SMOD:在串行口工作方式 1、2、3 中,是波特率加倍位 =1 时,波特率加倍 =0 时,波特率不加倍。 (在PCON中只有这一个位与串口有关),7.2 串行口的4种工作方式 89C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0 SM1决定。 7.2.1 方式0 (同步移位寄

11、存器工作方式) 以RXD(P3.0)端作为数据移位的输入/输出端, 以TXD(P3.1)端输出移位脉冲。 移位数据的发送和接收以8位为一帧,不设起始位和停止位,无论输入/输出,均低位在前高位在后。 其帧格式为:,方式0可将串行输入输出数据转换成并行输入输出数据。, 数据发送,在移位时钟脉冲(TXD)的控制下,数据从串行口RXD端逐位移入74HC164 SA、SB端。当8位数据全部移出后,SCON寄存器的TI位被自动置1。其后74HC164的内容即可并行输出。74HC164 CLR为清0端,输出时CLR必须为1,否则74HC164 Q0Q7输出为0。,串行口作为并行输出口使用时,要有“串入并出”

12、的移位寄存器配合。(例如CD4094或74HCl64),(2) 数据接收,串行口作为并行输入口使用时,要有“并入串出”的移位寄存器配合。(例如CD4014或74HCl65),74HC165 S/L端为移位/置入端,当S/L=0时,从Q0Q7并行置入数据,当S/L=1时,允许从QH端移出数据。在89C51串行控制寄存器SCON中的REN=1时,TXD端发出移位时钟脉冲,从RXD端串行输入8位数据。当接收到第8位数据D7后,置位中断标志RI,表示一帧数据接收完成。, 波特率: 方式0 波特率固定,为单片机晶振频率的十二分之一。即一个机器周期进行一次移位。 应用举例 【例6-1】电路如图所示,试编制

13、程序按下列顺序要求每隔0.5秒循环操作。, 从右向左依次点亮,每次亮一个; 从左向右依次点亮,每次增加一个, 直至全部点亮; 返回从不断循环。, 8个发光二极管全部点亮;, 从左向右依次暗灭,每次减少一个,直至全灭;, 从左向右依次点亮,每次亮一个;,解:编程如下:,LIGHT:MOV SCON,#00H ;串行口方式0 CLR ES ;禁止串行中断 P121 MOV DPTR,#TAB ;置发光二极管亮暗控制字表首址 LP1: MOV R7,#0 ;置顺序编号0 LP2: MOV A,R7 ;读顺序编号 MOVC A,A+DPTR ;读控制字 CLR P1.0 ;关闭并行输出,STR=O时,

14、关闭并行输出; MOV SBUF,A ;启动串行发送 JNB TI,$ ;等待发送完毕 CLR TI ;清发送中断标志 SETB P1.0 ;开启并行输出,STR=1时,开启并行输出; LCALL DLY500ms ;调用延时0.5秒子程序(参阅例4-13) INC R7 ;指向下一控制字 CJNE R7,#30,LP2 ;判循环操作完否?未完继续 SJMP LP1 ;顺序编号029依次操作完毕,从0开始重新循环,TAB: DB 0FFH,7FH,3FH,1FH,0FH,07H,03H,01H,00H;从左向右依次暗灭, 每次减少一个,直至全灭; DB 80H,40H,20H,10H,08H,

15、04H,02H,01H;从左向右依次点亮,每次亮一个 DB 02H,04H,08H,10H,20H,40H,80H;从右向左依次点亮,每次亮一个 DB 0C0H,0E0H,0F0H,0F8H,0FCH,0FEH;从左向右依次点亮, 每次增加一个,直至全部点亮;,【例】电路如图所示,试编制程序输入K1K8状态数据,并存入内RAM 40H。,解:编程如下: KIN: MOV SCON,#00H;串行口方式0 CLR ES ;禁止串行中断 CLR P1.0 ;锁存并行输入数据 SETB P1.0 ;允许串行移位操作 SETB REN ;允许并启动接收(TXD发送移位脉冲) JNB RI,$ ;等待接

16、收完毕 MOV 40H,SBUF ;存入K1K8状态数据 RET ;,串行口工作方式 0,工作方式0:8位移位寄存器I/O方式,发送:SBUF中的串行数据由RxD逐位移出; TxD输出移位时钟,频率=fosc1/12; 每送出8位数据 TI就自动置1; 需要用软件清零 TI。,接收:串行数据由RxD逐位移入SBUF中; TxD输出移位时钟,频率=fosc1/12; 每接收 8位数据RI就自动置1; 需要用软件清零 RI。,经常配合“串入并出”“并入串出”移位 寄存器一起使用扩展接口。,方式0工作时,多用查询方式编程: 发送:MOV SBUF,A 接收:JNB RI,$ JNB TI,$ CLR RI CLR T

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号