Вы находитесь на странице: 1из 24

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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1825 1825 1825 1 2 3 4 5 6 7 8 9 10 11 12 13 14 32 31 36 19-30,33 16 17 S S S S S S S S S E E E E S E S S

Seal
Strobe D0 D1 D2 D3 D4 D5 D6 D7 Ack Busy

Descripcin
Si est bajo ms de 0.5 s, habilita a la impresora para que reciba los datos enviados. Bit 0 de datos, bit menos significativo (LSB) Bit 1 de datos Bit 2 de datos Bit 3 de datos Bit 4 de datos Bit 5 de datos Bit 6 de datos Bit 7 de datos, bit ms significativo (MSB) 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.

PaperEnd En alto indica que no hay papel. SelectIn En alto para impresora seleccionada. AutoFeed Si est bajo, el papel se mueve una lnea tras la impresin. Error Init Select GND 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. Masa lgica Masa chasis

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
LPT1 LPT2 LPT3 (no instalado)

Direccin
0000:0408/9 0000:040A/B 0000:040C/D

Byte bajo
78 78 00

Byte alto
03 02 00

Hexadecimal Decimal
378 278 0 888 632 0

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 278h 3BCh

379h 279h 3BDh

37Ah 27Ah 3BEh

LPT1 LPT2 MDA con p. paralelo

DIRECCIN Puerto E/S


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)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1825 1825 1825 1 2 3 4 5 6 7 8 9 10 11 12 13 14 32 31 36 19-30,33 16 17 C0 DO D1 D2 D3 D4 D5 D6 D7 Control 0 Dato 0 Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Dato 6 Dato 7 S S S S S S S S S E E E E S E S S bajo alto alto alto alto alto alto alto alto alto bajo

Seal
Strobe D0 D1 D2 D3 D4 D5 D6 D7 Ack Busy

Descripcin
Si est bajo ms de 0.5 s, habilita a la impresora para que reciba los datos enviados. Bit 0 de datos, bit menos significativo (LSB) Bit 1 de datos Bit 2 de datos Bit 3 de datos Bit 4 de datos Bit 5 de datos Bit 6 de datos Bit 7 de datos, bit ms significativo (MSB) 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.

S6 Estado IRQ 6 S7 S5 S4 C1 S3 C2 C3 Estado 7 Estado 5 Estado 4 Control 1 Estado 3 Control 2 Control 3

alto PaperEnd En alto indica que no hay papel. alto SelectIn En alto para impresora seleccionada. bajo AutoFeed alto alto bajo Error Init Select 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. Masa lgica Masa chasis

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 DB25 CN5 CN4 BIT 7 Pin 9 BIT 6 Pin 8 BIT 5 Pin 7 BIT 4 Pin 6 BIT 3 Pin 5 BIT 2 Pin 4 BIT 1 Pin 3 BIT 0 Pin2

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


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

BIT 1
No usar No usar

BIT 0
No usar No usar

DB 25 usar CN6
No usar

Pin 10

Pin 12

Pin 13

Pin 15

No usar No usar

Input Input Input Input 3 2 1 0

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 2 3 4 5 6 7 3 4 5 6 7 8 9

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 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 4) 2) 1) 255)

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.

Вам также может понравиться