Está en la página 1de 48

VISUAL BASIC

Curso Bsico

CONTROL DE PUERTOS DE COMPUTADORA


USANDO

LEONARDO MEJIA R.

VISUAL BASIC
UNIVERSIDAD DE PAMPLONA 2007

ING. EN MECATRONICA

VISUAL BASIC
PUERTO PARALELO
1. &H378 8 BIT INPUT/OUTPUT I / O = d 888 (A0 - A7) 2. &H37A 4 BIT I/O = d 890 (B0 - B3) 3. &H379 5 BIT INPUT = d 889 (C3 - C7)
LEONARDO MEJIA R. ING. EN MECATRONICA

Curso Bsico

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC

Curso Bsico

LIBRERIAS DE ENLACE DINAMICO


Biblioteca de vnculos dinmicos. Para enviar y recibir datos al puerto v din paralelo de comunicaciones del computador es necesario disponer de un grupo de instrucciones en lenguaje assembler (ensamblador) los cuales suelen ) implementarse en una clase especial de archivos compilados denominados dll. dll. Dll es la sigla de biblioteca de vnculos dinmicos (dynamic link library). v dinmicos Es un archivo con extensin dll el cual contiene una o ms funciones que son compiladas, vinculadas y cargadas independientes al proceso que la ha invocado. Usualmente se guardan en el directorio Windows/System, de tal forma que el sistema conozca de antemano la ubicacin donde buscarla.
LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PROGRAMA PARA CONTROL LPT

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PROGRAMA PARA CONTROL LPT

Curso Bsico

DECALRACION DE INSTRUCCIONES IO.DLL

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PROGRAMA PARA CONTROL LPT

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PUERTO SERIAL

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PUERTO SERIAL

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PUERTO SERIAL

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PUERTO SERIAL

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PUERTO SERIAL

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PUERTO SERIAL

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

VISUAL BASIC
PUERTO SERIAL

Curso Bsico

LEONARDO MEJIA R. ING. EN MECATRONICA

UNIVERSIDAD DE PAMPLONA 2007

INSTITUTO POLITCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS INGENIERA EN INFORMTICA

Control Por Puerto Paralelo Con Visual Basic


Antes que otra cosa, cabe aclarar que el objetivo de este articulo es implementar una interfaz en Visual Basic 6 para el manejo del puerto paralelo, ya que lidiar con el modo consola es engorroso, ademas de que en el curso de Aplicaciones De Adquisicin De Datos que se imparte a los alumnos de la Ingeniera En Informtica de la UPIICSA se ensea a programar el puerto paralelo con lenguaje C. El lenguaje C fue diseado para acceder al hardware de la computadora en forma directa, es por eso que cuenta con instrucciones para la comunicacin con los puertos a muy bajo nivel, algo que no ocurre en el caso de Visual Basic, sin embargo existen varios mecanismos para poder controlar el puerto paralelo desde VB, uno de ellos podria ser el generar un ejecutable de C para cada operacin especifica sobre el puerto, por ejemplo un ejecutable que encienda el bit 1 del paralelo, otro que lo apague, y as para cada bit del puerto, si bien esto no es lo ms apropiado, podriamos facilmente invocar al ejecutable desde VB utilizando la sentencia SHELL, por ejemplo, Shell enviar_un_1_al_bit_1.exe y as para cada operacin sobre los bits del puerto, esto tambien funciona para Macromedia Flash, ya que en ActionScript, tampoco existen sentencias para el control del puerto paralelo, sin embargo con la misma idea podriamos tener un impresionante desfile multimedia con la posibilidad de controlar el puerto paralelo. Existe tambien la posibilidad de accesar al puerto paralelo por medio del DEBUG de Windows, sencillamente se crearia un archivo de procesamiento por lotes, y se invocaria desde VB. Una de las formas ms sencillas y ms limpia de controlar el puerto paralelo es con una librera de enlace dinmico (DLL) escrita en lenguaje C en la que se implementen las funciones necesarias para la comunicacin con el puerto paralelo, posteriormente se declararia dicha librera en VB, y entonces ya podriamos tener acceso desde VB a las funciones que controlen el puerto previamente escritas en C. Sin embargo existe aun una forma ms sencilla y ordenada de controlar el puerto paralelo con VB, y es mediante un control ActiveX, que encapsule todas las declaraciones y funciones importadas y nos presente una forma ms amigable de controlar el puerto, esto lo abordaremos al final, pues primero explicare como se importan las funciones de C a VB por medio de una DLL, la literatura necesaria para crear una DLL se encuentra ms que difundida en internet, y en realidad nos tomaria otro articulo sobre programacin de DLLs en C, as que no nos interesa profundizar en ello, porque en realidad ya existen muchas librerias listas para utilizarse en VB. En conjunto con este articulo se anexan varias librerias, que nos permitiran utilizar sus funciones desde VB de varias maneras. Sin embargo en este articulo unicamente describire las funciones de una de ellas, que es quizs la ms elaborada, ya que no requerimos de enviar o recibir los datos de la funcin en numeracin hexadecimal como sucede con otras. Antes de continuar, es conveniente echar un vistazo al puerto paralelo. La siguiente figura muestra el diagrama de un puerto paralelo estndar, el dibujo muestra la salida del puerto tal y como se ve al estar viendo a la computadora desde atrs, como puedes ver, est especficamente diseado para la impresora. Las flechas que salen del puerto son los comandos que se envan a sta (salto de hoja, inicializacin, seleccin, habilitacin), y tiene una entrada para cada seal que la impresora puede mandar: error, impresora no seleccionada, impresora ocupada, sin papel, y "reconocimiento" (ACK). Esto nos da un total de doce bits de salida y cinco bits de entrada, as como 8 conexiones a tierra.

Registro de estado

Lineas de datos

Tierras

INSTITUTO POLITCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS INGENIERA EN INFORMTICA

Para conocer la direccin del puerto paralelo de tu computadora ve a : Panel de control>Sistema>Hardware>Administradir de dispositivos>Puertos(COM & LPT1>Puerto de impresora>Recursos

Generalmente la direccin es 378 hexadecimal y 888 decimal, aunque puede variar de computadora a computadora, quizas sea 273 o 3BC.

INSTITUTO POLITCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS INGENIERA EN INFORMTICA

Ahora que ya conocemos el puerto paralelo podemos pasar a las instrucciones en lenguaje C para el control del puerto. Para establecer el valor se utiliza outportb(Direccin, valor); Para leer el valor del puerto se utiliza inportb(Direccin); Estas funciones estan definidas en la librera dos.h /* Ejemplo de E/S digital mediante el puerto paralelo, en mi computadora la direccin es 0x378 pero esto puede variar */ #include <stdio.h> /* Funciones de E/S directa por puertos */ #include <dos.h> void main () { /* Aqu se guardar el valor de las lineas de estado */ int byte; /* Enciende el LED al activar la primera lnea de datos (pin n 2) */ outportb(0x378, 1); /* Bucle que lee un byte de las lneas de estado */ do { byte = inportb(0x379); printf ("El valor ledo es %i\n", byte); } /* Repite hasta que se pulsa una tecla */ while( !kbhit() ); /* Apaga el LED */ outportb(0x378, 0); } En Win 2000, NT, y XP no se permite acceder al puerto paralelo, por lo cual se requiere de despreteger el puerto antes de probar este programa, esto se puede hacer con algunos programas como AllowIO que se pueden encontrar libremente en internet. Ahora es el momento de utilizar estas funciones de C en VB. Ahora bien, nos evitamos todo el rollo para crear DLLs, lo que haremos sera utilizar las funciones de una de las librerias incluidas en esta descarga, la IO.DLL, hay otras, pero esta es la que ms prestaciones tiene. Lo que haremos sera declarar la librera en un modulo de VB, y despues ya podremos utilizarla en algun formulario, siempre hay que tratar de meter todo el cdigo dentro de un modulo, ya que un programa con el codigo directamente en el formulario es mucho ms lento que un programa con el codigo en uno o varios modulos, sobre todo cuando se trata de vectores, matrices y grficos. Aqu menciono la descripcin de cada una de las funciones de esta librera, aunque en realidad no no ser necesario utilizar todas.
PortOut PortWordOut PortDWordOut PortIn PortWordIn PortDWordIn SetPortBit ClrPortBit NotPortBit GetPortBit IsDriverInstalled Envia un byte por el puerto indicado Envia una palabra de 16 bits al puerto indicado Envia una palabra de 32 bits al puerto indicado Lee un byte del puerto indicado Lee una palabra de 16 bits del puerto indicado Lee una palabra de 32 bits del puerto indicado Envia un 1 lgico por el bit del puerto indicado Envia un 0 lgico por el bit del puerto indicado Invierte el estado del bit del puerto indicado Regresa el estado del bit del puerto indicado Regresa un 0 si la librera IO.DLL esta instalada y funcionando.

INSTITUTO POLITCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS INGENIERA EN INFORMTICA

Aqu muestro como se declaran estas funciones para ser accesibles desde VB:
Option Explicit
Public Declare Sub PortOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Byte) Public Declare Sub PortWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Integer) Public Declare Sub PortDWordOut Lib "IO.DLL" (ByVal Port As Integer, ByVal Data As Long) Public Declare Function PortIn Lib "IO.DLL" (ByVal Port As Integer) As Byte Public Declare Function PortDWordIn Lib "IO.DLL" (ByVal Port As Integer) As Long Public Declare Sub SetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Sub ClrPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Sub NotPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) Public Declare Function GetPortBit Lib "IO.DLL" (ByVal Port As Integer, ByVal Bit As Byte) As Boolean Public Declare Function IsDriverInstalled Lib "IO.DLL" () As Boolean ' La siguientes 2 variables pueden tomar cualquier nombre, no son parte de la DLL. Public Dir_Lectura As Integer ' En esta variable se almacena la direccin de lectura del puerto Public Dir_Escritura As Integer ' En esta varibale se almacena la direccion de escritura del puerto

Esto debe ir en un modulo, el nombre del modulo no importa, ya que pudes mandar a llamar las funciones directamente por su nombre, sin embargo la primera vez sera conveniente que las mandaras a llamar haciendo referencia al modulo de esta forma Module1. asi VB te mostrar todas las funciones de esta librera, adems de los parametros que requiere.

Hasta aqu de esta DLL, para entender como funciona por completo solo hace falta ver el ejemplo que se anexa junto con la DLL, pero con esto ya no tendran problemas, solo recuerden tener la IO.DLL en el mismo directorio donde esta el ejecutable de VB. Comentaba que la forma ms sencilla de controlar el puerto paralelo es con un control ActiveX, un control ActiveX es un pedazo de software reutilizable, algo as como una version primitiva de una clase, ya que se puede instanciar y utilizar sus propiedades y mtodos en un formulario e incluso en paginas web. Para que quede ms claro un ejemplo de un control ActiveX es el TEXTBOX, o un LABEL, un PICTUREBOX de VB. Es decir, son componentes que podemos agregar a un formulario y ya podremos utilizarlos sin preocuparnos de todo el cdigo que hay adentro del control. En realidad estoy seguro de que el control por puerto paralelo es un medio y no un fin, creo que les seria util un control ActiveX que nos permitiera enviar datos por el puerto y realizar lecturas de los bits de estado incluso a una velocidad de 50 milisegundos por lectura, esto me parece ms sencillo, porque es un control que podemos insertar en cualquier formulario, no importando de que proyecto se trate, no hace falta hacer declaraciones de funciones, unicamente lo insertamos y comenzamos a utilizarlo, aunque obviamente si se requiere de la DLL instalada en el equipo. Me di a la tarea de construir un ActiveX para el control del puerto paralelo, y me parece que logre simplificar la tarea, veamos un ejemplo. Si aun no lo has hecho, bajate el archivo SWF (zip) que acompaa a esta descarga, en el encontraras una carpeta llamada ActiveX, entra y vers un archivo llamado PuertoParalelo.ocx, y un archivo llamado UPIICSA_VB.DLL, el OCX es nuestro control del puerto paralelo y la DLL es la librera con funciones en C, copia la DLL a la raiz de tu unidad C, la ruta del archivo debe ser C:\UPIICSA_VB.dll. Copia el archivo PuertoParalelo.OCX a tu directorio de sistema, generalmente System32. Ahora ya puedes utilizar el control del paralelo desde cualquier proyecto de visual basic, esto de copiar los archivos obviamente solo es necesario hacerse una vez por mquina.

INSTITUTO POLITCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS INGENIERA EN INFORMTICA

Abrimos el Visual Basic y escogemos un EXE estandar. Cuando ya se muestre el formulario entonces vamos al menu PROYECTO y escogemos la opcin COMPONENTES, se nos mostrara un dialogo, da clic en el boton EXAMINAR y busca el archivo PuertoParalelo.ocx, si me has hecho caso debe estar en tu directorio de sistema, localizalo, abrelo y acepta, ahora el control UPIICSAPP se encuentra al final de tu barra de controles.

INSTITUTO POLITCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS INGENIERA EN INFORMTICA

Agrega al formulario un par de botones, un label y un UPIICSAPP, no importa donde los coloques, esto solo es una demostracin.

Nuestro control de puerto paralelo

El Boton 1 (command1) es el que manipulara el bit 2 del paralelo, el boton2 (command2) lo que hara es realizar una lectura del bit 2 del registro de estado. Por ahora copia el siguiente texto, es lo que hace funcionar nuestro control, como veras es muy sencillo.
Option Explicit 'Cuando presionamos el boton se envia un 1 al bit 2 del puerto paralelo Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) UPIICSAPP1.Encender_Bit (2) End Sub 'Cuando liberamos el boton se envia un 0 al bit 2 del puerto paralelo Private Sub Command1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) UPIICSAPP1.Apagar_Bit (2) End Sub ' Cuando hacemos clic sobre el boton 2 se hace una lectura y se muestra en el label el valor del bit 1 del registro de estado Private Sub Command2_Click() UPIICSAPP1.Realizar_lectura Label1.Caption = UPIICSAPP1.Leer_Estado_Bit1 End Sub ' Cuando se carga el formulario se establece que la direccin de nuestro puerto paralelo es la 378 Private Sub Form_Load() UPIICSAPP1.Establecer_Direccin_0x378 End Sub

Debes conectar un led al puerto al que vayas a enviar el 1 lgico para poder ver que realmente funciona, o de lo contrario usa un multimetro. Si no pasa nada quizas en tu mquina la direccin sea otra, no te preocupes ya me he encargado de eso, solo debes cambiar esta instruccin :
UPIICSAPP1.Establecer_Direccin_0x378 por alguna de estas dos : UPIICSAPP1.Establecer_Direccin_0x278 UPIICSAPP1.Establecer_Direccin_0x3BC

Para ver todas la funciones que trae el control recuerda el punto, osea UPIICSAPP1. y VB te mostrara todo lo que te ofrece este control, por supuesto si detestas la UPIICSA o a tu servidor, puedes poner la propiedad visible del control a false. Sientete libre de usar este control y redistribuirlo, ojal que te haya servido, si tienes alguna duda o comentario este es mi mail alberto_ocotitla@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo

Comenzando con el Puerto Paralelo Uso, Aplicacin y Simulacin


Descripcin:
Bueno, este es el primer tutorial que escribo de cmo usar el Puerto Paralelo. En casi todas las Pcs que conozco hay un solo puerto y tiene como Registro Base 378H (As q por ahora lo tomar como un Standard). Para poder acceder al Puerto, se usara fcilmente en C o en Asm Inxx(Port) y Outxx(Port,Dato). Pero actualmente los sistemas operativos son mezquinos as q para poder acceder a ellos debemos hacerlo mediante Drivers. (ver Aqu) Pero para no preocuparnos por eso. Yo voy a usar la DLL InpOut32.Dll que mediante 2 rutinas Inp32 y Out32, Resuelve el problema. Adems aqu voy a usar 3 tipos de codificacin: Assembler, C++ y Visual Basic.

TERMINOLOGIA:

A lo largo de este tutorial, voy a ser uso de ciertos trminos que considero que seria muy bueno que se conocieran antes. Bit 1 : Significa que la salida de esta puerta es 5V. Bit 0 : Significa que la salida es 0v. Bit X : Significa que no importa el valor de este bit, puede ser 1 o 0 Bit ~X : Significa que este dato es negado. Registro: Arreglos de 8 Bits, que sirven para la configuracin del Puerto Paralelo

Un Poco de Teora.

Algo de Logica: And, Or, Xor:

Para comenzar, Estas operaciones son muy importantes, ya que nos permiten el manejo del Puerto, cambiar Bits, invertirlos, enmascaralos. Como se vera a continuacin:

And: Dato = Op1 And Op2 = Op1 & Op2

En pocas palabras, si Op2=1, no importa como sea Op1=X, la respuesta seria Dato=X ; Ahora si Op2=0 el dato=0 Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y queremos quedarnos con el dato D7, D5, y D4. y que el resto sea 0. Lo que tendramos que hacer es: Result=Byte And 10110000b;// Result = Byte & B0; Y nos quedaria: Byte = Result = D7 1 D7 D6 0 0 D5 1 D5 D4 1 D4 D3 0 0 D2 0 0 D1 0 0 D0 0 0 Operador & = And //Muy interesante

Es decir que nos sirve para colocar los bits que deseamos a 0

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 1 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo Or: Dato = Op1 Or Op2 = Op1 | Op2

En pocas palabras, si Op2=1 , no importa como sea Op1=X, la respuesta seria Dato=1 ; Ahora si Op2=0 el dato=X Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y queremos que D7,D6, D4,D2 sean 1 y el resto quede igual tendramos que hacer: Result=Byte or 11010100b;// Result= Byte | 0xD4 Y nos quedara: Byte = Result = D7 1 1 D6 1 1 D5 0 D5 D4 1 1 D3 0 D3 D2 1 1 D1 0 D1 D0 0 D0 Operador | = or //Muy interesante

Es decir, que mediante una Or podemos obligar a que la respuesta sea 1. Xor: Dato = Op1 Xor Op2 = Op1 ^ Op2 En pocas palabras, si Op2=1 , no importa como sea Op1=X, la respuesta seria Dato=~X ; Ahora si Op2=0 el dato=X. Es decir que invierte el Bit donde encuentra Op=1 Es decir que si tenemos un Byte=(D7) (D6) (D5) (D4) (D3) (D2) (D1) (D0). Y queremos invertir D7, D5, y D4. lo que tendramos que hacer es: Result = Byte Xor 10110000b;// Result = Byte ^ B0 Y nos quedaria: Byte = Result = D7 1 ~D7 D6 0 D6 D5 1 ~D5 D4 1 ~D4 D3 0 D3 D2 0 D2 D1 0 D1 D0 0 D0 Operador ^ =Xor //Muy interesante

Es decir, nos permite invertir el Bit donde esta con 1 Bueno, Espero que este claro lo de las operaciones lgicas. Si no revisen su libro de principios de sistemas digitales. :D ;)

Aprendiendo como funciona mi Puerto Paralelo:

Aqu, no voy a redundar en los pines, es decir, no voy a detallar cuales son y su numeracin, por que de eso ya hay bastante en la Web, y ya he puerto informacin en la seccin Puertos de mi web. Bueno, para manejar el puerto paralelo, hay q saber acerca de sus registros. Que Son 3 Base, Estado y Control. La direccin de la mayora de Pcs q conozco, esta en 378h. Aunque puede variar dependiendo del SO q uses. Yo lo voy ha usar como un Estndar para este tutorial.

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 2 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo

Descripcin de Registros:
Registro de Datos. (Su direccin es 378h = Direccin Base).
D7 D6 D5 D4 D3 D2 D1 D0

Este registro es de 8 bits. Es por aqu q enviamos la informacin hacia el exterior. Ejm Activamos un Led, un Rel, Motores DC, Motores a pasos. Una Alarma. Lo q nos imaginemos. O tambin recibimos datos. Ejm: Seal de un ADC para digitalizar una seal externa. Por defecto, solo funciona como Salidas, pero es posible Hacerla funcionar como entrada. Para esto hay q modificar en Bit 5 del Registro de Control. Esto se explica mas abajo con mucho mas cuidado Dependiendo del lenguaje de programacin q uses, la sintaxis es : Outxxx (378h,Dato). Ejemplo en C++ Usando la Librera InpOut32.dll

#include "stdafx.h" #include "Iostream.h" //Definimos los prototipos de nuestras funciones //Recuerdese q se debe agregar a la etapa de Link, el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) { short data; data=Inp32(0x378); cout<<"El Registro Estado es: "<<data<<"\n"; return; } Ejemplo en Assembler Para DOS .model small .code mov al,11111111b; Mandamos q todas las salidas sean 1 mov dx,378h in dx,al mov ah,4ch int 21 h end

Registro de Estado (Su direccin es 379h) (Direccin Base +1).


~S7 S6 S5 S4 S3 X X X

Este registro es de solo Entradas, pero solo es de 5 Bits. Donde: ~S7 :Significa que este dato esta invertido. X :Significa que su valor es indeterminado.

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 3 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo


Para obtener el Valor Real de Este registro, tenemos que enmascarlo, Haciendo un Xor con 128 o su equivalente 80h 0x80 para C o &H80 en Basic o en binario 10000000b , donde se observa q el bit a cambiar debe ser el 8vo. Y luego un And por 248=0xF80=11111000b (En este ultimo se observa que los valores con los que te debes quedar son los 5 ultimos). Este Registro lo podemos usar por ejemplo para ver la entrada de sensores. Donde para obtener el valor Real su Sintaxis seria: Estado = Inxxx(379H) Xor 0x80 And 0xF8. En C: Estado = (Inp32(0x379) ^ 0x80) & 0xF8 Ejemplo en C para obtener: Valor Real del Registro de Datos
#include "stdafx.h" #include "Iostream.h" //observar que se debe agregar al Link el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) { short estado; estado=Inp32(0x379); //Este codigo es el Equivalente en Asm para // Estado = (Inp32(0x379) ^ 0x80) & 0xF8 _asm xor estado,10000000b _asm and estado,0xF8 cout<<"El Registro Estado es: "<<estado<<"\n"; return; }

Registro de Control. (37Ah) (Direccin Base +2)


Este registro, es bidireccional. Sus datos son X X X X ~C3 C2 C1 C0

Ahora para invertir las seales C3, C1 y C0 Tenemos que hacerle un xor con 00001011b y para quedarnos con el dato valido, le hacemos un And con 0xF=00001111b Ejm: control = ( Outxx(37AH) Xor 1011b ) And 0xF. En C: control = (Out32(37AH) ^0x0B ) & 0xF. Este Registro es muy importante, ya nos permite colocar al puerto paralelo en modo Bidireccional. Es decir se puede tambien recibir datos por el Registro de Datos. Por ahora siempre lo mandare a 0, es decir q sea Salida. Pero si quisiera hacerlo entrada, tendra q colocar el Bit5 equivalente a C5 en 1. La Sintaxis para hacerlo Bidireccional es: Int Caso=1 o 0 ;Segn quiera 1=Input, 0=Output control= Outxx(0x37A,((caso <<5) or (Inxxx(0x37A) And 11011111) En C: control =Out32(0x37A,((caso<<5) | (Inp32(0x37A) & 0xDF Con caso<<5, significa rotamos 5 veces a la Izq a caso .

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 4 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo


//Ejemplo en C para Obtener el Valor, que tiene el Registro de Control. #include "stdafx.h" #include "Iostream.h" //observar que se debe agregar al Link el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) { short control; control=Inp32(0x37A); //El codigo que viene es Equivalente // control = (Out32(37AH) ^0x0B ) & 0xF _asm xor control,1011b _asm and control,0xF //Para Quedarnos con los 4 Primeros Bits cout<<"El Registro Control es: "<<control<<"\n"; return; }

Prueba del Puerto de cmo hacerlo Bidireccional, este programa te mostrara como queda el control si lo pones en modo Bidireccional. No hace el cambio por obvios motivos. Pero si lo quieres probar, al final coloca Out32(0x37A,control); Y ya estara en modo Bidireccional:
// bidire.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Iostream.h" //observar que se debe agregar al Link el archivo InpOut32.lib short _stdcall Inp32(short PortAddress); void _stdcall Out32(short PortAddress, short data); void main(void) { short caso,control; caso=1;//Suponiendo q lo quiero hacer Bidireccional // Dato= Outxx(0x37A,((caso <<5) or (Inxxx(0x37A) And 11011111) control=Inp32(0x37A); cout<<"Tenemos en Control: "<<control<<"\n"; _asm and control,11011111b _asm rol caso,5 //caso=caso>>5; //Roto caso 5 bits _asm mov ax,caso //control =control or caso _asm or control,ax cout<<"Lo que enviariamos seria: "<<control<<"\n"; return; }

Mas informacin de esto lo puedes encontrar en mi web, o puedes escribirme a mi e-Mail : yoelocmin@hotmail.com http://proyectosfie.tk Yoel Ocmn http://Yoelocmin.tk FIE-UNMSM Lima-Per 5 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo Haciendo lo que vinimos:


Para comenzar, he hecho un pequeo programa. En visual Basic.

Pero como!!!
Bueno, Sabemos que Visual Basic no permite manejar el Puerto Paralelo, pero nuestra DLL S, ES por eso que lo adjuntaremos, mediante un archivo obj: InpOut32.bas

'Declaramos las Variables de la Dll 'Aqu declaramos como funcin a Inp32 'Ya q lo que hace es devolvernos el valor q indica la direccin que se le Asigne. Public Declare Function Leer Lib "Inpout32.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Byte 'Aqu declaramos como una Subrutina a Out32 'Ya que no devuelve ningun valor. Public Declare Sub Escribir Lib "Inpout32.dll" _ Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Byte) 'Aqu estoy declarando esta Api de Windows, para usarlo en los retardos. Public Declare Sub Sleep Lib "Kernel32.dll" (ByVal PortAddress As Integer)

Nuestro Programita tiene la Forma:

Las caracteristicas basicas de los controles son: Control Nombre Caption Form FrmLeds Prendiendo Leds Button CmdD0 D&0 Button CmdD1 D&1 Button CmdD2 D&2 Button CmdD3 D&3 Button CmdD4 D&4 Button CmdD5 D&5 Button CmdD6 D&6 Button CmdD7 D&7 Button CmdEfe1 &Derecha Button CmdEfe1 &Izquierda Button CmdAbout &About Yoel Ocmn http://Yoelocmin.tk FIE-UNMSM Lima-Per 6 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo


Donde su Cdigo Correspondiente es:

Form1.frm

'Declaramos las variables generales Dim Dato As Byte 'Dato es usado por todos las Subrutinas Private Sub CmdAbout_Click() 'Muestro Mensaje en Pantalla: el vbCrLf es equivalente a ENTER MsgBox "Prendiendo Leds " + vbCrLf + vbCrLf + " por:" + vbCrLf + " Yoel Ocmin " + vbCrLf + vbCrLf + "yoelocmin@hotmail.com" + vbCrLf + "http://proyectosfie.tk", vbQuestion, "Acerca..." End Sub Private Sub CmdD0_Click() Dato = Leer(&H378) Xor &H1 'Cambio el Bit 1=Lsb=D0 Envia End Sub Private Sub CmdD1_Click() Dato = Leer(&H378) Xor &H2 'Cambio el Bit 2 Envia End Sub Private Sub CmdD2_Click() Dato = Leer(&H378) Xor &H4 'Cambio el Bit 3 Envia End Sub Private Sub CmdD3_Click() Dato = Leer(&H378) Xor &H8 'Cambio el Bit 4 Envia End Sub Private Sub CmdD4_Click() Dato = Leer(&H378) Xor &H10 'Cambio el Bit 5 Envia End Sub Private Sub CmdD5_Click() Dato = Leer(&H378) Xor &H20 'Cambio el Bit 6 Envia End Sub Private Sub CmdD6_Click() Dato = Leer(&H378) Xor &H40 'Cambio el Bit 7 Envia End Sub Private Sub CmdD7_Click() Dato = Leer(&H378) Xor &H80 'Cambio el Bit 8 =MsB=D7 Envia End Sub Private Sub CmdEfe1_Click() 'Efecto '1': 'Rotamos un Bit del LSB -> MSB 'VB, no tiene la funcion rotar Bit, haci que lo q 'Colocar en Dato=00000001 y multiplicarlo por 2

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 7 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo


' Dato=00000010 ->Roto un Bit 'Si lo multiplico nuevamente. ' Dato=00000100 ->Roto un Bit 'Y asi sucesivamente hasta q llega al Octavo Bit. Dato = 1 While Dato < &H80 Envia Sleep 250 'Ocaciono un retardo de 250 milisegundos Dato = Dato * 2 Wend Envia ' como no se envio el ultimo bit se lo envia recien Sleep 250 ' Dato = 0 'Reseteamos el Puerto. Envia Sleep 250 End Sub Private Sub CmdEfe2_Click() 'Efecto '2': 'Rotamos un Bit del MSB -> LSB 'VB, no tiene la funcion rotar Bit, haci que lo q 'Colocar en Dato=10000000 y Dividimos por 2 ' Dato=01000000 ->Roto un Bit 'Si lo multiplico nuevamente. ' Dato=00100000 ->Roto un Bit 'Y asi sucesivamente hasta q llega al Primer Bit. Dato = &H80 While Dato > &H1 Envia Sleep 250 Dato = Dato / 2 Wend Envia Dato = 0 Sleep 250 Envia Sleep 250 End Sub Private Sub Form_Load() 'Al iniciar a cargar el Form, reiniciamos el Puerto Escribir &H378, 0 End Sub Private Sub Envia() 'Solo envia el Dato al Pueto Paralelo Escribir &H378, Dato End Sub

Bueno Eso es Todo con Respecto a Visual Basic.

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 8 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo

Simulacin:
Bueno ahora, vamos a Hacer un Circuito y simular el programa.

Como!!!

Bueno, uno puede simular el programa hecho en Visual Basic, con otro programa. Yo voy a usar el Proteus Lite Isis. Para ello voy a necesitar la librera y modelo Respectivo. Se llaman Modelo : Port.dll y Library: Lpt02.lib Se supone que debe estar junto a este archivo, en al versin comprimida, pero si no es as bajatela de la seccion Proteus de mi pagina web. http://proyectosfie.tk OJO: Esa Librera y Modelo son de mi cosecha. Otra cosa. El Esquemtico que acompaa el archivo fue hecho con la versin 6.3 sp1, que la puedes descargar del enlace q indica mi Web en la seccin Proteus Si te bajas esa versin no te olvides colocarle los 2 parches respectivos para su buen funcionamiento.

Por Ahora, creo que con poner el Esquema es Suficiente, para la simulacin usa las Libreras:

{ACTIVE}: LED -YELLOW :Led amarillo {ACTIVE}: RES :Resistencia de 330 {LPT02}:LPT02 :Puerto Paralelo Virtual Ahora, no es necesario que explique el circuito, porque creo q con el esquema es mas que suficiente.

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 9 http://proyectosfie.tk yoelocmin@hotmail.com

Indicindose en la Programacin y simulacin con el Puerto Paralelo

Ahora dale a simular y Ejecuta el programa de prueba: Y Ya Esta:

Yoel Ocmn http://Yoelocmin.tk

FIE-UNMSM Lima-Per 10 http://proyectosfie.tk yoelocmin@hotmail.com

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

CONTROL DEL PUERTO PARALELO: CONTROL EN APLICACIONES DE ELECTRNICA - PARTE 1 Por Ing. Jos Lus Ola Garca, jlola@url.edu.gt

RESUMEN En la actualidad, muchos circuitos robticos usan el PC como medio sencillo y flexible para programarlos de manera rpida y segura o como control y procesamiento del sistema, evitando circuitos complementaria y de todos aquellos otros, que por su complejidad en instalacin y control, es necesario buscar formas ms fciles y sencillas de controlar y operar.

DESCRIPTORES Transmisin paralelo. Transmisin en serie. Puerto paralelo. Bits de datos. Strobe. Conector hembra. Conector macho. Handshaking. Proteccin de puerto paralelo. Conector DB25. Modo Nibble. Debug. LPT1.

ABSTRACT Actually, most of robotic circuits use PC to programming them in a simple, safe and flexible way. Also used like control and processing systems, this avoids extra complementary circuits. It reduces installations complexity and provides required controls in easy way to operate.

KEYWORDS Parallel transmission. Serial transmission. Parallel port. Data bits. Strobe. Female connector. Male connector. Programming. Handshaking. Parallel port protection. DB25 connector. Nibble mode. Debug. LPT1.

URL_06_MEC02.doc

1 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

CONTROL DEL PUERTO PARALELO: CONTROL EN APLICACIONES DE ELECTRNICA. Parte 1

INTRODUCCIN El presente articulo presenta temas necesarios para quien este interesado en conocer mas sobre la computadora o para proyectos de electrnica desde una PC y a la vez pueda trabajar fcilmente, sin tener que pensar demasiado, por ejemplo, como controlar y enviar datos o recibir datos, controlar dispositivos electrnicos, mecanismos, y/o proyectos de universidad como brazo mecnicos, prototipo de carritos todo terreno y control de dispositivos en general hasta proyectos que el profesor deja desarrollar a los alumnos, en este documento no se pretende ser exhaustivo tendr que investigar un poco mas pero las bases necesarias estn puestas.

PUERTO PARALELO: PRECAUCIONES! Si desea conectar dispositivos al puerto paralelo de su PC, tome en cuenta que esto implica el riesgo de daos permanentes a la tarjeta madre y debe tener presente que an los profesionales cometen errores, por lo tanto no est de ms recomendarle extremo cuidado al trabajar en el puerto paralelo. Se recomiendan conocimientos bsicos en electrnica y programacin para manipular el puerto paralelo. Este artculo tiene carcter informativo sobre como trabaja el puerto paralelo, no asumo ninguna responsabilidad por el mal uso o errores que usted pueda cometer en su instalacin, diseo y puesta en marcha de este articulo. Debo mencionar que me ha funcionado la modalidad empleada en el documento empleando mi PC personal. Los puertos de comunicacin de la PC son de particular inters para el estudioso de la electrnica y aquellos aventureros que les guste experimentar con nuevos conocimientos, la razn es que el puerto paralelo de una PC normal suele ser utilizado para controlar todo tipo circuitos electrnicos, principalmente, en actividades de automatizacin de procesos, para obtener datos o enviar datos desde o hacia el puerto, para tareas repetitivas y otras actividades que demandan precisin. ste artculo es el primero que presento para todos aquellos estudiantes de las carreras de Ingeniera en Sistemas o Ingeniera en electrnica o Ingeniera en Electricidad que mucho de esto han de necesitar para sus mas grandes retos, sus proyectos de fin de curso. No queda ah el estudio del puerto paralelo sino tambin podemos utilizarlo para comunicarnos entre dos PC.

PRINCIPIOS Conceptos bsicos Existen dos mtodos bsicos para transmisin de datos en las computadoras modernas. Transmisin de datos en serie y transmisin de datos en paralelo, el primero es un
URL_06_MEC02.doc 2 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

dispositivo capaz de enviar datos a otro dispositivo a razn de un bit a la vez a travs de un solo cable. Por otro lado, en un paralelo un dispositivo enva datos a otro dispositivo a una tasa de n nmero de bits a travs de n nmero de cables al un mismo tiempo.

Figura 1. TRANSMISIN EN PARALELO

Figura 2. TRANSMISIN EN SERIE Sera fcil pensar que un sistema en paralelo es n veces ms rpido que un sistema en serie, pero, bsicamente hay un impedimento principal que puede presentar un poco desventaja, el tipo de cable que se utiliza para interconectar los equipos. Un sistema de comunicacin en paralelo utiliza para transmitir datos ocho lneas de datos para transmitir un byte a la vez, los datos que puede manejar con su puerto paralelo son 8 como mximo y de su habilidad en la electrnica depender que pueda manipular dispositivos que necesiten mas de 8 datos de entrada, pero aqu solo nos limitamos a la transmisin de 8 datos. Hay excepciones como el estndar SCSI1 que nos permite la transferencia de datos en esquemas que van desde los ocho bits y hasta los treinta y dos bits en paralelo. En ste artculo nos concentraremos en transferencias de ocho bits ya que sta es la configuracin del puerto paralelo de una PC. Un tpico sistema de comunicacin en paralelo puede ser unidireccional) o de dos direcciones llamado bidireccional. El ms simple mecanismo utilizado en un puerto paralelo de una PC es de tipo unidireccional y es el que analizaremos en primer lugar. Distinguimos dos elementos: la parte transmisora y la parte receptora, como puede ver en la figura 1 y 2 (como T/R) La parte transmisora coloca la informacin en las lneas de datos e informa a la parte receptora que la informacin (los datos) est disponible; entonces la parte receptora lee la informacin en las lneas de datos e informa a la parte transmisora que ha tomado la informacin (los datos). (Revise nuevamente estas lneas) Aqu en la transmisin ambas partes sincronizan su respectivo acceso a las lneas de datos, el receptor no podr leer las lneas de datos hasta que la parte transmisora no se lo permita o indique y de la misma forma la parte transmisora no colocar nueva informacin en las lneas de datos hasta que la parte receptora quite la informacin y le indique a la parte
URL_06_MEC02.doc 3 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

transmisora que ya ha tomado los datos y enviado a otro punto, a sta coordinacin de operaciones se le llama acuerdo entendimiento. La coordinacin de operaciones entre la parte transmisora y la parte receptora se le llama handshaking, que en espaol es el acto con el cual dos partes manifiestan estar de acuerdo, es decir, se dan un apretn de manos.

El handshaking Para implementar el handshaking se requieren dos lneas adicionales. La lnea de strobe es la que utiliza la parte transmisora para indicarle a la parte receptora la disponibilidad de informacin. La lnea de admisin (acknowledge) es la que utiliza la parte receptora para indicarle a la parte transmisora que ha tomado la informacin (los datos) y que est lista para recibir ms datos. El puerto paralelo provee de una tercera lnea llamada busy (ocupado), sta la puede utilizar la parte receptora para indicarle a la parte transmisora que est ocupada y por lo tanto la parte transmisora no debe intentar colocar nueva informacin en las lneas de datos. Una tpica sesin de transmisin de datos se parece a lo siguiente: Parte transmisora: 1. La parte transmisora checa la lnea busy para ver si la parte receptora est ocupada. Si la lnea busy est activa, la parte transmisora espera en un bucle hasta que la lnea busy est inactiva. 2. La parte transmisora coloca la informacin en las lneas de datos. 3. La parte transmisora activa la lnea de strobe. 4. La parte transmisora espera en un bucle hasta que la lnea acknowledge est activa. 5. La parte transmisora inactiva la lnea de strobe. 6. La parte transmisora espera en un bucle hasta que la lnea acknowledge est inactiva. 7. La parte transmisora repite los pasos anteriores por cada byte a ser transmitido. Parte receptora: 1. La parte receptora inactiva la lnea busy (asumiendo que est lista para recibir informacin). 2. La parte receptora espera en un bucle hasta que la lnea strobe est activa. 3. La parte receptora lee la informacin de las lneas de datos (y si es necesario, procesa los datos). 4. La parte receptora activa la lnea acknowledge. 5. La parte receptora espera en un bucle hasta que est inactiva la lnea de strobe. 6. La parte receptora inactiva la lnea acknowledge. 7. La parte receptora repite los pasos anteriores por cada byte que debe recibir. Tanto la parte transmisora como la receptora coordinan sus acciones de tal manera que la parte transmisora no intentar colocar varios bytes en las lneas de datos, en tanto que la
URL_06_MEC02.doc 4 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

parte receptora no debe leer ms datos que los que le enve la parte transmisora, un byte a la vez.

El hardware del puerto paralelo El puerto paralelo de una tpica PC utiliza un conector hembra de tipo DB de 25 patitas (DB-25), el caso ms comn, sin embargo el estndar IEEE 1284 va ms all de describir nuevos modos de transferencia de datos, y de hecho define la interfase mecnica y las propiedades elctricas de un puerto paralelo compatible. Muchos de los problemas asociados con los dispositivos conectados al puerto paralelo surgen del hecho de que no existe un estndar para la interfase elctrica para el puerto paralelo. El conector hembra DB25 tipo A se ha vuelto el estndar para la PC o el conector anfitrin, el comit IEEE 1284 sinti que era prioritario definir estas propiedades y tener 3 conectores estndar (el primero es DB25 tipo A) segn la aplicacin y cumplir con los siguientes objetivos: 1. Asegurar la compatibilidad elctrica entre todos los dispositivos compatibles con IEEE 1284. 2. Asegurar que las interfases IEEE 1284 operaran con los perifricos, adaptadores y puertos existentes. Asegurar la operacin y la integridad de los datos a las radios de transferencia ms altos. 3. Extender la operacin a 30 pies, o 10 metros. El IEEE 1284 Tipo A tiene el patillaje de la siguiente forma

Figura 3. CONECTOR IEEE 1284 TIPO A

La siguiente tabla describe la funcin de cada patita del conector 1284 tipo A:

URL_06_MEC02.doc

5 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

Tabla 1. General del puerto paralelo


DB25
1 2 3 4 5 6 7 8 9 10

Seal
Salida 0 Dato 0 Dato 1 Dato 2 Dato 3 Dato 4 Dato 5 Dato 6 Dato 7 Estado 6

Registro
C0D0 D1 D2 D3 D4 D5 D6 D7 S6+

Tipo
Salida Salida Salida Salida Salida Salida Salida Salida Salida Entrada

Activo
Bajo Alto Alto Alto Alto Alto Alto Alto Alto Alto

Descripcin
Strobe Salida de Datos Salida de Datos Salida de Datos Salida de Datos Salida de Datos Salida de Datos Salida de Datos Salida de Datos Lnea acknowledge (activa cuando el sistema remoto toma datos) Lnea busy (si est activa, el sistema remoto no acepta datos) Lnea Falta de papel (si est activa, falta papel en la impresora) Lnea Select (si est activa, la impresora se ha seleccionado) Lnea Autofeed (si est activa, la impresora inserta una nueva lnea por cada retorno de carro) Lnea Error (si est activa, hay un error en la impresora) Lnea Init (Si se mantiene activa por al menos 50 micro-segundos, sta seal autoinicializa la impresora) Lnea Select input (Cuando est inactiva, obliga a la impresora a salir de lnea) Tierra del puerto

Sentido
Invertido directo directo directo directo directo directo directo directo directo

11

Estado 7

S7-

Entrada

Bajo

Invertido

12

Estado 5

S5+

Entrada

Alto

directo

13

Estado 4

S4+

Entrada

Alto

directo

14

Control 1

C1-

Salida

Bajo

Invertido

15

Estado 3

S3+

Entrada

Alto

directo

16

Control 2

C2+

Salida

Alto

directo

17

Control 3

C3-

Salida

Bajo

Invertido

18-25

Tierra

El segundo conector se llama 1284 tipo B que es un conector de 36 patitas de tipo centronics y lo encontramos en la mayora de las impresoras; el tercero se denomina 1284 tipo C, se trata de un conector similar al 1284 tipo B pero ms pequeo. Para cumplir estos objetivos, el estndar define los conectores, interfase elctrica, y los requerimientos de cableado. El estndar identifica 3 tipos de conectores: IEEE 1284 Tipo A: 25 pines DB25 IEEE 1284.

URL_06_MEC02.doc

6 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

IEEE 1284 Tipo B: 36 Conductores, Conector tipo Champ de Lnea central de 0.085 con seguros (Centronics). IEEE 1284 Tipo C: 36 Conductores, Conector tipo mini Champ de Lnea central de 0.050 con seguros de clip (mini Centronics). Y el IEEE 1284 B tiene el siguiente patillaje

Figura 4. CONECTOR IEEE 1284 TIPO B

Ahora identifiquemos directamente en el LPT1 el patillaje

Figura 5. CONECTOR LPT1

Observe que el puerto paralelo tiene 12 lneas de salida (8 lneas de datos, strobe, autofeed, Init, y Select Input) y 5 de entrada (acknowledge, busy, falta de papel, select y error). Nos interesa para estudiar las lneas de datos Salidas 2 a 9 as como el Strobe Salida 1, no debemos olvidar la salidas de tierra pata 18 a 25. Nos enfocamos en el estudio de estas, nuestro objetivo es nicamente para salidas de datos, en un articulo futuro tomare en cuenta como ingresar datos y como el puerto paralelo puede leerlo. Este modo de trabajo es llamado MODO COMPATIBLE. En una computadora se pueden tener hasta 3 puertos paralelo, cada uno controlado por distinto cdigo o registro, estos registros son direcciones de cada puerto y as es como la PC los reconoce, estas direcciones son base y no modificables (hasta lo que he visto ahora) que son: puerto paralelo LPT1 con

URL_06_MEC02.doc

7 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

direccin: 0x3BCh, Puerto paralelo LPT2 con direccin 0x378h y LPT3 con direccin 0x278h. Pero antes de cualquier cosa es necesario conocer la direccin base asignada al puerto paralelo de su PC, esta la asigna la BIOS y para conocerla puede seguir los siguientes pasos, vamos al men inicio, seleccionamos y busca el modo DOS o MS-DOS para abrir una ventana de Smbolo. . Estando en modo DOS teclear debug, el programa responde colocando un signo de menos para luego teclear sin espacios de por medio d040:08L8 y enter, entonces el programa debug.exe nos indica en una serie de nmeros todos los puertos disponibles en su PC, la siguiente imagen la he extrado de la mi PC personal.

Figura 6. Pantalla de en una PC en modo Debug DOS

Observe a la izquierda de la pantalla una serie de nmeros de dos dgitos (ocho en total), son los nmeros del volcado de memoria que empieza en la direccin 0040:0000. Mas a la derecha los seis pares de nmeros representa la direccin base para el puerto paralelo de mi PC, y que esta en la direccin 0x378h (BC 03 78). Luego cerramos el programa Debug.exe simplemente tecleando la letra q y presionando la tecla entrar. Para cerrar la ventana de Smbolo de MS-DOS tecleamos la palabra exit y presionamos la tecla entrar. Una vez haya comprendido este primer articulo continuaremos en una segunda parte en donde se incluye un proyecto realizado por alumnos de Universidad.

URL_06_MEC02.doc

8 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 06

CONCLUSIN Por dems est decir que en estos ltimos tiempos la computadora a sido una gran ayuda en todos los campos de la humanidad, desde su invencin con la ENIAC al realizar unos cuantos cientos de clculos hasta las supercomputadora Mainframe de las grandes industrias. La PC normal o la porttil ha sido un medio sencillo y ptimo para todo alumno en su etapa educativa. El desarrollo de sus habilidades va ahora acompaado con el desarrollo y resolucin de tareas de una forma fcil y semi-automatizada en procesos de reales tomados de la industria. Desde otro punto de vista, el objetivo siempre ha sido el mismo, la bsqueda de la automatizacin del proceso enseanza-aprendizaje.

BIBLIOGRAFA
BOYLESTAD, ROBERT & NASHELKY, LOUIS. (2003). Electrnica: Teora de Circuitos. Thomson Editores. 8 Edicin. Mxico. ENGDAHL, TOMI. (1996). Parallel port interfacing made easy. ePanorama.net. Consultado en: http://www.epanorama.net/circuits/parallel_output.html INICIAte- 2002-2007. Conexin de dos ordenadores mediante un Cable Paralelo. Consultado en: http://pio9.com/22conexparalelo.htm MICROSOFT. Cmo obtener acceso a los puertos serie y paralelo usando Visual Basic .NET. Ayuda y Soporte Tcnico. Consultado en: http://support.microsoft.com/kb/823179/es MILLN. A.J.. La Interfaz SCSI. ZATOR Systems - Tecnologa del PC. Consultado en: http://www.zator.com/Hardware/H6_3.htm OLA GARCA, JOSE LUIS. Prcticas de Electrnica, Circuitos Elctricos. Facultad de Ingeniera USAC. 3 Edicin. Guatemala. TOCCI, RONALD. Arquitectura de Computadoras. Editorial McGraw Hill, 5 Edicin. Mxico. WIKIPEDIA. Placa de pruebas. Consultado en: http://es.wikipedia.org/wiki/Placa_de_pruebas

URL_06_MEC02.doc

9 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

CONTROL DEL PUERTO PARALELO, CONTROL EN APLICACIONES DE ELECTRNICA. PARTE 2


Por Ing. Jos Luis Ola Garca, jlola@url.edu.gt

RESUMEN En este artculo el autor ilustra la forma de construir una interfase para poder a travs del puerto paralelo dirigir las acciones de un mvil robtico. Se trabaja la computadora en modo Normal SPP por ser el ms elemental y el que provee la escritura (salida de datos) del conector DB-25 del puerto paralelo desde el cual se puede controlar todo tipo de dispositivo electrnico o elctrico. Es necesario escribir un programa en lenguaje de programacin C++, Basic, Pascal, Delphi o Visual Basic y crear un circuito electrnico que utiliza una etapa de optoacopladores para evitar sobre cargas que puedan daar la tarjeta madre de la computadora.

DESCRIPTORES Puerto paralelo. Optoacopladores. Programacin de puertos. Mvil robtico.

ABSTRACT In this article author shows how to build an inter phase with parallel port for robotic mobile control. He suggests to work in SPP normal computer mode and through DB-25 connector of parallel port. It is necessary to create a computer program in C++ or Visual Basic y build electronic circuit including optocouplers to avoid electrical over exposure with several damages to computer motherboard.

KEYWORDS Parallel port. Optocoupler. Programming parallel ports. Robotic mobile.

URL_07_MEC01.pdf

1 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

CONTROL DEL PUERTO PARALELO, CONTROL EN APLICACIONES DE ELECTRNICA PARTE 2

INTERFAZ PARA EL PUERTO PARALELO Todos los puertos de la PC son de tipo llamado multimodal configurados por la BIOS de la mquina. Opciones de trabajo son Modo Normal (SPP), Modo Bidireccional, EPP y ECP. En este artculo trabajaremos en modo Normal (SPP) por ser el ms elemental y el que nos provee lo necesario para nuestro estudio permitiendo la escritura (salida de datos) en los pines 2 al 9 del conector DB-25 del puerto paralelo. La facilidad en el manejo del puerto es que se puede controlar todo tipo de dispositivo electrnico o elctrico si sabemos extrae los datos TTL que se obtienen, pero, tambin debemos saber como extraerlos porque el puerto paralelo se puede daar y dejar daos irreparables en la Tarjeta Madre, se debe proteger el puerto paralelo adecuadamente para no tener que comprar una nueva PC, el hardware del puerto paralelo est muy limitado en cuanto a su capacidad de manejo de corriente y debemos cuidar la elevacin de la misma. Puede usar el integrado 74LS244 que ayuda a aislar el puerto y no permite retorno de corriente daina o superior a las que maneja el puerto paralelo que son unos cuantos miliamperios. Ahora bien, una forma de proteger el puerto es utilizando el anterior integrado que consigue en cualquier electrnica de la ciudad, opciones hay muchas, les presente es una que me ha funcionado y a la vez con seguridad
Figura 5. Control del Puerto Paralelo con Opto-acopladores

URL_07_MEC01.pdf

2 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

Como puede observarse, se utiliza una etapa de optoacopladores que no permite el retorno de corriente alguna hacia LPT1. La razn es que el optoacoplador est formado por un diodo emisor de luz y un transistor tipo NPN. La conduccin de corriente nunca dar retorno al LPT1. Pero aun resta por amplificar la seal del LPT1 ya que ste solo entrega rangos de voltaje de 2.5 a 3 volts y el Optoacoplador (pata No. 4) devuelve estos mismos voltajes. Si queremos utilizar el LPT1 como salida TTL debemos colocar una etapa ms pero de amplificadores, segn se muestra en la siguiente figura.
Figura 6. Amplificacin de Seal de LPTL

Ahora bien, no les parece que sera bueno verificar su correcto funcionamiento? Utilizando protoboard es lo ms adecuado. Puede proceder a conectar los anteriores circuitos como se indica y luego a la salida del transistor (Figura 6 Salida TTL 5 V) debe colocar un juego de LEDS y proceder a colocar el puerto paralelo (Figura 5). En este procedimiento no se preocupe, ya que los LEDS no pueden daar el puerto paralelo (Figura 5 entrada de LPT1) y observe si se encienden (recuerde que tienen polaridad y debe probar todos). Si es as, ya tiene el primer paso. Por cierto, no olvide conectar juntas (en el BNC 25) las pines 18 a 25 que son la tierra y estas a la vez a la tierra de la fuente de 5V que alimenta los LEDS (Figura 7). Se preguntar, Cmo envo datos por el puerto? Que debo hacer? Esto se detalla ms adelante. Antes de esto deber construir el conector adecuado para el LPT1 con el conector BNC 25 Macho (Figura No. 3 y No. 8) o bien puede comprarlo (Figura No. 9).
URL_07_MEC01.pdf 3 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

Figura No. 7. LED y Puerto Paralelo

Figura No. 8. BNC 25

Figura No. 9. BNC 25 MACHO

Con ocho bits podemos escribir en el puerto un total de 256 valores diferentes (8 salidas TTL a 5V) cada uno de stos representa un byte de informacin y cada byte puede representar una accin concreta que podemos definir de acuerdo a nuestras necesidades. Para ello es necesario realizar un programa en el lenguaje de programacin que ms se le facilite: C++, Basic, Pascal, Delphi Visual Basic etc. De su habilidad depender cual se le hace mas sencillo. El programa debe permitir escribir un nmero cualquiera entre 0 y 255 (como tiene 8 bits tiene 2n posibles combinaciones o 28 = 256) de tal manera que sea posible visualizar el valor en formato binario a la salida de datos D0 a D7
URL_07_MEC01.pdf 4 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

ENVIANDO DATOS POR LPT1 A continuacin se incluye un programa escrito en C++ para ver si lo pueden implementar, el cual est tomado de la pgina www.r-luis.xbot.es. Existe la posibilidad de que pueda tener falla en algn punto, por eso usted debe revisar las lneas de programacin y ver si enva correctamente los datos. Otra forma de obtener un software (ya probado por mi persona) es consultar en la direccin de Internet mencionada.

/*Programa que enva seales al puerto de datos ingresando un nmero decimal*/ #include<dos.h> #include<stdio.h> #include<conio.h> int a; void main() {a=0; outp(888,a); clrscr(); /*variable, valor que enviare al puerto*/ /*asignando 0 a la variable a*/ /*apago todos los LED's */ /*limpio la pantalla*/

printf("Ingrese el nmero en decimal para enviar al puerto.\n"); printf("El nmero mximo permitido es 255:\n"); scanf("%d",&a); outp(888,a); /*tomo el valor y se lo paso a "a"*/ /*lo envo al puerto de datos*/

printf("tachannnn... Dato enviado...!!!\n\n"); printf("Se acab, presione una tecla para salir"); getch(); outp(888,0); /*...y hasta luego*/ /*apago todos los LED's*/}

Si quiere mejorar el programa puede trabajar en Visual Basic y consultar la bibliografa 4. Me resta indicar que lo mnimo que necesita para trabajar con el puerto paralelo ya est dado, solo resta su habilidad para programar el puerto y hacer un programa o software para el envo de datos. Recuerde que debe saber cual es la direccin del puerto paralelo a travs de debug.exe o incluso para enviar datos por medio del DOS puede teclear ? en el smbolo MS-DOS y buscar el parmetro Output de puerto. En la prxima edicin de Ingeniera primero se mostrarn un par de proyectos que se han desarrollado con alumnos de la Universidad Rafael Landvar y podrn ver que su implementacin, lejos de ser difcil, es enriquecedora en conocimientos.

URL_07_MEC01.pdf

5 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

PROYECTO: CREACIN DE UN MVIL CONTROLADO DESDE EL PUERTO PARALELO DE LA PC CONSTRUCCIN DEL MVIL Para la construccin del mvil se colocaron las dos ruedas delanteras para hacer los giros delanteros, y en la parte trasera las ruedas y el motor que controla la traccin y el retroceso. En la parte superior se coloco una lmina acrlica y sobre esta el circuito con todos los componentes MATERIALES USADOS Para la creacin de la placa base del mvil se utilizaron los siguientes Para el mvil se utiliz: componentes: Una placa perforada de material aislante. 4 resistores de 330 4 resistores de 4.7 K 2 motores de 5 Voltios 4 resistores de 100 4 ruedas 4 resistores de Un lamina acrlica (Figura No. 2) 4 Diodos tipo led 4 bateras de 1.5 Voltios para el 4 relees de 24 voltios movimiento de los motores. 4 transistores Q2 BC548 1 fuente de poder de 24 Voltios 4 optocopladores 1 puerto paralelo
Figura No.10. Mvil a Controlar

El circuito utilizado controla las seales digitales emitidas por el puerto paralelo de la computadora, este se muestra en la figura No.11. El puerto paralelo de la computadora posee 8 lneas de datos, 4 lneas de control y 5 lneas de estado (como ya he mencionado anteriormente) las cuales se manejan

URL_07_MEC01.pdf

6 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

independientemente y se les nombra como puerto de datos (data port), puerto de control (control port) y puerto de estado (status port).
Figura No. 11. Circuito de control

CONCEPTOS GENERALES EL OPTOACOPLADOR El Optoacoplador es un dispositivo que se compone de un diodo LED y un fototransistor, de manera de que cuando el diodo LED emita luz, sta ilumine el fototransistor y conduzca. Estos dos elementos estn acoplados de la forma ms eficiente posible. La corriente de salida IC (corriente de colector del fototransistor) es proporcional a la corriente de entrada IF (corriente en el diodo LED). La relacin entre estas dos corrientes se llama "razn de transferencia de corriente" (CTR) y depende de la temperatura ambiente. A mayor temperatura ambiente, la corriente de colector en el fototransistor es mayor para la misma corriente IF (la corriente por el diodo LED) La entrada (circuito del diodo) y la salida (circuito del fototransistor) estn 100% aislados y la impedancia de entrada es muy grande (1013 ohms tpico) El optoacoplador es un dispositivo sensible a la frecuencia y el CTR disminuye al aumentar sta.
URL_07_MEC01.pdf 7 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

Este elemento puede sustituir a elementos electromecnicos como rels, conmutadores. De esta manera se eliminan los golpes, se mejora la velocidad de conmutacin y casi no hay necesidad de mantenimiento.

REL El rel es un dispositivo de conmutacin activado por seales. En la mayora de las veces, se utiliza una pequea tensin o corriente para conmutar tensiones o corrientes mayores; puede ser de tipo electromecnico o totalmente electrnico, en cuyo caso carece de partes mviles. Es un sistema mediante el cul se puede controlar una potencia mucho mayor con un consumo en potencia muy reducido. Estn formados por una bobina y unos contactos los cuales pueden conmutar corriente continua o bien corriente alterna

TRANSISTOR El transistor es un dispositivo electrnico semiconductor que se utiliza como amplificador o conmutador electrnico, una pequea corriente o tensin aplicada a uno de los terminales controla o modula la corriente entre los otros dos terminales. Tiene de cambiar la resistencia al paso de la corriente elctrica entre el emisor y el receptor. El transistor tiene tres partes. Una que emite electrones (emisor), otra que los recibe o recolecta (colector) y otra con la que se modula el paso de dichos electrones (base). La aplicacin para el control a travs de la interfase se realizo en Visual Basic 6.0. Ver las Figuras No.12 y No. 13 El proceso principal de diseo es ms extenso. Por razones de espacio no ha sido colocado aqu, pero quien este interesado puede contactarme y con gusto atender sus inquietudes.

Figura No.12. Aplicacin del programa para control del mvil

URL_07_MEC01.pdf

8 de 9

Facultad de Ingeniera - Universidad Rafael Landvar

Boletn Electrnico No. 07

Figura No. 13. Mvil construido

BIBLIOGRAFA
1. ZATOR SYSTEMS. Tecnologa del PC: 6.3 La Interfaz SCSI. Consultado en: http://www.zator.com/Hardware/H6_3.htm 2. OLA GARCA, JOSE LUIS. Prcticas de Electrnica: Circuitos Elctricos. Sin Editorial, 3 Edicin 3. WIKIPEDIA. Placa de pruebas. Consultado en: http://es.wikipedia.org/wiki/Placa_de_pruebas 4. MICROSOFT. Cmo obtener acceso a los puertos serie y paralelo usando Visual Basic .NET. Soporte Tcnico. Consultado en: http://support.microsoft.com/kb/823179/es 5. TOCCI, RONALD. Arquitectura de Computadoras. Editorial McGraw Hill, 5 Edicin 6. BOYLESTAD, ROBERT & NASHELKY, LOUIS. Electrnica: Teora de Circuitos. Thomson Editores, 8 Edicin 7. ENGDAHL, TOMI. (1996-2006). Parallel port interfacing made easy: Simple circuits and programs to show how to use PC parallel port output capabilities. Consultado en: http://www.epanorama.net/circuits/parallel_ output.html

URL_07_MEC01.pdf

9 de 9

También podría gustarte