610 likes | 849 Views
项目四 串行通信系统设计. 本项目学习目标: (1) 了解 MCS-51 单片机串行接口结构; (2) 掌握 MCS-51 单片机串行口在各种工作方式下接收和发送数据的实现方法; (3) 熟悉 MCS-51 单片机串行通信的格式规定; (4) 理解 MCS-51 单片机串行通信的程序设计思想. 电子工程系 刘颖. 串行通信基础 在单片机系统中, CPU 和外部通信有两种通信方式:并行通信和串行通信。 并行通信,即数据的各位同时传送,如图 9.1(a) 所示; 串行通信,即数据一位一位顺序传送,如图 9.1(b) 所示。.
E N D
项目四串行通信系统设计 本项目学习目标: (1) 了解MCS-51单片机串行接口结构; (2)掌握MCS-51单片机串行口在各种工作方式下接收和发送数据的实现方法; (3)熟悉MCS-51单片机串行通信的格式规定; (4)理解MCS-51单片机串行通信的程序设计思想 电子工程系刘颖
串行通信基础 在单片机系统中,CPU和外部通信有两种通信方式:并行通信和串行通信。 并行通信,即数据的各位同时传送,如图9.1(a)所示; 串行通信,即数据一位一位顺序传送,如图9.1(b)所示。
串行通信的优点与缺点 • 两种基本通信方式比较起来,串行通信方式能够节省传输线,特别是数据位数很多和远距离数据传送时,这一优点更为突出;串行通信方式的主要缺点是传送速度比并行通信要慢。
串行通信的分类 按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。 在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送,何时结束发送的。字符帧格式是异步通信的一个重要指标。
异步通信 异步通信(Asynchronous Communication) 在异步通信中,数据通常是以字符为单位组成字符帧传送的。字符帧由发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。
字符帧(Character Frame) 字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成。
起始位:位于字符帧开头,只占一位,为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。起始位:位于字符帧开头,只占一位,为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。 • 数据位:紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前高位在后。
奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户决定。奇偶校验位:位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户决定。 • 停止位:位于字符帧最后,为逻辑1高电平。通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已经发送完,也为发送下一帧作准备。
两相邻字符帧之间 在串行通信中,两相邻字符帧之间可以没有空闲位,也可以有若干空闲位,这由用户来决定。图9.2(b)表示有3个空闲位的字符帧格式。
波特率(baud rate) • 异步通信的另一个重要指标为波特率。 • 波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为bit/s,即位/秒。波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。
异步通信的优点 • 通常,异步通信的波特率为50~9600bit/s。 • 异步通信的优点是不需要传送同步时钟,字符帧长度不受限制,故设备简单。缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。
同步通信(Synchronous Communication) • 同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,如图9.3所示。
三部分组成 • 图9.3(a)为单同步字符帧结构,图9.3(b)为双同步字符帧结构,但它们均由同步字符、数据字符和校验字符CRC三部分组成。在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。
同步通信的缺点 • 同步通信的数据传输速率较高,通常可达56Kb/s或更高,其缺点是要求发送时钟和接收时钟必须保持严格同步。
串行通信的制式 在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工(simplex)、半双工(half duplex)和全双工(full duplex)三种制式。图9.4为三种制式的示意图。
单工制式 在单工制式下,通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送。如图9.4(a)所示。
半双工制式 • 在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,如图9.4(b)所示。在这种制式下,数据能从A站传送到B站,也可以从B站传送到A站,但是不能同时在两个方向上传送,即只能一端发送,一端接收。其收发开关一般是由软件来进行控制的。
全双工通信系统 • 全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,即数据可以在两个方向上同时传送。如图9.4(c)所示。 • 在实际应用中,尽管多数串行通信接口电路具有全双工功能,一般情况只工作于半双工制式下,这种用法简单、实用。
串行通信的接口电路 串行接口电路的种类和型号很多。能够完成异步通信的硬件电路称为UART,即通用异步接收器/发送器;能够完成同步通信的硬件电路称为USRT;既能够完成异步又能同步通信的硬件电路称为USART。
串行接口电路数据形式 从本质上说,所有的串行接口电路都是以并行数据形式与CPU连接,以串行数据形式与外部逻辑设备连接。它们的基本功能是从外部逻辑设备接收串行数据,转换成并行数据后传送给CPU,或从CPU接收并行数据,转换成串行数据后输出到外部逻辑设备。
串行通信总线标准及其接口 在单片机应用系统中,数据通信主要采用异步串行通信。在设计通信接口时,必须根据需要选择标准接口,并考虑传输介质、电平转换等问题。采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地连接起来,从而构成一个测控系统。例如当需要单片机和PC机通信时,通常采用RS-232接口进行电平转换。
异步串行通信接口主要有三类 • 异步串行通信接口主要有三类: • RS-232接口;RS-449、RS-422和RS-485接口以及20mA电流环。下面介绍较常用的RS-232接口标准。
RS-232C接口 RS-232C是使用最早、应用最多的一种异步串行通信总线标准。它是美国电子工业协会(EIA)1962年公布、1969年最后修订而成的。其中RS表示Recommended Standard,232是该标准的标识号,C表示最后一次修订。
RS-232C串行接口总线适用于:设备之间的通信距离不大于15米,传输速率最大为20kB/s。RS-232C串行接口总线适用于:设备之间的通信距离不大于15米,传输速率最大为20kB/s。
RS-232C信息格式标准 RS-232C采用串行格式,如图9.5所示。该标准规定:信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶位。如果两个信息之间无信息,则写“1”,表示空。
RS-232C电平转换器 • RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,即: • 逻辑“0”:+5V~+15V • 逻辑“1”:-5V~-15V
RS-232C不能和TTL电平直接相连 • 因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489。
MC1488内部有三个与非门和一个反相器,供电电压为±12V,输入为TTL电平,输出为RS-232C电平,MC1489内部有四个反相器,供电电压为±5V,输入为RS-232C电平,输出为TTL电平。MC1488内部有三个与非门和一个反相器,供电电压为±12V,输入为TTL电平,输出为RS-232C电平,MC1489内部有四个反相器,供电电压为±5V,输入为RS-232C电平,输出为TTL电平。 • 另一种常用的电平转换电路是MAX232,图9.6为MAX232的引脚图。
RS-232C总线规定 RS-232C标准总线为25根,采用标准的D型25芯插头座。各引脚的排列如图9.7所示。
简单的全双工系统 在最简单的全双工系统中,仅用发送数据、接收数据和信号地三根线即可,对于MCS-51单片机,利用其RXD(串行数据接收端)线、TXD(串行数据发送端)线和一根地线,就可以构成符合RS-232C接口标准的全双工通信口。
图9.7 RS-232 引脚图
MCS-51单片机的串行接口 MCS-51单片机的内部有一个可编程全双工串行通信接口,它具有UART的全部功能,该接口不仅可以同时进行数据的接收和发送,也可做同步移位寄存器使用。该串行口有4种工作方式,帧格式有8位、10位和11位,并能设置各种波特率。本节将对其结构、工作方式和波特率进行介绍。
MCS-51单片机的串行口结构 MCS-51单片机内部有两个独立的接收、发送缓冲器SBUF,SBUF属于特殊功能寄存器。 发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址(99H)。串行口的结构如图9.8所示。
特殊功能寄存器 与MCS-51串行口有关的特殊功能寄存器有SBUF,SCON,PCON,下面对它们分别详细介绍。
串行口数据缓冲器SBUF SBUF是两个在物理上独立的接收、发送寄存器,一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。CPU在写SBUF时,就是修改发送缓冲器;读SBUF,就是读接收缓冲器的内容。
接收或发送数据 接收或发送数据,是通过串行口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、接收数据,为全双工制式。
串行口控制寄存器SCON SCON用来控制串行口的工作方式和状态,可以位寻址,字节地址为98H。 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H 图9.9 SCON的各位定义
SM0、SM1:串行工作方式选择位。定义如下表9.1所示。SM0、SM1:串行工作方式选择位。定义如下表9.1所示。
多机通信控制位 SM2: 多机通信控制位,用于方式2和方式3中。在方式2和方式3处于接收时,若SM2=1, 且接收到的第9位数据RB8为0时,不激活RI;若SM2=1,且RB8=1时,则置RI=1。
方式2、3处于接收或发送方式 在方式2、3处于接收或发送方式,若SM2=0,不论接收到第9位RB8为0还是为1,TI,RI都以正常方式被激活。在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI置1。在方式0中,SM2应为0。
允许串行接收位 REN:允许串行接收位。由软件置位或清零。REN=1时,允许接收,REN=0时,禁止接收。
TB8: 发送数据的第9位。在方式2和方式3中,由软件置位或复位,可做奇偶校验位。在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时TB8为1,数据帧时TB8为0。 RB8: 接收数据的第9位。功能同TB8。
发送中断标志位 TI:发送中断标志位。在方式0中,发送完8位数据后,由硬件置位;在其他方式中,在发送停止位之初由硬件置位。因此TI是发送完一帧数据的标志,可以用指令来查询是否发送结束。TI=1时,也可向CPU申请中断,响应中断后都必须由软件清除TI。