在图3中.主机89C2051的P3.1为串行通信的数据发送端,P3.0为接收端;从机89C2051的P1.4为模拟发送端,P1.5为模拟接收端。

在工业检测中,检测信号受外界各种干扰较大.特别是电平信号,受通信线路产生的电、磁干扰及线路本身的分布电容的影响特别大。在本电路中由单片机来的电平信号通过TILll7型光电耦合器变换为20mA电流信号,电流信号经过长线传输到达接收端后,将其重新转换为电平信号。在这一过程中.光电耦合器有利于隔离长线传输中信号所受到的干扰。因为光电耦合器使输入与输出隔离,从而避免共地环路,消除和抑制了各类干扰信号;再有.噪声的输出阻抗较大,即使电平很高的噪声,其电流也很小,不足以使二极管发光,因此,光电耦合器件只传输了有效信号,隔离了噪声。同时,由于光电耦合器件具有单向传输性,使输出端信号和干扰信号不会反馈到输入端。本电路采用的是MO—TOROLA公司的TILll7型普通光电耦合器,采用这种光电耦合器,实际通信速率可以达到9600b/s。光电耦合器必须使用二组独立电源,方能起到隔离、抗干扰的作用。

4、接口程序设计

在软件设计中,主要采用普通1/O口模拟串口进行异步串口通信。若主机发送数据的帧格式为N.8.1,发送时,先判断P3.0是否有从机接收数据完毕后的高电平,如有,则开始发送:先发送1个起始位(低电平),接着按低位在先的顺序发送8位数据,最后发送停止位。从机接收数据时,先判断P1.5是否有起始低电平.如有,则按低位在先的顺序接收8位数,最后判断P1.5是否有停止高电平,如有,则完成1个数据的接收,否则继续等待。然后置P1.4为高电平,通知主机接收数据完毕,可再发下1个数据。其中软件的编写严格按照异步通信的时序进行,每位传送时间间隔按通信速率1 200bit/s计算为833μs。模拟串行通信的单字节部分参考程序如下所示: