当前位置:首页 >> 信息与通信 >>

基于RS485多机通信设计


课程设计报告

课 程 题 目
院 系 年 级 学 号 学生姓名 指导教师 设计时间

单片机系统及其应用 基于 RS485 多机通信设计

专 业

2011.12 —— 2012.01

1

一、方案选择与说明

1.1 设

计方案选择 方案一:基于 AT89S52 的单片机网络的单片机多机通信协议;系统网络拓扑结
构采用总线型; 网络接口电路采用端口转发的形式等进行单片机多机通信系统的 设计

方案二:利用51单片机自身的串行通信口设计基于RS485的多机通信系统,实
现2个通信终端之间互相通信的功能。 经过比较: 方案一的系统易于扩展且提高了稳定性能实现从机与主机间的通 信,以及从机与从机间的通信;方案二通信距离远、抗干扰能力强也可实现主机 与从机的通信,虽不能实现从机之间的通信但对于本课题来说已足够,所以采用 方案二。

1.2 设计方案说明
RS-485方式构成的多机通信系统采用主从式结构:主机控制多个从机,作为 从机的单片机不主动发送命令或数据,一切都由主机单片机控制;并且在一个多 机系统中,只有一台主机,各台从机之间不能相互通信,即使有信息交换也必须 通过主机转发。采用RS-485构成的多机通信系统原理。。在总线末端接一个匹配 电阻,吸收总线上的反射信号,使得正常传输信号无毛刺。匹配电阻的取值应该 与总线的特性阻抗相当。在总线上没有信号传输时,总线处于悬浮状态,容易受 干扰信号的影响。 将总线上的差分信号的正端A+和负端B-之间接一个10K的电阻; 负端B-和地间接一个10K的电阻,形成一个电阻网路。当总线上没有信号传输时, 正端A+的电平大约为3.2V,负端B-的电平大约为1.6V,即使有干扰信号,也很难 产生串行通信的起始信号0,从而增加了总线抗干扰的能力。

2

二、结构框图与工作原理
2.1 结构图

图 2-1 结构图 2.2 工作原理
多机通信中,要保证主机与从机实现可靠通信,必须通信接口具有识别功能, 而单片机的串行口控制寄存器SCON中的SM2就是满足这一要求而设置的。在串行 口以方式2或方式3工作时,发送和接收的每一帧信息都是11位,其中第9数据位 是可编程位,通过对SCON的TB8赋1或0,来区别发送的是地址帧还是数据帧(规定 地址帧的第9位为1,数据帧的第9位为0)。若从机的控制位SM2=1,则当接收的是 地址帧时,数据装入SBUF,并置RI=1;若接收的是数据帧,则不置RI,信息将抛 弃;若SM2=0,则无论是地址帧还是数据帧都产生RI=1中断标志,数据装入SBUF。 多机通信过程如下: (1)使所有从机的SM2位置1,处于只接收地址帧的状态。 (2)主机发送一帧地址信息,其中包含8位地址,第9位为地址、数据标志位, 第9位置1表示发送的是地址。 (3)从机接收到地址帧后,各自将所接收的地址与本从机的地址相比较。对 地址相符的从机,使SM2清0以接收主机随后发来的所有信息;对于地址不相符合 的从机,仍保持SM2=1 状态,对主机随后发送的数据不予理睬。 (4)当主机改为与另外从机联系时,可再发地址帧寻址其从机,而先前被寻 址过的从机,恢复SM2=1。

3

三、硬件设计
芯片和 3.1 芯片和单片机简介
MAX485芯片简介 MAX485芯片简介 本系统采用MAX485芯片为RS-485总线驱动芯片, MAX485芯片内部含有一个驱 动器和接收器,用于实现RS-485的半双工通信。MAX485采用单一电源+5V工作, 额定电流为300uA,完成将TTL电平转换为RS-485电平的功能。MAX485的A端和B 端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为 1;当A的电平低于B端时,代表发送的数据为0,在MAX485的A和B端之间需要连接 一个匹配电阻,一般可选120欧的电阻。 AT89C51单片机 AT89C51单片机 80C51 单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸 有限的集成电路芯片上[2]。如果按功能划分,它由如下功能部件组成,即微处理 器、数据存储器、程序存储器、并行 I/O 口、串行口、定时器/计数器、中断系 统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是 CPU 加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄 存器的集中控制方式。 (1)微处理器 该单片机中有一个 8 位的微处理器,与通用的微处理器基本相同,同样包 括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数 据,还可以进行位变量的处理。 (2)数据存储器 片内为 128 个字节,片外最多可外扩至 64k 字节,用来存储程序在运行期 间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存 储器。 (3)程序存储器 由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储 器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至 64k 字节。 (4)中断系统 具有 5 个中断源,2 级中断优先权。 定时器/ (5)定时器/计数器 片内有 2 个 16 位的定时器/计数器, 具有四种工作方式。 (6)串行口 1 个全双工的串行口,具有四种工作方式。可用来进行串行通讯,扩展并行 I/O 口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用 更广。 P1、P2、P3、 I/O。 (7) P1、P2、P3、P4 为 4 个并行 8 位 I/O。 (8)特殊功能寄存器 共有 21 个,用于对片内的个功能的部件进行管理、控制、监视。实际上是 一些控制寄存器和状态寄存器,是一个具有特殊功能的 RAM 区。 由上可见,80C51 单片机的硬件结构具有功能部件种类全,功能强等特点。
4

特别值得一提的是该单片机 CPU 中的位处理器, 它实际上是一个完整的 1 位微计 算机,这个一位微计算机有自己的 CPU、位寄存器、I/O 口和指令集。1 位机在 开关决策、逻辑电路仿真、过程控制方面非常有效;而 8 位机在数据采集,运算 处理方面有明显的长处。MCS-51 单片机中 8 位机和 1 位机的硬件资源复合在一 起,二者相辅相承,它是单片机技术上的一个突破,这也是 MCS-51 单片机在设 计的精美之处。

3.2 80C51 管脚图

图 3-2 80C51 管脚图

5

四、软件设计
4.1 系统结构

该多机通信系统的系统结构图如图 1 所示,系统采用半双工主从通信方式, 主机可以读取从机的数据或写数据到从机,并将数据送终端进行显示;从机主 要负责对分布的电子设备进行监测或控制, 用中断的方式接收主机发来的命令并 做出回应。

4.2

通信协议

4.2.1 信息格式
该协议的信息格式如下: (1)编码格式;二进制代码。 (2)波特率:9600 b/s。 (3)通信方式:半双工。 (4)每个字符由 u 位组成; 1 位:起始位(0); 8 位:数据位; 1 位:地址/数据识别位(1 为地址,o 为数据); l 位:停止位(1)。 (5)字符发送顺序;低位在先 (6)帧结束标志:通信线路空闲 3.5 ms 以上 (7)帧校验方式:数据和(2 字节) (8)主机询问的一般格式见图 2:

图 2 主机询问的一般格式 l 从机地址码 I 命令码 l 数据个数数据 l 校验和从机地址码;两字节二进制 数,后一字节是前一字节的反码。 命令码:一字节二进制数,O1H 代表主机读,02H 代表主机写。
6

数据个数:表示主机要蒺写的字节个数,一字节二进制数。 校验和:两字节二进制数,是将从机地址码、命令和数据按字节从头依次相加, 生成两字节的校验和。 (9)从机应答的一般格式(如图 3)

图 3 从机应答的一般格式 图中信息段的定义同图 2。

4.2.2 定时与重发
本通信协议定时规定如下: (1)帧发送时限;70 ms.超过此时限结束发送。 (2)主机等待从机应答时限:7 rlls,超过此时限,酌情重发。 (3)主机重发次数:不超过 4 次,超过后,判通信失败。

4.2.3 通信过程
一次完整的通信过程分为 3 个阶段:主机询问、从机应答和链路释放。主机 询问阶段, 主机以帧的形式将从机地址码、 命令、 数据和校验码传送到指定从机; 从机应答阶段,从机解释接收的命令码,并组织相应帧信息回送到主机;链路释 放阶段,从机清除接收缓冲区及相关变量,准备与主机下次通信。任何一次完整 的通信过程都是由主机方发起的,从机在被主机寻址前只能处于侦听状态,从机 在接收到地址码的第 2 个字节后,立即判断是否寻址自己,如果是.继续接受下 面的数据,否则不与理睬。

4.3 通信软件设计
4.3.1 从机通信软件设计
在该系统中,从机的主要任务是对被检测设备进行故障检测和故障定位,通 信软件的主要功能是接收主机的命令并将检测的结果回送主机。 从机通信软件由 2 部分组成:串行中断服务程序和定时器 TO 中断服务程序。串行中断服务程序 用于接收或发送数据;TO 中断服务程序用于当从机接收完一帧信息后进行解释 并启动通信向主机应答,另外也用于当从机发送超时后的一些处理。从机上电后 处于侦听状态, 当主机寻址时, 便进人中断服务程序, 其程序流程图如图 4 所示。

7

图 4 申行通信中断服务程序流程图 首先判断是接收中断还是发送中断,若是接收中断,则清除 RI,同时启动 字符间隔定时器 TO,并置收发标志为收。当接收完第 2 个字节后,各从机立即 判断 是否寻址本机,若是,则置 SM2 为‘0’ ,继续接收主机送来的数据;若不是,则 禁止 T0 定时,不在接收后面的数据。当被寻址从机接收完一帧信息后,字符间 隔定时器会产生定时中断,进入 TO 中断服务程序。 图 5 是 TO 中断服务程序流程图。

8

图 5 TO 中断服务程序流程图 进入 TO 中断服务程序后,首先清除 TO 中断请求标志,停止 TO 定时器,接 着判断是接收完成还是发送超时,若是接收完成,再判断校验和是否正确,若正 确,对接收的命令进行解释,看是主机读还是主机写操作,若是主机读,则将数 据打包,送到专门用于通信的数组,接着,禁止接收,置本机为应答工作方式,
9

最后启动发送,发送第一个字节,同时启动发送时限定时器 TO。当一个字节发 送完后, 便进入通信中断服务程序, 继续发送余下数据。 如果在上边判校验和时, 发现不正确, 则置 SM2 为 ‘1’ 恢复本机的侦听状态, , 以便接收主机的重发信息。

4.3.2 主机通信软件设计
该系统主机的主要任务是循环读取从机的检测结果,并送终端显示,其通信软件 由 3 部分组成:主程序中负责寻址从机的寻址模块、通信中断服务程序和 TO 中断服务程序。寻址模块程序流程图见图 6。

图 6 寻址模块程序流程图 对从机寻址是按照从机的编号顺序进行的,即从 1 号从机开始,主机发送该从机 信息帧的第 1 个字节启动寻址,同时启动发送超时定时器 TO,然后检测通信结 束标志.当主机成功的接收到该从机的应答信息后,便会置位该标志,完成与该 从机的通信。接下来,寻址下一从机,直到所有从机都被寻址。最后,主机完 成其它功能后,又从 1 号从机开始下一循环的寻址。通信中断服务程序和 TO 中 断服务程的设计方法与从机的大同小异,在此不再介绍。

10

五、结果调试
5.1 电路

5.2 实物连接

11

六、使用说明

12

七、总结与体会
历时几个月的毕业设计已经告一段落。经过自己不断的搜索努力以及 XXX 老师的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,刘老师为我 指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励,刘老师严谨的治学态度 和热忱的工作作风令我十分钦佩,他不仅授我以文,而且教我做人,他的指导使 我受益非浅。对刘老师的感激之情是无法用言语表达的。 通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理 论联系实际的含义,并且检验了大学三年的学习成果。虽然在这次设计中对于知 识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完 善。这几个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展 打下了良好的基础。 由于个人自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评 指正,我也会努力改进取得进步!

13

八、参考文献
1、 马忠梅等 2、何立民 单片机的 C 语言应用程序设计 AVR 单片机原理与接口技术 北京航空航天大学出版社 1998 北京航空航天大学出版社 2002

3、MAX485 数据手册 4、XXX 主编,单片机应用技术(汇编语言)

14

附 录

}

主机程序清单如下:
#include<reg51.h> #include<absacc.h> #include<intrins.h> unsigned char cort=0; sbit P3_5=P3^5; /********************************* 按键扫描子程序 *********************************/ key_serial() interrupt 0 using 1 { ++cort; } /********************************* 发送子程序 *********************************/ void master(void) { if(cort==1) { SBUF=0x01; while(TI!=1);TI=0; P3_5=0; SM2=0; while(RI!=1);RI=0;

15

P2=SBUF; SM2=1; P3_5=1; } if(cort==2) { SBUF=0x02; while(TI!=1);TI=0; SM2=0; P3_5=0; while(RI!=1);RI=0; P2=SBUF; SM2=1; P3_5=1; } if(cort==3)cort=1; SM2=1; } /***************主程序****************/ void main(void) { P2=0xff; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf8; EA=1; EX0=1; IT0=1; P3_5=1; while(1) { master(); } }

//发送

16

从机 1 程序清单如下: #include<reg51.h> #include<absacc.h> #include<intrins.h> unsigned char serial_receiver; sbit P3_5=P3^5; /**************************************** 串行口中断子程序 ****************************************/ void serial (void) interrupt 4 using 1 { ES=0; RI=0; if(SBUF==0x01) { P3_5=1; SM2=0; P1=0x10; SBUF=0x10; while(TI!=1);TI=0; } SM2=1; ES=1; P3_5=0; } /*****************主程序******************/ void main(void) { P1=0x00; TMOD=0x20; TL1=0xfd; TH1=0xfd;

17

PCON=0x00; TR1=1; SCON=0xf0; EA=1; ES=1; P3_5=0; while(1) { _nop_(); } } 从机 2 程序清单如下: #include<reg51.h> #include<absacc.h> #include<intrins.h> unsigned char serial_receiver; sbit P3_5=P3^5; /**************************************** 串行口中断子程序 ****************************************/ void serial (void) interrupt 4 using 1 { ES=0; RI=0; if(SBUF==0x02) { P3_5=1; SM2=0; P1=0x80; SBUF=0x80; while(TI!=1);TI=0; } SM2=1; ES=1;

18

P3_5=0; } /*****************主程序******************/ void main(void) { P1=0x00; TMOD=0x20; TL1=0xfd; TH1=0xfd; PCON=0x00; TR1=1; SCON=0xf0; EA=1; ES=1; P3_5=0; while(1) { _nop_();

19


相关文章:
基于RS485多机通信系统设计
基于RS485多机通信系统设计_专业资料。龙源期刊网 http://www.qikan.com.cn 基于 RS485 多机通信系统设计 作者:马庆功 莫玉华 郑恩兴 来源:《电子世界》2012 ...
基于RS485多机通信设计
基于RS485多机通信设计_信息与通信_工程科技_专业资料。基于RS485多机通信设计课程设计报告 课程题目院系年级学号 学生姓名 指导教师 设计时间 单片机系统及其应用 基...
基于RS485总线的多机通信系统设计
基于RS485总线的多机通信系统设计_计算机软件及应用_IT/计算机_专业资料。河南理工大学毕业设计(论文)说明书 2.2 RS-485 RS-485 标准接口是单片机系统种常用的一...
RS485总线多机通信设计-综述
2.3 基于 RS-485 的单片机多机通信 RS单片机多机通信 RS1. RS-485 的内部结构 RS-485 串行总线接口标准以差分平衡方式传输信号, 具有很强的抗共模干 扰的...
基于RS-485多机通信设计
《智能仪器原理与设计》课程设计-基于 RS-485多机通信设计 学院:核工程与地球物理学院 班级: 学号: 姓名: 指导老师: 基于 RS-485多机通信设计一、 ...
RS485多机通信设计-开题报告
指导教师意见: 指导教师意见: “基于 RS485 单片机多机通信”课题有实际意义及一定的理论意义,符合大学 本科毕业设计的要求。研究目的明确,进度计划、阶段目标合理,...
基于单片机多机通信模型的RS485
基于单片机多机通信模型的RS485_工学_高等教育_教育专区。基于单片机多机通信模型...本文将重点介绍应用于某大型工程的单片机多机通信协 议和通信软件的设计方法。 ...
RS485多机通讯的组网方式
RS485多机通讯的组网方式_计算机硬件及网络_IT/计算机_专业资料。RS485 多机通讯的组网方式 本文先容了以波仕转换器为代表的几种 RS-485 多机通讯的组网方式:总...
基于RS-485的单片机通信系统设计
基于 RS-485 的单片机通信系统设计 1.利用 RS485 实现单片机的双向通讯; 2....可用来进行串行通讯,扩展并 行 I/O 口,甚至与多个单片机相连构成多机系统,...
更多相关标签:
rs485通信协议 | rs485通信发送和接收 | rs485通信 | rs485串口通信 | rs485通信原理 | stc单片机rs485通信 | rs485串口通信程序 | rs485通信电缆 |