[Anterior] [Indice] [Siguiente] | ||
PUERTO PARALELO
CARLOS ALFREDO AVILA
JOHN ALEXANDER GUTIERREEZ
JORGE ANDRES HERRERA
OSCAR ROJAS
FACULTAD DE INGENIERIA
UNIVERSIDAD DE SAN BUENAVENTURA
BOGOTÁ D.C.
2001
PUERTO PARALELO
En este informe se presenta todo lo relacionado a las actividades de práctica, que se realizaron para el manejo del puerto paralelo. Para mayor orden y comprensión, vamos a repartir el trabajo en dos partes; la primera parte mencionara el ensamble de los componentes necesarios para la practica, y la segunda parte se referirá a la práctica como tal
Los materiales requeridos para la práctica fueron los siguientes :
El primer procedimiento realizado, fue el de dejar totalmente acoplado el conector DB-25, el cable ribbon y el conector de 40 pines. La operación fue relativamente fue sencilla, ya que tan solo se colocaba el cable en las aberturas de los conectores, para luego mediante presión, cerrar los conectores, quedando así ensamblado los cables.
El siguiente paso consistió identificar los pines del conector de seguridad. Para esto, utilizamos un multimetro que nos permitió medir la continuidad entre los diferentes pines de los conectores. Los pines que más nos interesaban era del 2 al 9, ya que mediante estos realizaríamos gran parte de los experimentos.
Figura 1.
Este fue el primer montaje a realizar, y consistió colocar 8 leds con 8 resistencias, a cada una de las 8 salidas identificadas desde el pin 2 al pin 9. El esquemático se ve en la siguiente figura1. Se puede apreciar que se tomo como tierra el pin 19, ya que este corresponde efectivamente a una tierra.
Debido a que solo se cuenta con 8 bits de salida usando la dirección de puerto 0x378, para poder tener manejo sobre 16 bits, o leds en nuestro caso, requerimos multiplicar la salida. Para esto vamos a usar 2 buffers, los cuales además de servirnos para el propósito que queremos, sirva también para proteger el puerto paralelo del computador, ya que este se puede afectar por sobrecarga.
El esquemático para este montaje se puede apreciar en la figura 2.
Figura 2.
En la figura 2 se aprecia como se hizo un corto entre los enables que tiene cada buffer. Los enable del primer buffer lo enviamos a un pin de registro de control, en este caso el pin 1; los enable del segundo pin decidimos también mandarlo a un pin de registro de control, en este caso el pin 14. Nótese además que las correspondientes entre cada buffer fueron conectadas entre sí. La tierra del circuito es nuevamente el pin 19.
La idea de la práctica es enviar 1īs y 0īs que prendan y apaguen los leds que se colocaron. Para este manejo del puerto se desarrollaron para cada uno, un programa en C++, que al ejecutarlo, realizaba una secuencia previamente programada. A continuación detallamos los programas utilizados.
El programa en C++ es el siguiente:
//Programa de 8 leds
#include <iostream.h>
#include <dos.h>
int puerto=0x378;
main()
{
int i, cont=0;
do{
outportb(puerto+2,0x01);
for(i=1;i<9;i=i*2){
outportb(puerto,0x1*i);
delay(500);
}
for(i=1;i<9;i=i*2){
outportb(puerto,0x10*i);
delay(500);
}
outportb(puerto, 0xFF);
delay(500);
outportb(puerto, 0x00);
delay(500);
outportb(puerto, 0xFF);
delay(500);
cont++;
}while(cont<10);
outportb(puerto, 0x00);
return 0;
}
Este programa prende los leds pares es decir el led numero 2do, luego el 4to, el 6to y el 8vo consecutivamente; luego prende los impares, es decir el 1ro, el 3ro, el 5to y luego el 7mo consecutivamente. Posterior a esta secuencia, se prenden todos los leds al tiempo, se apagan, y se prenden. Toda esta secuencia se repite 10 veces.
La secuencia creada es diferente a la anterior, pero en este caso usamos la dirección de puerto 0x37A, ya que como se ve en el montaje de la figura 2, vamos a manjar también los registros de control correspondientes al pin 1 y al 14. El programa es el siguiente.
//Programa de 16 leds
#include <iostream.h>
#include <dos.h>
int puerto=0x378;
main()
{
int i, j, cont=0;
do{
outportb(puerto+2,0x1);
for(i=1;i<9;i=i*2){
outportb(puerto, 0x1*i);
delay(250);
}
for(i=1;i<9;i=i*2){
outportb(puerto, 0x10*i);
delay(250);
}
outportb(puerto+2,0x2);
for(i=1;i<9;i=i*2){
outportb(puerto, 0x1*i);
delay(250);
}
for(i=1;i<9;i=i*2){
outportb(puerto, 0x10*i);
delay(250);
}
outportb(puerto+2,0x3);
outport(puerto,0xFF);
delay(250);
outportb(puerto,0x00);
delay(250);
outport(puerto,0xFF);
delay(250);
cont++;
}while(cont<5);
outportb(puerto, 0x00);
return 0;
}
El programa anterior lo que hace es prender en orden uno a uno cada led. Primero prende desde el 1er led hasta el 8vo conectados al primer buffer, y posteriormente prende los leds conectados al segundo buffer, desde el 1ro hasta el 8vo. Esta secuencia completa se repite 5 veces antes de terminar con todos los leds apagados.
[Anterior] [Indice] [Siguiente] | ||