河北工程大学自动化与电气工程系1第六章智能化测量控制仪表的通信接口在自动化测量和控制系统中,各台仪表之间需要不断地进行各种信息的交换和传输。而信息的交换是通过仪表的通信接口进行的。本章的重点是单片机内部的UART串行口以及RS-232接口。河北工程大学自动化与电气工程系26.1串行通信通信接口6.1.1RS-232C标准RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。它还包括按位传送的电气指标。河北工程大学自动化与电气工程系36.1串行通信通信接口起始位D0D1D2D4D3D5D6D7X标志停止位检验位图6.1RS232C数据格式RS-232C是数据格式如下所示。在电气性能方面,采用负逻辑,逻辑“1”电平在-15~-5V范围内,逻辑“0”在+5~+15V范围内。河北工程大学自动化与电气工程系46.1串行通信通信接口RS-232C的电平转换RS-232C的逻辑电平与TTL电平不兼容,为了与TTL的单片机器件连接,必须进行电平转换。目前常用的RS-232c收发器是MAX232系列。图6.2MAX232引脚河北工程大学自动化与电气工程系56.1串行通信通信接口图6.3典型应用电路河北工程大学自动化与电气工程系66.1串行通信通信接口机械特性RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。96512514131河北工程大学自动化与电气工程系7分类符号名称引脚说明地线机架保护地(屏蔽地)1信号地(公共地)7数据信号线TXD数据发送线2在无数据信息传输或收/发信息间隔期,RXD/TXD电平为1。辅助信道传输速率较主信道低。其余同RXD数据接收线3TXD辅助信道数据发送线14RXD辅助信道数据接收线16定时信号线DCE发送信号定时15指示被传输的每个bit信息的中心位置DCE接收信号定时17DTE发送信号定时24控制线RTS请求发送4DTE发给DCECTS允许发送5DCE发给DTEDSRDCE装置就绪6DTRDTE装置就绪20DTE发给DCEDCD接收信号(载波)检测8DTE收到满足标准的信号时置位振铃指示22由DCE收到振铃时置位信号质量检测21由DCE根据数据信息是否有错而置位/复位数据信号速率选择23指定两种传输速率中的一种RTS辅助信道请求发送19CTS辅助信道允许发送13RCD辅助信道接收检测12备用线9未定义,保留供DCE装置测试使用10111825表6.1RS232C信号线及其在DB-25的针脚号6.1串行通信通信接口河北工程大学自动化与电气工程系86.1串行通信通信接口河北工程大学自动化与电气工程系9(a)(b)图6.3通信系统结构6.1串行通信通信接口河北工程大学自动化与电气工程系106.1串行通信通信接口6.1.2串行通信方式•1、同步通信•在同步通信中,串行数据的输出前,发送和接收移位寄存器必须同步初始化,即在传输过程中,发送与接收应保持一致。计算机乙计算机甲01101数据时钟计算机乙计算机甲01101数据时钟数据+时钟外同步自同步河北工程大学自动化与电气工程系116.1串行通信通信接口2、异步通信异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。111001100101001001发送设备接收设备10100100011110011001间隙任意河北工程大学自动化与电气工程系12异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间是异步的(字符之间不一定有“位间隔”的整数倍的关系),但同一字符内的各位是同步的(各位之间的距离均为“位间隔”的整数倍)。6.1串行通信通信接口河北工程大学自动化与电气工程系136.1串行通信通信接口异步通信的数据格式:停止位数据位校验位起始位LSBMSB空闲下一字符起始位空闲一个字符帧异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。河北工程大学自动化与电气工程系146.2串行通信的实现补:80C51的串行口单片机有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H;接收器是双缓冲结构;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。≥1SBUF发送控制器接收控制器移位寄存器控制门TIRIATXDRXD去串口中断SMOD01TH1TL1÷2÷16SBUFT1溢出率河北工程大学自动化与电气工程系15SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:80C51串行口的控制寄存器SM0和SM1为工作方式选择位,可选择四种工作方式:6.2串行通信的实现河北工程大学自动化与电气工程系166.2串行通信的实现•●SM2,多机通信控制位,主要用于方式2和方式3。当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。通过控制SM2,可以实现多机通信。•在方式0时,SM2必须是0。在方式1时,若SM2=1,则只有接收到有效停止位时,RI才置1。•●REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。河北工程大学自动化与电气工程系17•●TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。•在方式0和方式1中,该位未用。•●RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。6.2串行通信的实现河北工程大学自动化与电气工程系18●TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。●RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。6.2串行通信的实现河北工程大学自动化与电气工程系196.2串行通信的实现PCON中只有一位SMOD与串行口工作有关:SMOD(PCON.7)波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。河北工程大学自动化与电气工程系2080C51串行口的工作方式一、方式0方式0时,串行口为同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。1、方式0输出D0D1D2D3D4D5D6D7写入SBUFRXD(数据)TXD(移位脉冲)TI(中断标志)6.2串行通信的实现河北工程大学自动化与电气工程系216.2串行通信的实现2、方式0输入REN=1RXD(数据输入)TXD(移位脉冲)RI=0D0D1D2D3D4D5D6D7方式0接收和发送电路:74LS164RXDTXDP1.080C51CLRCLKABGND74LS165RXDTXDP1.080C51S/LCLKQGND河北工程大学自动化与电气工程系22二、方式1方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。停止位数据位8位起始位LSBMSB空闲空闲D0D71帧共10位1、方式1输出D0D1D2D3D4D5D6D7写入SBUF停止位TXDTI(中断标志)起始6.2串行通信的实现河北工程大学自动化与电气工程系232、方式1输入用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。D0D1D2D3D4D5D6D7停止位RXDRI(中断标志)起始位采样脉冲6.2串行通信的实现河北工程大学自动化与电气工程系246.2串行通信的实现三、方式2和方式3方式2或方式3时为11位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚。方式2和方式3时起始位1位,数据9位(含1位附加的第9位,发送时为SCON中的TB8,接收时为RB8),停止位1位,一帧数据为11位。方式2的波特率固定为晶振频率的1/64或1/32,方式3的波特率由定时器T1的溢出率决定。停止位数据位9位起始位LSBMSB空闲空闲D0D71帧共11位RB8/TB8河北工程大学自动化与电气工程系256.2串行通信的实现1、方式2和方式3输出D0D1D2D3D4D5D6D7写入SBUF停止位TXDTI(中断标志)起始TB8发送开始时,先把起始位0输出到TXD引脚,然后发送移位寄存器的输出位(D0)到TXD引脚。每一个移位脉冲都使输出移位寄存器的各位右移一位,并由TXD引脚输出。第一次移位时,停止位“1”移入输出移位寄存器的第9位上,以后每次移位,左边都移入0。当停止位移至输出位时,左边其余位全为0,检测电路检测到这一条件时,使控制电路进行最后一次移位,并置TI=1,向CPU请求中断。河北工程大学自动化与电气工程系262、方式2和方式3输入接收时,数据从右边移入输入移位寄存器,在起始位0移到最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的第9位数据为1)时,接收到的数据装入接收缓冲器SBUF和RB8(接收数据的第9位),置RI=1,向CPU请求中断。如果条件不满足,则数据丢失,且不置位RI,继续搜索RXD引脚的负跳变。RI(中断标志)位采样脉冲D0D1D2D3D4D5D6D7停止位RXD起始RB86.2串行通信的实现河北工程大学自动化与电气工程系27当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于TH1中的计数值。T1溢出率=fosc/{12×[256-(TH1)]}在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。6.2串行通信的实现河北工程大学自动化与电气工程系286.2串行通信的实现•四、波特率的计算•在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。•串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。•方式0的波特率=fosc/12•方式2的波特率=(2SMOD/64)·fosc•方式1的波特率=(2SMOD/32)·(T1溢出率)•方式3的波特率=(2SMOD/32)·(T1溢出率)河北工程大学自动化与电气工程系29•串行口工作