单片机/MCU论坛
直播中

帅哥在这儿

6年用户 27经验值
擅长:测量仪表 嵌入式技术 RF/无线
私信 关注
[资料]

基于51单片机的多机通信的设计+源代码

      单片机作为智能控制单元越来越多地用到复杂系统中的底层部分,进而对各个单元之间的多机通信提出更高的要求。
      通过设置单片机的串口可以方便实现三个或三个以上单片机之间的多机通信,构成主从式多机通信系统。串口通信的电器特性、逻辑电平和各种信息都有其自身的特点。89C51 系列单片机之间通过多机通信进行数据交换时,将串口设置为工作方式2 或者3,数据的接收受到SM2的控制。多机通信涉及下面几个过程。
     主机模块中包含单片机子模块、复位电路、时钟电路和按键开关。从机模块则包括单片机子模块、复位电路、LED显示模块。在主模块中由AT89S51单片机担任主机。在整个主机系统中有3个从机模块,三个从机模块结构一样,有一片AT89S51单片机担任从机外接一片MAX485担任串口的电平转换。串口采用半双工异步通信方式。
    单片机实现多机通信的基本过程如下:
1、首先,从机处于只接收地址帧的状态,通过按键控制主机所发送的命令,主机发送一帧地址信息。当从机接受到地址帧后,将本机地址与地址帧中的地址进行比较,如果地址相同准备接受数据,否则丢弃当前帧,依然处于只接受地址帧的状态;
2、主机发送数据帧,相应的从机接受数据,数据传送完毕后,从机执行相应操作指令(控制LED灯的亮灭),证明通信成功。随后从机继续回到只接受地址帧的状态,在这个过程中其他从机不受影响;
3、当主机需要与其他从机进行数据传输时,可以再次发送地址帧呼叫从机,重复这一过程,达到多机实时通信的目的。
1.2 通信原理
(1) 点对点通信
主机收到从机的确认信息后,置TB8 = 0 进入数据发送状态,即随后发送的每个数据的第九位都是0。虽然所有的从机都能接收到数据帧,但是只有SM2 = 0 的从机才会将数据送入SBUF,与主机进行一对一的通信。地址不匹配的从机则保持SM2 = 1 和RB8 = 0,并将主机发送的数据丢弃。当从机给主机发送数据帧时,需要将TB8 置为0,表示传送的为数据。
(2)主机广播查询设置主机发送的信息有地址和数据两类。当主机设置TB = 1 时,表示发送的为地址,TB = 0 时表示要发送的为数据。当主机的TB = 1,各从机均设置成SM2= 1 时,从机监听主机发来的广播信号。
(3) 各从机确认
各从机通信息的第9 位( RB8) 来区分收到的是地址还是数据。当RB8 = 1时,表示从机收到的信息是地址,从机将其和自身设备的地址进行比较。如果两者相同,该从机将复位SM2 = 0,置位RI = 1,并给上位机发送确认信息设置成点对点的通信。该从机将收到的地址当作和主机的握手信号进入接收信息状态。其它从机由于地址不匹配而处于等待状态直到总线被释放。
(4)总线占有权的释放从机处于接收状态时SM = 0,并将接收的数据存入指定的内存中,接收完毕后置位SM = 1,交出总线占有权。串行多机通信中各从机的地址不同,地址匹配时只会有一个从机被选中。因此在任意时刻,只能由主机与某台从机进行数据传输,各个从机之间的通信必须通过主机来中转。例如从机1 先将数据传给主机,再由主机传送给从机2 完成从机1 和2 之间的通信。单片机的TTL电平与RS-232C 标准的电器特性不同,如果单片机的串口要和标准的RS -32C 建立串口通信必须进行电平转换。单片机的串口通过RS-232C 电平转换片MAX232 可构成232 串口通信,通光电隔离的方法可构成RS-422 通信,通过MAX485 芯片可构成RS-485通信等。通过这些通信方式就可以组成相应的多机通信系统。利用单片机的串行口组成的多机通信系统电路结构简单、成本低、软件也较易实现,正是基于这样的优点,使得其得到广泛的应用。
完整设计书、程序源代码和proteus仿真实例请下载附件


回帖(2)

刘正鑫

2020-6-27 00:43:35
不错 ,,顶一个
举报

刘正鑫

2020-6-27 00:43:54
真心不错 ,对我来说很有帮助
举报

更多回帖

发帖
×
20
完善资料,
赚取积分