1、摘要在多机通信领域由于单片机具有灵活高效的多机通信功能和价格优势,应用越来越广泛,但由于单片机的收发信号都是 TTI 电平,驱动能力和抗干扰性有限,实用中常配合其它总线实现互联,RS485 总线就是其中之一。RS485 总线是平衡差分传输,抗干扰性好,最远可传输 4000 m,可互联多达 128 个单片机,非常适台组成多机通信系统。在多机通信中,最重要的是保证通信有条不紊地进行,因此需要严格的通信协议和完善的通信软件,本文将重点介绍应用于某大型工程的单片机多机通信协议和通信软件的设计方法。本文介绍一种利用单片机本身所提供的串行通讯口,采用自定义串行通信协议,加上总线驱动器如 MAX481、MA
2、X483、MAX485、MAX487 等组合成简单的RS485 通讯网络,完成单片机间的多机通讯。 关键词: 单片机;串行通信;RS485 总线; 目录第 1 章 引言 1第 2 章 硬件设计及原理 22.1 80C51 单片机硬件结构 22.2 最小应用系统设计 32.3 总线驱动芯片 4 第 3 章 系统问题及其解决 83.1 通信规则 83.2 可靠性及常见故障 93.3 总线匹配 93.4 RO 及 DI 端配置上拉电阻 9 3.5 总线隔离 103.6 失效保护 103.7 地线与接地 103.8 电磁干扰(EMI)问题 113.9 瞬态保护 11第 4 章 软件设计 134.1 系
3、统结构 13 4.2 通信协议 134.3 通信软件设计 14第 5 章 程序设计 19第 6 章 系统仿真 24基于 RS485 单片机多机通信模型1第 1 章 引言RS-485 采用平衡发送和差分接收方式来实现通信:在发送端 TXD 将串行口的 TTL 电平信号转换成差分信号 A、B 两路输出,经传输后在接收端将差分信号还原成 TTL 电平信号。两条传输线通常使用双绞线,又是差分传输,因此有极强的抗共模干扰的能力,接收灵敏度也相当高。同时,最大传输速率和最大传输距离也大大提高。如果以 10Kbps 速率传输数据时传输距离可达 12m,而用100Kbps 时传输距离可达 1.2km。如果降低
4、波特率,传输距离还可进一步提高。另外 RS-485 实现了多点互连,最多可达 256 台驱动器和 256 台接收器,非常便于多器件的连接。不仅可以实现半双工通信,而且可以实现全双工通信。 本设计采用 MCS-51 系列中的 80C51 单片机。以 80C51 为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹和寻光功能。80C51是一款八位单片机,它的易用性和多功能性受到了广大使用者的好评。它是第三代单片机的代表。第三代单片机包括了 Intel 公司发展 MCS-51 系列的新一代产品,如8C15280C5
5、1FA/FB80C51GA/GB8C4518C452,还包括了PhilipsSiemensADMFujutsuOKIHarria-MetraATMEL 等公司以80C51 为核心推出的大量各具特色与 80C51 兼容的单片机。新一代的单片机的最主要的技术特点是向外部接口电路扩展,以实现 Microcomputer 完善的控制功能为己任,将一些外部接口功能单元如 A/DPWMPCA(可编程计数器阵列)WDT(监视定时器)高速 I/O 口计数器的捕获/比较逻辑等。这一代单片机中,在总线方面最重要的进展是为单片机配置了芯片间的串行总线,为单片机应用系统设计提供了更加灵活的方式。Philips 公司还
6、为这一代单片机 80C51系列 8C592 单片机引入了具有较强功能的设备间网络系统总线-CAN(Controller Area Network BUS).新一代单片机为外部提供了相当完善的总线结构,为系统的扩展与配置打下了良好的基础。基于 RS485 单片机多机通信模型2第 2 章 硬件设计及原理一个单片机应用系统的硬件电路设计包含有两部分内容:一是系统扩展,即单片机内部的功能单元,如 ROMRAMI/O 口定时/ 记数器中断系统等能量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统配置,既按照系统功能要求配置外围设备,如键盘显示器打印机A/DD/A 转
7、换器等,要设计合适的接口电路。2.1 80C51 单片机硬件结构80C51 单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上 2。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行 I/O 口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是 CPU 加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。2.1.1 微处理器该单片机中有一个 8 位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可
8、处理数据,还可以进行位变量的处理。2.1.2 数据存储器片内为 128 个字节,片外最多可外扩至 64k 字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。2.1.3 程序存储器由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至 64k 字节。2.1.4 中断系统具有 5 个中断源,2 级中断优先权。2.1.5 定时器/计数器片内有 2 个 16 位的定时器/计数器, 具有四种工作方式。2.1.6 串行口1 个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并基
9、于 RS485 单片机多机通信模型3行 I/O 口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。2.1.7 P1 口、P2 口、P3 口、P4 口为 4 个并行 8 位 I/O 口。2.1.8 特殊功能寄存器共有 21 个,用于对片内的个功能的部件进行管理、控制、监视。实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的 RAM 区。由上可见,80C51 单片机的硬件结构具有功能部件种类全,功能强等特点。特别值得一提的是该单片机 CPU 中的位处理器,它实际上是一个完整的 1 位微计算机,这个一位微计算机有自己的 CPU、位寄存器、I/O 口和指令集。1 位机在开关
10、决策、逻辑电路仿真、过程控制方面非常有效;而 8 位机在数据采集,运算处理方面有明显的长处。MCS-51 单片机中 8 位机和 1 位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是 MCS-51 单片机在设计的精美之处。2.2 最小应用系统设计80C51 是片内有 ROM/EPROM 的单片机,因此,这种芯片构成的最小系统简单可靠。用 80C51 单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如图 3.1 80C51 单片机最小系统所示。由于集成度的限制,最小应用系统只能用作一些小型的控制单元。其应用特点:(1) 有可供用户使用的大量 I/O 口线
11、。(2) 内部存储器容量有限。(3) 应用系统开发具有特殊性。图 3.1 80C51 单片机最小系统2.2.1 时钟电路80C51 虽然有内部振荡电路,但要形成时钟,必须外部附加电路。80C51 单片机的时钟产生方法有两种。内部时钟方式和外部时钟方式。基于 RS485 单片机多机通信模型4本设计采用内部时钟方式,利用芯片内部的振荡电路,在 XTAL1、XTAL2 引脚上外接定时元件,内部的振荡电路便产生自激振荡。本设计采用最常用的内部时钟方式,即用外接晶体和电容组成的并联谐振回路。振荡晶体可在 1.2MHZ到 12MHZ 之间选择。电容值无严格要求,但电容取值对振荡频率输出的稳定性、大小、振荡
12、电路起振速度有少许影响,CX1、CX2 可在 20pF 到 100pF 之间取值,但在 60pF 到 70pF 时振荡器有较高的频率稳定性。所以本设计中,振荡晶体选择 6MHZ,电容选择 65pF。在设计印刷电路板时,晶体和电容应尽可能靠近单片机芯片安装,以减少寄生电容,更好的保证振荡器稳定和可靠地工作。为了提高温度稳定性,应采用 NPO 电容。2.2.2 复位电路80C51 的复位是由外部的复位电路来实现的。复位引脚 RST 通过一个斯密特触发器用来抑制噪声,在每个机器周期的 S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复
13、位和按钮复位两种方式。最简单的上电自动复位电路中上电自动复位是通过外部复位电路的电容充电来实现的。只要 Vcc 的上升时间不超过 1ms,就可以实现自动上电复位。时钟频率用 6MHZ 时 C 取 22uF,R 取 1K。除了上电复位外,有时还需要按键手动复位。本设计就是用的按键手动复位。按键手动复位有电平方式和脉冲方式两种。其中电平复位是通过 RST 端经电阻与电源 Vcc 接通而实现的。按键手动复位电路见图 3.2。时钟频率选用6MHZ 时,C 取 22uF,Rs 取 200,R K取 1K。图 3.2 80C51 复位电路2.3 总线驱动芯片 基于 RS485 单片机多机通信模型52.3.
14、1 总线驱动芯片的介绍MAX481、MAX483、MAX485、MAX487-MAX491 以及 MAX1487 是用于 RS-485 与RS-422 通信的低功耗收发器,每个器件中都具有一个驱动器和一个接收器。MAX483、MAX487、MAX488 以及 MAX489 具有限摆率驱动器,可以减小 EMI,并降低由不恰当的终端匹配电缆引起的反射,实现最高 250kbps 的无差错数据传输。MAX481、MAX485、MAX490、MAX491、MAX1487 的驱动器摆率不受限制,可以实现最高 2.5Mbps 的传输速率。这些收发器在驱动器禁用的空载或满载状态下,吸取的电源电流在 120(A
15、 至 500(A 之间。另外, MAX481、MAX483 与 MAX487 具有低电流关断模式, 仅消耗 0.1A。所有器件都工作在 5V 单电源下。驱动器具有短路电流限制,并可以通过热关断电路将驱动器输出置为高阻状态,防止过度的功率损耗。接收器输入具有失效保护特性,当输入开路时,可以确保逻辑高电平输出。MAX487 与 MAX1487 具有四分之一单位负载的接收器输入阻抗, 使得总线上最多可以有 1 2 8 个 MAX487/MAX1487 收发器。使用 MAX488-MAX491 可以实现全双工通信,而 MAX481、MAX483、MAX485、MAX487 与 MAX1487 则为半双
16、工应用设计。MAX481/MAX483/MAX485/MAX487-MAX491 以及 MAX1487 是用于 RS-485 与 RS-422 通信的低功耗收发器。MAX481、MAX485、MAX490、MAX491 以及 MAX1487 能够以最高 2.5Mbps 的数据速率发送并接收数据;而 MAX483、MAX487、MAX488以及 MAX489 则用于最高 250kbps 的数据速率。MAX488-MAX491 是全双工收发器,MAX481、MAX483、MAX485、MAX487 以及 MAX1487 是半双工收发器。另外,MAX481、MAX483、MAX485、MAX487、
17、MAX489、MAX491 以及 MAX1487 中包含驱动器使能(DE)与接收器使能(RE)控制引脚,被禁用时,驱动器或接收器输出为高阻态。与标准 RS-485 驱动器( 最多 32 个收发器) 的单位负载( 12k 输入阻抗) 相比,MAX487 与 MAX1487 具有 48k 输入电阻,1/4 单位负载的接收器输入阻抗,在一条总线上允许最多挂接 128 个收发器。MAX487/MAX1487 与其他 RS-485收发器的任意组合可以允许 32 个收发器或更少的收发器连接在同一条总线上。MAX481/MAX483/MAX485 与 MAX488-MAX491 具有标准的 12k 接收器输
18、入阻抗。常用的 RS485 总线驱动芯片有MAX485、MAX3080、MAX3088、SN75176,MAX485、MAX3080、MAX3088 芯片都有一个发送器和一个接收器,非常适合作为 RS485 总线驱动芯片,其中MAX3080、MAX3088 可以在一条通讯线上连接 256 只,MAX3088 达到 10Mbps 的通讯速率,下面以 MAX485 为例介绍其逻辑表。 MAX485 及其逻辑如图 1 所示。 2.3.2 RS485 方式构成的多机通信原理 在由单片机构成的多机串行通信系统中,一般采用主从式结构:从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只
19、有一台单机作为主机,各台从机之间不能相互通讯,即使有信息交换也必须通过主机转发。采用 RS485 构成的多机通讯原理框图,如图 2 所示。基于 RS485 单片机多机通信模型6图 1 MAX485 芯片图 2 MAX485 典型半双工 RS-485 网络在总线末端接一个匹配电阻,吸收总线上的反射信号,保证正常传输信号干净、无毛刺。匹配电阻的取值应该与总线的特性阻抗相当。 基于 RS485 单片机多机通信模型7当总线上没有信号传输时,总线处于悬浮状态,容易受干扰信号的影响。将总线上差分信号的正端 A+和+5V 电源间接一个 10K 的电阻;正端 A+和负端 B-间接一个 10K 的电阻;负端 B-和地间接一个 10K 的电阻,形成一个电阻网络。当总线上没有信号传输时,正端 A+的电平大约为 3.2V,负端 B-的电平大约为1.6V,即使有干扰信号,却很难产生串行通信的起始信号 0,从而增加了总线抗干扰的能力。