480 likes | 833 Views
第十三章 MCS-51 的串行通信技术. 一、复习第七章的 MCS-51 串口的知识. 二、各种标准串行通讯接口. 三、 MCS-51 单片机双机串行通讯接口. 四、 MCS-51 单片机多机串行通讯接口. 五、 PC 机与 MCS-51 的点对点的串行通讯接口. 六、 PC 机与多个 MCS-51 单片机的串行通讯接口. 第 13 章 MCS-51 的串行通讯技术. 13.1 MCS-51 单片机的串行通讯接口技术 MCS-51 串行口的输入、输出均为 TTL 电平 , 抗干扰性差,传输距离短。
E N D
第十三章 MCS-51的串行通信技术 一、复习第七章的MCS-51串口的知识 二、各种标准串行通讯接口 三、 MCS-51单片机双机串行通讯接口 四、 MCS-51单片机多机串行通讯接口 五、 PC机与MCS-51的点对点的串行通讯接口 六、 PC机与多个MCS-51单片机的串行通讯接口
第13章 MCS-51的串行通讯技术 13.1 MCS-51单片机的串行通讯接口技术 MCS-51串行口的输入、输出均为TTL电平,抗干扰性差,传输距离短。 为提高串行通讯的可靠性,增大串行通讯的距离,采用标准串行接口:RS-232、RS-422A、RS-485等标准。
13.1.1 各种标准串行通讯接口 一、 RS-232C接口 二、 RS-422A接口 三、 RS-485接口 四、 20mA电流环串行接口 传输特点 五、 各种串行接口性能比较 电平转换 电气特性
13.1.1 各种标准串行通讯接口 一、RS-232C接口 RS-232是由美国电子工业协会(EIA)于1962年制定的标准。定义数据终端设备(DTE)和数据通讯设备(DCE)之间的串行接口标准。 图13-1是两台计算机利用MODEM、电话线进行远距离串行通讯的示意图,DTE为计算机,DCE的典型代表是MODEM。
发送数据 接收数据 图13-2为RS-232C的“D”型9针插头的引脚定义。
1. 电气特性 RS-232C上传送的数字量采用负逻辑,且与地对称。 逻辑“1”:-3~-15V; 逻辑“0”:+3~+15V。 RS-232C标准的信号传输的最大电缆长度为30米,最高数传速率为20kbit/s。 2. 电平转换 由于TTL电平和RS-232C电平互不兼容,所以两者对接时,必须进行电平转换。 常用的转换芯片有MAX232C、MC1488、MC1489。各厂商生产的此类芯片虽然不同,但原理相似。
以美国MAXIM公司的产品MAX232为例。它是RS-232C双工发送器/接收器接口电路芯片,其外部引脚如图13-3,内部结构及外部元件如图13-4所示。
由于芯片内部有自升压的电平倍增电路,将+5V转换成-10V-+10V,满足RS-232C的逻辑“1”和逻辑“0”的电平要求。由于芯片内部有自升压的电平倍增电路,将+5V转换成-10V-+10V,满足RS-232C的逻辑“1”和逻辑“0”的电平要求。 工作时仅需单一的+5V电源。其片内有2个发送器,2个接收器,有TTL信号输入/RS-232C输出的功能,也有RS-232C输入/TTL输出的功能。 该芯片与TTL/CMOS电平兼容,使用比较方便。 使用MAX232实现TTL/RS-232C之间的电平转换电路如图13-5所示。
2:TXD 3:RXD
3.采用RS-232C接口存在的问题 (1)传输距离短,传输速率低 RS-232C总线标准受电容允许值的约束,使用时传输距离一般不要超过15米(线路条件好时也不超过几十米)。最高传送速率为20Kbps。 (2)有电平偏移 RS-232C总线标准要求收发双方共地。通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。 (3)抗干扰能力差 RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中。为了提高信噪比,RS-232C总线标准不得不采用比较大的电压摆幅。
二、 RS-422A接口 RS-232C虽然应用很广泛,但其推出较早,在现代网络通讯中已暴露出明显的缺点: 传输速率低、通讯距离短、接口处信号容易产生串扰等。 因此,EIA又制定了RS-422A标准。 RS-232C即是一种电气标准,又是一种物理接口功能标准,而RS-422A仅仅是一种电气标准。PC机不带RS-422A接口,因此要使用RS-232/RS-422A转换器,把RS-232C接口转换成RS-422A接口。
1. 电气特性 RS-422A与RS-232C的主要区别是,收发双方的信号地不再共地,RS-422A标准规定平衡驱动和差分接收的方法。 输入同一个信号时,其中一个驱动器的输出永远是另一个驱动器的反相信号。当一个表示逻辑“1”时,另一条一定为逻辑“0”。
若传输过程中,信号中混入了干扰和噪声(以共模形式出现),由于差分接收器的作用,就能识别有用信号并正确接收传输的信息,并使干扰和噪声相互抵消。若传输过程中,信号中混入了干扰和噪声(以共模形式出现),由于差分接收器的作用,就能识别有用信号并正确接收传输的信息,并使干扰和噪声相互抵消。 因此,RS-422A能在长距离、高速率下传输数据。它的最大传输率为10Mbit/s,在此速率下,电缆允许长度为12m,如果采用较低传输速率时,最大传输距离可达1200m。 RS-422A电路由发送器、平衡连接电缆、电缆终端负载、接收器四部分组成。在电路中规定只许有一个发送器,可以有多个接收器。 该标准允许驱动器输出为±2~±6V,差分接收器可以检测的输入信号电平可低到200mV。
2. 电平转换 TTL电平转换成RS-422A电平的常用芯片:SN75174、MC3487等。 RS-422A电平转换成TTL电平的常用芯片:SN75175、MC3486等。 SN75174、SN75175是分别是具有三态输出的单片四差分驱动器和接收器,采用+5V电源供电。图13-6,图13-7给出电平转换芯片SN75174、SN75175内部结构及引脚图。
三、RS-485接口 RS-485是RS-422A的变型,它与RS-422A的区别在于:RS-422A为全双工,采用两对平衡差分信号线;而RS-485为半双工,采用一对平衡差分信号线。RS-485对于多站互连是十分方便的。RS-485标准允许最多并联32台驱动器和32台接收器。
1. 电气特性 RS-485的信号传输采用两线间的电压来表示逻辑“1”和逻辑“0”,由于收发方需要两根传输线。数据采用差分传输,所以干扰抑制性好。又因无接地问题,所以传输距离可达1200米,传输速率可达10Mbit/s 总线两端接匹配电阻(1000Ω左右),驱动器负载为54Ω。驱动器输出电平在-1.5V以下时为逻辑“1”,在+1.5V以上时为逻辑“0”。接收器输入电平在-0.2V以下时为逻辑“1”,在+0.2V以上为逻辑“0”。 普通的PC机一般不带RS-485接口,因此要使用RS-232/RS-485转换器。对于单片机可以通过芯片MAX485来完成TTL/RS-485的电平转换。
2. 电平转换 在RS-422A标准中所用的驱动器和接收器芯片,在 RS-485中均可以使用。 除了RS-422A电平转换中所列举的驱动器和接收器外,还有收发器SN75176芯片,该芯片集成了一差分驱动器和一差分接收器 ,如图13-9所示。SN75176的功能见表13-4。
该接口要比RS-232C接口简单的多,它只有4根线:发送正、发送负、接收正和接收负四根线组成一个输入电流回路、一个输出电流回路。该接口要比RS-232C接口简单的多,它只有4根线:发送正、发送负、接收正和接收负四根线组成一个输入电流回路、一个输出电流回路。 四、 20mA电流环串行接口 目前串行通讯中广泛使用的一种接口电路,但未形成正式标准。 当发送数据时,根据数据的逻辑1、0,有规律的使回路形成通、断状态,即环路中无电流表示逻辑“0”,有20mA电流表示逻辑“1”。 工作原理如图13-11所示。
20mA电流环串行通讯接口的最大优点是低阻传输线对电气噪声不敏感,且易实现光电隔离。因此,在长距离传送时,要比RS-232C优越的多。电流环在低速数传率传输时,传输距离可达1000米。20mA电流环串行通讯接口的最大优点是低阻传输线对电气噪声不敏感,且易实现光电隔离。因此,在长距离传送时,要比RS-232C优越的多。电流环在低速数传率传输时,传输距离可达1000米。 由于20mA电流环是一种异步串行接口标准,所以在每次发送数据时必须以无电流的起始作为每一个字符的起始位,接收端检测到起始位时便开始接收字符数据。 图13-12是一个由集成芯片构成的20mA电流环接口线路图。
距离可达1000米 发送方 接收方
五、 各种串行接口性能比较 现将RS-232C、RS-422A、RS-485、20mA电流环各串行接口性能列在表13-5中,以便比较。 P343
13.1.2 MCS-51单片机双机串行通讯接口 一、 双机通讯硬件接口设计 根据MCS-51的双机通讯距离,抗干扰性的要求,可选择TTL电平传输,或选择RS-232C、RS-422A、RS485串行接口进行串行数据传输。 1.TTL电平通讯接口 如果两个MCS-51单片机相距在几米之内,它们的串行口可直接相连,从而直接用TTL电平传输方法来实现双机通讯。如图13-13所示。
2.RS-232C双机通讯接口 如果双机通讯距离在30米之内,可利用RS-232C标准接口实现点对点的双机通讯,接口电路如图13-14所示。
3.RS-422A双机通讯接口 为了增加通讯距离,减小通道及电源干扰,可以在 通讯线路上采用光电隔离的方法,利用RS-422A标 准进行双机通讯,接口电路如图13-15所示。
在图13-15中,每个通道的接收端都接有三个电阻R1、R2、R3。在图13-15中,每个通道的接收端都接有三个电阻R1、R2、R3。 其中R1为传输线的匹配电阻,取值范围在50Ω~1KΩ之间,其他两个电阻是为了解决第一个数据的误码而设置的匹配电阻。 为了起到隔离、抗干扰的作用,图13-15中收、发两端都必须使用两组独立的电源。
4.RS-485双机通讯接口 RS-422A双机通讯需四芯传输线,这对长距离通讯是 很不经济的,故在工业现场,通常采用双绞线传 输的RS-485串行通讯接口。 这种接口很容易实现多机通讯。图13-16给出了其RS- 485双机通讯接口电路。 由图13-16可知:RS-485以双向、半双工的方式实现 了双机通讯。在8031系统发送或接收数据前,应 先将75176的发送门或接收门打开,当P1.0=1时, 发送门打开,接收门关闭;当P1.0=0,接收门打 开,发送门关闭。
二、 双机通讯软件编程P345 读懂通信协议及握手协议。 校验和?
13.1.3 MCS-51单片机多机串行通讯接口 利用串行口实现多机通讯的工作原理,已在第7章中作过介绍。下面首先介绍多机通讯的接口设计。 1.TTL电平多机串行通讯 当一台主机与多台从机之间距离较近时,可直接采用TTL电平进行多机通讯,多机通讯的连接方式如图13-17所示。 由于8031单片机P3口可带4个LSTTL,故在图13-17中,N的取值范围应为N4。如果N>4,则P3口应加驱动电路。
2. 20mA电流环多机串行通讯接口 用TTL电平进行多机通讯时,有效通讯距离约几米左右,这在实际中往往不能满足要求。 可采用20mA电流环进行多机通讯,不仅提高了抗干扰能力,而且可实现远距离通讯。 20mA电流环串行多机通讯原理电路如图13-18所示。
13.1.4 PC机与MCS-51的点对点的串行通讯接口 一、硬件接口设计 如前所述, 通常PC机都配有RS-232C串行标准接口,有效通讯距离较短。 为实现长距离通讯应将RS-232C接口转换成RS-422A/RS-485接口。图13-19给出了这种转换的电路原理图。
图13-19可完成RS-232C至RS-422A的转换,也可完成RS-232C至RS-485的转换。当选择RS-422A输出方式时,3、4短接;当选择RS-485输出方式时,1、2短接,5、6短接,7、8短接。图13-19可完成RS-232C至RS-422A的转换,也可完成RS-232C至RS-485的转换。当选择RS-422A输出方式时,3、4短接;当选择RS-485输出方式时,1、2短接,5、6短接,7、8短接。 图13-19中,R1、R2是为排除第一个数据传输误码而设置的匹配电阻。设计者可根据实际情况选择该电阻的大小。 电源VCC和VEE均为+5V,但不是一个电源,VCC和VEE应为隔离电源,只有这样才能实现电隔离。
13.1.5 PC机与多个MCS-51单片机的串行通讯接口 一、硬件接口路 将1台IBM-PC机和若干台MCS-51单片机构成的小型分布式测控系统,如图13-20所示。
1台PC机与数台8031单片机进行多机通讯的RS-485串行通讯接口电路如图13-21所示。1台PC机与数台8031单片机进行多机通讯的RS-485串行通讯接口电路如图13-21所示。
单片机与PC机的通信 在工控系统(尤其是多点现场工控系统)设计实践中,单片机与PC机组合构成分布式控制系统是一个重要的发展方向。分布式系统主从管理,层层控制。主控计算机监督管理各子系统分机的运行状况。子系统与子系统可以平等信息交换,也可以有主从关系。分布式系统最明显的特点是可靠性高,某个子系统的故障不会影响其它子系统的正常工作。
1台PC机即可以与1个80C31单片机应用系统通信,也可以与多个80C31单片机应用系统通信;可以近距离也可以远距离。单片机与PC机通信时,其硬件接口技术主要是电平转换、控制接口设计和远近通信接口的不同处理技术。 在DOS操作环境下,要实现单片机与微机的通信,只要直接对微机接口的通信芯片8250进行口地址操作即可。在WINDOWS的环境下,由于系统硬件的无关性,不再允许用户直接操作串口地址。如果用户要进行串行通信,可以调用WINDOWS的API应用程序接口函数,但其使用较为复杂,而使用 VB通信控件(Mscomm)却可以很容易的解决这一问题。 VB是WINDOWS图形工作环境与Basic语言编程简便性的完美结合。它简明易用,实用性强。VB提供一个名为MSCOMM32.OCX的通信控件,它具备基本的串行通信能力:即通过串行口发送和接收数据,为应用程序提供串行通信功能。
MSComm控件有许多属性,主要的几个如下: CommPort:设置并返回通信端口号; Settings: 以字符串的方式设置并返回波特率、奇偶校验、数据位、停止位; PortOpen:设置并返回端口的状态,也可以打开和关闭端口; Input: 从接收缓冲区返回字符和删除字符; Output: 向传输缓冲区写一个字符。
单片机程序清单如下: ORG 3000H MAIN:MOV TMOD,#20H ;在11.0592MHz下,串行口波特率 MOV TH1,#0FDH ;9600bps,方式3 MOV TL1,#0FDH MOV PCON,#00H SETB TR1 MOV SCON,#0D8H LOOP:JBC RI,RECEIVE ;接收到数据后立即发出去 SJMP LOOP RECEIVE:MOV A,SBUF MOV SBUF,A SEND:JBC TI,SENDEND SJMP SEND SENDEND:SJMP LOOP
串口助手 PC机程序清单:(VB语言) Sub Form_Load() MSComm1.CommPort=2 MSComm1.PortOpen=TURE MSComm1.Settings=“9600,N,8,1” End Sub Sub command1_Click() Instring as string MSComm1.InBufferCount=0 MSComm1.Output="A" Do Dummy=DoEvents() Loop Until(MSComm1.InBufferCount>2) Instring=MSComm1.Input End Sub Sub command2_Click() MSComm1.PortOpen=FALSE UnLoad Me End Sub
2009-11-17作业 • P363 1、3~6