多单片机协同工作方法及多单片机协同工作系统
技术领域
本发明属于单片机技术领域,涉及一种多单片机协同工作方法及多单片机协同工作系统。
技术背景
由于单片机价格低廉,应用方便可靠的优点,其应用十分广泛和普及,但单片机作为一个单机来说,由于其IO端口线有限,也使其应用受到了限制,随着应用领域的不断扩大,有时单个单片机的控制就显得力不从心了,因此在一些较大的系统中要应用单片机的话,需要用到多个单片机构成单片机阵列来参与控制,并且往往要求这些单片机协同工作。例如,在LED大屏幕显示装置中就需要使用多个单片机,为确保LED大屏幕显示装置画面的统一完整,各单片机必须能够协同工作。
目前,实现单片机协同工作方式可以借助于使用单片机的串行口进行通信组成一个单片机网络系统工作,这种方式存在以下缺陷:1)不能灵活地选用单片机的IO口线,只能固定使用单片机的串行端口线;2)主客单片机的串行口都要被占用,系统不能通过串行口与上位机(PC机)或者其它装置进行通信;2)软件设计复杂度较高。
另一种方式是将单片机通过2根IO端口线直接相联,这种方式的主要问题是单片机扩大的数量受到限制,仍然只适合于需要单片机的IO端口控制线还不太多的应用,而且还要以失去主单片机的IO端口线和控制功能为代价。
要解决上述问题,需要寻找一种仅占用单片机的IO端口线资源很少、能够避开单片机特定的IO端口线、即IO端口线可以是任选的、外围芯片十分廉价、客机数量又不受限制的方案。
发明内容
本发明所要解决的技术问题是提供一种多单片机协同工作方法及多单片机协同工作系统,该多单片机协同工作方法及多单片机协同工作系统易于实施、成本低、完成任务效率高。
本发明的技术解决方案如下:
一种多单片机协同工作系统,由一个单片机主机、多个单片机客机、一个计数器、一个译码器和一个数据选择器组成;单片机主机上的4个IO端口作为控制端口,该4个IO端口分别是计数器复位端口(IOX0)、计数脉冲输出端口(IOX1)、响应信号反馈端口(IOX2)和使能端口(IOX3);
计数器复位端口(IOX0)与计数器的复位端(RST)相接,计数脉冲输出端口(IOX1)与计数器的时钟信号输入端(CLK)相接;计数器的数据输出端(Q0-Qm)分别与译码器的数据输入端(译码器的A0-Am)以及数据选择器的通道选择数据所对应选通IO端口(数据选择器的A0-Am)一一连接;
使能端口(IOX3)接译码器的使能端(EN)和数据选择器的选通端(G);数据选择器的多个输入通道(D1-Dn)分别与多个单片机客机的响应IO端口一一连接,数据选择器的输出端(Z)与单片机主机的响应信号反馈端口(IOX2)相接;
每一个单片机客机都有一个功能执行单元,该功能执行单元用于由译码器输出的输出选通信号触发而执行本单片机客机中的预设程序以实现预设的功能。
所述的译码器为74LS138D芯片,计数器采用4024BP芯片,单片机主机和单片机客机均采用为51系列单片机,数据选择器采用74LS251D芯片。
一种多单片机协同工作方法,采用前述的多单片机协同工作系统的硬件,单片机主机的工作步骤为:
步骤1:二进制计数器清零,置数据选择器选通端有效,置译码器使能端无效;
步骤2:发送要呼叫的单片机客机的编号到计数器;
步骤3:根据响应信号反馈端口(IOX2)的状态判断被呼叫的单片机客机是否空闲,如果空闲,则进入下一步,否则返回步骤3;
步骤4:置数据选择器选通端无效,置译码器使能端有效,使得译码器输出单片机客机选通信号;
步骤5:延时,然后计数器清零;
步骤6:置数据选择器选通端有效,置译码器使能端无效,呼叫操作结束;
单片机客机的工作步骤为:
步骤A:复位响应端口状态,表示空闲可响应呼叫;
步骤B:查询选通IO端口的状态,判断是否有呼叫,如果有呼叫则进入下一步,否则返回步骤B;
步骤C:置响应端口状态为有效,表示响应呼叫;
步骤D:启动功能执行单元,完成呼叫所规定的操作;
步骤E:复位响应端口状态,表示空闲可响应呼叫,并返回步骤B。
本发明包含有多个单片机、一个二进制计数器、一个译码器、一个数据选择器及其连接线路(见附图)、编程流程图,并有列有应用示例。本发明中多个单片机协同工作方法体现为在需要使用多个单片机协同工作时,可以设定一个单片机为呼叫单片机(简称主机),其他单片机为被呼叫单片机(简称客机),它们之间的关系为主-客关系,当主机发现系统中需要客机协助完成某项的工作时,呼叫客机,使客机及时完成该工作。它们各自有相对的独立性,有单独的任务要完成,但又需要协同工作,它们的空间位置比较近,传输的信息量并不大,只传送命令及执行命令的情况,不传送数据,这一点不同于主-从式通信,因而它类似于人类社会领导与成员之间的关系。
有益效果:
本发明采用较少且廉价的外围芯片,使用很少的单片机IO端口线就解决了多单片机阵列的协同工作的应用技术障碍,充分发挥了单片机价格低廉,应用方便可靠的特点,而且编程容易,易于实施,能取得良好的应用效果,因此,实施本发明的性价比极高,具有很广的应用前景。
附图说明
图1为本发明电路示意图。
图2为软件设计流程图,a为单片机主机工作流程图,b为单片机客机工作流程图。
具体实施方式
下面结合附图以具体实施例对本发明的技术方案及工作过程作进一步的说明,但本发明的保护范围不限于此:
实施例1
参见图1,一种多单片机协同工作系统,由一个单片机主机、多个单片机客机、一个计数器、一个译码器和一个数据选择器组成;单片机主机上的4个IO端口作为控制端口,该4个IO端口分别是计数器复位端口IOX0、计数脉冲输出端口IOX1、响应信号反馈端口IOX2和使能端口IOX3;
计数器复位端口IOX0与计数器的复位端RST相接,计数脉冲输出端口IOX1与计数器的时钟信号输入端CLK相接;计数器的数据输出端Q0-Qm分别与译码器的数据输入端(即译码器的A0-Am)以及数据选择器的通道选择数据所对应选通IO端口(即数据选择器的A0-Am)一一连接;
使能端口IOX3接译码器的使能端EN和数据选择器的选通端G;数据选择器的多个输入通道D1-Dn分别与多个单片机客机的响应IO端口一一连接,数据选择器的输出端Z与单片机主机的响应信号反馈端口IOX2相接;
每一个单片机客机都有一个功能执行单元,该功能执行单元用于由译码器输出的输出选通信号触发而执行本单片机客机中的预设程序以实现预设的功能。
所述的译码器为74LS138D芯片,计数器采用4024BP芯片,单片机主机和单片机客机均采用为51系列单片机,数据选择器采用74LS251D芯片。
参见图2,一种多单片机协同工作方法,采用前述的多单片机协同工作系统的硬件,单片机主机的工作步骤为:
步骤1:二进制计数器清零,置数据选择器选通端有效,置译码器使能端无效;
步骤2:发送要呼叫的单片机客机的编号到计数器;
步骤3:根据响应信号反馈端口(IOX2)的状态判断被呼叫的单片机客机是否空闲,如果空闲,则进入下一步,否则返回步骤3;
步骤4:置数据选择器选通端无效,置译码器使能端有效,使得译码器输出单片机客机选通信号;
步骤5:延时,然后计数器清零;
步骤6:置数据选择器选通端有效,置译码器使能端无效,呼叫操作结束;
单片机客机的工作步骤为:
步骤A:复位响应端口状态,表示空闲可响应呼叫;
步骤B:查询选通IO端口的状态,判断是否有呼叫,如果有呼叫则进入下一步,否则返回步骤B;
步骤C:置响应端口状态为有效,表示响应呼叫;
步骤D:启动功能执行单元,完成呼叫所规定的操作;
步骤E:复位响应端口状态,表示空闲可响应呼叫,并返回步骤B。
硬件由一多个单片机构成的单片机阵列、一个二进制计数器、一个译码器和一个数据选择器连接而成,器件之间的连线如说明书附图1所示,主机与各客机所使用的IO端口线分别定义如表一所示。
表一 单片机阵列各IO端口线定义
一、主机呼叫
当主机在发现系统有呼叫某一客机的需要时,就会起动如图2(a)所示的操作流程,主机程序可以子程序的形式编写。
二、客机响应
在客机程序中,查询主机的呼叫信号,按如图2(b)所示的流程进行响应。如果在系统中,客机不需要使用外部中断,可以选择IOX0=P3.2(P3.3),而将客机响应安排为中断服务程序,可避免客机进行查询,可使响应过程更为及时快速。
实用效果:
将本技术应用于一个使用了10个单片机的LED广告控制系统中,该系统LED屏为一个行线数为96、列线数为1280的单色屏,由单片机主机与单片机客机1负责行线的控制,其他8个单片机客机负责列线的控制,由于使用了较多的单片机进行协同工作,有较多单片机的资源可以利用,较容易地实现了文字和图片画面的左移、右移、上移、上移、逐行消失、逐列消失、闪烁等功能。