在这个多机系统中采用的是主从式通信方式,主机即主控制器处于主导和支配地位,从机即分控制器一般以中断方式来接收和发送数据。在主从式多机系统中主机发送的信息可以传送到所有的从机或指定的从机,在这里是要发送给所有的从机,来控制照明灯的启停。在本系统中采用广播式命令,不需要从机返回信息,从机之间也不能直接通信。主机由AT89C51单片机充当,从机为AT89c51单片机。主机与从机的数据通信波特率定为9600波特,每个从机都有唯一的地址号,用来区分各从机。单片机的数据通信由串口完成,定时器T1为波特发生器,数据传送格式为1位起始位,8位数据位,1位停止位,1位可编程位(TB8)。工作方式:定时器T1设置为方式2,串口设置为工作方式3。
本系统的通信原理为:从机在建立与主机通信之前所有分机的SM2都置1,即随时处于对通信线路监听的状态,只能收到主机发送来的机号信息。主机向从机发送广播地址信息时,广播地址为00H,所有分机都接收到广播地址信息,然后进入正常通信状态,清除SM2位,开始接收主机发送来的命令。从机收到的命令是开灯时,向P3.7口输出高电平,打开MOC3021驱动双向可控硅,从而就点亮了灯泡;同理,如果收到的命令是关灯时,向P3.7口输出低电平,封闭MOC3021使双向可控硅截止,也就达到了关闭灯泡的目的。该系统的主机和从机的控制程序流程图如图3-4和图3-5所示。
调用键盘扫描子程序初始化开始N
图3-4 全部启停控制主机程序流程图
中断程序入口 初始化接收主机发送的地址 N
地址是00H吗Y
图3-5 全部启停控制从机程序流程图
3.2.2 单独启停控制程序设计
单独照明启停控制系统是通过主机发送给指定的从机命令信息,来实现照明灯的启停控制。主机首先发送从机地址,被叫到的从机向主机发送本机地址,然后主机向从机传送数据,从机根据接收的数据信息执行相应的命令。单片机的工作方式同全部照明启停控制系统。其具体的工作过程是:所有的从机在通信之前都把SM2位置1,随时处于侦听状态。当主机发送从机的地址信息时,每帧数据的第9位都为1,所有从机都接收到地址信息,然后判断主机是否呼叫本机。如果呼叫本机则进入正式通信状态,清除SM2,并把本机地址号发送给主机作为应答,然后才开始接收主机发送来的信息。而其它从机由于地址号不符,他们的SM2位仍然为1,仍处于侦听状态,无法接收主机发送来的数据信息。主机收到从机发送来的回应信息后,比较主机已发送的地址号与刚接收的地址号是否相符,如果不符,则发出错误信息;如果相符,则正式发送数据信息,这时发送的每帧的第9位都为0。只有SM2=0的从机才能接收到主机发送的信息。从机根据命令执行相应的动作,如果为打开命令,则输出高电平驱动可控硅动作,开启照明灯;如果为关闭命令,则输出低电平使可控硅截止,停掉照明灯。该系统的主机和从机控制程序流程图分别如图3-6与3-7所示。
开始 初始化调用键盘扫描子程序
图3-6 单独启停控制主机程序流程图
中断程序入口
初始化 N接收主机发送的地址 与本机地址相符吗Y向主机发送本机地址
图3-7 单独启停控制从机程序流程图
3.3 照明控制程序设计
照明控制系统是利用从机即单片机AT89c51和时钟芯片DS12887进行数据通信,读取和写入实时数据,主机采用串口通信方式对从机进行定时时间的设置,从机然后根据设定的时间进行照明灯的启停控制。 3.3.1 全部定时控制程序设计
在全部定时控制系统中是通过主控制器向所有的分控制器发送广播地址,分控制器在收到广播地址后,使自己处于接收数据状态,然后主控制器向网络中发送时间数据信息,分控制器在收到时间数据后写入DS12887芯片,等到设定时间到达后,单片机发出命令关闭照明灯。该系统的主机控制流程图同图3-4所示,从机的控制流程图如图3-8所示。
N地址是00H吗接收主机发送的地址初始化中断程序入口