串口通信-多机通信系统-单片机_第1页
串口通信-多机通信系统-单片机_第2页
串口通信-多机通信系统-单片机_第3页
串口通信-多机通信系统-单片机_第4页
串口通信-多机通信系统-单片机_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、题目要求与功能分析21.1题目要求21.2功能及整体模块分析2二 方案论证32.1设计目的32.2设计思路32.2.1原理分析和讨论32.2.2题设分析4三、电路设计63.1 整体功能框架设计63.2 硬件电路设计73.2.1 主机硬件电路设计83.2.2 从机硬件电路设计113.3软件电路设计133.3.1 协议设计133.3.2 主机程序流程图设计143.3.3 从机程序流程图设计15四 系统的调试与实现174.1主机模块功能调试174.2从机模块调试174.3整体设计功能调试17五 总结与体会19参考文献20附 录21一、题目要求与功能分析1.1题目要求本小组的试验题目如下:一、

2、任务:设计实现多台单片机系统之间的串行通信二、基本要求(难度系数0.8):(1)设计一个主从式多机通信系统,包含1台主机和3台从机,主机和从机全部为单片机;(2)选择合适总线接口芯片,正确连接主机和从机;(3)编程实现分布式数据采集功能,主机可以获取各分机当前AD转换结果,并显示。三、发挥部分:(1)完善通信功能。(根据完成情况加分,上限+0.2)1.2功能及整体模块分析随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,多机通信系统设计的监控系统逐步普及。此多机通信系统具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时

3、通讯。在检测大量模拟量的工业现场使用相似的多机通讯系统;单片机接口丰富,与AD转换模块组合可以完成相同的工作,并且系统可靠、成本低。本次实验的目的是就是应用单片机的串口通信功能实现一个分布式采集系统。整个系统中包含一片主机和三片从机,主机的任务是实现对三片从机的AD转换结果的采集并在数码管上显示之。这样从硬件的角度上将整个系统分为两个模块主机模块和从机模块。主机模块中包含单片机模块、数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。就本次实验而言硬件电路的设计难点在于串口电平转换芯片MAX485的连接,而软件的设计在于串口通信协议的设定及其相

4、互通信的过程。二 方案论证2.1设计目的(1) 进一步掌握串行接口控制寄存器SCON及波特率选择、工作方式的设置方法。(2) 理解串行接口的多机通信系统的原理和异步串行通信标准接口RS-485的使用。(3) 进一步掌握C语言程序调试的的方法。(4) 熟悉多机通信设置从机地址来识别从机的一种方法。2.2设计思路 2.2.1原理分析和讨论单片机构成的多机系统常采用总线型主从式结构。所谓主从式,即在数个单片机中,有一个是主机,其余的是从机,从机要服从主机的调度、支配。80C51单片机的串行口方式2和方式3适于这种主从式的通信结构。当然采用不同的通信标准时,还需进行相应的电平转换,有时还要对信号进行光

5、电隔离。在实际的多机应用系统中,常采用RS-485串行标准总线进行数据传输。图1 多机通信的主从式示意图所有从机的SM2位置1,处于接收地址帧状态。主机发送一地址帧,其中8位是地址,第9位为地址/数据的区分标志,该位置1表示该帧为地址帧。 所有从机收到地址帧后,都将接收的地址与本机的地址比较。对于地址相符的从机,使自己的SM2位置0(以接收主机随后发来的数据帧),并把本站地址发回主机作为应答;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据帧不予理睬。从机发送数据结束后,要发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束的标志。主机接收数据时先判断数据接收标志(RB8)

6、,若RB8=1,表示数据传送结束,。若接收帧的RB8=0,则存数据到缓冲区,并准备接收下帧信息。主机收到从机应答地址后,确认地址是否相符,如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。从机收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。12.2.2题设分析1.从机识别给多点分别设置地址信息,在数据前加地址字段或直接在数据传输钱发送地址帧,主机通过不同的地址信息识别数据源。首先,从机应处于只接受地址帧信息的状态;然后主机发送一帧地址信息;从机接收到地址帧后,将本机的地址与地址帧中的地址惊醒比较,如果地址相同,则准备接收数据,否则对其

7、当前帧。依然处于只接受地址帧状态;主机发送地址帧后,相应的从机接收数据,数据传输完毕后,从机继续回到只接受地址帧的状态。在这一过程中,其他从机不受影响;当主机需要与其他从机进行数据传输时,可以再次发送地址帧呼叫主机,重复这一过程。2.51单片机串口的多机通信功能根据MCS-51串行口的多机通信能力,多机通信可以按照以下协议进行: (1) 首先使所有从机的SM2位置1处于只接收地址帧的状态。 (2) 主机先发送一帧地址信息,其中8位地址,第9位为地址/数据信息的标志位,该位置1表示该帧为地址信息。 (3) 从机接收到地址帧后,各自将接收的地址与本机的地址比较。对于地址相符的那个从机,使SM2位清

8、零,以接收主机随后发来的所有信息;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据不予理睬,直至发送新的地址帧。 (4) 当从机发送数据结束后,发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束标志。 (5) 主机接收数据时先判断数据结束标志(RB8),若RB8=1,表示数据传送结束,并比较此帧校验和,若正确,则会送正确信号00H,此信号令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,令该从机重发数据。若接收帧的RB8=0,则原数据到缓冲区,并准备接收下帧信息。 (6) 若主机向从机发送数据,从机在第(3)步中比较地址相符后,从机令SM2=0,同时把本站地

9、址发回主机。作为应答之后才能收到主机发送来的数据。其它从机(SM2=1),无法收到数据。(7) 主机收到从机的应答地址后,确认地址是否相符。如果地址不符,发复位信号(数据帧中TB8=1);如果地址相符,则清TB8,开始发送数据。 (8) 从机接收到复位命令后回到监听地址状态(SM2=1)。否则开始接收数据和命令。2三、电路设计3.1 整体功能框架设计本设计是将各分机当前AD转换结果传送给主机,实际应用中为实现分布式数据采集功能即主机(一般为PC机)对各个不同的地点的环境进行实时测量,主机间隔的发送地址呼叫各个从机,从机进行地址验证后启动AD转换,由AD转换芯片将电压值转换成数字量,最后把当前A

10、D转换结果由串口MAX485传送给主机,主机经过处理在发送给PC机显示。分析可知硬件电分为主机模块和从机模块。主机模块中包含单片机子模块、LED数码管显示子模块和串口电平转换子模块,从机模块则包括单片机子模块、AD转换子模块和串口电平转换子模块。在主模块中由AT89S51单片机担任主机,六个LED数码管担任显示设备和一片MAX485担任串口的电平转换。在整个主机系统中有三个从机模块三个从机模块结构一样,有一片AT89S51单片机担任从机外接一片ADC0809转换芯片和一片MAX485担任串口的电平转换。串口采用单工及异步通信方式。设计大体思路流程图程如下:图2 多机通信的分布式数据采集功能应用

11、示意图3.2 硬件电路设计 本设计是实现包含1台主机和3台从机主从式多机通信系统,所以硬件电路也分为主机电路和从机电路。主机和从机的电路原理图基本一致,都是由单片机电路和接口电平转换电路,只是从机电路中需要增加有关本机地址的设置电路。主机的电路的搭建采用主CPU板、键盘显示接口板各一块。照实验原理图将主CPU板的P0口接到键盘显示接口板的位码接口,P1口接到键盘显示接口板的段码的接口。从机的电路由CPU板和ADDA转换板构成。其次是电平转换电路的焊接。电平转换的路的实现是通过自己搭建电路完成。电平转换的电路主要有四块MAX485和两个100电阻构成。四块MAX485采用总线方式连接,每个芯片分

12、别引出三个引脚用于单片的连接。最后将各个模块的按照原理图连接起来。图3 多机通信整体模块电路连接图3.2.1 主机硬件电路设计如图所示,U1为单片机芯片AT89S51,它工作于11.0592MHz时钟,此时钟决定了串口传输波特率的设置。单片机的Rxd(P3.0)和TxD(P3.1)和电平转换芯片MAX485,他们是单片机的串行输入、输出信号。其中P0的作用如下:对于发端,P0口用于主机的数据采集,通过读取P0口的内容完成对发送数据区的初始化,每隔定时读取一次,如果读到00H,则表明数据读取完毕。对于收端,P0口用于判断从机是否处于忙状态。当读到P0口为BBH时,认为当前从机忙,需要向主机发送忙

13、应答。主机部分的连接示意图:PORT端口部分为与从机的串行接口MAX485对应的A、B相连。图4 多机通信的主机部分电路设计MAX485串口电平转换电路: 串口电平转换电路的电路图如图所示:本实验中采用MAX485的电平转换芯片。MAX485是一种RS-485标准接口的电平转换芯片。RS-485采用差分式半双工通信方式,真正实现多点总线连接,具有传输距离远可靠性高的特点。图 5 电平转换电路MAX485接口芯片采用单一电源+5 V工作,额定电流为300 A,采用半双工通讯方式。它完成将TTL电平转换为RS485电平的功能。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO

14、和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可;/RE和DE端分别为接收和发送的使能端,当/RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可;A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单。只需要一个信号控制MAX485的接收和发送即可。同时将A和B端之间加匹配电阻,一般可选100的电阻。如下图是其芯片资料数据手册中的典型连接图:图 6

15、MAX485接口芯片数据手册的典型连接图LED数码管显示电路:LED数码管显示电路如图2所示显示子模块由六个数码管和相应的启动芯片构成。其中每路通道的采集值用量为数码管显示。为了节约单片机的I/O口本题的数码管采用MAX7219芯片。给芯片的优点在于可完成电路的刷新。MAX7219芯片的SEG A-SEG DP为数码管段码接口,DIG0-DIG7为位码接口,CLK、DIN、LOAD分别与单片机P1.0、P1.1、P1.2连接。单片机通过串行的方式将要显示的数据通过CLK、DIN、LOAD三个接口送入相应的显示寄存器内,MAX7219将自动完成对数码管的刷新工作。具体的电路如图所示。图 7 LE

16、D显示电路3.2.2 从机硬件电路设计从机AT89S51的P1口的低四位用于本机的地址设定,其他的设置基本与主机相似。通过跳线开关的闭合与打开的组合可以最多设定16种地址。比如,四位开关全部断开时,对应的P0为1111,此时本机的地址即为1111H。从机在开始加电工作前需要根据整个系统的要求设定自己的地址,也就是将开关状态设置好。这样从机在开机自检时就可以获得本机的地址。其中将模拟电压信号转换成数字量的AD转换芯片ADC0809的连接如图中,将数据选择三个控制端都设为低电平,即选择输入通道IN-0;然后将8位数据输出口D0-D8与从机8051的P2口相连,将ADC0809的CLOCK端与从机8

17、051的ALE相连,将ADC0809的STATRT、ENABLE、ALE端分别与从机8051的P0口的P0-3相连;并加入设置参考电压。从机部分的连接示意图:两个PORT端口部分为与主机的串行接口MAX485对应的A、B相连,另一个PORT端U0为采集转变的电压信号。根据设计要求绘制从机模块电路图如图所示。图8 多机通信的从机部分电路设计其中AD转换芯片ADC0809与从机8051的连接具体如下:图9 ADC0809与8051连接图ADC0809芯片为8位A/D转换器(28PIN) IN0IN7:8个模拟通道输入端。 ADDC、ADDB、 ADDA:通道地址线(000111对应了8个通道) A

18、LE:地址锁存允许信号。 START:启动转换信号。EOC:转换结束信号。OE:输出允许信号(允许读)。CLK:外部时钟脉冲输入端,典型值640K。VREF(+)、VREF(-):参考电压输入端。Vcc:5V电源。GND:地。转换公式为: D=AIN*/Vref*(281)3.3软件电路设计3.3.1 协议设计数据传输的双方均使用9600kbps的数率进行传输,使用主从式通行,主、从机相互发送或接受数据,首先使所有从机的SM2位置1处于只接收地址帧的状态。主机先发送一帧地址信息,从机接收到地址帧后,各自将接收的地址与本机的地址比较。对于地址相符的那个从机,使SM2位清零,以接收主机随后发来的所

19、有信息;对于地址不符的从机,仍保持SM2=1,对主机随后发来的数据不予理睬,直至发送新的地址帧。当从机发送数据结束后,发送一帧校验和,并置第9位(TB8)为1,作为从机数据传送结束标志。主机接收数据时先判断数据结束标志,若RB8=1,表示数据传送结束,并比较此帧校验和,若正确,则会送正确信号00H,此信号令该从机复位(即重新等待地址帧);若校验和出错,则发送0FFH,令该从机重发数据。若接收帧的RB8=0,则原数据到缓冲区,并准备接收下帧信息。若主机向从机发送数据,从机令SM2=0,同时把本站地址发回主机。作为应答之后才能收到主机发送来的数据。其它从机(SM2=1),无法收到数据。主机收到从机

20、的应答地址后,确认地址是否相符。如果地址不符,发复位信号;如果地址相符,则清TB8,开始发送数据。从机接收到复位命令后回到监听地址状态。否则开始接收数据和命令。设主机发送的地址联络信号00H,01H,02H为从机设备地址;通常从机以中断方式控制和主机的通信。程序可分成主机程序和从机程序,约定一次传送的数据为16个字节.33.3.2 主机程序流程图设计依据试验要求及相应的通信协议现绘制如下的主机程序流程图:图10 主机的程序流程图主机的程序流程大致如上,首先将串口初始化,设置TMOD、PCON、SCON、TH1、TL1等参数;然后主机通过串口发送一个呼叫地址,等待并接收从机回答;若地址错,则发送

21、发复位信号给从机。如果地址相符,则清地址标志。然后通过发命令来控制是主机发送数据给从机还是主机准备接收数据,等待从机的回复来确定接收状态。如果是发送命令并且从机已经准备好接收,清校验和,主机发送一数据给从机。主机发送校验和,从机根据校验和后回复接收是否正确 ,若接收不正确,则要求主机重新发送,并置地址标志。3.3.3 从机程序流程图设计图11 从机的程序流程图从机的程序流程有很大一部分是和主机的流程一样的,从机首先再开机启动时通过P1口读取从机的本机地址,串口初始化:TMOD、PCON、SCON等参数的设置和主机相同,首先将SM2设为1,只接收地址帧。假定准备好发送和接收,当接收到本机发过来的

22、地址时,如果非本机地址,继续等待;如果是本机地址则把本地址发回给主机。如果是复位信号,则恢复SM2置一。如果是接收命令,则是等待主机发送的数据,从机接收准备好发送数据的状态,然后清校验和,开始从主机接收数据,校验和相同发00,校验和不同发0FF,重新接收,接收数据完毕;如果是接收命令,则从机向主机发送数据,并等待发送,从机准备好发状态后,先清校验和,开始向主机发送数据,然后向主机发送校验和,等待主机回复,若主机接收不正确,则从机重新发送数据给主机,一直等到发送数据成功;如果主机判断命令非法 ,并回复从机重新回到发状态,最后从机恢复监听将SM2位置一。本从机设计为首先通过将其转换的电压信号,再通

23、过AD转换芯片ADC0809将其转变为数字量传送给从机。从机在收到发送命令后,将此数据通过串口再发送给主机。主机根据判断后,给从机发送控制命令。四 系统的调试与实现对本课题的设计思路清晰之后,我们接下来所需要做的工作就是依据我们的方案编程实现功能。本过程可以分为五个部分:从机模块调试、 LED显示模块调试、电平转换模块功能调试、主机模块功能调试、整体设计功能调试。4.1主机模块功能调试当主机发送地址帧呼叫从机时从机将接收到的内容与自己的地址比较,如若相同从机会向主机发送主机所需要的数据。而主机接收到正确的数据,便会通过LED数码管显示出来,这样便会实现我们预想的主机模块功能。当然主机部分程序包

24、含上面调试好的LED显示模块程序。此处将从机送来的数值通过调用LED显示模块子程序显示出来。LED显示模块分为三个区域,从机0、从机1、从机2分别占用2个显示管。4.2从机模块调试从机部分实现的功能是针对主机发送来的地址进行对照,如果是自己的从机地址,就会发送AD转换结果。为了检测此部分的功能是否能够实现,我们借助串口测试软件,发送预设的从机地址看看该从机是否会把AD转换的结果发送来。此从机调试模块分为两个层次:1、用一个简单的程序测试从机硬件部分是否能正常运行;2、在硬件良好的情况下测试编写的从机部分代码能否顺利实现功能。该部分相比较而言简单一点,其实也可以归为主机模块调试的一部分。LED功

25、能就是用来显示DA转换的结果。连接好电路之后,用个小程序测试LED显示功能良好的情况下显示从机发送来的数据。4.3整体设计功能调试各个模块程序功能调试好之后,将他们各就各位。但此时我们又遇到一个难题:从机送给主机的数据在经MAX485传递给主机时读出来的不是理想的结果,后经过示波器查看输出波形,经多次调试,将主机与从机时序调整一致才得以在主机收到从机发送来的数据。图12 系统的调试示意图五 总结与体会参考文献1 蔡美琴,张为民等.MCS-51系列单片机系统及其应用M2版.北京:高等教育出版社,200462 于永,戴加,刘波等.51单片机C语言常用模块与综合系统实例精讲M2版.北京:电子工业出版

26、社,2008103 杨家新,李华军等.单片机程序设计及其应用-从基础到实践M北京:电子工业出版社,20063附 录程序设计全部代码如下:1. 主机部分程序代码:#include#includeunsigned char LED_seg10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,;unsigned char LED_bit6=0x01,0x02,0x04,0x08,0x10,0x20;unsigned char LED_buf6=0x00,0x00,0x00,0x00,0x00,0x00;sbit EN=P34;void delay(

27、unsigned long n) unsigned int i; for(i=1;in;i+) ;void convert(unsigned char a ,unsigned char j) unsigned char m,n,i; unsigned char b=0; for(i=0;ia)break; m=i/10; n=i%10; /j=j*2; LED_bufj=LED_segn; LED_bufj+1=LED_segm+0x80; void sbuf_init(void)SCON=0xd0; /工作方式3PCON=0x00;TMOD=(TMOD&0xf)|0x20;TH1=0xfd;TL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论