基于51单片机的多机并行通信系统应用
扫描二维码
随时随地手机看文章
在一些复杂的系统中,系统与分系统、分系统与设备等之间存在数据的传递问题,往往采用通信的方式来解决。由于分系统、没备等通信波特率的不同,特别是一些特殊波特率设备的存在,使得系统中设备间的相互通信不易实现。例如,在一个系统中,上位机接收某一设备的数据,如图1所示,设备l和设备2采用的是172.8 kbps的波特率,而上位机用VB编程,其通信波特率为115.2 kbps、128 kbps或256 kbps,等,这样设备之间就不能相互通信,给设计带来困难。为了解决上述问题,采用双单片机电路,设计了波特率变换器,将接收波特率为172.8 kbps的数据,转换成波特率为115.2 kbps的输出,从而使不同波特率设备之间的通信成为可能。
1 波特率变换电路
波特率变换电路如图2所示。电路采用2片单片机89C51作为电路的核心,利用单片机的UART串行口与相关设备通信。单片机u1_L.(接波特率低的设备)与波特率为115.2 kbps的设备通信,单片机U2_H(接波特率高的设备)与波特率为172.8 kbps的设备通信。Ul_I,与U2_H的通信采用并行口方式,以加快Ul_I。与U2_H之间数据传递的速率。U1_L与U2_H的通信可以采用中断查询的方式,也可以采用握手查询的方式进行数据传递。
电路采用2片75176接口驱动芯片组成一个RS-422通信接口。U3和U4组成的通信接口与115.2 kbps的设备相连,U5和U6组成的通信接口与172.8 kbps的设备相连,通信接口采用中断技术。波特率变换器工作原理如下:U1_I。从串行口收到设备的数据后,从Pl口输出数据,并通知U2_H取数,U2_H取到数据后向设备发出数据,同时通知Ul_I.已取走数据,为U1一L下一次输出数据做准备。当U2_H从串行口收到设备的数据后,查询U1_I,是否允许接收数据,如允许接收数据,U2_H从P1口输出数据,并通知Ul_L取数,Ul_L取到数据后向设备发出数据,同时通知U2_H已取走数据,为U2_H下一次输出数据做准备;如Ul_L不允许接收数据,则U2_H暂缓送数。