计算机外设控制系统

🏠 首页 《无线电》杂志 2004年 🔗 第12期 🔗 第31页 分类:电脑与单片机 🔗 吴成勇 🔗

modem、扫描仪和打印机等外设都需要电源插座,每次使用时都要把它们的电源插头插上插座,停止使用时又要把它们的插头拔下,非常麻烦。为此,笔者利用电脑RS-232串行端口来控制插座,解决了用电脑直接控制外设开关的问题。

电脑串行端口中有两个脚可以通过简单的程序来控制其状态,这两个脚分别是第4脚的DTR及第7脚的RTS,它们原本被用来作握手(HandShake)信号检测的,因此可以由计算机控制其电压状态。另外,RS-232串口上的第5脚用于接地线,4、7脚通过与第5脚的GND比较而得到电位差。利用此原理,我们可以利用DTR及RTS脚分别与GND之间的电压差,使RTS和DTR产生脉冲信号来对外围电路进行控制。

系统控制的大致过程为:在电脑程序里按下相应的控件时使串行端口的RTS端输出相应的脉冲信号(比如按下 “设备1”按钮,这时RTS输出2个脉冲。“设备2”对应3个脉冲……),HCF4017根据输出的脉冲进行译码,然后由TC4013进行双稳态控制。当脉冲信号传输完毕后延时50ms在DTR端输出一个脉冲对HCF4017清零。关闭软件时,DTR持续通电100ms使UA741对各个TC4013清零。

硬件工作原理

本系统硬件电路见图1。为了增加控制设备的数量,该电路使用了两块HCF4017。HCF4017是具备10译码输出的约翰逊十进制计数器,它的引脚功能分别如下:

图1
图1 🔍原图 (709×557)

Q0~Q9: 计数输出

RST:计数清零

CLK:计数脉冲(上升沿有效)

ENA——-:计数允许

计数器在时钟禁止时ENA——-为低电平,在时钟脉冲上升沿时进位,其Q0~Q9依次出现高电平。当复位端RST为高电平时,计数器清零,Q1~Q9输出低电平,Q0为高电平。

电路通电后电流经过C2对IC1和IC2清零。由于这时Q9输出的是低电位,IC1有效,VT1截止,IC2无效。当IC1的CLK端接受到9个脉冲信息时,Q9的高电位直接加到IC1 的ENA——-端,IC1失效。VT1导通,IC2的ENA——-端因得低电位而有效。所以IC1 、IC2组成了17脉冲分配器。

前面说过HCF4017的作用是译码,当电脑输出8个脉冲时它的Q1~Q8都会依次输出高电平。如果把双稳态控制电路直接接在Q1~Q8端时,它的9个双稳态控制电路都会受控制,所以需要对双稳态电路进行延时控制,延时电路由R10、C5组成。当高电位加到A端时,由于R10的取值较大,加在C5的电压不会突变,在一定的时间内A输出的电位对IC4B没有影响。如果这个电位继续加在A端,C5的电压就会慢慢升高,升到一定的程度时这个电压就会触发IC4B,使IC4B的Q端输出高电位。这个高电位同时也给C6充电。随着C6电压的上升,经100ms后又对IC4B进行清零。

由于IC4B的反相输出端Q与数据输入端D相连,构成了一个双稳态触发器。CLK端每输入一个脉冲,Q端输出必与原来的反相(即原来是高电平则变为低电平,原来低电平则变为高电平)。当Q端输出为低电平时三极管VT2截止,继电器K释放,当Q端输出为高电平时三极管VT2导通,继电器K吸合,同时发光二极管VD1点亮起指示作用。

使用过程中如果使用者关闭软件,串行端口的DTR端在100ms内持续输出高电位。这个时间足够使μA741输出高电位,这个高电位经过VD1~VD16对各个TC4013清零,使全部设备关闭。

电路图说明

图1-c是电路的控制部分,为了简化电路,在图中只给出了1路延时双稳态控制电路,如果设计的控制器是用来控制16台外设的,那么你就要按照该部分电路制作16个,然后将其中的A端分别接在IC1的Q2 ~Q8端和IC2的Q2~Q9端,每一个CD4013的4脚都是先通过一个二极管(IN4148)再接μA741的6脚。图1-b部分的B1~B16端分别接各个TC4013的4脚。

图2为整个电路的电源部分。凡是电路图中有Vcc标志的地方都要和图2的Vcc连通。同时HCF4017的16脚、CD4013的14脚、μA741的7脚也要接图2的Vcc。完整的电路最多能够支持16路控制。

图2
图2 🔍原图 (709×253)

笔者用VisualBasic 6.0编制了此电路的控制程序,有兴趣的读者可以到本刊网站www.radio.com.cn上下载。制作者可根据自己的需要设计软件。编程方法就不具体介绍了,在程序设计方面可能还存在很多的缺陷,请读者指正。

(文/吴成勇)