Documente Academic
Documente Profesional
Documente Cultură
www.henrycondori.cjb.net
hcondorip@gmail.com
Puno - Perú
Control de puerto paralelo utilizando Visual Basic 6.0
Versión preliminar
www.henrycondori.cjb.net
Puno – Perú
2009
PUERTO PARALELO
¿Qué es el puerto paralelo?, Tal vez esta pregunta no sea muy difícil de
responder para cualquiera que haya usado una computadora alguna vez. Es el
conector que usualmente se sitúa en la parte trasera del gabinete (mal
llamado “CPU”) de la PC, y en donde se conecta la impresora u otros
dispositivos, como escáneres y demás. Sin embargo, y en especial en
aplicaciones electrónicas, se le puede extraer mucho provecho a este medio de
comunicación entre la PC y el exterior, aprovechando con esto las grandes
prestaciones de la misma.
(Agujeros) (Pines)
Polaridad
Patita E/S Descripción
activa
1 Salida 0 Strobe
Líneas de datos (bit 0/patilla 2, bit
2-9 Salida -
7/patilla 9)
Línea acknowledge (activa cuando el
10 Entrada 0
sistema remoto toma datos)
Línea busy (si está activa, el sistema
11 Entrada 0
remoto no acepta datos)
Línea Falta de papel (si está activa,
12 Entrada 1
falta papel en la impresora)
Línea Select (si está activa, la
13 Entrada 1
impresora se ha seleccionado)
Línea Autofeed (si está activa, la
14 Salida 0 impresora inserta una nueva línea por
cada retorno de carro)
Línea Error (si está activa, hay un
15 Entrada 0
error en la impresora)
Línea Init (Si se mantiene activa por
16 Salida 0 al menos 50 micro-segundos, ésta
señal autoinicializa la impresora)
Línea Select input (Cuando está
17 Salida 0 inactiva, obliga a la impresora a salir
de línea)
18 - 25 - - Tierra – Ground
CARACTERISTICAS ELECTRICAS
Nota: Tanto GND (tierra) del puerto paralelo (18 - 25) como GND de la fuente
de 5V deben estar unidos en el circuito a un solo GND, caso contrario no
funcionará adecuadamente.
LISTA DE COMPONENTES
CI 74LS244
A B A and B
1 1 1
1 0 0
0 1 0 A B A and B
0 0 0 H H H
H L L
L H L
L L L
Tabla de funciones
74LS244
ENTRADAS
SALIDAS
1G y 2G D (señal de PC)
L L L
L H H
H X (Z)
Donde:
Además:
1G y 2G = Entradas del CI, alta o baja (L – H), por criterio se recomienda que
ambos tengan la misma entrada, bien L ó H (para nuestro ejemplo estamos
obligados a usar el nivel bajo L, es decir se debe conectar a tierra) y no 1G
alta y 2G baja o de forma inversa para evitar confusiones, de lo contrario los
resultados o salidas de las cuatro primeras salidas serán distintos o inversos a
las cuatro salidas restantes (para mayor análisis entiéndalo el diagrama
interno de este CI mostrado anteriormente).
Para reforzar este aspecto y aclarar dudas se tiene el siguiente cuadro con las
respectivas entradas y salidas con sus respectivas patillas del CI, que es en si
la descripción de la estructura interna del CI.
Patilla 2 Patilla 18
Patilla 4 Patilla 16
1G (patilla 1) Patilla 6 Patilla 14
Patilla 8 Patilla 12
Patilla 11 Patilla 9
Patilla 13 Patilla 7
2G (patilla 19) Patilla 15 Patilla 5
Patilla 17 Patilla 3
RESISTENCIA
r (l )
R=
S
3º banda 4º banda
COLOR 1º banda 2º banda
multiplicador Tolerancia
Negro 0 0 1
Marrón 1 1 10^1 1%
Rojo 2 2 10^2 2%
Naranja 3 3 10^3
Amarillo 4 4 10^4
Verde 5 5 10^5 0.5%
Azul 6 6 10^6
Violeta 7 7 10^7
Gris 8 8 10^8
Blanco 9 9 10^9
Plata 0.01 10%
Oro (dorado) 0.1 5%
Sin Color 20%
220 ohms.
Para las aplicaciones que deseemos realizar se debe tener en cuenta la caída
de tensión de cada uno de ellos, así como el valor de la resistencia que debe
tener cada led, claro si queremos que nuestro LED continúe con vida.
V fuente
R=
I
Que simplemente es la ley de Ohm; en la siguiente tabla tenemos algunos
datos de cada uno de los leds para facilitar este cálculo.
Caída de
Color Consumo
tensión
Rojo 20 mA 1.6 V
Verde, 20 mA 2.4 V
amarillo 20 mA 2.4 V
naranja 20 mA 1.7 V
También puede usted hacer la conexión mediante este conector DB25 macho
(que se muestra en las siguientes figuras) directamente conectando al puerto
paralelo hembra del CASE o “CPU” y los “cablecitos” al protoboard,
ahorrándose comprar un cable conector completo, pero esta operación
requiere de mucho cuidado.
Para muchos será familiar usar este programa, puesto que pasaremos
ligeramente de la parte del diseño a lo que nos interesa principalmente, la
programación.
Herramientas utilizadas
Propiedades
Herramienta
Nombre Caption
Prenderpin2 Pin 2
… …
prenderpin9 Pin 9
CommandButton apagarpin2 Pin 2
… …
apagarpin9 Pin 9
encendertodos Encender todos
apagartodos Apagar todos
btnsalir Salir
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte)
Private Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer)
Private Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long)
Private Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte
Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) As Integer
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal bit As Byte)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal bit As Byte)
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal bit As Byte)
Private Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal bit As Byte) As
Boolean
Private Declare Function RightPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As
Boolean) As Boolean
Private Declare Function LeftPortShift Lib "IO.DLL" (ByVal Port As Integer, ByVal Val As
Boolean) As Boolean
Private Declare Function IsDriverInstalled Lib "IO.DLL" () As Bolean
Cada una de estas funciones tiene su respectivo uso o “función”, las cuales se
describen a continuación:
==============================================================
==============================================================
Para las siguientes líneas de código debe usted recordar que en la primera
línea se declaró una variable de tipo boleano con el nombre estadopin, que
utilizaremos para reconocer el estado de cada pin, si está activo o no, este
nombre puede ser distinta, el que mejor le parezca, lo único que debe tener
en cuenta es al momento de programar.
estadopin = GetPortBit(&H378, 0)
If (estadopin = False) Then
outpuerto = &H378
SetPortBit outpuerto, 0
End If
End Sub
estadopin = GetPortBit(&H378, 1)
If (estadopin = False) Then
outpuerto = &H378
SetPortBit outpuerto, 1
End If
End Sub
estadopin = GetPortBit(&H378, 7)
If (estadopin = False) Then
outpuerto = &H378
SetPortBit outpuerto, 7
End If
End Sub
estadopin = GetPortBit(&H378, 0)
If (estadopin = True) Then
outpuerto = &H378
ClrPortBit outpuerto, 0
End If
End Sub
estadopin = GetPortBit(&H378, 1)
If (estadopin = True) Then
outpuerto = &H378
ClrPortBit outpuerto, 1
End If
End Sub
estadopin = GetPortBit(&H378, 7)
If (estadopin = True) Then
outpuerto = &H378
ClrPortBit outpuerto, 7
End If
End Sub
Bits 1 1 1 1 1 1 1 1
27 26 25 24 23 22 21 20
Decimal 128 64 32 16 8 4 2 1
Espero que el presente material sea el inicio para realizar distintos programas
y/o aplicaciones controlando el puerto paralelo; dependerá de su creatividad,
imaginación y habilidad para programar y armar circuitos electrónicos para
desarrollar proyectos de mayor complejidad; he aquí unos ejemplitos para
seguir jugando y aprendiendo el truco del puerto paralelo:
La simulación de un semáforo
Luces corredizas
Pequeños mensajes con LEDs
Vueltas circulares,
Vehículo controlado por PC, y …
Panel electrónico digital, etc.
¡ Hasta la vista… !