P. 1
Usando El Puerto Paralelo de Una PC

Usando El Puerto Paralelo de Una PC

|Views: 476|Likes:
Publicado poraugustrush2291

More info:

Published by: augustrush2291 on Jul 14, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOCX, PDF, TXT or read online from Scribd
See more
See less

07/14/2014

pdf

text

original

Usando el puerto paralelo de una PC

Proyecto: Interfaz para el Puerto Paralelo Fecha: 3 de Setiembre de 2000 Autor: Todorobot IMPORTANTE: Ya está disponible la nueva versión del software de control para Windows 9x, NT,
2000 y XP

Introducción:
El puerto paralelo de una PC es ideal para ser usado como herramienta de control de motores, relés, LED's, etc. El mismo posee un bus de datos de 8 bits (Pin 2 a 9) y muchas señales de control, algunas de salida y otras de entrada que también pueden ser usadas fácilmente. 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 dirección hexadecimal del puerto LPT1 es igual a 0x378 (888 en decimal) y 0x278 (632 en decimal) para el LPT2. Esto se puede verificar fácilmente 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 dirección 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 descripción del puerto paralelo:
El puerto paralelo de un PC posee un conector de salida del tipo DB25 hembra cuyo diagrama y señales 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 dirección 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 deberán 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 dirección hexadecimal 0x379 (889 en decimal) si trabajamos con el LPT1 o bien leer la dirección 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 más gráfica:

Escritura: Salida de Datos
Escritura en dirección 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 dirección 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 tensión de 5v y solo se les puede exigir un mínimo 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 tensión máxima de 5v o de lo contrario el chip resultará dañado. Esta tensión se obtiene desde VDD a través del regulador U1 (7805). Las 7 salidas de potencia no son mas que la amplificación 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 máxima 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 teoría 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 tensión de entrada (VDD) a 5v (Vcc). La tensión VDD debe estar comprendida entre 9 y 12v. La tensión de entrada VHH alimenta directamente al ULN2003 para obtener mayor voltaje en caso de querer manejar un relé o bien un pequeño motor. La tensión VHH debe estar comprendida entre 3 y 15v. VHH podrá conectarse directamente a VDD (y de esa forma usar solo un fuente de alimentación) 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 análoga podríamos conectar también un pequeño motor DC.

Mediante el análisis de este programa Basic se puede intentar hacer programas mas elaborados en lenguajes más modernos. Para visualizarlo o bajarlo a la PC haga click aquí. También puede bajar el ejecutable (.XP Aquí puedes bajar un programa realizado en VisualBasic (versión 6. ME.2000 . El funcionamiento de este software es muy simple y básico. Recuerde que si cambiamos el pin de salida 0 . . 98. NT.NT .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.exe) directamente si así lo desea haciendo clickaquí. 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). Programa "Control para la IPP01" para W9x .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. el 7 no tiene salida de potencia). 2000 y XP. también se altera el mismo pin en la salida de potencia (solo pins 0 a 6.

También puede bajar los fuentes haciendo click aquí. Y de paso nos permite tomar experiencia en el manejo de señales mediante equipos microprocesados.com.ar/proyectos/proyectos. En nuestra sección DOWNLOAD podrás encontrar las DLL necesarias para manjar el puerto paralelo desde el entorno Windows. se debe asegurar de que tanto la PC como la interfaz se encuentren apagadas. http://www. La misma está siendo utilizada en el programa "Control para la IPP01" arriba mencionado.htm .Para bajarlo a tu PC has click aquí. Caso contrario el puerto paralelo de la PC podría llegar a dañarse permanentemente.todorobot. Conclusión: Esta interfaz es tan sencilla como útil. IMPORTANTE Al conectar o desconectar la interfaz al puerto paralelo de la PC. Podemos por ejemplo conectar un pequeño robot y tomar datos de sus sensores y analizar las decisiones a tomar mediante un programa hecho en cualquier lenguaje de PC actual. ya que nos permite realizar todo tipo de pruebas sin la necesidad de usar un microcontrolador.

DISPLAY 7 SEGMENTOS Para controlar un display de 7 segmentos ocuparemos los 8 bits de salida del puerto. . esta se puede hacer con optoacopladores de 4n25. en lugr de unir todos los emisores y mandarlos a tierra. si alguien lo va a hacer con display de cátodo comun. Haremos una interfáse para proteger el puerto. Para este ejemplo yo utilizaré un Display de ánodo común. habría que hacer un pequeño cambio al siguiente diagrama. unimos todos los colectores y los mandamos a VCC y en los emisores conectamos el ánodo de cada segmento del display.

si .Este circuito puede montarse en protoboard. pero si alguien quiere puede hacerlo en baquelita.

*n9="9". *o="o". lo guarde en la variable letra Código: *letra=getch(). Les dejo el diagrama hecho en eagle junto con su board que esta a medio terminar. *n3="3". no es la gran cosa. el fototransistor se va a corte y el segmento del display no enciende pues la corriente no puede fluir del colector hacia el emisor o tierra. al saturarse. si les sirve.". *j="j". *n6="6". funciona así: Consta de Conector db25 Macho. el led interno del optoacoplador se enciende. Si se ha hecho con display de cátodo común. *n8="8". *n7="7". iluminando al fototransistor interno del 4n26. pues si lo hacen y ocupan usar el transistor en otro arreglo ya no se va a poder modificar. *b= "b". este se satura proporcionalmente a l luz que recibe del led. *d="d". he utilizado la instrucción getche(). esta interfáse ya montada les será muy útil. por no ser precisamente para mostrar letras. *f="f". pero antes de empezar. *p="p". *i="i". este es el link dedescarga. algunas se muestran en minúscula para distinguirlas de los números. solo sirve para conectar la interfáse al PC Resistencias 470. *r="r". pero para ello hubo la necesidad de declarar una cadena de caracteres para cada símbolo a mostrar. *s="s". Y eso es para cada segmento. permite que la corriente fluya desde el ánodo del display hacia el cátodo del segmento correspondiente a ese bit. . Descargas Diagrama+Board Funcionamiento El circuito anterior. *c= "c". Otras como la "S" no fue posible así que quedó igual que el "5" SOFTWARE EN C Para lograr que el programa detecte la letra que hemos presionado sin presionar ENTER. *n0="0". *punto= ". permitiéndole llegar a tierra con lo cuál enciende este segmento.tienen pensado trabajar mucho tiempo con el puerto paralelo. *l="l". Este transistor esta siendo utilizado como un simple interruptor. yo les sugiero entonces que no monten sin el display y tampoco unan los emisores. Ahora vamos a ver el software. Si el pin del puerto paralelo esta en nivel bajo. *n2="2". *h="h". Código: char *a= "a". *n4="4". *u="u". cabe señalar que este display. *g="g". para limitar la corriente que llega al optoacoplador evitando dañar el puerto Optoacoplador 4n26. el fototransistor también se comporta como un simple interruptor solo que ahora permite/bloquea la corriente de VCC hacia el ánodo. *letra. Ahora si utilizamos el getch y le decimos que lo que presionemos. simplemente pongan los optoacopladores y cables a las salidas. para aislar la etapa de control (PC) de lo que queremos controlar (display) Cuando uno de los pines del puerto paralelo se pone en alto. *n1="1". el led no enciende. *e="e". *n5="5". *stopo="*".

entonces en opci debe haber un 0 guardado. si lo que presionamos fue un puno. en este caso busca si hemos presionado un punto ". Código: opci=strcmp(letra. Ahora. if(opci==0) stop=1. Y cuando ello ocurre. entonces. Código: opci=strcmp(letra. regresa un valor de "0". Para comparar lo que ha guardad con las variables que declaramos. entonces opci será igual a 1 y como la condición no se cumple. Código: opci=strcmp(letra. he agregado una condición. para que al presionarlo. Eso siempre y cuando no se presione "*" asterisco." lo que hemos presionado. si las 2 cadenas que estamos comparando son iguales. punto). punto). 128). entonces esta dando vueltas checando una y otra vez hasta que se presione algo. stop tome un valor de 1 Código: opci=strcmp(letra.stopo). lo anterior solo fue una comparación. y sería así = 10000000. Si no se ha presionado ninguna tecla. hacemos la comparación y le decimos que el resultado lo guarde en opci.". entonces el dato a sacar. entonces lo que debemos sacar es un 128.Ya guardado el símbolo qu ehemos presionado. se va a buscar cuál es el que hemos presionado y que es lo que debe de hacer. if(opci==0) Y como si es cierto que presionamos un punto ". la condición del while principal ya no se cumple y se sale del ciclo terminando el programa. punto). Si no fue el punto ". se utiliza Código: strcmp Esta instrucción. En este caso el punto solo necesita que se encienda el bit 8. ahora hay que preguntarle si es cierto que hemos presionado ese caracter y utilizamos un IF. compara lo que hay guardado en "letra" con la cadena que hemos guardado en cada variable. Código: while(stop==0) . si es así guarda un 0 en opci. ahora que debe de hacer el programa? pues sacar el dato correspondiente a los bits que deben encenderse para que en el display se encienda el punto. de lo contrario un 1. se brinca la línea del outport y ahora empieza a checar el siguiente caracter por ejemplo la "A" y sigue el mismo porcedimiento que con el punto. debemos pensarlo como si el puerto paralelo fuese un número binario. eso lo onvertimos a decimal y es igual a 128.". if(opci==0) outportb(para. entonces opci=0.

h> <string. *letra=getch(). if(opci==0) outportb(para. . if(opci==0) outportb(para. *n3="3".Y eso sería lo más relevante que creí necesitaba explicación. *stopo="*".h> <dos. *n9="9". unsigned int _far *puntero_a_direccion. opci=strcmp(letra. if(opci==0) outportb(para. *c= "c". *b= "b". outportb(para.h> <stdio. if(opci==0) outportb(para. opci. d). punto). *d="d". *f="f". opci=strcmp(letra. *n0="0". *n1="1". *s="s". *punto= ". contador=2. 57). 121). *g="g". *o="o". opci=strcmp(letra. *e="e". f).h> <graphics. opci=strcmp(letra. opci=strcmp(letra. 119). *letra. 128). if(opci==0) outportb(para. *n5="5". char *a= "a". *j="j".0). main() { paralelo().h> int paralelo(). a). 124). opci=strcmp(letra. *n7="7". *r="r". *i="i". *u="u".". para. printf("Presiona una letra"). while(stop==0) { clrscr(). e). stop=0. *n6="6".94). El código completo es este Código: #include #include #include #include #include <conio. *p="p". *n4="4". b). c). *n8="8". *h="h". opci=strcmp(letra. if(opci==0) outportb(para. *n2="2". *l="l".

h). opci=strcmp(letra. 91). s). if(opci==0) outportb(para. 109). if(opci==0) outportb(para. if(opci==0) outportb(para. if(opci==0) outportb(para. j). 113). opci=strcmp(letra. if(opci==0) outportb(para. . /*N£meros*/ opci=strcmp(letra. if(opci==0) outportb(para. n1). r). 56). l). 48). opci=strcmp(letra. opci=strcmp(letra. if(opci==0) outportb(para. 6). opci=strcmp(letra. 92). opci=strcmp(letra. 62). 30). u). 111). if(opci==0) outportb(para.if(opci==0) outportb(para. opci=strcmp(letra. n2). opci=strcmp(letra. o). p). 118). if(opci==0) outportb(para. 115). if(opci==0) outportb(para. 80). if(opci==0) outportb(para. i). opci=strcmp(letra. g). opci=strcmp(letra. if(opci==0) outportb(para. opci=strcmp(letra.

n9)."). 79). } paralelo() { clrscr(). if(opci==0) outportb(para. if(opci==0) stop=1. 7). n7). n6). if(opci==0) outportb(para. if(opci==0) outportb(para. . opci=strcmp(letra. 103). 102). opci=strcmp(letra. n5). if(opci==0) outportb(para. opci=strcmp(letra. n3). delay(30). if(opci==0) outportb(para. 125). 0). opci=strcmp(letra. n8). if(opci==0) outportb(para. opci=strcmp(letra. opci=strcmp(letra.opci=strcmp(letra. contador++. opci=strcmp(letra. if(opci==0) outportb(para. while(contador<40) { printf(".stopo). printf("Rastreando Direcci¢n de Puerto Paralelo"). 127). 109). } outportb(para. 63). opci=strcmp(letra. if(opci==0) outportb(para. n0). busqueda: puntero_a_direccion=(unsigned int _far *)0x00000408. n4).

Mueve lo que hay en el texbox hacia una variable que llamaremos letra.. para=*puntero_a_direccion. outportb(para. 0). <center> </center> Descargas Software En C SOFTWARE EN VISUAL BASIC 2005 Para hacerlo en Visual Basic es más sencillo. 1.Cuando define que caracter es.Compara el caracter almacenado en "Letra" para saber que es 5. podemos aprovechar las variables de tipo "Objeto" para guardar ahí lo que escribimos en el Texbox y luego compararlo.} clrscr().Presionamos un Botón 3... 4. saca por el puerto un valor predefinido. Ocuparemos un texbox y un botón El programa funciona así.Ingresamos un caracter en un Texbox 2. Para hacer que al presionar el boton mueva lo del texbox hacia letra y después se vaya a realizar la función"Define" que como su nombre lo dice se encarga de definir que caracter se ha ingresado. puede ser de tipo String o Object... En código sería así. . dejo un compilado por si desean descargarlo. } Y como siempre.

Out(&H378S. Hay que agregar una opción para el caso de que no quisieramos mostra nada en el display. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. preguntarse. 6) Las comillas se ocupan para que el programa busque una cadena de caracteres o STRING y no trata de reconocerlas como variables o números. Out(&H378S. Out(&H378S. Out(&H378S. 0) 63) 6) 91) 79) 102) 109) 125) 7) 127) 103) 119) 124) 57) 94) 121) 113) 111) 118) 48) 30) 56) 92) . Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S.Object. Out(&H378S. lo que hay almacenado en letra es un 0? *Si es así. Out(&H378S. Out(&H378S.EventArgs) Handles Button1. en la Función Define () Lo que hace es.Código: Private Sub Button1_Click(ByVal sender As System. saca un 0 Código: If letra = " " Then Out(&H378S. saca por el puerto un 63 *De lo contrario no hace nada y se hace una nueva pregunta Lo que hay almacenado en letra es un 1 y así sucesivamente Código: If letra = "0" Then Out(&H378S.Text decide() End Sub Ahora. Out(&H378S. Out(&H378S. 0) La funcíón Define () quedaría así: Código: Private Sub decide() If If If If If If If If If If If If If If If If If If If If If If If letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra = = = = = = = = = = = = = = = = = = = = = = = " " "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "l" "o" Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. entonces utilizaremos un espacio en blanco " " Y la instrucción sería si hay un espacio en blanco. Out(&H378S. ByVal e As System.Click letra = TextBox1. Out(&H378S. 63) If letra = "1" Then Out(&H378S.

If If If If If End Sub Y eso es todo Código: letra letra letra letra letra = = = = = "p" "r" "s" "u" ". Out(&H378S.Load TextBox1. 0) 63) 6) 91) 79) 102) 109) 125) 7) 127) 103) 119) 124) 57) 94) 121) 113) 111) 118) 48) 30) 56) .Object." Then Then Then Then Then Out(&H378S. Out(&H378S. Out(&H378S. 115) 80) 109) 62) 128) Más sencillo imposible El código completo quedaría así: Option Explicit On Public Class Display Dim letra As Object Private Sub Display_Load(ByVal sender As System. Out(&H378S. Out(&H378S.Text = "" decide() End Sub Private Sub decide() If If If If If If If If If If If If If If If If If If If If If If letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra letra = = = = = = = = = = = = = = = = = = = = = = " " "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "l" Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Then Out(&H378S.EventArgs) Handles MyBase. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. Out(&H378S. ByVal e As System. Out(&H378S. Out(&H378S.

ByVal Value As Short) End Module Y como ya es costumbre les dejo uno ya compilado Descargas Software en Visual Basic .Click letra = TextBox1.EventArgs) Handles Button1. Out(&H378S. Out(&H378S.Text decide() End Sub End Class No hay que olvidar agregar el módulo para la .dll" Alias "Inp32"(ByVal PortAddress As Short) As Short Public Declare Sub Out Lib "inpout32.Object. Out(&H378S.dll El módulo es así.If If If If If If End Sub letra letra letra letra letra letra = = = = = = "o" "p" "r" "s" "u" ". cambió solo un poco del que poníamos en Visual basic 6 Código: Option Strict Off Option Explicit On Module Module1 Public Declare Function Inp Lib "inpout32. 92) 115) 80) 109) 62) 128) Private Sub Button1_Click(ByVal sender As System. Out(&H378S. ByVal e As System." Then Then Then Then Then Then Out(&H378S.dll" Alias "Out32"(ByVal PortAddress As Short. Out(&H378S.

los venden por $300 para PCI. -------CONTROLAR 1 BIT Para empezar solo controlaremos un bit de salida para apagar/encender un dispositivo de CA desde el puerto Paralelo del PC. .. críticas o sugerencias. pueden comprarlos. -------5.Este tema permanecerá cerrado para manterer la consecutividad en el tema.1 El único que cambia es VB.En el caso de "Controlar 1 Bit" y "CONTROLAR TODOS LOS BITS DE SALIDA" Se ha hecho un ejemplo en Turbo c++ v3.. LabView v 7..Tomen todas las precauciones posibles con el puerto. la razón es que me gusta más esta versión Si quieren pueden seguir haciéndolos en vb6. así que aprendí Visual Basic para poder hacer este tuto. Notas Antes de Empezar --------1. en Visual Basic y Lab View. trataré de hacer un tutorial sencillo.. Si alguien esta interesado en aprender Visual Basic este tutorial me sirvió mucho. Comentarios Tuto Puerto Paralelo -------2.Como Usar Puerto Paralelo (C++. solicitando información de como sacar datos con el puerto paralelo.Hasta hace días solo sabía usar C. Además Visual Basic Puede Descargarse Gratuitamente Visual Basic 2005 Express Edition En esta versión se pueden abrir y convertir proyectos de Vb6 -------3. pero si tienen dudas comentarios. Lab View) En el foro se han abierto varios temas similares.Haré lo posible por hacer un ejemplo en C. Visual Basic. Con la finalidad de evitar tantos temas repetidos. ya entendiendo esto se pueden controlar los demás Bits. pueden hacerlas en. si llegaran a quemar su puerto o necesitan otro. compren opto acopladores 4n26 para trabajar con CD o moc3010 para CA. Curso Visual Basic -------4. solo hay que modificar un par de cosillas..1 y Visual Basic Profesional v6 Pero a Partir del 3° "DISPLAY 7 SEGMENTOS " Será con Visual Basic V8 Turbo c++ v3 y LabView 7.

Material Necesario 1 Puerto paralelo libre 1 Moc3010m 1 Triac (A los Amperes que trabaje el dispositivo I=P/V) 1 Resistencia 560 Ohms 1 Resistencia 220 Ohms 1 Led 1 Conector Db25 Macho Cable para interconexiones (Puede ser del de Red de 8 Hilos) 1 Fusible (Al amperaje del dispositivo) 1 Clavija CA con cable Si quieren pueden hacer sus propios programas o bajar el que yo he hecho. llega corriente al Led interno del moc y fluye corriente a través de este hasta La tierra del puerto Paralelo que va desde el pin18 hasta el 25. esta conectada al pin2 del puerto paralelo que es el Bit Menos Significativo (LSB=Less Significative Bit) del dato de salida del Puerto. el bit1 del puerto paralelo. cuando ponemos a 1 lógico.). foco. Mientras el Bit1 se mantenga en 1. Funcionamiento: La R1. se encarga de limitar la corriente del puerto paralelo evitando que este se dañe. actúa cuando entre sus 2 terminales hay cierto potencial llamado voltaje de disparo (regularmente son 35v). el led esta encendido (pero no se ve pues esta adentro). . Si quisiéramos controlar más dispositivos podemos utilizar los demás bits. Del puerto paralelo podemos utilizar desde el pin 2 hasta el 9. para escribir un dato de 8 bits el pin 2 es el que utilizaremos y corresponde al bit1 o LSB. aunque si quieren primero pueden probar con un LED + 2 resistencias y un 4n26. lavadora. El moc. contiene en su interior un acoplamiento óptico entre un LED y un fotodiac. existe un fotodiac. frente al Led del Moc. El circuito es bastante sencillo. Puede verse que R1 se conecta al pin1 de un Moc3010m. televisión. que es un dispositivo típico de disparo. motor. este es un dispositivo de 6 patas que esta sirviendo como aislante entre la etapa de control (PC) y la de potencia (Dispositivo de CA. Pero este disparo no ocurre si el Led no le proporciona luz.

la haber pulso. Código: . *Como estamos usando dos. haciendo que la corriente fluya hacia la Carga que puede ser cualquier cosa como un foco. el Triac se comporta como un aislante o interruptor abierto y no llega corriente a la carga por lo cuál no enciende. cuando este manda un pulso a la compuerta del triac. *letra.h> int paralelo(). opc=0. para. yo la pongo para que el programa solito busque la dirección del puerto casi siempre es la misma pero bueno introducirla manualmente. el cuál conduce corriente en ambos sentidos por tanto puede conducir durante los 360° de una señal de CA.h> <string. *tres="3". este se comporta como un interruptor cerrado.h> <dos. motor. Notas: *Adjunto el link para descargar el compilado *No lo explicaré para evitar enfadar. unsigned int _far *puntero_a_direccion. Si lo quitan tendrán que declararla o #include #include #include #include <conio. El triac es un dispositivo semiconductor. si alguien me dice como se lo agradeceré mucho. el led enciende y el fotodiac esta habilitado para hacer los disparos.h> <stdio. no he podido hacerlo funcionar en XP por que tiene los puertos Bloqueados. este puede ponerse en serie con el interno del moc solo para tener un indicador visual del estado del puerto. en la lista aparece un Led. Su conducción esta controlada por la compuerta. El fusible sería solo si el aparato no lo incluye ya. el led no enciende y el fotodiac no se dispara. contador. estado=0.Por tanto mientras no haya pulso por parte del puerto LPT.h solo puede correr en DOS. *Empezamos con las librerías necesarias *La función PARALELO pueden o no agregarla. char *uno="1". Si no hay disparo del Fotodiac. se pondría en serie con la carga. televisión. puede hacérmelas saber. Software SOFTWARE PARA C En C sería de esta manera. en la cuál es recibido el disparo proporcionado por el fotodiac. *dos="2". pero si alguien tiene dudas respecto al código. . Y eso sería todo en cuanto a hardware se refiere. Ahora.

while(opc!=3) { clrscr().0).tres). printf("Presiona una opci¢n v*lida"). printf("Aplicaci¢n Finalizada"). } else { opc=strcmp(letra. printf("Rastreando Direcci¢n de Puerto Paralelo").0). while(contador<40) . if(opc==0) { gotoxy(30. } else { opc=strcmp(letra.20). if(opc==0) { outportb(para.dos). } paralelo() { clrscr(). busqueda: puntero_a_direccion=(unsigned int _far *)0x00000408. outportb(para. delay(1000). estado=0. if(opc==0) { outportb(para. opc=strcmp(letra.20). } } } } outportb(para. *letra=getch(). opc=3. estado=1.main() { paralelo().1). } else { gotoxy(30.uno). delay(1000).0).

podemos solo agregar 2 botones y lo demás es cosa de presentación. El comando es Out &dirección. para=*puntero_a_direccion. 0). contador++. yo lo pegué en Windows. . outportb(para. system y system32. } Descargas Software en C Solo Funciona Para Win9x Razón: En Xp deben desbloquearse los puertos SOFTWARE PARA VISUAL BASIC En Visual Basic es más sencillo.dato El código sería así: Notas: Hay que agregar un .").zip.dll que esta adjunto en el 1bitlptfvisual. } clrscr(). a la carpeta del sistema. delay(35).{ printf(".

un convertidor de Bolean String a Number . 1 End Sub Además debemos agregar un Módulo par ala Dll Código: Public Declare Function Inp Lib "inpout32. Las versiones superiores a Lab View 5 permiten utilizar el puerto paralelo.dll" _ Alias "Out32" (ByVal PortAddress As Integer. me hace favor de probarlo. se puede hacer lo que hicimos con los anteriores programas. pero no he podido comprobar si funciona en Pc's sin Lab View. Yo estoy usando la 7. 0 End Sub Private Sub Command2_Click() Out &H378. pues esperen trabajar con Lab View. no lo explicaré por que esta muy sencillo. en 5 min.Adjunto el compilado por si lo quieres ya hecho. ByVal Value As Integer) Descargas Software en Visual Basic SOFTWARE EN LABVIEW Si creyeron que en Visual Basic es fácil. ocupamos poner un Interruptor Bolean.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Integer Public Declare Sub Out Lib "inpout32. Para empezar. dejaré un instaler por si alguien "QUE NO" tenga instalado Lab View. pero si alguien tiene dudas respecto al código.1 y permite compilar las simulaciones. puede hacérmelas saber Para el Form Código: Private Sub Command1_Click() Out &H378. una constante numérica en la que pondremos la dirección del puerto en decimal =888 y un Out Port .

Tal como en la imagen siguiente: No olviden meterlo dentro de un ciclo while Descargas Software LabView Se Necesita tener Instalado LabView O El Visor De LabView Para Poder Ejecutarlo. pues el proceso para hacerlo con todos es similar. enviaremos entonces un 255. CONTROLAR TODOS LOS BITS DE SALIDA Ya vimos como controlar un solo Bit.. 255=11111111 En este caso no explicaré el Hardware externo. 000=00000000 001=00000001 002=00000010 .. los 1 representan un estado "alto" y los 0 un estado "bajo". para encender los demás debemos pensar en el puerto como un número binario. Disponemos de 8 bits de salida o lo que es igual a 1byte. En fin. Y así es para cada número. ya que no hay ninguno . encender todos los 8 bits. entonces debemos mandar un 11111111. podemos mandarlo en decimal y el mismo programa lo pasa a binario. simplemente estamos . para encender el primer bit debíamos enviar un 1. Si quieremos.

h> <string. arreglo[8]. stop=0.h> <stdio. } while(stop==0) { clrscr(). así que me la ahorraré. *n3="3". *n6="6". char *letra. De lo contrario al salir del programa se quedarán tal cuál los hayamos dejado. main() { paralelo(). puede ser de esta manera: La función paralelo. n0). contador=0.viendo como controlar los bits sin nada conectado.h> <dos. if(opci==0) .h> <math. *n4="4".h> int paralelo(). contador=2. datum[8]. opci=strcmp(letra. while(contador<8) { arreglo[contador]=0. para. *n0="0". *n5="5". *n8="8". si alguien no lo entiende. lo que hace es buscar la dirección del puerto y almacenarla. La explicación del programa es un poc extensa. unsigned int _far *puntero_a_direccion. float resultado. outportb(para. Código: #include #include #include #include #include #include <conio. *n2="2". long dato=0. salida(). *n1="1". me avisa y entonces lo explico. *stopo="*". Así que nos pasamos directo al Software. printf("Presiona una n£mero del 0-7\nPara Salir Presiona *").0). Si queremos que al salir del programa se apaguen todos los bits debemos mandar un Código: outport(para. opci. *n7="7". SOFTWARE EN C En C.h> <graphics.0). *letra=getch(). contador++.

if(opci==0) arreglo[2]=arreglo[2]+1. n1). while(contador<8) { datum[contador]=((arreglo[contador])%2)*(pow(2. salida(). . n3). opci=strcmp(letra. if(opci==0) arreglo[1]=arreglo[1]+1.contador)). } } salida() { contador=0. n2). } outportb(para.dato). opci=strcmp(letra.arreglo[0]=arreglo[0]+1. n7). dato=0. n6). if(opci==0) stop=1. if(opci==0) arreglo[4]=arreglo[4]+1. opci=strcmp(letra. opci=strcmp(letra. if(opci==0) arreglo[3]=arreglo[3]+1.stopo). if(opci==0) arreglo[6]=arreglo[6]+1. opci=strcmp(letra. opci=strcmp(letra. if(opci==0) arreglo[5]=arreglo[5]+1. opci=strcmp(letra. n5). dato=dato+datum[contador]. clrscr(). contador++. n4). opci=strcmp(letra. if(opci==0) arreglo[7]=arreglo[7]+1.

. delay(30). contador++."). while(contador<40) { printf(". outportb(para. pero en esta. 0). printf("Rastreando Direcci¢n de Puerto Paralelo").} paralelo() { clrscr(). } clrscr(). pueden descargar el que yo he compilado. busqueda: puntero_a_direccion=(unsigned int _far *)0x00000408. Descargas Software en C SOFTWARE EN VISUAL BASIC La ocasión anterior. para=*puntero_a_direccion. } Si quieren. el programa en visual fue más sencillo. la verdad es que me ha costado más por los arreglos que he hecho con los checkbox.

Para hacerlo. hubo que agregar 1 checkbox y copiarlo y pegarlo 7 veces para hacer una matriz. entonces se simplifica el trabajo pues solo damos la instrucción una vez y solo debemos indexarlos para hacer referencia a cada uno.Value = 1 Then arreglo(contador + 1) = 1 Else arreglo(contador + 1) = 0 dato = dato + (arreglo(contador + 1) * (2 ^ contador)) contador = contador + 1 Wend Text1 = dato Out &H378.Los Bits pueden encenderse o apagarse desde los 8 checkbox o puede ingresarse el dato en el texbox.dll" _ Alias "Out32" (ByVal PortAddress As Integer. ocuparemos un módulo para la dll Código: Public Declare Function Inp Lib "inpout32. dato End Sub Private Sub Check1_Click(Index As Integer) . ByVal Value As Integer) El código para hacer que revise los checkbox es así Código: Private Sub revisa() contador = 0 dato = 0 While contador < 8 If Check1(contador). Para empezar.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Integer Public Declare Sub Out Lib "inpout32.

agregamos una suma ´múltiple. le hacemos de 8 y listo . Si esta presionado tendríamos (2^0)(1)=1 Para el segundo check (2^1)(check) Si el check esta presionado (2^1)(1)=2 si no esta activo (2^1)(0)=0 Las salidas de cada bit elevado a su potencia. el único detalle es que no pude hacer que los chek buttons se selccionen solos cuando el dato es ingresado. Después. en LabView la programación resultó más sencilla. Descargas Software Visual basic SOFTWARE EN LABVIEW Como la ocasión anterior. simplemente lo mandan al outport . por ello agregué LEDS Empezamos añadiendo 8 checkbuttons y les agregamos un convertidor de Boleano a Número. ocupamos darle un peso a cada salida.revisa End Sub Lo de poder ingresar el dato desde el texbox es adiciona y no es necesario para el funcionamiento del programa. la mandamos a un indicador numérico o si no quieren visualisarlo. al final las sumaremos para sacar el dato completo y como son muchas. el primero se eleva (2^0)multiplicado por 0 o 1 dependiendo del estado del check button. La salida de la suma. deben de estar en base 2.

metemos todo dentro de un ciclo while y le ponemos un bolean true para que se repita siempre y quedaría así: Este Es EL Que Yo He Compilado.Finalmente. Si Quieren Pueden Descargarlo En El Link De Abajo .

Descargas Software LabView Se Necesita tener Instalado LabView O El Visor De LabView Para Poder Ejecutarlo. Ocupa Xp. en Xp se deben desbloquear los puertos. Puede Instalar Este Programa Que Le Servirá Para Poder Ejecutarlo. cualquier error que encuentre agradecería me avisen o si tienen el código para algún otro compilador también es bienvenido. Visor LabView Si No tiene LabView. Visor LabView Si No tiene LabView. Software LabView Se Necesita tener Instalado LabView O El Visor De LabView Para Poder Ejecutarlo. Resúmen Descargas Software Visual basic Software en C Solo Funciona en Win9x. Ocupa Xp. . Por el momento aquí termina. Puede Instalar Este Programa Que Le Servirá Para Poder Ejecutarlo.

Estas lucesitas las consigues por centavos en cualquier casa de electrónica 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 . la mas económica que puedes usar para probar el programa y mandar señales 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 rutinas hacen destellar las luces de tal manera de formar distintos motivos. Para armar el circuito.Programa y código fuente en VB6 que permite controlar el puerto paralelo . enviandole señales para activar dispositivos conectados a este. Incluye pequeñas rutinas de ejemplos para cuando se conecte el puerto paralelo a un juego de luces. hay muchas posibilidades.

debes mirarlo a la luz y veras que en el interior del led el polo negativo es el que tiene una plaquita mas grande. ten en cuenta que debes coincidir las patas negativas de los diodos led con el polo negativo de la alimentacion externa. mietras que el positivo es solo un palito. Para identificar cual es el polo negativo del led . con esto podras ver un monton de cablecitos de distintos colores .com/f26/programa-control-luces-puerto-paralelo-10262/ . 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 algún cable de alguna impresora vieja cortandole la punta que va a la impresora.forosdeelectronica. como los que muestra la figura arriba Volviendo al circuito.net/component/content/article/14-parallel-port/15-a-tutorial-on-parallel-portinterfacing http://logix4u. 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).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. pero como ves es super económico y te permitira experimentar con el puerto antes de pasar a un circuito mayor que te permita controlar dispositivos http://logix4u.net/component/content/article/14-parallel-port/16-inpout32dll-for-windows982000ntxp http://www.

r_gc.microsoft.blogspot.html http://electronica-pic.ar/foros/index.php?topic=2260.com/f29/controlar-usb-con-c-794909/ http://dev.0 http://www.msdn.com.33i21.slideshare.lawebdelprogramador.frgbld.net/codigos/csharp/varios/programacion_del_puerto_paralelo_solo_salida.microsoft.osb&fp=bbd09e646cd14d74&biw=1241 &bih=567 electronica-pic.html http://electronica-pic.c-sharpcorner.wanadoo.com/forums/es-ES/vcses/thread/ce07aa7e-5720-4ef1-821f6ef419a6ac02 http://www.com/serial-port-communication-c http://www.cf.mx/ http://www.&pbx=1&bav=on.html http://www.todopic.com/Forums/Thread/53551/ http://www.emcelettronica.net/Metaconta/presentations http://support.com/2010/07/interfaz-puerto-paralelo-lpt.mx/search?sourceid=chrome&ie=UTF8&q=prgramas+para+usar+el+puerto+paralelo#hl=es&sclient=psyab&q=como+programar+el+puerto+paralelo+en+c+sharp&oq=como+programar+el+puerto+paral elo+en+c+sharp&aq=f&aqi=qw1&aql=&gs_l=serp.com.codeproject.29l6360l2l6475l15l12l3l0l0l0l453l3914l23j3j5l14l0.forosdelweb.mygnet.taringa.blog spot.mx/2010/01/interfaz-puerto-paralelo.com/ .gif http://www.ar/foros/index.or.2.r_qf.blogspot.3.1 764 http://www.es/luis_ju/puerto/imagen/port01.com..com/categorias/tecnologia-e-internet/programacion/csharp/respuestas/2221533/controlar-puerto-paralelo-urgente http://perso.todopic.todoexpertos.com http://www..http://www.com/kb/823179 http://www.google.0 http://social.r_pw.net/posts/downloads/4430288/Control-de-Puerto-Paralelo.php?topic=26052.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->