0% encontró este documento útil (0 votos)
604 vistas24 páginas

db25

El documento describe el puerto paralelo estándar, incluyendo su conector físico, registros y acceso. El puerto paralelo consta de un conector DB25 con 8 líneas de salida de datos y 5 de entrada, además de líneas de control. Los registros de datos, estado y control se encuentran en direcciones de E/S consecutivas relativas a la dirección base del puerto. El registro de datos permite escribir y leer datos, el de estado sólo leer el estado de las entradas, y el de control controlar las salidas y en ocasiones usar

Cargado por

goyoelen
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
604 vistas24 páginas

db25

El documento describe el puerto paralelo estándar, incluyendo su conector físico, registros y acceso. El puerto paralelo consta de un conector DB25 con 8 líneas de salida de datos y 5 de entrada, además de líneas de control. Los registros de datos, estado y control se encuentran en direcciones de E/S consecutivas relativas a la dirección base del puerto. El registro de datos permite escribir y leer datos, el de estado sólo leer el estado de las entradas, y el de control controlar las salidas y en ocasiones usar

Cargado por

goyoelen
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introduccin

Hace aos, IBM dise el puerto paralelo para manejar impresoras desde su gama de microcomputadores
PC/XT/AT. Un conector estndar macho de 25 pines apareca en la parte trasera del PC con el solo propsito
de servir de interfaz con la impresora. El sistema operativo DOS cargado en dichos PC soporta hasta tres
puertos paralelos asignados a los identificadores LPT1, LPT2 y LPT3, y cada puerto requiere tres direcciones
consecutivas del espacio de E/S (entrada-salida) del procesador para seleccionar todas sus posibilidades.
Desde el punto de vista del hardware, el puerto consta de un conector hembra DB25 con doce salidas latch
(poseen memoria/buffer intermedio) y cinco entradas, con ocho lneas de tierra.
Desde el punto de vista del software, el puerto paralelo consta de tres registros (datos, estado y control) de 8
bits cada uno, que ocupan tres direcciones de E/S (I/O) consecutivas de la arquitectura x86.

La funcin normal del puerto consiste en transferir datos a una impresora mediante 8 lneas de salida de datos,
usando las seales restantes como control de flujo. Sin embrago, puede ser usado como un puerto E/S de
propsito general por cualquier dispositivo o aplicacin que se ajuste a sus posibilidades de entrada/salida.

Descripcin del conector fsico


La conexin del puerto paralelo al mundo exterior se realiza mediante un conector hembra DB25. Observando
el conector de frente y con la parte que tiene mayor nmero de pines hacia arriba, se numera de derecha a
izquierda y de arriba a abajo, del 1 al 13 (arriba) y del 14 al 25 (abajo).

En este conector:

8 lneas (pines) son para salida de datos (bits de DATOS). Sus valores son nicamente modificables a
travs de software, y van del pin 2 (dato 0, D0) al pin 9 (dato 7, D7).
5 lneas son de entrada de datos (bits de ESTADO), nicamente modificables a travs del hardware
externo. Estos pines son: 11, 10, 12, 13 y 15, del ms al menos significativo.

4 lneas son de control (bits de CONTROL), numerados del ms significativo al menos: 17, 16, 14 y
1. Habitualmente son salidas, aunque se pueden utilizar tambin como entradas y, por tanto, se pueden
modificar tanto por software como por hardware.
las lneas de la 18 a la 25 son la tierra.

En la siguiente tabla se detallan la nomenclatura y descripcin de cada lnea. La columna "Centronics pin" se
refiere a las lneas del conector tipo Centronics usado en las impresoras. La columna E/S se refiere al dato
visto desde el lado del PC.
DB25 Centronics Tipo
pin
pin
(E/S)

Seal

Descripcin
Si est bajo ms de 0.5 s, habilita a la impresora para que reciba los datos
enviados.

Strobe

D0

Bit 0 de datos, bit menos significativo (LSB)

D1

Bit 1 de datos

D2

Bit 2 de datos

D3

Bit 3 de datos

D4

Bit 4 de datos

D5

Bit 5 de datos

D6

Bit 6 de datos

D7

Bit 7 de datos, bit ms significativo (MSB)

10

10

Ack

11

11

Busy

12

12

PaperEnd En alto indica que no hay papel.

13

13

SelectIn En alto para impresora seleccionada.

14

14

AutoFeed Si est bajo, el papel se mueve una lnea tras la impresin.

15

32

Error

16

31

Init

17

36

Select

1825

19-30,33

1825

16

Masa lgica

1825

17

Masa chasis

GND

Un pulso bajo de ~11s indica que se han recibido datos en la impresora y


que la misma est preparada para recibir ms datos.
En alto indica que la impresora est ocupada.

En bajo indica error (no hay papel, est fuera de lnea, error no det.).
Si se enva un pulso en bajo > 50 s la impresora se reinicia.
En bajo selecciona impresora (en gral. no se usa, ya que SelectIn se fija a
alto).
Masa retorno del par trenzado.

El nombre de cada seal corresponde a la misin que cumple cada lnea con relacin a la impresora, el
perifrico para el que fue diseado el puerto paralelo. Las seales activas a nivel bajo aparecen con la barra de
negacin (por ejemplo, Strobe). Cuando se indica alto o bajo se refiere a la tensin en el pin del conector.
Alto equivale a ~5V en TTL y bajo a ~0V en TTL.

Acceso al puerto
El puerto paralelo se identifica por su direccin de E/S (entrada/salida, I/O) base y se reconoce en sistemas
MS-DOS por el nmero LPT (lp en Unix/Linux). Cuando arranca la mquina, la BIOS (Basic Input Output
System) chequea direcciones especficas de E/S en busca de puertos paralelos y construye una tabla de las
direcciones halladas en la posicin de memoria 40h:8h (o 0h:0408h) (vase direccionamiento segmentado).
Esta tabla contiene hasta tres palabras de 16 bits, cada palabra con el byte bajo primero seguido por el byte
alto. Cada palabra es la direccin de E/S base del puerto paralelo (que denominaremos LPT_BASE en lo
sucesivo). La primera corresponde a LPT1, la segunda a LPT2 y la tercera a LPT3. Hay que agregar que, en
MS-DOS tenemos el dispositivo PRN que es un alias a uno de los dispositivos LPT (generalmente es LPT1,
pero se puede cambiar con la orden MODE).
Las direcciones base estndar para los puertos paralelos son:

03BCh
0378h
0278h

chequeadas en este orden.


La siguiente tabla muestra, como ejemplo, la memoria en un PC con dos puertos paralelo instalados en las
direcciones hexadecimales 378 y 278.
Identificador DOS

Direccin

Byte
bajo

Byte
alto

LPT1

0000:0408/9

78

03

378

888

LPT2

0000:040A/B

78

02

278

632

LPT3 (no
instalado)

0000:040C/D

00

00

Hexadecimal Decimal

Registros
El puerto paralelo estndar (SPP) consta, como se mencion antes, de tres registros de 8 bits localizados en
direcciones adyacentes del espacio de E/S del PC. Los registros se definen relativos a la direccin de E/S base
(LPT_BASE) y son:

LPT_BASE + 0: registro de DATOS


LPT_BASE + 1: registro de ESTADO
LPT_BASE + 2: registro de CONTROL
REGISTROS
DATOS ESTADO CONTROL

Nombre habitual

Puerto

378h

379h

37Ah

LPT1

DIRECCIN Puerto
E/S

278h

279h

27Ah

LPT2

3BCh

3BDh

3BEh

MDA con p. paralelo

Puerto

Se har referencia a cada bit de los registros como una inicial que identifica el registro seguido de un nmero
que identifica el nmero de bit, siendo 0 el LSB (bit menos significativo) y 7 el MSB (bit ms significativo).
Por ejemplo, D0 es el bit 0 del reg. de datos, S7 es el bit 7 del reg. de estado y C2 es el bit 2 del reg. de
control.
Se indican con una barra de negacin los bits que utilizan lgica negativa. En lgica positiva un 1 lgico
equivale a alto (~5 V TTL) y un 0 lgico a bajo (~0 V TTL). En lgica negativa 1 equivale a bajo (~0 V) y 0
equivale a alto (~5 V).

Es preciso no confundir la lgica que sigue el puerto con la lgica que mantiene la impresora. Por
ejemplo, la impresora pone a alto Busy (pin 11) para indicar que est ocupada. Pero en realidad, al leer el
registro de estado, Busy la interpretamos como 0 (puesto que el pin 11 se corresponde con S7). Es decir, es
como si fuera activa en bajo (Busy).
Registro de datos (D)
El registro de estado se halla en LPT_BASE. Se puede leer y escribir. Escribir un dato en el registro causa que
dicho dato aparezca en los pines 2 a 9 del conector del puerto. Al leer el registro, se lee el ltimo dato escrito
(NO lee el estado de los pines; para ello hay que usar un puerto bidireccional).

El estndar es que las salidas sean LS TTL (low schottky TTL), aunque las hay que son de tipo OC (colector
abierto). La corriente que pueden entregar (modo source) es de 2,6 mA mximo y pueden absorber (modo
sink) un mximo de 24 mA. n el puerto original de IBM hay condensadores de 2,2 nF a masa. Las tensiones
para el nivel bajo son entre 0 y 0,8V y el nivel alto entre 2,4V y 5V.

Registro de estado (S)


El registro de estado est en LPT_BASE+1. Es de slo lectura (las escrituras sern ignoradas). La lectura da el
estado de los cinco pines de entrada al momento de la lectura.
En la tabla siguiente los nombres de los pines se dejaron en ingls porque es como generalmente se
identifican.

La lnea Busy tiene, generalmente, una resistencia de pull-up interna. El estndar es que sean entradas tipo
LS TTL.

Registro de control (C)

El registro de control se encuentra en LPT_BASE+2. Es de lectura/escritura.

Los cuatro bits inferiores son salidas. La lectura devuelve lo ltimo que se escribi a dichos bits. Son TTL a
colector abierto con resistencias de pull-up de 4.7 k, por lo que un dispositivo externo puede forzar el estado
de los pines sin daar el driver. Esto permite utilizar estas cuatro lneas como entradas. Para ello, se ponen en
alto las cuatro salidas (escribiendo 0100b, es decir, 4h, en LPT_BASE+2) lo que hace que las salidas "floten".
Ahora, un dispositivo externo puede forzar a bajo alguna de las salidas con lo que, leyendo el puerto, sabemos
si esto sucedi o no.
Es posible realizar esta tcnica en salidas totem-pole (como D0-D7) pero no se recomienda su uso porque
habra que tener un conocimiento preciso de la corriente, ya que se puede sobrecargar los transistores de salida
y daar el driver (especialmente en puertos integrados LSI).
Bit de puerto bidireccional (compatible PS/2)
El bit C5, est disponible slo si se trata de un puerto bidireccional; en los puertos comunes no se utiliza, al
igual que los bits C6 y C7. Si C5=1, el buffer de los datos de salida se pone en alta impedancia,
"desconectando" dicho buffer de los pines 2 a 9 del conector del puerto (D0 a D7). Si se escribe al registro de
datos, se escribe al buffer pero no a la salida. Esto permite que al leer el puerto, se lea el estado de las entradas
y no lo que hay en buffer. Cuando C5=0 el puerto retorna al modo salida, su estado por defecto.
En las computadoras IBM PS/2, para habilitar el puerto paralelo bidireccional, adems de lo antes descrito, se
debe poner a 1 el bit 7 del registro del puerto 102h (opciones de configuracin).
En computadoras que no tengan puerto paralelo bidireccional compatible PS/2 hay que modificar uno o ms
bits de algn puerto especfico correspondiente al chipset de la placa. A veces se habilita por el Setup o por
jumper en la placa del puerto.
Bit de interrupcin
En trabajos normales de impresin ni el BIOS ni el DOS hacen uso de la interrupcin. El hecho de poseer una
lnea de interrupcin que est conectada directamente al PIC (Programmable Interrupt Controller), lo hace
muy til para experimentacin en data-loggers por ejemplo. El bit de interrupcin est conectado al control de
un buffer de tres estados. Cuando C4=1, se activa el buffer y su entrada, S6, se conecta a la lnea IRQ (en

general es IRQ7 o IRQ5). La lectura del bit, nos devuelve el estado del mismo (es decir si el buffer est en alta
impedancia o no).
Se producir una interrupcin, cuando haya un flanco descendente en el pin correspondiente a S6. A
continuacin, se describen los pasos para poder utilizar interrupciones.

Finalmente, se muestra una tabla que rene las caractersticas hardware y software del puerto paralelo.
DB25 Centronics
Tipo
Registro bit
Activo
pin
pin
(E/S)

Seal

Descripcin

C0

Control
0

bajo

Strobe

Si est bajo ms de 0.5 s, habilita a la


impresora para que reciba los datos enviados.

DO

Dato 0

alto

D0

Bit 0 de datos, bit menos significativo (LSB)

D1

Dato 1

alto

D1

Bit 1 de datos

D2

Dato 2

alto

D2

Bit 2 de datos

D3

Dato 3

alto

D3

Bit 3 de datos

D4

Dato 4

alto

D4

Bit 4 de datos

D5

Dato 5

alto

D5

Bit 5 de datos

D6

Dato 6

alto

D6

Bit 6 de datos

D7

Dato 7

alto

D7

Bit 7 de datos, bit ms significativo (MSB)

10

10

S6 Estado
IRQ
6

alto

Ack

Un pulso bajo de ~11s indica que se han


recibido datos en la impresora y que la misma
est preparada para recibir ms datos.

11

11

S7

Estado
7

bajo

Busy

En alto indica que la impresora est ocupada.

12

12

S5

Estado
5

alto PaperEnd En alto indica que no hay papel.

13

13

S4

Estado
4

alto SelectIn En alto para impresora seleccionada.

14

14

C1

Control
1

bajo AutoFeed

15

32

S3

Estado
3

alto

Error

16

31

C2

Control
2

alto

Init

17

36

C3

Control
3

bajo

Select

1825

19-30,33

1825

16

Masa lgica

1825

17

Masa chasis

GND

Si est bajo, el papel se mueve una lnea tras la


impresin.
En bajo indica error (no hay papel, est fuera
de lnea, error no det.).
Si se enva un pulso en bajo > 50 s la
impresora se reinicia.
En bajo selecciona impresora (en gral. no se
usa, ya que SelectIn se fija a alto).
Masa retorno del par trenzado.

Miscelnea
Protocolo del puerto con la impresora
El handshaking ("apretn de manos" o protocolo) es un conjunto de reglas que ambos extremos de un sistema
de comunicacin tienen que seguir para que la comunicacin sea correcta. El puerto paralelo, usado con una
impresora, transmite datos y transmite/recibe las seales de protocolo. Las principales son Strobe, Ack y
Busy. La secuencia a seguir para enviar datos sera:
1.
2.
3.
4.
5.

Colocar el byte a enviar en el registro de datos.


Verificar que la impresora no est ocupada (Busy = bajo, S7 = 1).
Indicarle a la impresora que acepte los datos (Strobe = bajo , C0 = 1, pulso >5us).
En ese instante la impresora indica que est ocupada recibiendo los datos (Busy = alto, S7 = 0).
Finalmente, la impresora enva un pulso de aceptacin indicando que se recibieron los datos y que se
puede volver al paso 1 (Ack = bajo, S6 = 0, pulso de entre 5 s y 15 s segn impresora).

Las otras seales sirven para verificar el estado de la impresora (Error, PaperEnd), para reiniciarla (Init) y
para configurarla (AutoFeed, Select).
En los nuevos puertos, estas seales adquieren otra funcin, a veces parecida y otras totalmente distintas.
Interrupciones con el puerto paralelo
En primer lugar, se debe habilitar el buffer que conecta la lnea ACK con la lnea IRQ. Esto lo hacemos
poniendo a 1 el bit 4 del registro de control (LPT_BASE+2). Luego se debe preparar una ISR (Interrupt
Service Routine) que atienda la interrupcin recordando enviar la seal EOI (20h) al registro de control del
PIC (puerto 20h) al salir de la rutina. La interrupcin software corresponde a la nmero 0Dh para IRQ5 y 0Fh
para IRQ7. Finalmente se habilita con 0 la interrupcin IRQ5 (o IRQ7) escribiendo al bit 5 (o 7) del registro
de interrupciones del PIC (puerto 21h).
Para desinstalar la ISR, se deshabilita la IRQ5 (o IRQ7) escribiendo un 1 al bit 5 (o 7) del registro de
interrupciones del PIC (puerto 21h). Luego se hace que C4=0.
Velocidad
Un puerto paralelo ISA normal toma un ciclo-ISA para leer o escribir. En un sistema cuya velocidad de bus
sea 1,3 Mhz, se puede decir que la lectura se puede hacer cada 1 s (idealmente, ya que siempre existen otras
instrucciones software, etc; En la prctica pueden ser desde 1.2 s a 2 s). Algunos puertos soportan un modo
"turbo" que elimina los 3 estados de espera de la CPU, con lo que la velocidad de lectura/escritura del puerto
se duplica (2,7 MHz).

Re: Programa en Visual Basic para comunicacin en paralelo

Cita:
katarata escribi:
Leis algo acerca de la libreria que mencionas, pero me dicen que la librerria io.dll es
mejor para el XP. Sabes algo al respecto?

No es ni mejor, ni peor, es otro mtodo simplemente. La librera io.dll


(http://www.pablin.com.ar/computer/programa/vb/io.dll) es bastante verstil pero claro
est, te pide ms conocimientos a la hora de programar los eventos que van necesitndose.

Aqu te dejo algunas declaracionesq ue tendrs que emplear:

Private Declare Function PortWordIn Lib "IO.DLL" (ByVal Port As Integer) 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 Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long
Private Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
Private Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data 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 Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As
Integer)
Private Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte)
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 Boolean

Programa y cdigo fuente en VB6 que permite controlar el puerto paralelo , enviandole seales para
activar dispositivos conectados a este.

Incluye pequeas rutinas de ejemplos para cuando se conecte el puerto paralelo a un juego de luces.
Estas rutinas hacen destellar las luces de tal manera de formar distintos motivos.

Para armar el circuito, hay muchas posibilidades, la mas econmica que puedes usar para probar el
programa y mandar seales al puerto consite en utilizar diodos led

Los diodos led son como lucesitas que podemos encontrar en cualquier lado como por ejem las luces
que indican el encendido de tu pc, Estas lucesitas las consigues por centavos en cualquier casa de
electrnica y para armar el circuito todo lo que tienes que hacer es conectar los diodos led poniendo
una pata seguida de una resistencia de 470 ohms en la salida de color verde del cable paralelo y otra
pata en el polo negativo de la pc o tambien el negativo de una alimentacion externa (esta
alimentacion externa debe ser un transformador que entregue corriente continua, yo prob con uno
de 12v y anduvo joya, al estar enchufado el tranformador en la misma linea que la pc los negativos
son los mismos y lo puedes tomar facilmente de ahi gracias por el comentario)
Claro que para conseguir las salidas del cable paralelo necesitaras sacrificar algn cable de alguna
impresora vieja cortandole la punta que va a la impresora, con esto podras ver un monton de
cablecitos de distintos colores , como los que muestra la figura arriba
Volviendo al circuito, ten en cuenta que debes coincidir las patas negativas de los diodos led con el
polo negativo de la alimentacion externa, Para identificar cual es el polo negativo del led , debes
mirarlo a la luz y veras que en el interior del led el polo negativo es el que tiene una plaquita mas
grande, mietras que el positivo es solo un palito.

Para controlar las entradas( identificar cuando alguien presiona un boton) solo debes poner un
interruptor entre alguna de las entradas S (rojas) y masa externa
Armar todo este circuito te costara aprox 1 dolar (dependiendo tu pais), pero como ves es super
econmico y te permitira experimentar con el puerto antes de pasar a un circuito mayor que te
permita controlar dispositivos

Foros electrnica
http://www.forosdeelectronica.com/f26/usar-puerto-paralelo-c-visual-basic-lab-view-2259/

Proyecto: Interfaz para el Puerto Paralelo


Fecha: 3 de Setiembre de 2000
Autor: Todorobot
IMPORTANTE: Ya est disponible la nueva versin del software de control para Windows 9x, NT, 2000 y XP

Introduccin:
El puerto paralelo de una PC es ideal para ser usado como herramienta de control de motores, rels, LED's, etc. El mismo posee un
bus de datos de 8 bits (Pin 2 a 9) y muchas seales de control, algunas de salida y otras de entrada que tambin pueden ser usadas
fcilmente.
Las PC's generalmente poseen solo uno de estos puertos (LPT1) pero con muy poco dinero se le puede adicionar una tarjeta con un
segundo puerto paralelo (LPT2).
En reglas generales la direccin hexadecimal del puerto LPT1 es igual a 0x378 (888 en decimal) y 0x278 (632 en decimal) para el
LPT2. Esto se puede verificar fcilmente en el setup de la PC o bien en el cartel que generalmente la PC muestra en el momento del
booteo. Puede darse el caso que el LPT1 asuma la direccin 0x3BC (956 en decimal) y el LPT2 0x378, en ese caso habr que tratar
de corregir el setup y/o los jumper de las tarjetas en caso que sea posible. De lo contrario se puede modificar el software que
veremos mas adelante para aceptar esas direcciones.

Breve descripcin del puerto paralelo:


El puerto paralelo de un PC posee un conector de salida del tipo DB25 hembra cuyo diagrama y seales utilizadas podemos ver en
la siguiente figura:

Si deseamos escribir un dato en el bus de salida de datos (pin 2 a 9) solo debemos escribir el byte correspondiente en la direccin
hexadecimal 0X378 (888 en decimal) cuando trabajamos con el LPT1 y 0x278 (632 en decimal) cuando trabajamos con el LPT2.
Los distintos pins (bits) de salida correspondientes al bus de datos no pueden ser escritos en forma independiente, por lo que siempre
que se desee modificar uno se debern escribir los ocho bits nuevamente.

Para leer el estado de los pins de entrada (10, 12, 13 y 15) se debe realizar una lectura a la direccin hexadecimal 0x379 (889 en
decimal) si trabajamos con el LPT1 o bien leer la direccin 0x279 (633 en decimal) si trabajamos con el LPT2. La lectura ser
devuelta en un byte en donde el bit 6 corresponde al pin 10, el bit 5 corresponde al pin 12, el bit 4 corresponde al pin 13 y el bit 3
corresponde al pin 15.
En la siguiente tabla se puede ver lo antedicho en una forma ms grfica:

Escritura: Salida de Datos


Escritura en direccin 0x378 (LPT1) o 0x278 (LPT2)
DATO

BIT 7

BIT 6

BIT 5

BIT 4

BIT 3

BIT 2

BIT 1

BIT 0

DB25

Pin 9

Pin 8

Pin 7

Pin 6

Pin 5

Pin 4

Pin 3

Pin2

CN5

TTL 7 TTL 6 TTL 5 TTL 4 TTL 3 TTL 2 TTL 1 TTL 0

CN4

No usar

HP 6

HP 5

HP 4

HP 3

HP 2

HP 1

HP 0

Lectura: Entrada de Datos


Lectura en direccin 0x379 (LPT1) o 0x279 (LPT2)
DATO

BIT
BIT
BIT 6 BIT 5 BIT 4 BIT 3
7
2
No

DB 25 usar
CN6

No
usar

Pin
10

Pin
12

Pin
13

Pin
15

Input Input Input Input


3
2
1
0

BIT
1

BIT 0

No
usar

No
usar

No usar

No
usar

No
usar

No usar

Interfaz:
En la archivo IPP01-CIRCUIT.PDF podemos apreciar el circuito correspondiente a la interfaz para el puerto paralelo.
La interfaz nos provee 8 salidas TTL, 7 salidas de potencia (500ma) y cuatro entradas TTL. Es importante tener en cuenta
que las salidas TTL entregan una tensin de 5v y solo se les puede exigir un mnimo de corriente, apenas suficiente para
activar un transistor o bien un par de compuertas TTL.
As mismo las entradas TTL deben ser alimentadas con una tensin mxima de 5v o de lo contrario el chip resultar daado.
Esta tensin se obtiene desde VDD a travs del regulador U1 (7805).
Las 7 salidas de potencia no son mas que la amplificacin mediante un array de transistores Darlington (ULN2003) de las
salidas TTL 0 a 6 (la salida 7 no es usada). Este chip puede drenar una corriente mxima de 500ma, lo que es suficiente para
activar un LED, un rel y hasta un motor DC de bajo consumo (tipo motor de grabador).
La teora de funcionamiento es muy simple, solo se usan unas compuertas del tipo Buffer (74HC245) para poder conectarnos
con seguridad al puerto paralelo, y un array de transistores Darlington (ULN2003) para brindar una salida de mayor
potencia.

Cabe aclarar que los dos integrados 74HC245 se alimentan del regulador de voltaje 7805, el cual se encarga de reducir la
tensin de entrada (VDD) a 5v (Vcc). La tensin VDD debe estar comprendida entre 9 y 12v.
La tensin de entrada VHH alimenta directamente al ULN2003 para obtener mayor voltaje en caso de querer manejar un
rel o bien un pequeo motor. La tensin VHH debe estar comprendida entre 3 y 15v. VHH podr conectarse directamente
a VDD (y de esa forma usar solo un fuente de alimentacin) siempre que esto no provoque problemas de ruido.
En los siguientes diagramas se pueden apreciar un ejemplo de conexionado de un LED y un Rel a las salidas de potencia.
En forma anloga podramos conectar tambin un pequeo motor DC.

Programa para manejo de la interfaz:


El siguiente es un programa hecho en Qbasic en donde se puede apreciar como se debe trabajar con el puerto paralelo y
como se puede sacar provecho de la interfaz.
Para visualizarlo o bajarlo a la PC haga click aqu. Tambin puede bajar el ejecutable (.exe) directamente si as lo desea
haciendo click aqu.
El funcionamiento de este software es muy simple y bsico. Primero le solicitar que elija el puerto a usar (LPT1 o LPT2).
Luego puede elegir "Leer Port" para recuperar el estado de los pins de entrada (0 a 3) o bien "Escribir Port" para cambiar
el estado de los pins de salida (0 a 7). Recuerde que si cambiamos el pin de salida 0 , tambin se altera el mismo pin en la
salida de potencia (solo pins 0 a 6, el 7 no tiene salida de potencia).
Mediante el anlisis de este programa Basic se puede intentar hacer programas mas elaborados en lenguajes ms modernos.

Programa "Control para la IPP01" para W9x - NT - 2000 - XP


Aqu puedes bajar un programa realizado en VisualBasic (versin 6.0) que te permitir controlar las salidas y ver el estado
de las entradas disponibles en la Interfaz para Puerto Paralelo compatible con Windows 95, 98, ME, NT, 2000 y XP.
Para bajarlo a tu PC has click aqu. Tambin puede bajar los fuentes haciendo click aqu.
En nuestra seccin DOWNLOAD podrs encontrar las DLL necesarias para manjar el puerto paralelo desde el entorno
Windows. La misma est siendo utilizada en el programa "Control para la IPP01" arriba mencionado.

Conclusin:
Esta interfaz es tan sencilla como til, ya que nos permite realizar todo tipo de pruebas sin la necesidad de usar un
microcontrolador. Y de paso nos permite tomar experiencia en el manejo de seales mediante equipos microprocesados.
Podemos por ejemplo conectar un pequeo robot y tomar datos de sus sensores y analizar las decisiones a tomar mediante
un programa hecho en cualquier lenguaje de PC actual.

IMPORTANTE
Al conectar o desconectar la interfaz al puerto paralelo de la PC, se debe asegurar de que tanto la PC
como la interfaz se encuentren apagadas. Caso contrario el puerto paralelo de la PC podra llegar a
daarse permanentemente.
http://www.todorobot.com.ar/proyectos/paralelo/paralelo.htm

Un puerto paralelo es una interfaz entre un ordenador y un perifrico cuya principal caracterstica es que los
bits de datos viajan juntos enviando un byte completo o ms a la vez. Es decir, se implementa un cable o una
va fsica para cada bit de datos formando un bus. El cable paralelo es el conector fsico entre el puerto
paralelo y el perifrico. En un puerto paralelo habr una serie de bits de control en vas aparte que ir en
ambos sentidos por caminos distintos. En contraposicin al puerto paralelo est el Puerto serie, que enva los
datos bit a bit por el mismo hilo.

Cmo funciona el Puerto Paralelo?


La mayora de los puertos paralelos de la parte posterior de las computadoras compatibles poseen un conector
DB-25. Esto es extrao, puesto que este conector es el de serie que se utiliza para los interfaces serie. El
conector es normalmente hembra (tiene orificios en lugar de patitas) para distinguirlo de los conectores serie
que son habitualmente machos y que puede tener tambin la computadora. Sin embargo, utiliza un conector
DB-25 macho para su interfaz paralelo (por ser algo diferente).
La funcin de cada terminal del conector DB-25 se muestra en la siguiente imagen. Las seales que ocupan
esas terminales se pueden dividir en cuatro grupos bsicos: tierras, salidas de datos, entradas de dialogo y
salidas de dialogo. En la imagen las tierras se indican con crculos, las entradas de dialogo se indican con
flechas que apuntan al conector y las salidas (tanto de datos como de dialogo) tienen flechas que apuntan
hacia afuera del conector. (Note que algunas de las lneas tienen una abreviatura convencional que se indica
entre parntesis.)

Librera Inpout32.dll (Visual Basic.NET)


Para trabajar con puertos bajo VB.NET es necesario el uso de una librera que contenga funciones de Acceso a
las direcciones de los puertos. Esta librera es diferente dependiendo del tipo de puerto a trabajar. La librera
INPOUT32.DLL contiene las instrucciones necesarias para el manejo de los Puertos Paralelos.
Para accesar al puerto paralelo en Windows se requiere hacer uso de unas funciones que vienen en la librera
inpout32.dll.
Poner la librera correspondiente en la carpeta c:\windows\system32
Agregar el mdulo inpout 32.bas al programa realizado en Visual Basic y listo ya puedes hacer uso de las
funciones para accesar al puerto paralelo:
Inp Para leer el puerto (Entrada)
Out para escribir al puerto (Salida)

Desarrollo de la prctica

Material:

Cautn
Estao
Pasta para soldar
Protoboard
2 Mts cable UTP
2 Mts cable (1 hilo)
5 Leds
1 Conector Paralelo Macho

Procedimiento:
Primero pelamos 10 cm del cable UTP por ambos extremos y separamos los hilos, de la misma forma pelamos
1 cm de cada uno de los hilos de cada extremo, una vez realizado esto procedemos a soldar los hilos del cable
en el conector macho, para esto se deben localizar los pines en el conector que estn enumerados, localizamos
pines del 2 al 9 que son los utilizados para la transferencia de datos, una vez localizados los pines procedemos
a soldar ,esto se hace en el orden que ustedes prefieran siempre y cuando recuerden la secuencia, una vez
hecho esto tomamos el cable de un hilo y pelamos en cada extremo 1 cm. Una vez hecho esto localizamos en
el conector el pin 25 que es el de tierra (del pin 18 al 25 son tierra).

Una vez realizado todo este procedimiento pasaremos a la protoboard, en la protoboard tenemos que localizar
la serie negativa que esta de azul una vez encontrada hay que introducir el cable de tierra en el primer orificio
de la seria del polo negativo, una vez hecho esto tomamos los leds y ubicamos el polo negativo que es la patita
ms corta y la insertamos en la columna negativa y el positivo la insertamos en la columna A y que ambas
filas coincidan y as con los leds restantes sucesivamente luego pasamos a conectar el cable UTP ala
protoboard para esto tenemos que llevar el mismo orden que en el conector paralelo respectivamente
,localizamos el primer hilo a introducir y lo insertamos en la columna B de la forma que la fila del led
coincida con este y as sucesivamente con los dems con su respectivo orden .

Programa
Para poder manejar puertos en Visual Basic.Net es necesario contar con la librera Inpout32.dll de la cual
hablamos anteriormente reiterando que es necesario Poner la librera correspondiente en la carpeta
c:\windows\system32 una vez hecho eso tenemos que crear una clase en nuestro proyecto donde se importa la
librera .
Imports System
Imports System.Runtime.InteropServices
Public Class Puerto
_
Public Shared Function output(ByVal adress As Integer, ByVal value As Integer) As
Boolean
End Function
End Class

Una vez hecho esto pasamos a nuestro formulario e insertamos un botn, en este botn probaremos si todo
sale correctamente en el botn ira el siguiente cdigo:
Private Sub Probar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Probar.Click
Puerto.output(888, 255)
End Sub

Para poder encender el led numero 1 ,2 y 3 de nuestra Protoboard necesitamos el siguiente codigo que ira
dentro de un boton como se muestra respectivamente :
Private Sub Led1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Led1.Click
Puerto.output(888, 1)
End Sub
Private Sub Led2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Led22.Click
Puerto.output(888, 2)

End Sub
Private Sub Led3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Led3.Click
Puerto.output(888, 4)
End Sub

888 porque es la direccin hexadecimal que utiliza VB.NET para mandar seal al puerto y 1,2 y 4 por que es
la direccin donde esta ubicada el primer led para poder saber la direccin del led se debe hacer lo siguiente:
Los pines se enumeraran del 0 en adelante en este caso del 0 al 7 tomando referencia los pines del conector del
2 al 9 se realiza la siguiente operacin:
Led Pin
1

Tomando en cuenta la tablita anterior se realiza lo siguiente:


2^0 (led)=1 (direccion en VB.NET)
2^1=2
2^2=4
2^3=8
2^4=16
2^5=32
2^6=64
2^7=128
Esa es toda la operacin y as se realiza sucesivamente.
Este es el ejemplo, para esto se necesita inserta 8 botones y 1 timer el formulario y la clase anteriormente
mencionada.
Public Class Form1
Dim i As Integer = 0

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load
Puerto.output(888, 0)
End Sub
Private Sub Form1_FormClosed(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.FormClosedEventArgs) Handles MyBase.FormClosed
Puerto.output(888, 0)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Puerto.output(888, 1)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button2.Click
Puerto.output(888, 2)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button3.Click
Puerto.output(888, 4)
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button4.Click
Puerto.output(888, 8)
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button5.Click
Puerto.output(888, 16)
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button6.Click
Puerto.output(888, 0)
Timer1.Stop()
End Sub
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button7.Click
Puerto.output(888, 255)
Timer1.Stop()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Timer1.Tick
TextBox1.Text = CStr(i)
i = i + 1
If i = 1 Then
Puerto.output(888, 1)
End If
If i = 2 Then

Puerto.output(888,
End If
If i = 3 Then
Puerto.output(888,
End If
If i = 4 Then
Puerto.output(888,
End If
If i = 5 Then
Puerto.output(888,
End If

2)
4)
8)
16)

If i = 6 Then
Puerto.output(888, 255)
End If
If i = 7 Then
Puerto.output(888, 16)
End If
If i = 8 Then
Puerto.output(888, 8)
End If
If i = 9 Then
Puerto.output(888,
End If
If i = 10 Then
Puerto.output(888,
End If
If i = 11 Then
Puerto.output(888,
End If
If i = 12 Then
Puerto.output(888,
End If

4)
2)
1)
255)

If i = 13 Then
i = 0
End If
End Sub
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button8.Click
Timer1.Enabled = True
End Sub
End Class

Este programa lo que realiza es encender led por led segn el botn que se presione correspondientemente a
cada led de 1 al 5, con otro botn enciende todos los leds, otro desactiva el led cuando alguno esta encendido
y por ltimo se hiso una pequea muestra de cmo se podra implementar con un timer para que cada led
encienda cada decima de segundo uno tras otro.

Con esto damos por concluido este tutorial que espero le sirva y sea de su agrado cualquier
duda o sugerencia hacerla con toda confianza.

También podría gustarte