在许多单片机的应用中都会使用到串行口与电脑的串行口相连接,如用单片机制作的PC鼠标、PC遥控器、各种数字化仪器、工控设备等。串口通信在这些应用中起到数据交换或控制命令传输的作用。单片机的串口有很大一部分是使用TTL电平标准的(PIC的可以直接连接在电脑串口),它的逻辑1电平是5V,逻辑0电平是0V,而电脑串行口所使用的是RS232C的电平标准,它的逻辑1电平是 -3~-12V,逻辑0电平是+3~+12V。两者的电平范围相差很远,所以连接时需要用到电平转换电路。这样的电路有好多种,一般来说商业化的成品会用到MAX232、DS275等专用的RS232、TTL电平转换集成电路。对于一般电子爱好者,这样的器件一是不太好买,二是会使制作的费用提高。用什么样的电路去代替它们呢?以下笔者结合自己在实际设计应用的经验介绍一下这些电路,同时也介绍一些自己对串口取电电路设计应用的经验。
图1是使用小功率三极管搭建的电平转换电路,分别用了一个NPN管和PNP管,NPN可以使用常用的9014或BC547,PNP则可以使用常用的9012或BC557。电路分为传送和接收两部分,图1中已用虚线分开了。它们可以分开使用也可以合在一起使用。传送电路使用PNP管。当单片机的TXD信号是逻辑高电平时,VT1截止,RS232C的TXD(PIN3)提供-9V左右(实际电压根据电脑主板上使用的串行接口芯片有所不同)给RS232C的RXD(PIN2)。当单片机TXD信号变为逻辑低电平时,VT1导通,约 +5V传给了RS232C的RXD(PIN2)。用这种办法传送数据时,RS232C的TXD(PIN3)必须稳定在-9V左右 。

图1中虚线以下的是接收电路,它把RS232C电平转换成TTL逻辑电平。当PC发送数据给RS232C的TXD(PIN3)时,逻辑1电平时是-9V,VT2截止,此时单片机的RXD约为+5V。当RS232C的TXD为逻辑低电平时是+9V,VT2导通,单片机RXD此时约为0V。
图1的电路笔者在应用中经常用来代替MAX232、DS275等芯片,它不仅可以单独使用传送或接收部分,在部分要求双向传输的项目中也可以很好地工作。我通常是使用9600波特率,但实际可以在工作中使用更高一点的波特率。可以把它焊到一个小的8脚IC插座或PCB上直接代换DS275(DS275引脚功能说明请看图2)。

图3是另一种RS232/TTL电平转换电路,接收电路和图1的电路一样。该电路用2个NPN小功率晶体管,传送电路不需要从RS232C的TXD引用负电压。这样,当单片机TXD为高电平时,RS232C的RXD为0V(不是如图1所示的-9V左右),为低电平时RS232C的RXD为+5V,显然这和RS232C的标准不同,但多数PC机串口可以接受这样的电平范围。这个电路可以像图1那样用来直接代换DS275芯片。

这两个电路中的晶体管可以用大部分小功率晶体管替换,如9012、9014、BC547、BC557等,它们都可以很好地工作。要注意的是它们所产生的电平范围不是标准的RS232电平,所以也不能达到RS232的标称传输距离。
在一些小的应用中,通常只用一块2051或PIC芯片和少许的小元件,它们的耗电量很小,一般只有十几毫安。在笔者设计的的PC遥控器项目中用到一块AT89C2051,一个一体化红外接收头和一个LED,少许阻容器件和上面所说到的电路的传送部分,总的耗电量只有10mA多一些。我用图4的电路从PC串口直接取电,效果很好,可以提供5V、20多毫安的电流。也可以用图5的电路,但要注意的是这两种电路都要求上位软件使串口的⑦和④引脚变为高电平才可以正常取电,否则无法从串口得到所需的电压。


(温正伟)