89C51与PC机通信接口设计

六、89C51与PC机通信接口设计

利用PC机配置的异步通信适配器,可以很方便地完成IBMPC系列与89C51单片机的数据通信。由于89C51单片机输入、输出电平为TTL电平,它是正逻辑电平,>2.4V的电平表示逻辑1,<0.4V电平表示逻辑0。在室温下,一般输出高电平是>3.5V,输出低电平是<0.2V;而IBMPC机配置的是RS-232C标准串行接口,RS232电平是负逻辑电平,以+3~+15V为逻辑0,以-15~-3V为逻辑1。两者的电气规范不一致,因此,要完成PC机与单片机的数据通信,必须进行TTL与RS-232C之间的电平转换。这里介绍采用MAX232芯片实现89C51单片机与PC机的RS-232C标准接口通信电路。

1.单片机与PC机的接口电路

MAX232芯片是美信公司生产的、包含两路接收器和驱动器的IC芯片。MAX232芯片内部有一个电源电压变换器,可以实现TTL电平与RS-232C电平的转换。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。

PC机与单片机采用MAX232芯片的通信接口电路如图5-27所示。

图5-27 PC机与单片机的通信接口电路图

电容C1、C2、C3和C4及V+、V-是电源变换电路部分。在实际应用中,器件对电源噪声很敏感。因此,Vcc必须要对地加去耦电容C5,其值为0.1μF。电容C1、C2、C3和C4取同样数值的1.0μF/16V钽电解电容,用以提高抗干扰能力,在连接时必须尽量靠近器件。

MAX232芯片有两组电平转换电路。实际应用时,可根据需要任选其中一对转换电路。

TIN、ROUT用于接单片机。T1IN和T2IN为TTL/CMOS电平输入端,直接接单片机的串行发送端TXD;R1OUT和R2OUT为TTL/CMOS电平的输出端,直接接单片机的串行接收端RXD。

RIN、TOUT用于接PC机。T1OUT和T2OUT为RS-232电平的输入端,直接接PC机的接收端RXD;R1IN和R2IN为RS-232电平的输出端,直接接PC机的发送端TXD。

接口时,应注意其发送、接收的引脚要对应。即TIN、TOUT成对使用,RIN、ROUT成对使用,这里T、R是针对单片机的动作命名的。如果使T1IN接单片机的发送端TXD,则PC机的RS-232的接收端RXD一定要对应接T1OUT引脚。同时,R1OUT接单片机的RXD引脚,PC机的RS-232的发送端对应接R1IN引脚。

如果PC机与单片机的传输距离较远(超过几十米),或者要求通信速率较高时,可以采用RS-485总线进行传输。RS-485是一点对多点的通信接口,一般采用双绞线结构。RS-485总线的传输距离可达1200m,传输速率可达1Mbit/s。普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。对于单片机可以通过芯片MAX485来完成TTL/RS-485的电平转换。

2.PC机与单片机通信设计

PC机与单片机可以构成主从式上下位计算机通信系统。在这种结构中,PC机通常作为上位机,而单片机作为下位机。两者通信时,需先约定好数据的传送方式以及通信协议,即采用相同的数据格式、相同的波特率以及握手信号等。

单片机的通信程序设计可参照单片机点对点通信的例子,这里不再赘述。

PC机的串行通信设计其实就是PC机上的上位机软件设计。开发PC机串行通信程序主要有两种方法:一是利用WINDOWS的API函数;二是采用VB(Visual Basic)或VC(Visual C++)的通信控件MSComm。

对于一些单片机应用系统,对上位机软件没有特殊的要求,那么可以采用一些共享的上位机软件,如串口调试助手,以测试单片机串口通信的结果及要求。