第8章串行口通信技术.docx
- 文档编号:6538937
- 上传时间:2023-01-07
- 格式:DOCX
- 页数:31
- 大小:463.74KB
第8章串行口通信技术.docx
《第8章串行口通信技术.docx》由会员分享,可在线阅读,更多相关《第8章串行口通信技术.docx(31页珍藏版)》请在冰豆网上搜索。
第8章串行口通信技术
第8章串行口通信技术
MCS-51内部除含有4个并行I/O接口外,还有一个串行通信I/O口,通过该串行口可以实现与其他计算机系统的串行通信。
本章通过实训完成一个串行通信实例,在介绍关于串行通信的基础知识后,详细论述MCS-51的串行口及其通信应用。
实训8单片机之间的双机通信
1.实训目的
(1)复习掌握定时器的功能和编程使用。
(2)理解串行通信与并行通信的两种方式。
(3)掌握串行通信的重要指标:
字符帧和波特率。
(4)初步了解MCS-51单片机串行口的使用方法。
2.实训设备与器件
实训设备:
单片机开发系统、微机。
实训器件:
实训电路板2套。
3.实训电路图
图8.1实训8电路图
4.实训步骤与要求
1)预习
复习单片机的定时器编程应用,重点了解方式2的使用。
查阅串行口相关知识,了解串行通信的基本概念及与并行通信的区别,初步认识MCS-51单片机中串行口的工作原理。
2)连接电路
按图8.1将两套实训电路板中的RXD和TXD端对应相连,并将两套电路板共地。
3)输入程序
编制程序,使甲、乙双方能够进行通信。
要求:
将甲机内部RAM20H~27H单元的数据发送给乙机,并在乙机的8个数码管中显示出来。
甲机发送程序参考如下:
MOVTMOD,#20H
MOVTL1,#0F4H
MOVTH1,#0F4H
SETBTR1
MOVSCON,#40H
MOVR0,#20H
MOVR7,#08H
START:
MOVA,@R0
MOVSBUF,A
WAIT:
JBCTI,CONT
AJMPWAIT
CONT:
INCR0
DJNZR7,START
SJMP$
乙机接收及显示程序参考如下:
MOVTMOD,#20H
MOVTL1,#0F4H
MOVTH1,#0F4H
SETBTR1
MOVSCON,#40H
MOVR0,#20H
MOVR7,#08H
SETBREN
WAIT:
JBCRI,READ
AJMPWAIT
READ:
MOVA,SBUF
MOV@R0,A
INCR0
DJNZR7,WAIT
DISP:
LCALLDISPLAY
SJMPDISP
显示子程序DISPLAY参见第7章。
4)调试并运行程序
对甲机片内RAM20H~27H单元分别输入00H、01H、02H、03H、04H、05H、06H、07H,运行甲、乙机程序,观察乙机8个数码管的显示内容;更换甲机RAM单元中的内容(00H~OF中的任意值),再次观察乙机的显示内容。
5.实训总结与分析
(1)程序运行的结果是,乙机能够根据甲机20H~27H单元的数据显示相应的内容。
例如第一次运行程序,会在乙机的8个数码管上分别显示0、1、2、3、4、5、6、7。
这说明甲、乙之间能够进行数据的传送,即通信。
(2)从本实训的电路连接上我们看到,甲、乙双方只连接了3根线,一根用于接收,一根用于发送,第三根为共地线。
其中RXD为单片机系统的接收数据端,TXD为发送数据端。
显然单片机内部的数据向外传送(例如从甲机传送给乙机)时,不可能8位数据同时进行,在一个时刻只可能传送一位数据(例如,从甲机的发送端TXD传送一位数据到乙机的接收端RXD),8位数据依次在一根数据线上传送,这种通信方式称为串行通信。
它与前面几章所介绍的数据传送不同,例如通过P0口传送数据时,就是8位数据同时进行的,这种通信方式称为并行通信。
(3)分析程序可以看出,通信双方都有对单片机定时器的编程(注意发送、接收程序的前4条指令),而且双方对定时器的编程完全相同。
这说明,MCS-51单片机在进行串行通信时,是与定时器的工作有关的。
定时器用来设定串行通信数据的传输速度。
在串行通信中,传输速度是用波特率来表征的,有关波特率与定时器的关系以及编程在8.3.3节介绍。
6.问题与思考:
(1)在收发程序中都用到了SCON、SBUF,这两个寄存器的地址是什么?
其作用如何?
(2)在甲机的发送程序中,有这样一条指令JBCTI,rel,该指令完成什么功能?
TI位的作用是什么?
(3)在乙机的接收程序中,有这样一条指令JBCRI,rel,RI位的作用是什么?
通过实训,我们知道,MCS-51单片机除了可以进行数据的并行传送以外(例如,CPU与存储器、利用P0~P3口与外界通信、单片机与8155之间的数据传送等),还可以将数据以串行的方式一位一位地进行传送。
不仅两个单片机之间可以进行这样的数据传送,而且多台单片机或者单片机与PC机之间都可以完成类似的收发信息,这些都是在本章要论述的串行通信技术。
8.1串行通信基础
在计算机系统中,CPU和外部通信有两种通信方式:
并行通信和串行通信。
并行通信,即数据的各位同时传送;串行通信,即数据一位一位顺序传送。
图8.2为这两种通信方式的示意图。
图8.2两种通信方式的示意图。
在前面章节所涉及的数据传送都为并行方式,如主机与存储器、主机与键盘、显示器之间等。
在实训8中,显然采用的是(b)图所示的串行通信。
上述两种基本通信方式比较起来,串行通信能够节省传输线,特别是数据位数很多和远距离数据传送时,这一优点更为突出;串行通信方式的主要缺点是传送速度比并行通信要慢。
8.1.1串行通信的分类
按照串行数据的时钟控制方式,串行通信可分为同步通信和异步通信两类。
1.异步通信(AsynchronousCommunication)
在异步通信中,数据通常是以字符为单位组成字符帧传送的。
字符帧由发送端一帧一帧地发送,每一帧数据是低位在前,高位在后,通过传输线被接收端一帧一帧地接收。
发送端和接收端可以由各自独立的时钟来控制数据的发送和接收,这两个时钟彼此独立,互不同步。
在异步通信中,接收端是依靠字符帧格式来判断发送端是何时开始发送何时结束发送的。
字符帧格式是异步通信的一个重要指标。
1)字符帧(CharacterFrame)
字符帧也叫数据帧,由起始位、数据位、奇偶校验位和停止位等四部分组成,如图8.3所示。
图8.3异步通信的字符帧格式
(1)起始位:
位于字符帧开头,只占一位,为逻辑0低电平,用于向接收设备表示发送端开始发送一帧信息。
(2)数据位:
紧跟起始位之后,用户根据情况可取5位、6位、7位或8位,低位在前高位在后。
(3)奇偶校验位:
位于数据位之后,仅占一位,用来表征串行通信中采用奇校验还是偶校验,由用户决定。
(4)停止位:
位于字符帧最后,为逻辑1高电平。
通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已经发送完,也为发送下一帧作准备。
在串行通信中,两相邻字符帧之间可以没有空闲位,也可以有若干空闲位,这由用户来决定。
图8.3(b)表示有3个空闲位的字符帧格式。
2)波特率(baudrate)
异步通信的另一个重要指标为波特率。
波特率为每秒钟传送二进制数码的位数,也叫比特数,单位为bit/s,即位/秒。
波特率用于表征数据传输的速度,波特率越高,数据传输速度越快。
但波特率和字符的实际传输速率不同,字符的实际传输速率是每秒内所传字符帧的帧数,和字符帧格式有关。
通常,异步通信的波特率为50~9600bit/s。
异步通信的优点是不需要传送同步时钟,字符帧长度不受限制,故设备简单。
缺点是字符帧中因包含起始位和停止位而降低了有效数据的传输速率。
2.同步通信(SynchronousCommunication)
同步通信是一种连续串行传送数据的通信方式,一次通信只传输一帧信息。
这里的信息帧和异步通信的字符帧不同,通常有若干个数据字符,如图8.4所示。
图8.4(a)为单同步字符帧结构,图8.4(b)为双同步字符帧结构,但它们均由同步字符、数据字符和校验字符CRC三部分组成。
在同步通信中,同步字符可以采用统一的标准格式,也可以由用户约定。
图8.4同步通信的字符帧格式
同步通信的数据传输速率较高,通常可达56000bit/s或更高,其缺点是要求发送时钟和接收时钟必须保持严格同步。
8.1.2串行通信的制式
在串行通信中数据是在两个站之间进行传送的,按照数据传送方向,串行通信可分为单工(simplex)、半双工(halfduplex)和全双工(fullduplex)三种制式。
图8.5为三种制式的示意图。
图8.5单工、半双工和全双工三种制式示意图
在单工制式下,通信线的一端接发送器,一端接接收器,数据只能按照一个固定的方向传送。
在半双工制式下,系统的每个通信设备都由一个发送器和一个接收器组成,如图8.5b)所示。
在这种制式下,数据能从A站传送到B站,也可以从B站传送到A站,但是不能同时在两个方向上传送,即只能一端发送,一端接收。
其收发开关一般是由软件控制的电子开关。
全双工通信系统的每端都有发送器和接收器,可以同时发送和接收,即数据可以在两个方向上同时传送。
如图8.5(c)所示。
在实际应用中,尽管多数串行通信接口电路具有全双工功能,一般情况只工作于半双工制式下,这种用法简单、实用。
8.1.3串行通信的接口电路
串行接口电路的种类和型号很多。
能够完成异步通信的硬件电路称为UART,即通用异步接收器/发送器(UniversalAsychronousReceiver/Transmitter);能够完成同步通信的硬件电路称为USRT(UniversalSychronousReceiver/Transmitter);既能够完成异步又能同步通信的硬件电路称为USART(UniversalSychronousAsychronousReceiver/Transmitter);
从本质上说,所有的串行接口电路都是以并行数据形式与CPU接口,以串行数据形式与外部逻辑接口。
它们的基本功能都是从外部逻辑接收串行数据,转换成并行数据后传送给CPU,或从CPU接收并行数据,转换成串行数据后输出到外部逻辑。
8.2串行通信总线标准及其接口
在单片机应用系统中,数据通信主要采用异步串行通信。
在设计通信接口时,必须根据需要选择标准接口,并考虑传输介质、电平转换等问题。
采用标准接口后,能够方便地把单片机和外设、测量仪器等有机地连接起来,从而构成一个测控系统。
例如当需要单片机和PC机通信时,通常采用RS-232接口进行电平转换,在本书所附的实训电路板中就接有包含了这部分电路。
异步串行通信接口主要有三类:
RS-232接口;RS-449、RS-422和RS-485接口以及20mA电流环。
下面详细介绍三种接口标准。
8.2.1RS-232C接口
RS-232C是使用最早、应用最多的一种异步串行通信总线标准。
它是美国电子工业协会(EIA)1962年公布、1969年最后修定而成的。
其中RS表示RecommendedStandard,232是该标准的标识号,C表示最后一次修定。
RS-232C主要用来定义计算机系统的一些数据终端设备(DTE)和数据电路终接设备(DCE)之间的电气性能。
例如CRT、打印机与CPU的通信大都采用RS-232C接口,MCS-51单片机与PC机的通信也是采用该种类型的接口。
由于MCS-51系列单片机本身有一个全双工的串行接口,因此该系列单片机用RS-232C串行接口总线非常方便。
RS-232C串行接口总线适用于:
设备之间的通信距离不大于15米,传输速率最大为20kB/s。
1.RS-232C信息格式标准
RS-232C采用串行格式,如图8.6所示。
该标准规定:
信息的开始为起始位,信息的结束为停止位;信息本身可以是5、6、7、8位再加一位奇偶位。
如果两个信息之间无信息,则写“1”,表示空。
图8.6RS-232C信息格式
2.RS-232C电平转换器
RS-232C规定了自己的电气标准,由于它是在TTL电路之前研制的,所以它的电平不是+5V和地,而是采用负逻辑,即:
逻辑“0”:
+5V~+15V
逻辑“1”:
-5V~-15V
因此,RS-232C不能和TTL电平直接相连,使用时必须进行电平转换,否则将使TTL电路烧坏,实际应用时必须注意!
常用的电平转换集成电路是传输线驱动器MC1488和传输线接收器MC1489。
MC1488内部有三个与非门和一个反相器,供电电压为±12V,输入为TTL电平,输出为RS-232C电平,MC1489内部有四个反相器,供电电压为±5V,输入为RS-232C电平,输出为TTL电平。
另一种常用的电平转换电路是MAX232,本书所配套的实训电路就采用该芯片。
图8.7为MAX232的引脚图。
图8.7MAX232引脚图
3.RS-232C总线规定
RS-232C标准总线为25根,采用标准的D型25芯插头座。
各引脚的排列如图8.8所示。
图8.8RS-232C引脚图
在最简单的全双工系统中,仅用发送数据、接收数据和信号地三根线即可,对于MCS-51单片机,利用其RXD(串行数据接收端)线、TXD(串行数据发送端)线和一根地线,就可以构成符合RS-232C接口标准的全双工通信口。
8.2.2RS-449、RS-422A、RS-423A标准接口
RS-232C虽然应用广泛,但因为推出较早,在现代通信系统中存在以下缺点:
数据传输速率慢、传输距离短、未规定标准的连接器、接口处各信号间易产生串扰。
鉴于此,EIA制定了新的标准RS-449,该标准除了与RS-232C兼容外,在提高传输速率、增加传输距离、改善电气性能方面有了很大改进。
1.RS-449标准接口
RS-449是1977年公布的标准接口,在很多方面可以代替RS-232C使用,两者的主要差别在于信号在导线上的传输方法不同。
RS-232C是利用传输信号与公共地的电压差,RS-449是利用信号导线之间的信号电压差,可在1219.2m的24-AWG双铰线上进行数字通信。
RS-449规定了两种接口标准连接器,一种为37脚,一种为9脚。
RS-449可以不使用调制解调器,它比RS-232C传输速率高,通信距离长,且由于RS-449系统用平衡信号差传输高速信号,所以噪声低,又可以多点或者使用公共线通信,故RS-449通信电缆可与多个设备并联。
2.RS-422A、RS-423A标准接口
RS-422A文本给出了RS-449中对于通信电缆、驱动器和接收器的要求,规定双端电气接口型式,其标准是双端线传送信号。
它具体通过传输线驱动器,将逻辑电平变换成电位差,完成发送端的信息传递;通过传输线接收器,把电位差变换成逻辑电平,完成接收端的信息接收。
RS-422A比RS-232C传输距离长、速度快,传输速率最大可达10Mbit/s,在此速率下电缆的允许长度为12m,如果采用低速率传输,最大距离可达1200m。
RS-422A和TTL进行电平转换最常用的芯片是传输线驱动器SN75174和传输线接收器SN75175,这两种芯片的设计都符合EIA标准RS-422A,采用+5V电源供电。
RS-422A的接口电路如图8.9所示,发送器75174将TTL电平转换为标准的RS-422A电平;接收器75175将RS-422A接口信号转换为TTL电平。
图8.9RS-422A接口电平转换电路
RS-423A和RS-422A文本一样,也给出了RS-449中对于通信电缆、驱动器和接收器的要求。
RS-423A给出了不平衡信号差的规定,而RS-422A给出的是平衡信号差的规定。
RS-422标准接口的最大传输速率为100Kbit/s,电缆的允许长度为90m。
RS-423A也需要进行电平转换,常用的驱动器和接收器为3691和26L32。
其接口电路如图8.10所示。
图8.10RS-423A接口电平转换电路
8.2.320mA电流环路串行接口
20mA电流环是目前串行通信中广泛使用的一种接口电路,电流环串行通信接口的最大优点是低阻传输线对电气噪声不敏感,而且易实现光电隔离,因此在长距离通信时要比RS-232C优越得多。
图8.11是一个实用的20mA电流环接口电路。
它是一个加上光电隔离的电流环传送和接收电路。
在发送端,将TTL电平转换为环路电流信号,在接收端又转换成TTL电平。
图8.1120mA电流环接口电路
上面我们介绍了三类接口,在计算机进行串行通信时,选择接口标准,必须注意以下两点:
(1)通信速度和通信距离
通常的标准串行接口,都有满足可靠传输时的最大通信速度和传送距离指标,但这两个指标具有相关性,适当降低传输速度,可以提高通信距离,反之亦然。
例如,采用RS-232C标准进行单向数据传输时,最大的传输速度为20kbit/s,最大的传输距离为15m。
而采用RS-422标准时,最大的传输速度可达10Mbit/s,最大的传输距离为300m,适当降低传输速度,传输距离可达1200m。
(2)抗干扰能力
通常选择的标准接口,在保证不超过其使用范围时都有一定的抗干扰能力,以保证可靠的信号传输。
但在一些工业测控系统,通信环境十分恶劣,因此在通信介质选择、接口标准选择时,要充分考虑抗干扰能力,并采取必要的抗干扰措施。
例如在长距离传输时,使用RS-422标准,能有效地抑制共模信号干扰;使用20mA电流环技术,能大大降低对噪声的敏感程度。
在高噪声污染的环境中,通过使用光纤介质可减少噪声的干扰,通过光电隔离可以提高通信系统的安全性。
8.3MCS-51的串行接口
MCS-51内部有一个可编程全双工串行通信接口,它具有UART的全部功能,该接口不仅可以同时进行数据的接收和发送,也可做同步移位寄存器使用。
该串行口有4种工作方式,帧格式有8位、10位和11位,并能设置各种波特率。
本节将对其结构、工作方式和波特率进行讨论。
8.3.1MCS-51串行口结构
MCS-51内部有两个独立的接收、发送缓冲器SBUF,SBUF属于特殊功能寄存器。
发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,二者共用一个字节地址(99H)。
串行口的结构如图8.12所示。
图8.12串行口结构示意图
在实训8中,甲机发送数据时,是由一条写发送缓冲器的指令(MOVSBUF,A)把数据写入串行口的发送缓冲器SBUF中,然后从TXD端一位一位地向外部发送。
同时,接收端RXD也可以一位一位地接收外部数据,当收到一个完整的数据后通知CPU,再由一条指令(MOVA,SBUF)把接收缓冲器SBUF的数据读入累加器。
实训中乙机的接收就是通过该条指令完成的。
与MCS-51串行口有关的特殊功能寄存器有SBUF,SCON,PCON,下面对它们分别详细讨论。
1.串行口数据缓冲器SBUF
SBUF是两个在物理上独立的接收、发送寄存器,一个用于存放接收到的数据,另一个用于存放欲发送的数据,可同时发送和接收数据。
两个缓冲器共用一个地址99H,通过对SBUF的读、写指令来区别是对接收缓冲器还是发送缓冲器进行操作。
CPU在写SBUF时,就是修改发送缓冲器;读SBUF,就是读接收缓冲器的内容。
接收或发送数据,是通过串行口对外的两条独立收发信号线RXD(P3.0)、TXD(P3.1)来实现的,因此可以同时发送、接收数据,为全双工制式。
2.串行口控制寄存器SCON
实训中,收发双方都有对SCON的编程,SCON用来控制串行口的工作方式和状态,可以位寻址,字节地址为98H。
单片机复位时,所有位全为0。
其格式如图8.13所示。
SCON9FH9EH9DH9CH9BH9AH99H98H
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
图8.13SCON的各位定义
对各位的说明如下:
SM0、SM1:
串行方式选择位。
定义如下表8.1所示。
表8.1
SM0SM1
工作方式
功能
波特率
00
方式0
8位同步移位寄存器
fosc/12
01
方式1
10位UART
可变
10
方式2
11位UART
fosc/64或fosc/32
11
方式3
11位UART
可变
SM2:
多机通信控制位,用于方式2和方式3中。
在方式2和方式3处于接收时,若SM2=1,且接收到的第9位数据RB8为0时,不激活RI;若SM2=1,且RB8=1时,则置RI=1。
在方式2、3处于接收或发送方式,若SM2=0,不论接收到第9位RB8为0还是为1,TI,RI都以正常方式被激活。
在方式1处于接收时,若SM2=1,则只有收到有效的停止位后,RI置1。
在方式0中,SM2应为0。
REN:
允许串行接收位。
由软件置位或清零。
REN=1时,允许接收,REN=0时,禁止接收。
在实训8中由于乙机用于接收数据,因此使用位操作指令SETBREN,允许乙机接收。
TB8:
发送数据的第9位。
在方式2和方式3中,由软件置位或复位,可做奇偶校验位。
在多机通信中,可作为区别地址帧或数据帧的标识位,一般约定地址帧时TB8为1,数据帧时TB8为0。
RB8:
接收数据的第9位。
功能同TB8。
TI:
发送中断标志位。
在方式0中,发送完8位数据后,由硬件置位;在其他方式中,在发送停止位之初由硬件置位。
因此TI是发送完一帧数据的标志,可以用指令JBCTI,rel来查询是否发送结束。
实训中采用的就是这种方法。
TI=1时,也可向CPU申请中断,响应中断后都必须由软件清除TI。
查询和中断方法的应用在8.5.2节介绍.
RI:
接收中断标志位。
在方式0中,接收完8位数据后,由硬件置位;在其他方式中,在接收停止位的中间由硬件置位。
同TI一样,也可以通过JBCRI,rel来查询是否接收完一帧数据。
RI=1时,也可申请中断,响应中断后都必须由软件清除RI。
SCON中的低2位与中断有关,将在中断的有关章节详细论述。
在实训中,采用指令MOVSCON,#40H,使单片机工作在串行通信的方式1下。
3.电源及波特率选择寄存器PCON
PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,不可以位寻址,字节地址为87H。
在HMOS的8051单片机中,PCON除了最高位以外其它位都是虚设的。
其格式如图8.14所示。
PCON(87H)
SMOD
×
×
×
GF1
GF0
PD
IDL
图8.14PCON的各位定义
与串行通信有关的只有SMOD位。
SMOD为波特率选择位。
在方式1、2和3时,串行通信的波特率与SMOD有关。
当SMOD=1时,通信波特率乘2,当SMOD=0时,波特率不变。
其他各位用于电源管理,在此不再赘述。
8.3.2MCS-51串行的工作方式
MCS-51的串行口有4种工作方式,通过对SCON中的SM1、SM0位来决定,如表8.1所示。
1.方式0
在方式0下,串行口作同步移位寄存器用,其波特率固定为fosc/12。
串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出。
这种方式常用于扩展I/O口。
1)发送
当一个数据写入串行口发送缓冲器SBUF时,串行口将8位数据以fosc/12的波特率从RXD引脚输出(低位在前),发送完置中断标志TI为1,请求中断。
在再次发送数据之前,必须由软件清TI为0。
具体接线图如图8.15所示。
其中74LS161为串入并出移位寄存器。
图8.15方式0用于扩展I/O口输出
2)接收
在满足REN=1和RI=0的条件下,串行口即开始从RXD端以fosc/12的波特率输入数据(低位在前),当接收完8位数据后,置中断标志RI为1,请求中断。
在再次接
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 串行口 通信 技术
![提示](https://static.bdocx.com/images/bang_tan.gif)