收藏 分销(赏)

单片机通信技术_485.doc

上传人:pc****0 文档编号:7786582 上传时间:2025-01-17 格式:DOC 页数:12 大小:890KB 下载积分:10 金币
下载 相关 举报
单片机通信技术_485.doc_第1页
第1页 / 共12页
单片机通信技术_485.doc_第2页
第2页 / 共12页


点击查看更多>>
资源描述
单片机的RS-485通信技术 一、 基础知识 通常的微处理器都集成有1 路或多路硬件UART 通道,可以非常方便地实现串行通讯。在工业控制、电力通讯、智能仪表等领域中,也常常使用简便易用的串行通讯方式作为数据交换的手段。但是,在工业控制等环境中,常会有电气噪声干扰传输线路,使用RS-232 通讯时经常因外界的电气干扰而导致信号传输错误;另外,RS-232 通讯的最大传输距离在不增加缓冲器的情况下只可以达到15 米。为了解决上述问题,RS-485/422 通讯方式就应运而生了。 1、RS-232/422/485 标准来历 RS-232、RS-422 与RS-485 最初都是由电子工业协会(EIA)制订并发布的。RS-232在1962 年发布,命名为EIA-232-E,作为工业标准,以保证不同厂家产品之间的兼容。RS-422是由RS-232 发展而来,它是为弥补RS-232 之不足而提出的。为改进RS-232 通信距离短、速率低的缺点,RS-422 定义了一种平衡通信接口,将传输速率提高到10Mbps,传输距离延长到4000 英尺(速率低于100kbps 时),并允许在一条平衡总线上连接最多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 标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议。但由于PC 上的串行数据通讯是通过UART 芯片(较老版本的PC 采用I8250 芯片或Z8530 芯片)来处理的,其通讯协议也规定了串行数据单元的格式(8-N-1 格式):1 位逻辑0 的起始位,6/7/8 位数据位,1 位可选择的奇(ODD)/偶(EVEN)校验位,1/2 位逻辑1 的停止位。基于PC 的RS-232、RS-422 与RS-485标准均采用同样的通讯协议。 表格 1-1 列出了RS-232、RS-422、RS-485 通讯方式的区别。 标准 RS-232 RS-422 RS-485 工作方式 单端 差分 差分 节点数 1收、1发 1发、10收 1发、32收 最大传输电缆长度 50英尺 4000英尺 4000英尺 最大传输速率 20Kbps 10Mbps 10Mbps 最大驱动输出电压 +/ 25V 0.25V~+6V 7V~+12V 发送器输出信号电平 (负载最小值) 负载 +/-5V~+/-15V ±2.0V ±1.5V 发送器输出信号电平 (空载最大值) 空载 +/-25V ±6V ±6V 发送器负载阻抗(Ω) 3K~7K 100 54 摆率(最大值) 30V/μs N/A N/A 接收器输入电压范围 ±15V 10V~+10V 7V~+12V 接收器输入门限 ±3V ±200mV ±200mV 接收器输入电阻(Ω) 3K~7K 4K(最小) ≥12K 发送器共模电压 -- -3V~+3V -1V~+3V 接收器共模电压 -- -7V~+7V -7V~+12V 1、 RS-232 标准 RS-232 被定义为一种在低速率、近距离串行通讯的单端标准。RS-232 采取不平衡传输方式,即所谓单端通讯。 ⑴、RS-232 的电气标准 电平为逻辑“0”时:+3V~+15V; 电平为逻辑“1”时:-3V~-15V; 未定义区:-3V~+3V。在此区域内的信号处理将由通讯接口的RS-232 收发器决定。 ⑵、RS-422/485 标准 RS-422/485 标准的全称为TIA/EIA-422-B 和TIA/EIA-485 串行通讯标准。RS-422/485标准与RS-232 标准不一样,数据信号采用差分传输方式(Differential Driver Mode),也称作平衡传输。由于RS-422/485 标准在电气特性上非常相近,在传输方式上有所区别;为便于理解,下面将主要介绍应用比较普遍的RS-485 标准,并简单介绍RS-422 标准与RS-485 标准的区别。 1. RS-485 标准 RS-485 标准是为弥补RS-232 通信距离短、速率低等缺点而产生的。RS-485 标准只规定了平衡发送器和接收器的电特性,而没有规定接插件、传输电缆和应用层通信协议。 RS-485 标准与RS-232 不一样,数据信号采用差分传输方式(Differential Driver Mode), 也称作平衡传输,它使用一对双绞线,将其中一线定义为A,另一线定义为B,如图 1所示。 图 1:RS-485 发送器的示意图 通常情况下,发送发送器A、B 之间的正电平在+2~+6V,是一个逻辑状态;负电平在-2~-6V,是另一个逻辑状态。另有一个信号地C。在RS-485 器件中,一般还有一个“使能”控制信号。“使能”信号用于控制发送发送器与传输线的切断与连接,当“使能”端起作用时,发送发送器处于高阻状态,称作“第三态”,它是有别于逻辑“1”与“0”的第三种状态。 对于接收发送器,也作出与发送发送器相对的规定,收、发端通过平衡双绞线将A-A与B-B 对应相连。当在接收端A-B 之间有大于+200mV 的电平时,输出为正逻辑电平;小于-200mV 时,输出为负逻辑电平。在接收发送器的接收平衡线上,电平范围通常在200mV至6V 之间。定义逻辑1(正逻辑电平)为B>A 的状态,逻辑0(负逻辑电平)为A>B 的状态,A、B 之间的压差不小于200mV。 RS-485 标准的最大传输距离约为1219 米,最大传输速率为10Mbps。通常,RS-485 网络采用平衡双绞线作为传输媒体。平衡双绞线的长度与传输速率成反比,只有在20kbps 速率以下,才可能使用规定最长的电缆长度。只有在很短的距离下才能获得最高速率传输。一般来说,15 米长双绞线最大传输速率仅为1Mbps。 注意:并不是所有的RS-485 收发器都能够支持高达10Mbps 的通讯速率。如果采用光电隔离方式,则通讯速率一般还会受到光电隔离器件响应速度的限制。 RS-485 网络采用直线拓朴结构,需要安装2 个终端匹配电阻,其阻值要求等于传输电缆的特性阻抗(一般取值为120Ω)。在矩距离、或低波特率波数据传输时可不需终端匹配电阻,即一般在300 米以下、19200bps 不需终端匹配电阻。终端匹配电阻安装在RS-485 传输网络的两个端点,并联连接在A-B 引脚之间。 RS-485 标准通常被用作为一种相对经济、具有相当高噪声抑制、相对高的传输速率、传输距离远、宽共模范围的通信平台。同时,RS-485 电路具有控制方便、成本低廉等优点。在过去的20 年时间里,建议性标准RS-485 作为一种多点差分数据传输的电气规范,被应用在许多不同的领域,作为数据传输链路。目前,在我国应用的现场网络中,RS-485半双工异步通信总线也是被各个研发机构广泛使用的数据通信总线。但是基于在RS-485 总线上任一时刻只能存在一个主机的特点,它往往应用在集中控制枢纽与分散控制单元之间。 2. RS-422 标准 RS-422 标准的全称是“平衡电压数字接口电路的电气特性”,它定义了接口电路的电气特性。图 2是典型的RS-422 四线接口。实际上还有一根信号地线,共5 根线通讯线。 图2:RS-422 标准的通讯接口 由于RS-422 接收器采用高输入阻抗和发送器因此比RS-232 更强的驱动能力,故允许在相同传输线上连接多个接收节点,最多可接10 个节点。即一个主设备(Master),其余为从设备(Salve),从设备之间不能通信,所以RS-422 支持点对多点的双向通信。接收器输入阻抗为4k,故发端最大负载能力是10×4k+100Ω(终接电阻)。RS-422 四线接口由于采用单独的发送和接收通道,因此不必控制数据方向,各装置之间任何必须的信号交换均可以按软件方式(XON/XOFF 握手)或硬件方式(一对单独的双绞线)实现。 RS-422 的最大传输距离为4000 英尺(约1219 米),最大传输速率为10Mbps。其平衡双绞线的长度与传输速率成反比,在20kbps 速率以下,才可能达到最大传输距离。只有在很短的距离下才能获得最高速率传输。一般100 米长的双绞线上所能获得的最大传输速率仅为1Mbps。 RS-422 需要安装一个终接电阻,要求其阻值约等于传输电缆的特性阻抗(一般取值为120 欧)。在短距离、或低波特率数据传输时可不安装终接电阻,即一般在300 米以下不安装终接电阻。终接电阻安装在传输电缆的最远端。 ⑶、RS-485/RS-422 芯片 作为一种常用的通讯接口器件,RS-485/RS-422 芯片可以在许多半导体公司的“标准接口器件”栏目中“收发器”类元件中找到对应的型号;比如Sipex 公司(器件前缀为SP)、Maxim 公司(器件前缀为MAX)、TI 公司(器件前缀为SN)、Intersil 公司(器件前缀为ISL 或LTC)等各大半导体公司。 ⑷、RS-485接口电路 RS-485 接口电路的主要功能是:将来自微处理器的发送信号TX 通过“发送器”转换成通讯网络中的差分信号,也可以将通讯网络中的差分信号通过“接收器”转换成被微处理器接收的RX 信号。任一时刻,RS-485 收发器只能够工作在“接收”或“发送”两种模式之一,因此,必须为RS-485 接口电路增加一个收/发逻辑控制电路。另外,由于应用环境的各不相同,RS-485 接口电路的附加保护措施也是必须重点考虑的环节。 ①、基本RS-485 电路 图3为一个经常被应用到的SP485R芯片的示范电路,可以被直接嵌入实际的RS-485应用电路中。微处理器的标准串行口通过RXD 直接连接SP485R 芯片的RO 引脚,通过TXD直接连接SP485R 芯片的DI 引脚。 图 3:SP485R 的基本RS-485 电路 由微处理器输出的R/D 信号直接控制SP485R 芯片的发送器/接收器使能:R/D 信号为“1”,则SP485R 芯片的发送器有效,接收器禁止,此时微处理器可以向RS-485 总线发送数据字节;R/D 信号为“0”,则SP485R 芯片的发送器禁止,接收器有效,此时微处理器可以接收来自RS-485 总线的数据字节。此电路中,任一时刻SP485R 芯片中的“接收器”和“发送器”只能够有1 个处于工作状态。连接至A 引脚的上拉电阻R7、连接至B 引脚的下拉电阻R8 用于保证无连接的SP485R芯片处于空闲状态,提供网络失效保护,以提高RS-485 节点与网络的可靠性。如果将SP485R 连接至微处理器80C51 芯片的UART 串口,则SP485R 芯片的RO 引脚不需要上拉;否则,需要根据实际情况考虑是否在RO 引脚增加1 个大约10K 的上拉电阻。 SP485R 芯片本身集成了有效的ESD 保护措施。但为了更加可靠地保护RS-485 网络,确保系统安全,我们通常还会额外增加一些保护电路。 电路图中,钳位于6.8V 的TVS 管V4、V5、V6 都是用来保护RS-485 总线的,避免RS-485总线在受外界干扰时(雷击、浪涌)产生的高压损坏RS-485 收发器。当然,也选择集成的总线保护元件,比如ONSemi 半导体的NUP2105L 器件(SOT-23 封装,集成2 个双向TVS器件),作为SP485R 芯片的附加保护措施。另外,电路中的L1、L2、C1、C2 是可选安装元件,用于提高电路的EMI 性能。图中附加的保护电路能够对SP485R 芯片起到良好的保护效果。 ②、隔离RS-485 电路 图4为一个使用光电隔离方式连接的SP485R 芯片的示范电路,可以被直接嵌入实际的RS-485 应用电路中。微处理器的UART 串口的RXD、TXD 通过光电隔离电路连接SP485R 芯片的RO、DI 引脚,控制信号R/D 同样经光电隔离电路去控制SP485R 芯片的DE和/RE 引脚。 由微处理器输出的R/D 信号通过光电隔离器件控制SP485R 芯片的发送器/接收器使能:R/D 信号为“1”,则SP485R 芯片的DE 和/RE 引脚为“1”,发送器有效,接收器禁止,此时微处理器可以向RS-485 总线发送数据字节;R/D 信号为“0”,则SP485R 芯片的DE和/RE 引脚为“0”,发送器禁止,接收器有效,此时微处理器可以接收来自RS-485 总线的数据字节。任一时刻,SP485R 芯片中的“接收器”和“发送器”只能够有1 个处于工作状态。 连接至A 引脚的上拉电阻R7、连接至B 引脚的下拉电阻R8 用于保证无连接的SP485R芯片处于空闲状态,提供网络失效保护,以提高RS-485 节点与网络的可靠性。使用DC-DC 器件可以产生1 组与微处理器电路完全隔离的电源输出,用于向RS-485 收发器电路提供+5V 电源。电路中光耦器件的速率将会影响RS-485 电路的通讯速率。图4中选用了NEC 公司的光耦器件PS2501 芯片,受PS2501 芯片的响应速率影响,这一示范RS-485 接口电路的通讯速率只可保障在19200bps 速率下正常工作;如果需要达到更高的RS-485 通讯速率,则需要选用响应速度更快的光耦器件,比如Agilent 公司的超高速光耦元件。 图4:SP485R 的隔离RS-485 电路 SP485R 芯片本身集成了有效的ESD 保护措施。但为了更加可靠地保护RS-485 网络,确保系统安全,我们通常还会额外增加一些保护电路。当然,我们使用在图4中介绍的保护电路,同样可以对SP485R 芯片起到良好的保护效果。 ③、上电抑制电路 由多个RS-485 收发器连接而成的RS-485 多机网络中,任一时刻只能够有一个RS-485发送器工作在“发送”状态,其余节点必须工作在“接收”状态;这称为“单主/多从”通讯方式。在一个RS-485 网络中同时有2 个或更多个RS-485 收发器工作在“发送”状态将会导致数据丢失、产生错误,严重的甚至损坏RS-485 收发器,使RS-485 网络瘫痪。因此,在设计阶段时就应仔细考虑,避免后期可能出现的种种事故隐患。 图5所示实例介绍了在一个应用系统上电阶段的RS-485 接口电路设计窍门。RS-485接口电路实现系统的通讯功能,但仅是一个完整系统中的一个有机部分,当然受到微处理器的状态控制。当微处理器在上电时,串行通讯接口的控制信号SCI_DE 并不能够确定处于高或低电平状态,这可能会导致该单元在上电阶段向RS-485 网络发送一组“无效”数据,破坏原来正常的网络通讯功能。设计时增加一组由R1、C1、D1、U1 简单元件组成的上电抑制电路,即可以避免在应用系统上电时出现网络通讯事故。 图5:RS-485 接口电路的上电抑制 1.3.4 RS-485 自动换向电路 前面的电路中,都使用了一个串行通讯接口的控制信号SCI_DE 来控制RS-485 收发器的发送器/接收器使能引脚。图6则演示了另一种自动控制RS-485 芯片的发送器/接收器使能引脚的方式,通常称作为RS-485 接口电路的自动换向功能。 图6:RS-485 接口电路的自动换向 图6所示电路中,当TXD 信号为“1”,即无输入信号时,SP485R 芯片工作在“接收”状态;当TXD 为“0”,即有信号输入时,即执行发送功能时,来自TXD 信号上的有效电平将自动禁能接收器,使能发送器,从而将TXD 信号发送到RS-485 网络。 RS-485 接口电路的自动换向功能可以有很多种可实现的不同电路形式,但其基本内容都是由TXD 信号来控制RS-485 芯片中接收器/发送器的开关切换。由于RS-485 接口电路的自动换向将占用一部分接口电路的切换时间开销、信号驱动开销,因此,这一种低成本的RS-485 接口电路可能并不适合所有的RS-485 应用。比如,在需要可靠性或高速度长距离,尤其在节点较多、负载重的情况下,强烈建议选用前面介绍的独立控制的RS-485 接口电路收/发控制方法。 2、RS-485 通讯协议 RS-485 标准只对接口的电气特性做出规定,而不涉及接插件、电缆或协议;因此,用户需要在RS-485 应用网络的基础上建立自己的应用层通信协议。 由于RS-485 标准是基于PC 的UART 芯片上的处理方式,因此,其通讯协议也规定了串行数据单元的格式(8-N-1 格式):1 位逻辑0 的起始位,6/7/8 位数据位,1 位可选择的奇(ODD)/偶(EVEN)校验位,1/2 位逻辑1 的停止位。 目前,RS-485 在国内有着非常广泛的应用,许多领域,比如工业控制、电力通讯、智能楼宇等都经常可以见到具有RS-485 接口电路的设备。但是,这些设备采用的用户层协议都不相同;这些设备之间并不可以直接连接通讯。比如,很多具有RS-485 接口电路的用户设备采用自己制定的简单通讯协议,或是直接取自ModBus 协议(AscII/RTU 模式)中的一部分功能。 在电力通讯领域,当前国家现在执行的行业标准中,颁布有按设备分类的各种通讯规约,如CDT、SC-1801、u4F、DNP3.0 规约和1995 年的IEC60870-5-101 传输规约、1997 年的国际101 规约的国内版本DL/T634-1997规约;在电表应用中,国内大多数地区的厂商采用多功能电能表通讯协议(DL/T645-1997)。 国内江苏、浙江、上海地区以及北京的电表厂商采用多功能电能表通讯协议(DL/T645-1997)作为电表的远程控制通讯协议;这是一个在RS-485 网络中实现应用的行业标准。下面我们简单的做以说明。 1、通讯字节格式,如图7所示。 图7:通信字节格式 传送方向从低到高位,一个起始位、一个停止位、一个偶校验位、8 位数据位,总共11位。 2、网络通信数据帧格式,如图8所示。 图8:数据帧格式 地址域:当地址位99H时,为广播地址,同时当从控制器接收到一帧数据时,地址域相同时应响应命令,取得总线控制权,当响应命令之后,应把总线控制权归还给主控器。 命令码:执行操作的依据。 校验码:帧开始各个字节二进制算术和,不计溢出值。 帧起始符:在发送信息之前,发送1个字节68H,表示为此帧的数据。 数据域:发送时数据加33H,接收时数据减33H。 在后面的实例中,我们将以此协议做为学习方法。 当然,在以后的工作中,我们自己也可以制定符合自身需要的网络通信协议,但要符合以下几种规则。 由RS-485网络的传输特性决定,任何一刻在同一物理连接网络中,只能够存在一个发送节点。通常数据协议中包的格式由引导码、长度码、地址码、命令码、数据、较验码、尾码组成。这样的协议在通信中,不会出现竟争的问题。 二、相关知识 SP485R 芯片是由业内专业的通讯接口器件厂商Sipex 公司设计生产的高性能RS-485收发器,能够替换通用的RS-485 收发器,并在许多方面有所增强。 SP485R包含更高的ESD 保护和高接收器输入阻抗等性能。接收器输入高阻抗可以使400 个收发器接到同一条传输线上又不会引起RS-485 发送器信号的衰减。各器件封装为8 脚塑料DIP 或8 脚窄SOIC。SP481R 通过使能管脚来提供关断功能,可将电源电流(ICC)降低到0.5μA 以下。 1、引脚说明,如图9所示。 图9:485管脚图和管脚说明 2、发送真值表 输入 输出 /RE DE DI 线状态 B A X 1 1 无错误 0 1 X 1 0 无错误 1 0 X 0 X X Z Z X 1 X 出错 Z Z 3、接收真值表 输入 输出 /RE DE A-B R 0 0 +0.2V 1 0 0 -0.2V 0 0 0 输入开路 1 1 0 X Z 4、芯片性能说明 RS-485 标准理想地用于多分支(multi-drop)应用中,一条总线可以连接多个发送器和/或接收器。RS-485 标准设备允许在一条数据线上连接32 个收发器。RS-485 被规定在长达4000 英尺电缆仍然保持高速度。 SP485R超过了标准b 中的规定,允许400 个接收器连接到同一条总线上。 4.1、发送器 发送器输出符合标准规定的RS-485 电气特性。输出电压范围从0V 到VCC,而且在两个输出之间连接了54Ω负载的条件下,保证输出电压大于+1.5V。为了遵从RS-485 规范,发送器输出符合RS-422 标准。若两个输出之间负载为100Ω时,发送器输出可以保持在至少+2.0V。 发送器有一个使能管脚(DE),当DE 为低电平时输出呈现三态。三态条件下输出为高阻抗(>100kΩ)。DE 为高电平时发送器正常工作。发送器数据传输速率至少为5Mbps。 4.2、接收器 SP485R接收器的输入是差分输入,输入灵敏度小于±200mV。如前所述,RS-485 规范允许32 个收发器连接到同一条总线上。由于输入阻抗高达至少120kΩ,SP485R 允许超过400 个收发器连接到同一条总线上。电容越大,同一条总线上就允许连接更多的元件,而信号的质量不会受到任何影响。发送器仍可驱动54Ω的等效电阻,该等效电阻是320 个接收器的输入阻抗120kΩ(至少)和每端的2 个125Ω的电缆终端电阻并联所得。 接收器有一个使能管脚( RE ),低电平时可以令接收器使能。高电平会使接收器输出呈现三态,输入保证至少120k 的阻抗。接收器数据传输速率至少为1Mbps。 接收器还有一个故障自动检测特性,当输入开路(与断开的电缆相连)时输出高电平。 4.3、关断模式 SP481R 的关断功能可以减少功耗。当DE 为低电平,RE 为高电平时,关断模式被激活。在关断模式下,电源电流小于1μA。发送器输出禁能,并且由接收器输入阻抗(至少为120kΩ)决定为高阻态。接收器输出在关断模式下也是高阻抗。在接收器禁能情况下,输出漏电流低于1μA。 5、RS-485接口芯片的其它厂商 RS-485接口的其它厂商MAXIM和TEXAS INSTRUMENTS。 三、实验目的 掌握单片机对RS-485通信电路和软件设计方法。 四、实现功能 ⑴、通过两个BCD转7段编码器芯片(CD4511)分别驱动两位共阴极数码管,实现静态的显示方式。P1.0~P1.3、P1.4~P1.7分别为两个CD4511输出数据的BCD码,通过按键提示改变数码管显示数据。 五、实验(一) ⑴、实验说明(实验的描述) 本实验是为实现RS-485网络通信而设计的电路方案。此实验的各个模块都是同一电路,通过地址设置方式设置每个模块的通信地址,这种电路可以连接256个模块节点,在此,只用三块做为实验说明。如图10所示。 模块包含五部分,分别是:数据显示部分、按键、地址设置、RS-485通信模块和单片机(89C51)及外围电路。其中,单片机(89C51)和外围电路、显示电路、按键电路在以前的实验中都已经有详细的说明,在此不再进行说明。 RS-485电路在本方案中的作用是将RS-232串行信息转换成RS-485通信模式,与其它各节点通过双绞线进行连接。 地址设置电路是8位键组成,可以设置对应I/O口的电平,高电平或低电平,CPU通过读取I/O口的状态信息,就可以得知此模块被设置成的通信地址。在通信的过程中,接收并检测数据帧中的地址信息是否与被设置的信息一致,如果一致,则接收帧后面的命令和数据信息,如果不和被设置的数据信息相同,则不接收帧以后的的数据,并保持接收状态。 图10:RS-485通信网络方案图 1、 通信协议设置 在RS-485网络通信之前,应当设置好通信协议,各个模块相互遵守标准的通信规则,才能有效的进行通信。 对于使用89C51单片机做为CPU时,应设置串行通信工作方式为方式3,增加寄偶校验位。 图11:通信字节格式 传送方向从低到高位,一个起始位、一个停止位、一个偶校验位、8 位数据位,总共11位。 图12:网络数据帧格式 地址域:地址范围为0 – 255,如果地址被设置成“0”,则此机为主控机,其它模块为从机。当地址位99H 时,为广播地址,同时当从控制器接收到一帧数据时,地址域相同时应响应命令,取得总线控制权,当响应命令之后,应把总线控制权归还给主控器。 命令码:执行操作的依据。01H:依次显示接收数据;02:“88H”闪烁方式显示。 校验码:帧开始各个字节二进制算术和,不计溢出值。 帧起始符:在发送信息之前,发送1个字节68H,表示为此帧的数据。 数据域:发送时数据加33H,接收时数据减33H。 结束码:15H行换451111电路,) ⑵、实验工具 硬件:电脑、电源DC5V、仿真器、烧写器、演示板、示波器 软件:Keil51编译器,Protel99SE、仿真器软件、烧写器软件 ⑶、元器件列表 名称 规格 数量 名称 规格 数量 电解电容 470uF 2 数码管 10UF/16V 1 二极管 IN4001 瓷片电容 104 2 发光二极管 33PF 2 DC电源座 1 电阻 47K 2 芯片 SP485 1 2K 3 CD4511 2 10K 2 89C51 1 1K 4 三端稳压管 7805 1 120 1 光电耦合器 PS2501 3 复位按键 K1 1 晶振 11.0592M 1 ⑷、原理图 图3:实验一485网络通信节点模块电路原理图 原理图说明:实验一原理图是为实现单片机89C51通过485进行网络通信功能而设计的电路。电路中采用DC9V供电,7805做为电路的稳压电源模块,电容C1、C2、C3和C4做为滤波电容;发光二极管D2做为电源指示,R12做为D2的限流分压电阻;电阻R5和按键S1组成按键电路,信号由P3.2输入;电容C8、电容C9和晶振Y2组成单片机外围晶振电路;电容C10和电容R6组成单片机的复位电路;U6(CD4511)、U9(CD4511)和共阴数码管(U7、U10)以及限流电阻组成静态显示电路;P1.0~P1.3向CD4511(U6)输出BCD码,P1.4~P1.7向CD4511(U9)输出BCD码。 R13为单片机U8(89C51)P0口上拉排阻,S2为模块节点通信地址的设置开关。 U1(SP485)和其外围电路组成TTL232-RS485的转换电路,PS2051做为光电耦合器,将通信的电信号分离,避免485网络的干扰。U1的A、B通过J1和RS485网络进行连接。 ⑸、软件流程图 流程1:实验一单片机通过RS-485实现网络通信的程序流程图 ⑹、源程序代码(C) /*******************************************************************************/ /*单片机对RS-485通信的协议和通信方式 */ /******************************************************************************/ #include"reg52.h" #define uchar unsigned char #define uint unsigned int sbit Key = P3^2; bit SendFlag,RecChk; uchar LEDDISPCore[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //定义数码显示数字对应表 Delay2ms(uchar t){ uint Count0,Count1; for(Count0 = 0;Count0 < t;Count0 ++){ for(Count1 = 0;Count1 < 120;Count1 ++){ ; } } } main(){ //I/O初始化 P0 = 0xff; P1 = 0xff; P2 = 0xff; P3 = 0xff; //外部中断初始化 SCON = 0x90; //设置串口中断为工作方式1 IE = 0x90; //允许单片机总中断和串口中断 uchar Count = 0; while(1){ if(!Key){ Delay2ms(5); //延时10ms if(!Key){ TB8 = 1; SBUF = 1; //发送地址 while(!TI); TI = 0; SendFlag = 1;//设置发送地址标志位 } } if(RecChk){ RecChk = 0; //如果校验地址正确,则发送数据。 SendFlag = 0; TB8 = 0; SBUF = 1; //发送地址 while(!TI); TI = 0; P1 = LEDDISPCore[0];//显示正确标志 P2 = LEDDISPCore[0]; } else{ P1 = LEDDISPCore[10];//显示错误标志 P2 = LEDDISPCore[10]; } } } //外部中断0处理程序 void Serial0 () interrupt 4 { uchar Temp; RI = 0; Temp = SBUF; if(SendFlag){ if(Temp == 1){ SendFlag = 0; RecChk = 1; } } } ⑺、实验步骤 一GC 00 ⑻、实验总结 ⑼、实验体会
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 百科休闲 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服