回 帖 发 新 帖 刷新版面

主题:在qbasic中用并口做的实用电路,可以控制家用电器(详解)

本文最终目的:利用电脑控制一个电器的开断,比如控制电灯开关. 
相关知识: 
并行接口,简称并口,也就是LPT接口,是采用并行通信协议的扩展接口。并口的数据传输率比串口快8倍,标准并口的数据传输率为1Mbps,一般用来连接打印机、扫描仪等。所以并口又被称为打印口。 
并口是25针的,与25针串口不同的是,并口是25个孔,所以常称为“母头”,而像串口就常称为“公头”。并口的针脚定义如下: 
1 STROBE 选通 
2-9 DATA0-DATA7 数据0-7 
10 ACKNLG 确认 
11 BUSY 忙 
12 PE 缺纸 
13 SLCT 选择 
14 AUTO FEED 自动换行 
15 ERROR 错误 
16 INIT 初始化 
17 SLCT IN 选择输入\ 
18-25 GND 地线 
并行口信号: 
(0V)表示逻辑0,用高电平(5V)表示逻辑1(电压都是相对于18-25脚上的接地电势而言)。 
并行口硬件:并口行现在通常被集成在系统板上,25针插口上的信号可通过数据锁存器、打印状态和打印 
机控制三个寄存器(也就是三个输入/输出端口)进行程序设计和控制。计算机系统中通常有多个并行端口,它们在输入/输出系统中的地址。需要注意的是这些地址是由系统 BIOS 给出的,并不是硬件的物理 地址,所以可以通过设置 BIOS 来改变当前端口的配置,如果地址改变在程序中也必须改变。 

感性实验: 
并口可以输出5V的直流电压,我们利用它来做个简单的电路来控制一个家用电器的电路。我们主要利用并口的2-9脚, 
1、先找一条并口电缆,看电缆插头的形式,找一个与之配套的25针插座,电脑配件商店有卖(0.7元左右/只), 
2、找个发光二极管(注意正负极)把正及接到2脚,负及接到25脚, 
3、接好后插到电脑的并口上 
4、打开电脑 
在开机自检的过程中,你会看到二极管会发亮一下,然后熄灭,这个说明你可以用QB来对并口进行编程了! 
在进入系统以后(注意:必须是win98或者更低的操作系统,不能使用WinXP、2000等NT内核的操作系统,否则无法进行端口读写) 
5、启动QBASIC 
6、输入OUT &h378,&HFF 然后运行。(并口的地址一般是378H,如果不一样请在BIOS里面改一下)这时,发光二极管就会长亮,输入OUT &h378,0,发光二极管就会熄灭,至此,软件实验的准备工作已经完成,你已经能控制LPT口了。 

实用电路: 
LTP的输出电流有几百毫安,可以直接驱动小功率继电器,大家可以到电子市场上买一个5v的小型继电器,替换掉发光二极管(无正负极)然后把继电器当一个小开关来使用,用程序来控制继电器的分合, 
如果不能买到这种继电器,可以做一个电子开关,元件:光电耦合器一只,双向可控硅一只,电阻N只,把光偶的前及替换发光二极管,后级与可控硅、电阻连接,最后连接家用电器,和上面一样,可以用程序控制这个电器了。 
光藕的电气隔离性能很好,可以达到2500v。 


程序方面大家可以尽情开动脑筋
&hff 是把所有数据口都置高电平,发送的数据每个位对应每个脚,如果是2进制大家就容易理解了 ,如果只想单独控制第3脚就发送二进制0000 0010....转成10进制就是2
如果要获得当前电路的状态(通或者是断),可以用inp来读端口,比如读如数据是3,转成2进制是0000 0011 那么说明2 和 3是通

请注意:在XP下不能直接使用端口语句,用了没有什么效果,因为读写端口的权限在ring0级,qb没有办法.
不过大家可以在网上搜索到使用端口的控件或者是DLL,然后在vb程序里调用就可以了!

回复列表 (共46个回复)

21 楼

XP中是禁止程序读写端口的,所以用qb无法完成这个程序。
如果你是在win98或者在DOS中就没有这个障碍了。

22 楼

我现在都用它控制导弹了,真爽啊。呵呵QB就是强。

23 楼


888,超限制违规;

24 楼

没Win98可不可以用VPC???

25 楼

不能装98可不可以用VPC?

26 楼

QB 还能做这么强大的东西,长见识了~~

27 楼

我倒是做机械设备的,正是用QB编的程序在DOS下运行

28 楼

本次最终目的:利用电脑控制一个电器的开断 
相关知识: 
并行接口,简称并口,也就是LPT接口,是采用并行通信协议的扩展接口。并口的数据传输率比串口快8倍,标准并口的数据传输率为1Mbps,一般用来连接打印机、扫描仪等。所以并口又被称为打印口。 
并口是25针的,与25针串口不同的是,并口是25个孔,所以常称为“母头”,而像串口就常称为“公头”。并口的针脚定义如下: 
1 STROBE 选通 
2-9 DATA0-DATA7 数据0-7 
10 ACKNLG 确认 
11 BUSY 忙 
12 PE 缺纸 
13 SLCT 选择 
14 AUTO FEED 自动换行 
15 ERROR 错误 
16 INIT 初始化 
17 SLCT IN 选择输入\ 
18-25 GND 地线 
并行口信号: 
(0V)表示逻辑0,用高电平(5V)表示逻辑1(电压都是相对于18-25脚上的接地电势而言)。 
并行口硬件:并口行现在通常被集成在系统板上,25针插口上的信号可通过数据锁存器、打印状态和打印 
机控制三个寄存器(也就是三个输入/输出端口)进行程序设计和控制。计算机系统中通常有多个并行端口,它们在输入/输出系统中的地址。需要注意的是这些地址是由系统 BIOS 给出的,并不是硬件的物理 地址,所以可以通过设置 BIOS 来改变当前端口的配置,如果地址改变在程序中也必须改变。 

感性实验: 
并口可以输出5V的直流电压,我们利用它来做个简单的电路来控制一个家用电器的电路。我们主要利用并口的2-9脚, 
1、先找一条并口电缆,看电缆插头的形式,找一个与之配套的25针插座,电脑配件商店有卖(0.7元左右/只), 
2、找个发光二极管(注意正负级)把正及接到2脚,负及接到25脚, 
3、接好后插到电脑的并口上 
4、打开电脑 
在开机自检的过程中,你会看到二极管会发亮一下,然后熄灭,这个说明你可以用QB来对并口进行编程了! 
在进入系统以后(注意:必须是win98或者更低的操作系统,不能使用WinXP、2000等NT内核的操作系统,否则无法进行端口读写) 
5、启动QBASIC 
6、输入OUT &h378,&HFF 然后运行。(并口的地址一般是378H,如果不一样请在BIOS里面改一下)这时,发光二极管就会长亮,输入OUT &h378,0,发光二极管就会熄灭,至此,软件实验的准备工作已经完成,你已经能控制LPT口了。 

实用电路: 
LTP的输出电流有几百毫安,可以直接驱动小功率继电器,大家可以到电子市场上买一个5v的小型继电器,替换掉发光二极管(无正负及)然后把继电器当一个小开关来使用,用程序来控制继电器的分合, 
如果不能买到这种继电器,可以做一个电子开关,元件:光电耦合器一只,双向可控硅一只,电阻N只,把光偶的前及替换发光二极管,后级与可控硅、电阻连接,最后连接家用电器,和上面一样,可以用程序控制这个电器了。 
光藕的电气隔离性能很好,可以达到2500v。 


程序方面大家可以尽情开动脑筋
&hff 是把所有数据口都置高电平,发送的数据每个位对应每个脚,如果是2进制大家就容易理解了 ,如果只想单独控制第3脚就发送二进制0000 0010....转成10进制就是2
如果要获得当前电路的状态(通或者是断),可以用inp来读端口,比如读如数据是3,转成2进制是0000 0011 那么说明2 和 3是通

29 楼


CLS
OPEN "f:\123.txt" FOR OUTPUT AS #1
DIM a(4, 4), x(5, 2), n$(4)
FOR i = 1 TO 5: READ x(i, 1), x(i, 2): NEXT i
FOR i = 1 TO 4: READ n$(i): NEXT i
DATA 2,4,1,4,1,3,1,2,2,3,中,英,法,日
FOR a = 1 TO 2: a(1, x(a, 1)) = 1: a(1, x(a, 2)) = 1
FOR b = 3 TO 5: a(2, x(b, 1)) = 1: a(2, x(b, 2)) = 1
FOR c = 1 TO 5: a(3, x(c, 1)) = 1: a(3, x(c, 2)) = 1
FOR d = 3 TO 5: a(4, x(d, 1)) = 1: a(4, x(d, 2)) = 1
FOR i = 1 TO 4
  IF a(1, i) + a(3, i) = 2 THEN 10
     x = a(2, i) + a(3, i) + a(4, i)
     IF x = 3 THEN 1
        Y = x + a(1, i): m = m + (Y = 3)
        P = P + ABS(a(1, i) AND a(2, i))
        L = L + ABS(a(2, i) AND a(3, i))
        Q = Q + ABS(a(1, i) AND a(4, i))
1 NEXT i
IF m = -1 AND P = 1 AND L = 1 AND Q = 1 THEN
FOR i = 1 TO 4
  PRINT #1, CHR$(i + 64); ":";
  FOR j = 1 TO 4
    IF a(i, j) = 1 THEN PRINT #1, n$(j); " ";
  NEXT j: NEXT i: PRINT #1,
END IF
10 a(4, x(d, 1)) = 0: a(4, x(d, 2)) = 0: m = 0: P = 0: L = 0: Q = 0
NEXT d
a(3, x(c, 1)) = 0: a(3, x(c, 2)) = 0
NEXT c
a(2, x(b, 1)) = 0: a(2, x(b, 2)) = 0
NEXT b
a(1, x(a, 1)) = 0: a(1, x(a, 2)) = 0
NEXT a
CLOSE #1
END

30 楼

各位好,在网上看到有人用PC串口的DTR直接控制固态继电器进而控制AC220V电源开关。我想用PC并口来控制电源开关,可行么?
谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册