秘鲁利马冬天气候:RS232C串行通讯接口的应用(上篇

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 16:13:38

RS232C串行通讯接口的应用(上篇)

  本文的相关程序下载:点击下载
    CDLE-J20.hex //单片机程序
    CDLE-J20_Main.c //单片机C语言原程序
    demop.exe //演示软件
    源码.rar //演示软件delphi源码
    (程序中使用delphi的串口SPCOM控件请自行下载,下载后可以在DELPHI中以控件安装方式安装)

  猜猜看图一上接在PC电脑后面板上的小电路是什么?

图1:接在电脑后面板的小电路
  也许你能猜到这上面有一块51单片机,但我想你猜不到它的作用。这正是这一期的实例制作――利用电脑控制继电器。图二就是连接了8个继电器的控制电路。有不少朋友也许像我一样在少年时代曾幻想着自己动手把自己家中的电器都自动化且能用电脑去控制,而到了今天这些已不是神话但要实现它还是要付出很多金钱。对于业余爱好者也许大家能从这个实例中得到一些启发,又或者重新点燃你的童年梦想。用电脑实现继电器的控制有很多方法,可以用串行接口,LPT接口,ISA卡,PCI卡等等,这一期就用电脑串口结合单片机控制多达24个继电器的实例来讲解一些串口的基本知识,能做到控制继电器的闭合断开,也就意味着能控制各种电器的开和关,也可以控制电机的转动或转向,还有这个制作还能用电脑读取电路IO端口的逻辑状态,也就是说电路可以把逻辑(开关)信号反馈到电脑让电脑程序做相应的判断,可以借此实现很多的自动控制,当然你也可以改进它使用它实现家居的自动化电脑化。这一制作的灵感和冲动就是来自我童年的梦想,不知读者朋友你是否也有和我一样的童年梦想。

  制作中用到电脑的串行接口来进行命令字符的发送和接收。先来看看图三和图四,相信熟悉电脑的朋友不会对它们陌生。图三就是RS232C的DB-9接口形式,一般PC电脑都会配备1到2个,也就是通常说的串口(也称COM口)。图四则是RS232C的DB-25接口形式,最常见的就是出现在上网用的Modem(调制解调器)上与计算机连接用的接口。RS232C早在1962年由美国电子工业社会(EIA)公布,1987年修改后正式改名为EIA-232D,但是标准修改并不多,所以绝大部分人仍用旧的名称。RS232C串行通讯接口标准被广泛用在计算机和各种外围设备的串行连接,它也是数据终端设备(DTE Data Terminal Equipment)如计算机,与数据通信设备DCE(Data Communication Equipment)如Modem的标准接口。RS232C不仅可以用在两台设备之间的串行连接,还可以通过中间设备进行远距离的通信。串行通讯就是将数据分解成二进制位用一条信号线,一位一位按顺序传送。它的优点是占用线路少,远距离通信时可以极大地降低成本。

图2:串口控制继电器板
图3:电脑后的RS232C串行接口(DB9)
图4:Modem后的RS232C串行接口(DB25)
 电路原理:
  整个制作的主要电路可以分成四部分组成:RS232/TTL电平转换、串行信号处理、控制信号的输入输出和继电器驱动电路。图五是前三部分的电路的整合电路图,图六则是继电器驱动电路图。下面对各电路做简单的分析。

  RS232/TTL电平转换电路
  这一部分的作用将RS232C和单片机串口的TTL电平相互转换,使得两个设备可以相互通讯。AT89C51单片机串口的电平标准是TTL电平标准:高电平为+5V,低电平为0V,而RS232C的电平标准是EIA电平标准:高电平为+3V~+15V,低电平为-3V~-15V,在实际应用中常用±12V或±15V,在PC电脑中因所用的芯片或电路不同通常在±9V~±12V之间。要注意的是在RS232C中任何一条信号线的电压均为负逻辑关系,即逻辑"1"为-5~-15V;逻辑"0" +5~+15V ,其噪声容限为2V,也就是说要求接收器能识别低至+3V的信号作为逻辑"0",高到-3V的信号作为逻辑"1"。为了让EIA电平转换成TTL电平,电路中用了两个BC547和R4、R5、R6、R7、D1组成简单的电平转换电路。整个电路只要求信号的收发,所以只用到RS232C接口中的RXD、TXD和地,通过电平转换电路连接在AT89C51的TXD、RXD和地(具体引脚定义请看下文介绍),也就是说RS232C的接收端连到单片机的发送端,而发送端则连到单片机的接收端。这样的电路可以取代专用的RS232/TTL转换芯片(如MAX232),满足一般的制作要求(可以参考笔者2003年12月在无线电杂志发表的《简单的RS232C电平转换和串口窃电》)。

  串行信号外理和控制信号输入输出
  这一部分是整个电路中的核心部分,使用了一片AT89C51单片机组成,用它完成串行字符的接收和处理,同时利用其剩余的I/O引脚做逻辑信号的输入输出控制,通常这样的电路也称为下位机。由于AT89C51已停产,大家可以用AT89C52、AT89S51或AT89S52直接代换使用而无需更改任何电路。AT89C51的串行接口用电平转换电路连到DB9接口上,这样就可以配合单片机的固件程序接收来自电脑RS232C接口的命令字符或向电脑程序反馈状态字符。电路的晶振和复位电路则和单片机构成最小系统,使单片机固件程序得以启动运行,D2则是运行指示灯在电路正常工作时会以一定频率闪烁。

  为了使处理后的信息输出到继电器控制模块,电路设置了AT89C51的P0,P1,P2为三组八位并行的I/O接口,用于把处理后的信号变成TTL逻辑电平输出到继电器控制模块,也可以把输入到这三组I/O上的逻辑电平或开关量采集到单片机中再传送到电脑。由于电路板是分模块设计的,信号处理电路这一模块不单单可以用于控制继电器用,它的I/0输出电平为标准TTL电平,也可以采集TTL电平,这样也就可以根据需要接在别的并行电路上,如LED数显模块、步进电机控制模块、键盘阵列等等。

  继电器驱动电路
  J1,J2,J3分别是接在89C51的P0,P1,P2I/O口上的插座,是用于信号输出,每一输出脚控制一个继电器,因为AT89C51的P口在上电后程序执行前是输出高电平的,所以这里定义了低电平有效,这样对应图六的继电器驱动电路就使用了PNP的9012做驱动管,当接入9012基极的信号电平为高时,三极管截止继电器不吸合,当信号电平为低是,三极管导通继电器吸合。P口引脚高电平为TTL标准最高为+5V,光用一级的PNP驱动那么只能选用5V的继电器,如要选用5V的继电器可以在9012前加一级9013做电压放大,当然你也可以用别的继电器驱动电路去替换它。要想更好的隔离继电器工作时给单片机带来的干扰影响或使用高电压继电器要考虑安全性等,可以用光电耦合器加在信号处理和继电器驱动之间。

图5:89C51组成的下位机(点击看大图)
图6:继电器驱动电路(点击看大图)