孙慧 汤宇
摘 要:本文从多机通信协议入手,重点研究了如何利用查询法和中断法实现主从式通信,并通过Proteus仿真软件对两种通信方法进行了仿真验证。查询法通信易于实现,但占用单片机内部资源较多。中断法通信更稳定可靠,可以大大提高单片机的工作效率。
关键词:单片机 多机通信 查询法 中断法 Proteus仿真
单片机目前已广泛应用于家用电器、航空航天、仪器仪表及专用设备的智能化管理和过程控制等领域。随着计算机技术的发展及工业自动化水平的提高,在许多场合单机控制已不能满足现场要求,多机串行通信构成的主从式通信方式,因其通信编程灵活、硬件简洁,并遵循统一的标准,在工业控制领域应用前景广阔,非常具有研究意义。
一、多机通信原理
51系列单片机的多机通信一般采用主从式通信方式。在这种方式中,只有一台主机,可以有多台从机。主机发送的信息可以传到各个从机或指定的从机,各个从机发送的信息只能被主机接收,从机之间不能进行通信。单片机多机通信示意图如图1所示。
图1 单片机多机通信示意图
二、多机通信过程
在多机通信时串口必须工作在方式2或方式3,根据通信要求设置单片机通信控制寄存器SCON中的每一位。
多机通信的过程如下。
第一,所有从机处于地址帧接收状态(SM2=1)。
第二,主机先发送一个地址帧,其中前8位数据表示要寻址的从机地址,第9位为1(TB8=1)表示该帧为地址帧。
第三,所有从机接收到地址帧后,把接收到的地址与本机地址相比较。地址相符时将SM2清0,并发回从机地址作为应答信号,由主机进行确认。地址不相符的从机不作任何处理,仍保持SM2=1。
第四,在主机确认地址正确时,向寻址的从机发送相应的数据信息。当确认地址错误时,不发送数据信息。
第五,地址相符的从机(SM2=0),可以接收到主机发来的数据信息。而对于地址不符的从机SM2=1,则不予理睬,这样就实现了主机与地址相符的从机之间的双机通信;
第六,被寻址的从机通信结束后,恢复为多机通信状态(SM2=1)。
三、多机通信协议设计
本次设计为了验证多机通信的协议是否正确,在Proteus软件中绘制了一个由1主机2从机构成的多机通信系统。主机和从机芯片均采用AT89S51单片机,主机通过按键发送信号,从机接收信号,通过从机连接的数码管显示变化,来表明一个主机和两个及两个以上从机通信的正确性,软件部分主要包括通信模块、按键扫描模块、数码管显示模块和中断服务程序等,使用的通信模式主要是查询法和中断法两种。
1.查询法通信协议算法设计
查询法即通过单片机程序的不断扫描,循环查询通信标志位来判断是否进行通信以及和哪个从机通信的方式,从而完成主从式多机之间的数据交换任务。主机主要完成寻址及数据发送,查询法通信主机设计流程图如图2所示。
图2 主机通信设计流程图
从机主要完成地址校验、数据接收和显示任务。所有从机的通信程序相似,只是从机定义的通信地址不可相同,从机通信设计流程图如图3所示。
图3 从机通信设计流程图
2.中断法通信协议算法设计
所有从机初始时均处于听命状态,即SM2=1,以便接收主机发来的地址,当接收到一帧信息的RB8为“1”时,表示主机发送来的是地址信息,所有的从机均发生接收中断,进入相应的中断服务程序,把接收到的地址和本机地址进行比较。如果相符合就令其SM2=0,并向主机发回本机地址以作应答,主机得到应答信号并校验成功后,就与该从机联通实现双机通信,准备接收主机发来的命令或数据信息,顺利实现地址帧和数据帧的分离。而其他的未被寻址从机保持SM2=1并退出各自的中断服务程序。被寻址从机在通信完成后重新使SM2=1,并退出中断服务程序,等待下次通信。
主机的程序设计可分为两部分:一是主程序,主要用于完成按键扫描;二是中断服务程序,用于完成通信及数据的收发功能。中断法通信實际是将图2中的虚线框部分的扫描程序替换为如图4所示的中断服务程序去执行。
图4 主机中断服务程序设计流程图
从机程序设计主要分为两部分,一是主程序,完成数码管的显示任务;二是中断服务程序,完成主机发送过来的地址校验和数据接收等任务。从机的中断服务程序设计流程图如图5所示。
图5 从机中断服务程序设计流程图
四、多机通信在Proteus中的仿真
按照上述两种通讯协议算法的设计思路,使用单片机C语言进行编程,采用Keil C51 uVesion3作为调试工具,用Proteus 作为仿真工具,与Keil C51 uVesion3联合调试,最终成功实现了1主机2从机之间的通信,仿真运行图如图6所示。
按下K1键,对1号从机的数码管显示值加1,按下K2键,对2号从机的数码管显示值加1。若主机寻址从机时发现地址错误,将不进行任何操作,此时不会影响其他通信地址正确的从机的正常通信。
五、结束语
本设计的两种通信方案,均通过了Proteus成功仿真,并在实际电路中也得到了验证,1台主机最多可以同时与255台从机进行通信。中断法通信方式因其程序结构简洁明了、运行可靠、占用单片机内部资源较小,因此较查询法通信方式的应用更为广泛。