基于RS485多机通信设计.docx

上传人:b****4 文档编号:6200407 上传时间:2023-05-09 格式:DOCX 页数:18 大小:132.78KB
下载 相关 举报
基于RS485多机通信设计.docx_第1页
第1页 / 共18页
基于RS485多机通信设计.docx_第2页
第2页 / 共18页
基于RS485多机通信设计.docx_第3页
第3页 / 共18页
基于RS485多机通信设计.docx_第4页
第4页 / 共18页
基于RS485多机通信设计.docx_第5页
第5页 / 共18页
基于RS485多机通信设计.docx_第6页
第6页 / 共18页
基于RS485多机通信设计.docx_第7页
第7页 / 共18页
基于RS485多机通信设计.docx_第8页
第8页 / 共18页
基于RS485多机通信设计.docx_第9页
第9页 / 共18页
基于RS485多机通信设计.docx_第10页
第10页 / 共18页
基于RS485多机通信设计.docx_第11页
第11页 / 共18页
基于RS485多机通信设计.docx_第12页
第12页 / 共18页
基于RS485多机通信设计.docx_第13页
第13页 / 共18页
基于RS485多机通信设计.docx_第14页
第14页 / 共18页
基于RS485多机通信设计.docx_第15页
第15页 / 共18页
基于RS485多机通信设计.docx_第16页
第16页 / 共18页
基于RS485多机通信设计.docx_第17页
第17页 / 共18页
基于RS485多机通信设计.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于RS485多机通信设计.docx

《基于RS485多机通信设计.docx》由会员分享,可在线阅读,更多相关《基于RS485多机通信设计.docx(18页珍藏版)》请在冰点文库上搜索。

基于RS485多机通信设计.docx

基于RS485多机通信设计

 

课程设计报告

 

课程单片机系统及其应用

题目基于RS485多机通信设计

院系

年级专业

学号

学生姓名

指导教师

设计时间2011.12——2012.01

一、方案选择与说明

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.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.1芯片和单片机简介

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单片机

80C51单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。

如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。

它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。

但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。

(1)微处理器

该单片机中有一个8位的微处理器,与通用的微处理器基本相同,同样包括了运算器和控制器两大部分,只是增加了面向控制的处理功能,不仅可处理数据,还可以进行位变量的处理。

(2)数据存储器

片内为128个字节,片外最多可外扩至64k字节,用来存储程序在运行期间的工作变量、运算的中间结果、数据暂存和缓冲、标志位等,所以称为数据存储器。

(3)程序存储器

由于受集成度限制,片内只读存储器一般容量较小,如果片内的只读存储器的容量不够,则需用扩展片外的只读存储器,片外最多可外扩至64k字节。

(4)中断系统

具有5个中断源,2级中断优先权。

(5)定时器/计数器

片内有2个16位的定时器/计数器,具有四种工作方式。

(6)串行口

1个全双工的串行口,具有四种工作方式。

可用来进行串行通讯,扩展并行I/O口,甚至与多个单片机相连构成多机系统,从而使单片机的功能更强且应用更广。

(7)P1、P2、P3、P4为4个并行8位I/O。

(8)特殊功能寄存器

共有21个,用于对片内的个功能的部件进行管理、控制、监视。

实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。

由上可见,80C51单片机的硬件结构具有功能部件种类全,功能强等特点。

特别值得一提的是该单片机CPU中的位处理器,它实际上是一个完整的1位微计算机,这个一位微计算机有自己的CPU、位寄存器、I/O口和指令集。

1位机在开关决策、逻辑电路仿真、过程控制方面非常有效;而8位机在数据采集,运算处理方面有明显的长处。

MCS-51单片机中8位机和1位机的硬件资源复合在一起,二者相辅相承,它是单片机技术上的一个突破,这也是MCS-51单片机在设计的精美之处。

3.280C51管脚图

图3-280C51管脚图

 

四、软件设计

4.1系统结构

该多机通信系统的系统结构图如图1所示,系统采用半双工主从通信方式,主机可以读取从机的数据或写数据到从机,并将数据送终端进行显示;从机主

要负责对分布的电子设备进行监测或控制,用中断的方式接收主机发来的命令并做出回应。

4.2通信协议

4.2.1信息格式

该协议的信息格式如下:

(1)编码格式;二进制代码。

(2)波特率:

9600b/s。

(3)通信方式:

半双工。

(4)每个字符由u位组成;

1位:

起始位(0);

8位:

数据位;

1位:

地址/数据识别位(1为地址,o为数据);

l位:

停止位

(1)。

(5)字符发送顺序;低位在先

(6)帧结束标志:

通信线路空闲3.5ms以上

(7)帧校验方式:

数据和(2字节)

(8)主机询问的一般格式见图2:

图2主机询问的一般格式

l从机地址码I命令码l数据个数数据l校验和从机地址码;两字节二进制数,后一字节是前一字节的反码。

命令码:

一字节二进制数,O1H代表主机读,02H代表主机写。

数据个数:

表示主机要蒺写的字节个数,一字节二进制数。

校验和:

两字节二进制数,是将从机地址码、命令和数据按字节从头依次相加,生成两字节的校验和。

(9)从机应答的一般格式(如图3)

图3从机应答的一般格式

图中信息段的定义同图2。

4.2.2定时与重发

本通信协议定时规定如下:

(1)帧发送时限;70ms.超过此时限结束发送。

(2)主机等待从机应答时限:

7rlls,超过此时限,酌情重发。

(3)主机重发次数:

不超过4次,超过后,判通信失败。

4.2.3通信过程

一次完整的通信过程分为3个阶段:

主机询问、从机应答和链路释放。

主机询问阶段,主机以帧的形式将从机地址码、命令、数据和校验码传送到指定从机;从机应答阶段,从机解释接收的命令码,并组织相应帧信息回送到主机;链路释放阶段,从机清除接收缓冲区及相关变量,准备与主机下次通信。

任何一次完整的通信过程都是由主机方发起的,从机在被主机寻址前只能处于侦听状态,从机在接收到地址码的第2个字节后,立即判断是否寻址自己,如果是.继续接受下面的数据,否则不与理睬。

4.3通信软件设计

4.3.1从机通信软件设计

在该系统中,从机的主要任务是对被检测设备进行故障检测和故障定位,通信软件的主要功能是接收主机的命令并将检测的结果回送主机。

从机通信软件由2部分组成:

串行中断服务程序和定时器TO中断服务程序。

串行中断服务程序用于接收或发送数据;TO中断服务程序用于当从机接收完一帧信息后进行解释并启动通信向主机应答,另外也用于当从机发送超时后的一些处理。

从机上电后处于侦听状态,当主机寻址时,便进人中断服务程序,其程序流程图如图4所示。

图4申行通信中断服务程序流程图

首先判断是接收中断还是发送中断,若是接收中断,则清除RI,同时启动字符间隔定时器TO,并置收发标志为收。

当接收完第2个字节后,各从机立即判断

是否寻址本机,若是,则置SM2为‘0’,继续接收主机送来的数据;若不是,则禁止T0定时,不在接收后面的数据。

当被寻址从机接收完一帧信息后,字符间

隔定时器会产生定时中断,进入TO中断服务程序。

图5是TO中断服务程序流程图。

图5TO中断服务程序流程图

进入TO中断服务程序后,首先清除TO中断请求标志,停止TO定时器,接着判断是接收完成还是发送超时,若是接收完成,再判断校验和是否正确,若正

确,对接收的命令进行解释,看是主机读还是主机写操作,若是主机读,则将数据打包,送到专门用于通信的数组,接着,禁止接收,置本机为应答工作方式,

最后启动发送,发送第一个字节,同时启动发送时限定时器TO。

当一个字节发送完后,便进入通信中断服务程序,继续发送余下数据。

如果在上边判校验和时,

发现不正确,则置SM2为‘1’,恢复本机的侦听状态,以便接收主机的重发信息。

4.3.2主机通信软件设计

该系统主机的主要任务是循环读取从机的检测结果,并送终端显示,其通信软件由3部分组成:

主程序中负责寻址从机的寻址模块、通信中断服务程序和TO

中断服务程序。

寻址模块程序流程图见图6。

图6寻址模块程序流程图

对从机寻址是按照从机的编号顺序进行的,即从1号从机开始,主机发送该从机信息帧的第1个字节启动寻址,同时启动发送超时定时器TO,然后检测通信结束标志.当主机成功的接收到该从机的应答信息后,便会置位该标志,完成与该从机的通信。

接下来,寻址下一从机,直到所有从机都被寻址。

最后,主机完

成其它功能后,又从1号从机开始下一循环的寻址。

通信中断服务程序和TO中断服务程的设计方法与从机的大同小异,在此不再介绍。

 

五、结果调试

5.1电路

5.2实物连接

 

六、使用说明

 

七、总结与体会

历时几个月的毕业设计已经告一段落。

经过自己不断的搜索努力以及XXX老师的耐心指导和热情帮助,本设计已经基本完成。

在这段时间里,刘老师为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励,刘老师严谨的治学态度和热忱的工作作风令我十分钦佩,他不仅授我以文,而且教我做人,他的指导使我受益非浅。

对刘老师的感激之情是无法用言语表达的。

通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果。

虽然在这次设计中对于知识的运用和衔接还不够熟练。

但是我将在以后的工作和学习中继续努力、不断完善。

这几个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。

由于个人自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正,我也会努力改进取得进步!

八、参考文献

1、马忠梅等单片机的C语言应用程序设计北京航空航天大学出版社1998

 

2、何立民AVR单片机原理与接口技术北京航空航天大学出版社2002

 

3、MAX485数据手册

4、XXX主编,单片机应用技术(汇编语言)

附录

 

}

主机程序清单如下:

#include

#include

#include

unsignedcharcort=0;

sbitP3_5=P3^5;

/*********************************

按键扫描子程序

*********************************/

key_serial()interrupt0using1

{

++cort;

}

/*********************************

发送子程序

*********************************/

voidmaster(void)

{

if(cort==1)

{

SBUF=0x01;

while(TI!

=1);TI=0;

P3_5=0;

SM2=0;

while(RI!

=1);RI=0;

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;

}

/***************主程序****************/

voidmain(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();//发送

}

}

从机1程序清单如下:

#include

#include

#include

unsignedcharserial_receiver;

sbitP3_5=P3^5;

/****************************************

串行口中断子程序

****************************************/

voidserial(void)interrupt4using1

{

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;

}

/*****************主程序******************/

voidmain(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_();

}

}

从机2程序清单如下:

#include

#include

#include

unsignedcharserial_receiver;

sbitP3_5=P3^5;

/****************************************

串行口中断子程序

****************************************/

voidserial(void)interrupt4using1

{

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;

P3_5=0;

}

/*****************主程序******************/

voidmain(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_();

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2