




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
两片51单片机互相通信的串行通信程序(一个发送程序,一个接收程序)作者:佚名 来源:不详 录入:Admin 更新时间:2008-7-26 20:01:31 点击数:2 【字体: 】系统晶振是 11.0592 MHz;51单片机发送单片机程序;此程序用Proteus仿真通过 ;此程序在硬件上测试通过;2007-05-27;附有简化电路图;为了使初学者能看懂,程序与图尽可能的简单扼要;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信 ORG 0000H AJMP START ORG 0040HSTART: MOV SP,#60H MOV SCON,#50H ;串口 方式 1 MOV TMOD,#20H ;T1 方式2 MOV TL1,#0FDH ;波特率 9600 的常数 MOV TH1,#0FDH SETB TR1 MOV r5,#00hWAIT: MOV p1,#0ffh MOV a ,p1 MOV r5,a lcall delay ;读键盘,这里去抖动,还要加几句话 MOV a ,p1 nop CJNE A,5,WAIT ;是否有键输入 MOV SBUF,a ;串口输出键盘输入的值 NOPSS: JBC TI,WAIT ;是否发送完毕 SJMP SSDELAY: ;延时子程序 PUSH 0 ;保存现场 PUSH 1 MOV 0,#06HDELAY1: MOV 1,#0H DJNZ 1,$ DJNZ 0,DELAY1 POP 1 ;恢复现场 POP 0 RET END;系统晶振是 11.0592 MHz;51单片机接收单片机程序;此程序用Proteus仿真通过;此程序在硬件上测试通过;2007-05-27;附有简化电路图;为了使初学者能看懂,程序与图尽可能的简单扼要;实验现象为,发送端的P1口的哪个键被接下,接收端的哪个灯对应着亮;如果把两个单片机的T和R通过无线模块(如基于MCP2120芯片的模块)来扩充,便可做成无线通信 ORG 0000H AJMP START ORG 0040HSTART: MOV SCON,#50H ;串口 方式 1 MOV TMOD,#20H ;T1 方式 2 MOV TL1,#0FDH ;波特率 9600 的常数 MOV TH1,#0FDH SETB TR1 WAIT: JBC RI,DIS_REC ;是否接收到数据 sjmp waitDIS_REC: MOV A,SBUF ;读串口接收到的数据 MOV p1,a SJMP wait endPC机与多MCS51单片机间的串行通信设计作者:北京工业大学许丽佳陈阳舟来源:电子工程师点击数:1023更新时间:2006-5-30您可以添加到网摘 让更多人关注此文章:摘要:主要讲解了IBMPC机与MCS51单片机多机系统的通信原理,给出了其硬件接口框图,并详细地分析了系统的多机通信软件设计。 关键词:单片机,分布式系统,串行通信1引言在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。它们大多由IBMPC微机和MCS51单片机组成。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBMPC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。故IBMPC机(上位机)与各MCS51单片机(下位机)之间的通信显得尤其重要。本文主要探讨它们之间的远距离串行通信接口和软件程序设计。2硬件设计接口RS232C串行通信接口是美国电气工业协会(EIA)与BELL公司等一起开发的一种标准通信协议,现在它在终端、外设与计算机中被广泛采用。该标准规定了21个信号和25个引脚,但在智能仪器与计算机之间的通信中常用2个信号及3个引脚(2脚数据输入,3脚数据输出,7脚信号地)。它采用双极性的负逻辑信号,0逻辑信号为3V至12V,1逻辑信号为3V至12V,它的传输速率最大为20kbits,传输距离仅为15m。由于RS232主要是完成电平移位、转换和信号反相等,所以它有自己的电平转换与驱动芯片,如MC1488(发送)与MC1489(接受)。IBMPC机有两个标准的RS232串行口,其电平采用的是EIA电平,而MCS51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平,为了PC机与MCS51机之间能可靠地进行串行通信,需要用电平转换芯片。由于MC1488和MC1489需要12V、5V电源供电,故采用MAXIM公司生产的低功耗、单电源的MAX232芯片,因为它自身带有电源电压变换器,可以把5V电源变换成RS232输出电平所需的10V电压,能实现RS232的技术指标,并只需要5V的电源,为串行通信带来了较好的性能和低廉的价格。MAX232的接口电路图如图2所示。PC机采用可编程串行异步通信控制器8251A来实现,通过对INS8251A初始化可以控制串行数据传送格式和速度及其工作方式,使得它与单片机的通信方式一致,从而实现PC机与单片机之间的通信。MCS51和8251A的连接图见图3。由于远距离数据传输,在系统中用了两片MAX485芯片进行数据传送,还采用了两级光电隔离来提高系统的抗干扰能力。单片机和PC机之间的RS232通信硬件接口电路框图如图4所示。3串行通信的软件程序设计31主从式多机通信原理MCS51用于多机通信时必须工作在方式2或方式3。以方式3为例,每发送一帧数据为11位:1位起始位(0),8位数据位和1位停止位(1),附加的第9位数据在非多机系统中为奇偶校验位,在发送端有SCON的TB8产生,在接收端传送到SCON的RB8。它还可设定为“0”或“1”作为在多机通信中区分数据帧(0标志)还是地址帧(1标志)的标志。在MCS51多机系统中有以下协议:所有的各从机均处于听命状态,即SM21,以便接收主机发来的地址,当接收到一帧信息的RB8为“1”时,表示主机发送来的是地址信息,所有的从机均发生接收中断,否则中断屏蔽。当一从机进入相应的中断服务程序,把接收到的地址和本机的地址比较,如果相符合就令其SM20,并向主机发回本机地址以作应答,该从机就与主机联通,准备接收主机发来的命令或数据信息,而其他的未被寻址从机保持SM21并退出各自的中断服务程序。这样,只有SM20的从机才能接收到主机发送来的数据信息,顺利实现地址帧和数据帧的分离。被寻址从机在通信完成后重新使SM21,并退出中断服务程序,等待下次通信。32多机通信协议要实现单片机和PC机的正常通信,必须正确设定它们两者之间的通信方式,保证双方都用相同的波特率、起始位、停止位、奇偶校验位,并且要建立双方通信的应答信号。单片机既可工作在同步移位寄存器方式下也可工作在UART(通用异步收发器)下。串行口的通信方式是由特殊功能寄存器SCON来控制的。其各控制定义如下: SM0,SM1:工作模式设定位;SM2:允许使用方法2、3多机通信控制位;RB8:接收数据第9位;TB8:发送数据第9位;TI:发送中断标志;RI:接收中断标志。本文中工作方式为3,即9位UART定时器T1作为波特率发生器,工作在方式2,若选定波特率为1200bps,则计数初值为0E8H(SMOD0,时钟频率Fosc为11059MHz)。PC机的异步通信接口为INTEL8251A,它可设定1位、15位或2位停止位,数据可在58位之间选择,通信频率为096Kbps,有奇偶校验、帧校验、溢出校验三种方式。可通过对它写入一定的方式控制字、命令控制字从而进行初始化。它与MCS51的连接如前面所示,则它的数据口地址为0F0H,控制口地址为0F1H。它的工作状态寄存于其状态字寄存器中,可由MCS51的CPU读取。通信协议如下:(1)串行通信波特率为1200bps;(2)帧格式为8位数据位,一位起始位,一位可编程的第9位(即发送和接收的地址数据位的标志位),一位停止位;(3)主机和从机遵循主从原则,主机用呼叫方式选择从机,数据在主机和从机之间双向传递,各从机之间的相互通信需通过主机作为中介;(4)主从机之间还应传送一些供它们识别的命令和状态字,如以00H表示主机发送从机接收命令,以01H表示从机发送主机接收命令等。33通信程序设计思路及其实现程序主要包括主机程序(由主机主程序和通信子程序组成)、从机主程序和其中断服务程序组成。主机程序主要完成对8251A的初始化以及主机与从机之间的通信,主机程序框图见图5。而从机主程序主要完成对串行口的初始化、波特率的设置(应与8251A的波特率一致),它的中断程序主要用来完成MCS51单片机与PC机的数据通信。从机中断服务程序框图见图6。 这里简单介绍8251A的初始化程序,设8251A工作于异步通信方式,波特率系数1,字符长度为8位,偶校验,所以方式字为7DH,又设8251A为全双工方式,出错标志复位,故其命令控制字为27H,其相应的初始化程序如下:MOV R0,0F0H4结束语本系统软硬件在IBM PCXT机和DICE系列的MCS51单片机上进行过调试,运行良好,验证了其在 仿真平台的控制,现已用于实际系统,且特别适用于从机实时性要求较高的中小型工控系统。参考文献1何立民单片机应用文集(2)北京:北京航空航天大学出版社,19932何立民单片机高级教程北京:北京航空航天大学出版社,20003胡汉才单片机原理及其接口技术北京:清华大学出版社,19964陈荣保,肖本贤,李钢基于MODEM和单片机的远程通讯系统设计与实现微电子学与计算机,1999(1)5何飞跃。基于MCS51单片机的LCU与上位机的通信微计算机信息,1999(1)单片机C51串口中断接收和发送测试例程(含通信协议的实现)通信协议: 第1字节,MSB为1,为第1字节标志,第2字节,MSB为0,为非第一字节标志,其余类推,最后一个字节为前几个字节后7位的异或校验和。 测试方法:可以将串口调试助手的发送框写上 95 10 20 25,并选上16进制发送,接收框选上16进制显示,如果每发送一次就接收到95 10 20 25,说明测试成功。 /这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 /和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #include #include #define INBUF_LEN 4 /数据长度 unsigned char inbuf1INBUF_LEN; unsigned char checksum,count3; bit read_flag= 0 ; void init_serialcomm( void ) SCON = 0x50 ; /SCON: serail mode 1, 8-bit UART, enable ucvr TMOD |= 0x20 ; /TMOD: timer 1, mode 2, 8-bit reload PCON |= 0x80 ; /SMOD=1; TH1 = 0xF4 ; /Baud:4800 fosc=11.0592MHz IE |= 0x90 ; /Enable Serial Interrupt TR1 = 1 ; / timer 1 run / TI=1; /向串口发送一个字符 void send_char_com( unsigned char ch) SBUF=ch; while (TI= 0 ); TI= 0 ; /向串口发送一个字符串,strlen为该字符串长度 void send_string_com( unsigned char *str, unsigned int strlen) unsigned int k= 0 ; do send_char_com(*(str + k); k+; while (k 127 ) count3= 0 ; inbuf1count3=ch; checksum= ch- 128 ; else count3+; inbuf1count3=ch; checksum = ch; if ( (count3=(INBUF_LEN- 1 ) & (!checksum) ) read_flag= 1 ; /如果串口接收的数据达到INBUF_LEN个,且校验没错, /就置位取数标志 main() init_serialcomm(); /初始化串口 while ( 1 ) if (read_flag) /如果取数标志已置位,就将读到的数从串口发出 read_flag= 0 ; /取数标志清0 send_string_com(inbuf1,INBUF_LEN); RS-232、RS-422与RS-485标准及应用一、RS-232、RS-422与RS-485的由来 RS-232、RS-422与RS-485都是串行数据接口标准,最初都是由电子工业协会(EIA)制订并发布的,RS-232在1962年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422由RS-232发展而来,它是为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-422定义了一种平衡通信接口,将传输速率提高到10Mb/s,传输距离延长到4000英尺(速率低于100kb/s时),并允许在一条平衡总线上连接最多10个接收器。RS-422是一种单机发送、多机接收的单向、平衡传输规范,被命名为TIA/EIA-422-A标准。为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为TIA/EIA-485-A标准。由于EIA提出的建议标准都是以“RS”作为前缀,所以在通讯工业领域,仍然习惯将上述标准以RS作前缀称谓。 RS-232、RS-422与RS-485标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。因此在视频界的应用,许多厂家都建立了一套高层通信协议,或公开或厂家独家使用。如录像机厂家中的Sony与松下对录像机的RS-422控制协议是有差异的,视频服务器上的控制协议则更多了,如Louth、Odetis协议是公开的,而ProLINK则是基于Profile上的。 二、RS-232串行接口标准 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。 收、发端的数据信号是相对于信号地,如从DTE设备发出的数据在使用DB25连接器时是2脚相对7脚(信号地)的电平,DB25各引脚定义参见图1。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V,负电平在-5-15V电平。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3+12V与-3-12V。由于发送电平与接收电平的差仅为2V至3V左右,所以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20kb/s。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为37k。所以RS-232适合本地设备之间的通信。其有关电气参数参见表1。 规定 RS232 RS422 R485 工作方式 单端 差分 差分 节点数 1收、1发 1发10收 1发32收 最大传输电缆长度 50英尺 400英尺 400英尺 最大传输速率 20Kb/S 10Mb/s 10Mb/s 最大驱动输出电压 +/-25V -0.25V+6V -7V+12V 驱动器输出信号电平 (负载最小值) 负载 +/-5V+/-15V +/-2.0V +/-1.5V 驱动器输出信号电平 (空载最大值) 空载 +/-25V +/-6V +/-6V 驱动器负载阻抗() 3K7K 100 54 摆率(最大值) 30V/s N/A N/A 接收器输入电压范围 +/-15V -10V+10V -7V+12V 接收器输入门限 +/-3V +/-200mV +/-200mV 接收器输入电阻() 3K7K 4K(最小) 12K 驱动器共模电压 -3V+3V -1V+3V 接收器共模电压 -7V+7V -7V+12V 表1 三、RS-422与RS-485串行接口标准 1平衡传输 RS-422、RS-485与RS-232不一样,数据信号采用差分传输方式,也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,如图2。 通常情况下,发送驱动器A、B之间的正电平在+2+6V,是一个逻辑状态,负电平在-26V,是另一个逻辑状态。另有一个信号地C,在RS-485中还有一“使能”端,而在RS-422中这是可用可不用的。“使能”端是用于控制发送驱动器与传输线的切断与连接。当“使能”端起作用时,发送驱动器处于高阻状态,称作“第三态”,即它是有别于逻辑“1”与“0”的第三态。 接收器也作与发送端相对的规定,收、发端通过平衡双绞线将AA与BB对应相连,当在收端AB之间有大于+200mV的电平时,输出正逻辑电平,小于-200mV时,输出负逻辑电平。接收器接收平衡线上的电平范围通常在200mV至6V之间。参见图3。 2RS-422电气规定 RS-422标准全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的特性。图5是典型的RS-422四线接口。实际上还有一根信号地线,共5根线。图4是其DB9连接器引脚定义。由于接收器采用高输入阻抗和发送驱动器比RS232更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10个节点。即一个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422支持点对多的双向通信。接收器输入阻抗为4k,故发端最大负载能力是104k+100(终接电阻)。RS-422四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF握手)或硬件方式(一对单独的双绞线)实现。 RS-422的最大传输距离为4000英尺(约1219米),最大传输速率为10Mb/s。其平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100米长的双绞线上所能获得的最大传输速率仅为1Mb/s。 RS-422需要一终接电阻,要求其阻值约等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输电缆的最远端。 RS-422有关电气参数见表1 3RS-485电气规定 由于RS-485是从RS-422基础上发展而来的,所以RS-485许多电气规定与RS-422相仿。如都采用平衡传输方式、都需要在传输线上接终接电阻等。RS-485可以采用二线与四线方式,二线制可实现真正的多点双向通信,参见图6。 而采用四线连接时,与RS-422一样只能实现点对多的通信,即只能有一个主(Master)设备,其余为从设备,但它比RS-422有改进, 无论四线还是二线连接方式总线上可多接到32个设备。参见图7。 RS-485与RS-422的不同还在于其共模输出电压是不同的,RS-485是-7V至+12V之间,而RS-422在-7V至+7V之间,RS-485接收器最小输入阻抗为12k剑鳵S-422是4k健;旧峡梢运礡S-485满足所有RS-422的规范,所以RS-485的驱动器可以用在RS-422网络中应用。 RS-485有关电气规定参见表1。 RS-485与RS-422一样,其最大传输距离约为1219米,最大传输速率为10Mb/s。平衡双绞线的长度与传输速率成反比,在100kb/s速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般100米长双绞线最大传输速率仅为1Mb/s。 RS-485需要2个终接电阻,其阻值要求等于传输电缆的特性阻抗。在矩距离传输时可不需终接电阻,即一般在300米以下不需终接电阻。终接电阻接在传输总线的两端。 四、RS-422与RS-485的网络安装注意要点 RS-422可支持10个节点,RS-485支持32个节点,因此多节点构成网络。网络拓扑一般采用终端匹配的总线型结构,不支持环形或星形网络。在构建网络时,应注意如下几点: 1采用一条双绞线电缆作总线,将各个节点串接起来,从总线到每个节点的引出线长度应尽量短,以便使引出线中的反射信号对总线信号的影响最低。图8所示为实际应用中常见的一些错误连接方式(a,c,e)和正确的连接方式(b,d,f)。a,c,e这三种网络连接尽管不正确,在短距离、低速率仍可能正常工作,但随着通信距离的延长或通信速率的提高,其不良影响会越来越严重,主要原因是信号在各支路末端反射后与原信号叠加,会造成信号质量下降。 2应注意总线特性阻抗的连续性,在阻抗不连续点就会发生信号的反射。下列几种情况易产生这种不连续性:总线的不同区段采用了不同电缆,或某一段总线上有过多收发器紧靠在一起安装,再者是过长的分支线引出到总线。 总之,应该提供一条单一、连续的信号通道作为总线。 五、RS-422与RS-485传输线上匹配的一些说明 对RS-422与RS-485总线网络一般要使用终接电阻进行匹配。但在短距离与低速率下可以不用考虑终端匹配。那么在什么情况下不用考虑匹配呢?理论上,在每个接收数据信号的中点进行采样时,只要反射信号在开始采样时衰减到足够低就可以不考虑匹配。但这在实际上难以掌握,美国MAXIM公司有篇文章提到一条经验性的原则可以用来判断在什么样的数据速率和电缆长度时需要进行匹配:当信号的转换时间(上升或下降时间)超过电信号沿总线单向传输所需时间的3倍以上时就可以不加匹配。例如具有限斜率特性的RS-485接口MAX483输出信号的上升或下降时间最小为250ns,典型双绞线上的信号传输速率约为0.2m/ns(24AWG PVC电缆),那么只要数据速率在250kb/s以内、电缆长度不超过16米,采用MAX483作为RS-485接口时就可以不加终端匹配。 一般终端匹配采用终接电阻方法,前文已有提及,RS-422在总线电缆的远端并接电阻,RS-485则应在总线电缆的开始和末端都需并接终接电阻。终接电阻一般在RS-422网络中取100,在RS-485网络中取120。相当于电缆特性阻抗的电阻,因为大多数双绞线电缆特性阻抗大约在100120。这种匹配方法简单有效,但有一个缺点,匹配电阻要消耗较大功率,对于功耗限制比较严格的系统不太适合。 另外一种比较省电的匹配方式是RC匹配,如图9。利用一只电容C隔断直流成分可以节省大部分功率。但电容C的取值是个难点,需要在功耗和匹配质量间进行折衷。 还有一种采用二极管的匹配方法,如图10。这种方案虽未实现真正的“匹配”,但它利用二极管的钳位作用能迅速削弱反射信号,达到改善信号质量的目的。节能效果显著。 六、RS-422与RS-485的接地问题 电子系统接地是很重要的,但常常被忽视。接地处理不当往往会导致电子系统不能稳定工作甚至危及系统安全。RS-422与RS-485传输网络的接地同样也是很重要的,因为接地系统不合理会影响整个网络的稳定性,尤其是在工作环境比较恶劣和传输距离较远的情况下,对于接地的要求更为严格。否则接口损坏率较高。很多情况下,连接RS-422、RS-485通信链路时只是简单地用一对双绞线将各个接口的“A”、“B”端连接起来。而忽略了信号地的连接,这种连接方法在许多场合是能正常工作的,但却埋下了很大的隐患,这有下面二个原因: 1共模干扰问题:正如前文已述,RS-422与RS-485接口均采用差分方式传输信号方式,并不需要相对于某个参照点来检测信号,系统只需检测两线之间的电位差就可以了。但人们往往忽视了收发器有一定的共模电压范围,如RS-422共模电压范围为-7+7V,而RS-485收发器共模电压范围为-7+12V,只有满足上述条件,整个网络才能正常工作。当网络线路中共模电压超出此范围时就会影响通信的稳定可靠,甚至损坏接口。以图11为例,当发送驱动器A向接收器B发送数据时,发送驱动器A的输出共模电压为V OS ,由于两个系统具有各自独立的接地系统,存在着地电位差V GPD 。那么,接收器输入端的共模电压V CM 就会达到V CM =V OS +V GPD 。RS-422与RS-485标准均规定V OS 3V,但V GPD 可能会有很大幅度(十几伏甚至数十伏),并可能伴有强干扰信号,致使接收器共模输入V CM 超出正常范围,并在传输线路上产生干扰电流,轻则影响正常通信,重则损坏通信接口电路。 2(EMI)问题:发送驱动器输出信号中的共模部分需要一个返回通路,如没有一个低阻的返回通道(信号地),就会以辐射的形式返回源端,整个总线就会像一个巨大的天线向外辐射电磁波。 由于上述原因,RS-422、RS-485尽管采用差分平衡传输方式,但对整个RS-422或RS-485网络,必须有一条低阻的信号地。一条低阻的信号地将两个接口的工作地连接起来,使共模干扰电压V GPD 被短路。这条信号地可以是额外的一条线(非屏蔽双绞线),或者是屏蔽双绞线的屏蔽层。这是最通常的接地方法。 值得注意的是,这种做法仅对高阻型共模干扰有效,由于干扰源内阻大,短接后不会形成很大的接地环路电流,对于通信不会有很大影响。当共模干扰源内阻较低时,会在接地线上形成较大的环路电流,影响正常通信。笔者认为,可以采取以下三种措施: (1) 如果干扰源内阻不是非常小,可以在接地线上加限流电阻以限制干扰电流。接地电阻的增加可能会使共模电压升高,但只要控制在适当的范围内就不会影响正常通信。 (2) 采用浮地技术,隔断接地环路。这是较常用也是十分有效的一种方法,当共模干扰内阻很小时上述方法已不能奏效,此时可以考虑将引入干扰的节点(例如处于恶劣的工作环境的现场设备)浮置起来(也就是系统的电路地与机壳或大地隔离),这样就隔断了接地环路,不会形成很大的环路电流。 (3) 采用隔离接口。有些情况下,出于安全或其它方面的考虑,电路地必须与机壳或大地相连,不能悬浮,这时可以采用隔离接口来隔断接地回路,但是仍然应该有一条地线将隔离侧的公共端与其它接口的工作地相连。参见图12。 七、RS-422与RS-485的网络失效保护 RS-422与RS-485标准都规定了接收器门限为200mV。这样规定能够提供比较高的噪声抑制能力,如前文所述,当接收器A电平比B电平高+200mV以上时,输出为正逻辑,反之,则输出为负逻辑。但由于第三态的存在,即在主机在发端发完一个信息数据后,将总线置于第三态,即总线空闲时没有任何信号驱动总线,使AB之间的电压在-200+200mV直至趋于0V,这带来了一个问题:接收器输出状态不确定。如果接收机的输出为0V,网络中从机将把其解释为一个新的启动位,并试图读取后续字节,由于永远不会有停止位,产生一个帧错误结果,不再有设备请求总线,网络陷于瘫痪状态。除上述所述的总线空闲会造成两线电压差低于200mV的情况外,开路或短路时也会出现这种情况。故应采取一定的措施避免接收器处于不确定状态。 通常是在总线上加偏置,当总线空闲或开路时,利用偏置电阻将总线偏置在一个确定的状态(差分电压-200mV)。如图13。将A上拉到地,B下拉到5V,电阻的典型值是1k,具体数值随电缆的电容变化而变化。 上述方法是比较经典的方法,但它仍然不能解决总线短路时的问题,有些厂家将接收门限移到-200mV/-50mV,可解决这个问题。例如Maxim公司的MAX3080系列RS-485接口,不仅省去了外部偏置电阻,而且解决了总线短路情况下的失效保护问题。 八、RS-422与RS-485的瞬态保护 前文提到的信号接地措施,只对低频率的共模干扰有保护作用,对于频率很高的瞬态干扰就无能为力了。由于传输线对高频信号而言就是相当于电感,因此对于高频瞬态干扰,接地线实际等同于开路。这样的瞬态干扰虽然持续时间短暂,但可能会有成百上千伏的电压。 实际应用环境下还是存在高频瞬态干扰的可能。一般在切换大功率感性负载如电机、变压器、继电器等或闪电过程中都会产生幅度很高的瞬态干扰,如果不加以适当防护就会损坏RS-422或RS-485通信接口。对于这种瞬态干扰可以采用隔离或旁路的方法加以防护。 1隔离保护方法。这种方案实际上将瞬态高压转移到隔离接口中的电隔离层上,由于隔离层的高绝缘电阻,不会产生损害性的浪涌电流,起到保护接口的作用。通常采用高频变压器、光耦等元件实现接口的电气隔离,已有器件厂商将所有这些元件集成在一片IC中,使用起来非常简便,如Maxim公司的MAX1480/MAX1490,隔离电压可达2500V。这种方案的优点是可以承受高电压、持续时间较长的瞬态干扰,实现起来也比较容易,缺点是成本较高。 2旁路保护方法。这种方案利用瞬态抑制元件(如TVS、MOV、气体放电管等)将危害性的瞬态能量旁路到大地,优点是成本较低,缺点是保护能力有限,只能保护一定能量以内的瞬态干扰,持续时间不能很长,而且需要有一条良好的连接大地的通道,实现起来比较困难。实际应用中是将上述两种方案结合起来灵活加以运用,如图14。在这种方法中,隔离接口对大幅度瞬态干扰进行隔离,旁路元件则保护隔离接口不被过高的瞬态电压击穿。 PC机与单片机的通讯设计大多数的电脑设备都具有RS-232C接口,尽管它的性能指标并非很好。在广泛的市场支持下依然常胜不衰。就使用而言,RS-232也确实有其优势:仅需3根线便可在两个数字设备之间全双工的传送数据。不过,RS-232C的控制要比使用并行通讯的打印机接口更难于控制。RS-232C使用了远较并行口更多的寄存器。这些寄存器用来实现串行数据的传送及RS-232C设备之间的握手与流量控制。本文将分别描述 PC机及单片机MCS-51 的串行通讯的原理及具体的软件设计。 RS-232C介绍与PC硬件 使用查询方法的串行通讯程序设计 使用中断的串行通讯程序设计 MCS-51串行通讯 关于RS485 (1) RS-232C介绍与PC硬件: RS-232C使用-3到-25V表示数字“1”,使用3V到25V表示数字“0”,RS-232C在空闲时处于逻辑“1”状态,在开始传送时,首先产生一起始位,起始位为一个宽度的逻辑“0”,紧随其后为所要传送的数据,所要传送的数据有最低位开始依此送出,并以一个结束位标志该字节传送结束,结束位为一个宽度的逻辑“1”状态。 PC机一般使用8250或16550作为串行通讯的控制器,使用9针或25针的接插件将串行口的信号送出。该插座的信号定义如下: DB-25 DB-9 信号名称 方向 含 义 2 3 TXD 输出 数据发送端 3 2 RXD 输入 数据接收端 4 7 RTS 输出 请求发送(计算机要求发送数据) 5 8 CTS 输入 清除发送(MODEM准备接收数据) 6 6 DSR 输入 数据设备准备就绪 7 5 SG - 信号地 8 1 DCD 输入 数据载波检测 20 4 DTR 输出 数据终端准备就绪(计算机) 22 9 RI 输入 响铃指示 以上信号在通讯过程之中可能会被全部或部分使用,最简单的通讯仅需TXD及RXD及SG即可完成,其他的握手信号可以做适当处理或直接悬空,至于是否可以悬空这视乎你的通讯软件。比如说,如果使用DOS所提供的BIOS通讯驱动程序,那么,这些握手信号则需要做如下处理,因为BIOS的通讯驱动使用了这些信号。如果使用自己编写的串行驱动程序则可以完全不使用这些握手信号(详见下面有关章节)。 PC机一般使用8250或16550的作为串行通讯控制器,8250及16550的管脚排列如下: 8250(16550)的寄存器如下表所示: 基地址 读/写 寄存器缩写 注 释 0 Write - 发送保持寄存器(DLAB=0) 0 Read - 接收数据寄存器(DLAB=0) 0 Read/Write - 波特率低八位(DLAB=1) 1 Read/Write IER 中断允许寄存器 1 Read/Write - 波特率高八位(DLAB=1) 2 Read IIR 中断标识寄存器 2 Write FCR FIFO控制寄存器 3 Read/Write LCR 线路控制寄存器 4 Read/Write MCR MODEM控制寄存器 5 Read LSR 线路状态寄存器 6 Read MSR MODEM状态寄存器 7 Read/Write - Scratch Register PC机支持1-4个串行口,即COM1-COM4,其基地址在BIOS数据区0000:0400-0000:0406中描述,对应地址分别为3F8/2F8/3E8/2E8,COM1及COM3使用PC机中断4,COM2及COM4使用中断3。 在上表中,8250共有12个寄存器,使用了8个地址,其中部分寄存器共用一个地址,由DLAB=0/1来区分,在DLAB=1用于设定通讯所需的波特率。常用的波特率参数见下表: 速率(BPS) 波特率高八位 波特率低八位 50 09h 00h 300 01h 80h 600 00h C0h 2400 00h 30h 4800 00h 18h 9600 00h 0Ch 19200 00h 06h 38400 00h 03h 57600 00h 02h 115200 00h 01h 以下几个表格为8250的寄存器的功能描述: 中断允许寄存器(IER): 位 注 释 7 未使用 6 未使用 5 进入低功耗模式(16750) 4 进入睡眠模式(16750) 3 允许MODEM状态中断 2 允许接收线路状态中断 1 允许发送保持器空中断 0 允许接收数据就绪中断 Bit0置1将允许接收到数据时产生中断,Bit1置1时允许发送保持寄存器空时产生中断,Bit2置1将在LSR变化时产生中断,相应的Bit3置位将在MSR变化时产生中断。 中断识别寄存器(IIR): 位 注 释 Bit6:7=00 无FIFO Bit6:7=01 允许FIFO,但不可用 Bit6:7=11 允许FIFO Bit5 允许64字节FIFO(16750) Bit4 未使用 Bit3 16550超时中断 Bit2:1=00 MODEM状态中断(CTS/RI/DTR/DCD) Bit2:1=01 发送保持寄存器空中断 Bit2:1=10 接收数据就绪中断 Bit2:1=11 接收线路状态中断 Bit0=0 有中断产生 Bit0=1 无中断产生 IIR为只读寄存器,Bit6:7用来指示FIFO的状态,均为0时则无FIFO,此时为8250或16450芯片,为01时有FIFO但不可以使用,为11时FIFO有效并可以正常工作。Bit3用来指示超时中断(16550/167
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东方园林项目管理办法
- 落实资金经费管理办法
- 营销与应急管理办法
- 人行展期贷款管理办法
- 装备管理管理办法规定
- 《外派人员》管理办法
- 调压柜改造管理办法
- 个人担保贷款管理办法
- 专利代理诉讼管理办法
- 线索处置与管理办法
- 2025年高考作文素材积累之刘擎《西方现代思想讲义》大纲梳理
- DME糖尿病黄斑水肿
- DB1305∕T 45-2022 小麦品种冀麦325节水高产栽培技术规程(邢台市)
- 《中国传统文化课件》课件
- 水利信息化水质监测系统单元工程质量验收评定表、检查记录
- 管理会计学(第6版) 课件 郭晓梅 第1-3章 管理会计导论、成本性态分析与变动成本计算法、作业成本计算法
- 2024版门面租赁合同书范本下载
- 2024 体育生规章制度
- 九年级化学开学第一课
- 事业单位行政单位物业管理服务方案(技术标)
- 单位食堂制止浪费方案
评论
0/150
提交评论