You are on page 1of 17

Control del Puerto Paralelo :: Puerto Paralelo – Introducción

::

Bienvenidos!!! A mi breve tutorial No podía ser de otra manera, la verdad, ja! Breve En fin, así es como nos iniciaremos, con 6 lecciones describiendo algunas de las características de este puerto y sus posibles aplicaciones es muy bueno que sepas muy bien de electrónica digital para así saber de que estoy hablando y de poder comprender los diagramas o sino pues adentrémonos a lo que es el p uerto paralelo… Quiero aclarar algo, cualquier daño ocasionado a tu ordenador es sólo tu responsabilidad, por mi parte los circuitos y programas que he utilizado en este tutorial fueron probados en mi Pentium, y todavía vive...!!! Por esta razón, no me vengas con quejas, de acuerdo...? Cualquier mensaje apreciación o comentario ya sabes, a mi correo...!!! Y si deseas contactar conmigo también. Bueno, ya está, ahora sí podemos comenzar...

Fredy Mártir (Alias Elec)

6to Electrónica

2009

BIT..En detalle..!!! Apéndice Fredy Mártir (Alias Elec) 6to Electrónica 2009 .Control del Puerto Paralelo :: Puerto Paralelo – Índice :: General Introducción Registros del Puerto Paralelo Enviando Señales por el Registro de Datos Recibiendo Señales por el Registro de Estado Comentarios finales Información sobre la librería IO Numeración binaria y Bits Numeración binaria. Byte y Nibbles .

cuidado. Aquí tienes una imagen de los conectores Cada pin de los conectores tiene un número asignado por lo cual es muy importante que al armar tus propios cables los identifiques correctamente o sufrirás unos terribles dolores de cabeza. representa un pin determinado del puerto. Bien. y sirven para conectar las descargas de los circuitos. Si la desconectas veras que tiene 25 contactos (pines de ahora en más).!!!.. Veamos ahora los tres registros Puerto de datos (Pin 2 al 9): Es el PORT 888 y es de solo escritura..Lección 1 :: Introducción. Fredy Mártir (Alias Elec) 6to Electrónica 2009 .!!! Este puerto dispone de tres registros de 8 bit cada uno (un byte). por este registro enviaremos los datos al exterior de la PC.. su nombre es Conector DB25. te sorprenderás de las cosas que se pueden hacer. y cada uno de sus bits. Los pines que van del 18 al 25 (ambos inclusive): Son para masa. la ficha en la cual están conectados estos dispositivos es conocida como puerto paralelo. Cada uno de estos registros se denomina puertos o PORT.. y es bueno que lo conozcas... no envíes señales eléctricas al ordenador por estos pines... Si estas leyendo este tutorial es por que tienes una PC en estos momentos y seguramente una impresora o un Scanner conectados a ella. En verdad se merecía toda una sección aparte a la cual le brindaremos una atención especial e iremos ampliándola cada vez más.Control del Puerto Paralelo :: Puerto Paralelo . ya que sus prestaciones son muchísimas.

si bien puedes utilizar la PC para enviar señales al exterior sin necesitad de una fuente externa.. esto es importante tenerlo en cuenta. 1. es decir. sus bits y los pines asignados a cada uno de ellos. Puerto de control (Pin 1. La tensión de trabajo del puerto es de 5 voltios. y es de lectura/escritura. 13. De los 8 bits de este registro solo se utilizan los cuatro de menor peso o sea el 0.Control del Puerto Paralelo Puerto de estado (Pin 15. 1. La imagen corresponde a un conector DB-25 (Hembra) “Es el conector que esta en la compu ten en cuenta eso” Algo más. que son el bit 7. es recomendable utilizarla y así no exiges demasiado al puerto y te evitas problemas. 5. 2 y 3. y 3 están invertidos. por lo que necesitamos una fuente estabilizada o regulada de tensión. ya que estaremos enviando señales al puerto. los bits 0. con un pequeño detalle. 6. podremos enviar o recibir señales eléctricas. En esta imagen puedes ver los tres registros. 16 y 17): Es el correspondiente al PORT 890. 4 y 3 teniendo en cuenta que el bit 7 funciona en modo invertido eso lo explicaremos después. según nuestras necesidades.. 12. de este registro solo se utilizan los cinco bits de más peso. 14. Por otro lado. 10 y 11): Es el PORT 889 y es de solo lectura. Fredy Mártir (Alias Elec) 6to Electrónica 2009 . por aquí enviaremos señales eléctricas al ordenador.

por lo pronto deberemos armarnos de unos circuitos para verificar el funcionamiento del puerto... y lo veremos a su debido momento. :: Puerto Paralelo . este permanecerá así hasta que lo cambies. Pero bueno… eso es programación.Control del Puerto Paralelo Ahora bien. uno con integrado y el otro no pero prefiero el primero para proteger mi compu pero haremos el segundo el mas simple y económico… Como hemos podido observar este circuito esta directamente conectado al puerto paralelo y aquí debemos de tener mucho cuidado de no tener un corto en algún circuito exterior porque recordemos Fredy Mártir (Alias Elec) 6to Electrónica 2009 .Lección 2 :: Enviando datos por el puerto paralelo. Para poder enviar datos desde le puerto tendremos dos circuitos muy simples... es decir que estarás enviando 5V de forma continua hasta que lo pongas a 0. si activas un bit de salida por el puerto. Aclarado esto pasemos a su construcción.

Ahora el otro circuito que es el que más prefiero… Para comenzar construiremos un circuito que nos permita enviar señales por el puerto paralelo y lo haremos utilizando diodos LEDs como el anterior. aquí tienes los datos del integrado … Este integrado tiene la ventaja de ser bidireccional. es decir todos los pines A pueden ser entradas y los B salidas si DIR (pin1 DR) se encuentra a nivel bajo (0). como el consumo de los LEDs es superior al que nos envía el puerto utilizaremos un buffer como el 74HC244 o el 74HCT245. en ese caso el estado de DR no tiene importancia.Control del Puerto Paralelo que el puerto paralelo esta conectado a la tarjeta madre así que con cuidado y precaución jijiji. Si el terminal OE (pin 19) se encuentra a nivel alto (1) el integrado pone los pines A y B con alta impedancia. En la siguiente tabla tienes los nombres de los pines y sus funciones correspondientes. es decir ni entra ni sale señal alguna. prefiero este último ya que la construcción de la placa será mas sencilla. el modo invertido se obtiene con DR a nivel alto. Fredy Mártir (Alias Elec) 6to Electrónica 2009 .

. =0p Lo que queda ahora es ver como funciona. :o) Es broma. en Delphi y todos los demás lenguajes que quieras. Fredy Mártir (Alias Elec) 6to Electrónica 2009 . que son los que utilizaremos en esta primera práctica.!!! Para no meterte en líos con las sentencias de programación las cuales puedes programarlas tu mismo en Basic. y lo haremos sencillito... yo hice uno en Visual Basic y este es el código fuente..... sino los correspondientes al puerto de datos (888) y los de masa.. en Pascal. en C.Control del Puerto Paralelo En el siguiente esquema no se representaron todos los pines del puerto. para ello recurrimos a nuestros superiores en programación ya que de eso yo no se nada.

dll.dll" (ByVal Port As Integer. ByVal Value As Byte) Public Declare Function PortIn Lib "io.Control del Puerto Paralelo Pero ante todo debemos de tener una archivo muy importe para el poder enviar y recibir datos en visual Basic y es IO. y tienen que copiarlo a la carpeta system que se encuentra en “C:\WINDOWS\system” y les enseñare como usarlo adecuadamente en Visual Basic…Y bien sigamos con lo nuestro… Primero abriremos Visual y crearemos un nuevo proyecto y añadiremos un modulo como se mues tra en la siguiente imagen… Y copiaremos este código en el modulo: Public Declare Sub PortOut Lib "io. este archivo ya va incluido en la carpeta donde esta este tutorial.dll" (ByVal Port As Integer) As Byte Aunque en la carpeta donde esta el tutorial va incluido un block de texto donde explico como agregar este código en el modulo jijiji… Fredy Mártir (Alias Elec) 6to Electrónica 2009 .

FillColor = vbGreen PortOut 888. 1 End Sub Private Sub Form_Load() PortOut 888.Control del Puerto Paralelo Muy bien ahora pasemos a agregar dos botones un Shape con forma de circulo este va hacer la animación de encendido y pagado del led .FillColor = vbRed PortOut 888. 0 ‘Cuando cargue el formulario el Puerto estara en 0 End Sub Fredy Mártir (Alias Elec) 6to Electrónica 2009 . 0 ‘Direccion del puerto y dato a mandar End Sub Private Sub cmdEncendido_Click() Shape1. mientras que los dos botones solo se van a encargar de encender y apagar el led en el exterior y tiene que quedar así o mas o menos… Ya que tenemos la interfaz dispondremos a agregar el siguiente código… Private Sub cmdApagar_Click() Shape1.

Control del Puerto Paralelo Creo que no es necesario comentarlo. ósea en la carpeta donde se encuentra este tutorial jijiji Deseas encender algún aparato de casa. al menos eso dice en el About jijiji. comentarios y el ejecutable.? No hay problema.. en concreto el programa es Parallel Port Monitor… Y con esto es suficiente.. ya no necesitaras armar los circuitos para verificar tus programas. algo como esto. está aquí. el ejecutable.. con código fuente. Antes de que me olvide.... =op Fredy Mártir (Alias Elec) 6to Electrónica 2009 ... sólo le agregas una etapa de potencia a cada salida. aunque si deseas utilizar el puerto no hay de otra tendrás que hacerlos.. supongo que su autor es Fred Bulback.. Me encontré con un pequeño programa que te chequea el estado del puerto.

. razón por la cual. Observa que para el bit 7 la conexión es invertida si lo pones a 0 el programa lo leerá como un 1.? El esquema eléctrico es el siguiente.. El circuito que construiremos será uno de los mas sencillos.Lección 3 :: Recibiendo datos por el puerto paralelo. Ahora si ya estamos en condiciones de continuar.dll pero aquí utilizaremos el comando PortIn 889… y bien sigamos con lo mero bueno la programación =oD… Primero ante todo debemos incluir un modulo y copiar el código para el control de la librería IO que ya lo mencionamos … Fredy Mártir (Alias Elec) 6to Electrónica 2009 ... si no presionas el pulsador se leerá como 0 lógico. 4 y 3) y que el bit 7 funciona en modo invertido. ya sea 0 (0 voltios) o 1 (5 voltios) no podemos dejarlo librado al azar. de acuerdo..Control del Puerto Paralelo :: Puerto Paralelo . 5. Para recibir datos en nuestro ordenador por el puerto paralelo utilizaremos su registro de estado. 6.. recuerda que solo dispones de 5 bits (7. Para lograr que nuestra computadora reconozca estos datos que le estamos enviando necesitamos un programa que logre esto y lo aremos en Visual Basic con la librería IO. si no se envía señal alguna. éste deberá estar unido a masa. solo habrá que tener en cuenta que un bit puede tener dos estados posibles.

Control del Puerto Paralelo En el formulario agregaremos un botón y un label o etiqueta y deberá quedarnos algo así … Y dispondremos a copiar el siguiente código… Private Sub Command1_Click() Dim InValue As Byte ‘Declaramos una variable tipo Byte InValue = PortIn(889) ‘Aguardamos el dato leído en la variable Label1.Caption = InValue ‘Y por ultimo la mostramos en el label End Sub Y como siempre el programa va incluido en la carpeta donde esta este tutorial donde podrán ver el código fuente y el ejecutable … Fredy Mártir (Alias Elec) 6to Electrónica 2009 .

Lección 5 :: Creo que haré la expansión a 32 salidas. Fredy Mártir (Alias Elec) 6to Electrónica 2009 . Muy bien.!!! Pero por ahora me tomaré un descanso y pasaremos a otra cosa. en la sección de Descarga tienes un programa para monitorear el estado del Puerto Paralelo... he visto por ahí gran difusión del tema así que con esto mas de ayuda ya tienes suficiente. Recomendación... hasta aquí termina este tutorial sobre el puerto paralelo asi que hasta la próxima… =oD Fredy Mártir..!!! Si por algún motivo quieres trabajar con el puerto sin arriesgarte a dañarlo..Control del Puerto Paralelo :: Puerto Paralelo .

short int GetPortBit(short int Port. Fredy Mártir (Alias Elec) 6to Electrónica 2009 .DLL proporciona un conjunto de comandos útiles para leer y escribir en los puertos de E/S. function Por tIn(Port : Word) : Byte. procedure Clr PortBit(Port : Word. function LeftPortShift(Port : Word. short int PortWor dIn(short int Port). char Data). char Bit). Simplemente lanzará la DLL y llamará a sus funciones. Val : Wor dBool) : Wor dBool. Código para copiar según el lenguaje de programación… Prototipos en C void PortOut(shor t int Port. no es necesario que el programador aprenda lenguaje ensamblador o se pelee con los drivers modo kernel. function Por tWordIn(Port : Word) : Word. char PortIn(short int Port). Esos comandos son coherentes entre 95/98 y NT/2000/XP. short int LeftPortShift(short int Port. short int Data). Este driver está embebido en la DLL y se instala con Windows NT/2000/XP si está destinado a ser el sistema operativo que hay por debajo. int Data). Bit : Byte). procedure NotPortBit(Port : Word. short int RightPor tShift(short int Port. void PortDWordOut(short int Port. Es así de fácil. Es más. char Bit). Data : Byte). Bit : Byte). function RightPortShift(Por t : Word. char Bit). int PortDWordIn(short int Port). shor t int Val).Lección 6 :: Un poco de información sobre la librería IO… Descripcion: IO. void SetPortBit(shor t int Port. procedure SetPortBit(Por t : Word. procedure PortWordOut(Port : Wor d. Data : DWor d). void PortWordOut(short int Port. Prototipos en Delphi procedure PortOut(Por t : Word. short int Val). function GetPortBit(Port : Word. Windows NT/2000/XP está acoplado con un pequeño driver modo kernel que libera los puertos para la apliación a medida que los va necesitando. function IsDriver Installed : Boolean. char Bit). Bit : Byte) : Wor dBool. void ClrPortBit(shor t int Por t. Data : Word). Bit : Byte).Control del Puerto Paralelo :: Puerto Paralelo . Val : WordBool) : WordBool. void NotPortBit(short int Port. function Por tDWordIn(Port : Word) : DWor d. short int IsDriverInstalled(). procedure PortDWordOut(Port : Wor d.

Se devuelve el MSB (bit más significativo).DLL" (ByVal Por t As Integer. ByVal Bit As Byte) Private Declare Sub ClrPortBit Lib "IO. y el valor pasado se convierte en el LSB (bit menos significativo).DLL" (ByVal Port As Integer.DLL" (ByVal Port As Integer. ByVal Bit As Byte) Private Declare Sub NotPor tBit Lib "IO. ByVal Data As Integer) Private Declare Sub Por tDWordOut Lib "IO.DLL" (ByVal Por t As Integer. GetPortBit Devuelve el estado del bit especificado.sys".DLL" (ByVal Port As Integer) As Long Private Declare Sub SetPortBit Lib "IO. PortIn Lee un byte del puerto especificado. y el valor pasado se convierte en el MSB (bit más significativo).DLL" (ByVal Port As Integer. LeftPortShift Desplaza hacia la izquierda el puerto especificado. PortDWordOut Escribe una palabra doble (32-bits) en el puerto especificado. SetPortBit Pone el bit del puerto especificado. ByVal Val As Boolean) As Boolean Private Declare Function IsDriver Installed Lib "IO. PortWordOut Escribe una palabra (16-bits) en el puerto especificado. PortOut Escribe un byte en el puerto especificado.dll.DLL" (ByVal Port As Integer. podría ser necesario apagar el driver modo kernel. PortWordIn Lee una palabra (16-bits) del puerto especificado.DLL" (ByVal Por t As Integer. El objetivo principal de esta función es asegurar que el driver modo kernel NT/200/XP ha sido instalado y está accesible.DLL" (ByVal Port As Integer) As Integer Private Declare Function PortDWordIn Lib "IO. ByVal Val As Boolean) As Boolean Private Declare Function LeftPortShift Lib "IO. ByVal Bit As Byte) As Boolean Private Declare Function RightPortShift Lib "IO. vaya al prototipo adecuado para el lenguaje que esté utilizando. abra una ventana de comandos e introduzca el comando "net stop io.DLL" (ByVal Por t As Integer.DLL" (ByVal Port As Integer.Control del Puerto Paralelo Prototipos en Visual Basic Private Declare Sub PortOut Lib "IO. Notas • Cuando instale una nueva versión de io.DLL" (ByVal Por t As Integer) As Byte Private Declare Function PortWordIn Lib "IO. ClrPortBit Limpia el bit del puerto especificado. ByVal Bit As Byte) Private Declare Function GetPortBit Lib "IO. ByVal Data As Long) Private Declare Function PortIn Lib "IO.DLL" As Boolean Descripción de las Funcione s Por favor. NotPortBit Niega (invierte) el bit del puerto especificado. ByVal Data As Byte) Private Declare Sub Por tWordOut Lib "IO. Fredy Mártir (Alias Elec) 6to Electrónica 2009 . Se devuelve el LSB (bit menos signif icativo). RightPortShift Desplaza hac ia la derecha el puerto especificado. PortDWordIn Lee una palabra doble (32-bits) del puerto especificado. Para hacer esto.dll está instalada y funcionando. IsDrive rInstalle d Devuelve un valor distinto de cero si io.

aplicando algo de las matemáticas que aprendimos en EGB.Control del Puerto Paralelo :: Puerto Paralelo . Esto se conoce como sistema binario de numeración. un bit puede tomar sólo dos valores posibles.Bit. que son 0 ó 1. Cualquier valor que mandemos al puerto. el ordenador lo transformará en ceros y unos. Hablando en lenguaje eléctrico el 0 significa 0 voltios y el uno significa 5 voltios (por aquello de la electrónica digital). que se corresponden a la siguiente tabla: Fredy Mártir (Alias Elec) 6to Electrónica 2009 . Un byte son 8 bits y un bit es la mínima cantidad de información que un ordenador puede tratar. vemos que con sólo 2 dígitos (el cero y el uno) podremos representar 2 8 valores. Como tenemos datos de 8 bits (1 byte). Es decir. supongo que sabrás que el ordenador manda los datos en forma de bytes. Byte y esas yerbas:: Pues bien. Haciendo números tendremos 256 valores.

Un byte nos permite. Veamos. El ordenador se compone de dispositivos electrónicos digitales. de forma que los dos nibbles de un byte se llaman nibble superior (el compuesto por los bits 4 a 7) e inferior (el compuesto por los bits 0 a 3). Gigabytes (1 Gb = 1024 Mb). correspondiendo con los exponentes de las potencias de 2 que reflejan el valor de cada posición. NIBBLE. Cada grupo de 8 bits se conoce como byte u octeto. que representamos matemáticamente por 0 y 1. representar 256 estados (de 0 a 255) según la combinación de bits que tomemos. Cada grupo de cuatro bits de un byte constituye un nibble. La cantidad de memoria de que dispone un sistema se mide en Kilobytes (1 Kb = 1024 bytes). Es la unidad de almacenamiento en memoria. la cual está constituida por un elevado número de posiciones que almacenan bytes. en Megabytes (1 Mb = 1024 Kb). Terabytes (1 Tb = 1024 Gb) o Petabytes (1 Pb = 1024 Tb). por lo tanto éstos solo pueden adoptar únicamente dos estados..!!! :: BIT. por tanto.Control del Puerto Paralelo :: Puerto Paralelo . contracción de «binary digit» en inglés. Byte y Esas Yerbas para Duros. BYTE.. Fredy Mártir (Alias Elec) 6to Electrónica 2009 . Cualquiera de estas unidades de información se denomina BIT. Un bit es la posición que ocupa un número el cual será "0" o "1" ya que son los únicos valores que admite..Bit. Los bits en un byte se numeran de derecha a izquierda y de 0 a 7..