Sunteți pe pagina 1din 27

Huber Girn Nieto David Flores Bautista Fernando Palacios Marn Andrs de Anda Prez

PROGRAMACION ORIENTADA A OBJETOS

NICOLAS QUIROZ HERNANDEZ

Proyecto Final: Pantalla de Leds

18-05-2009

1. Problemtica
El problema consiste en crear un sistema o circuito as como un programa creado en C++ que cumpla con las siguientes caractersticas: Crear un dispositivo electrnico o mecatrnico que funcione mediante el uso de un programa que utilice e puerto paralelo de la computadora. Desarrollado en visual Studio un programa en cdigo C++ que utilice el puerto paralelo para manejar el circuito. La conexin entre la computadora y el circuito ser mediante el uso del puerto paralelo.

2. Posibles soluciones
Para este proyecto se decidi hacer una pantalla de leds de 8x16, la cual debe de mostrar una frase o texto mediante el encendido y apagado de leds especficos; este circuito funcionar mediante el control del puerto paralelo de la computadora. Al principio no sabamos por donde comenzar, pero se empez buscando diagramas de circuitos que tengan un funcionamiento semejante o igual al de la pantalla de leds como los que se muestran a continuacin:

Diagrama de una pantalla de leds de 32x8 Leds

Circuito con puerto paralelo y leds. 3.

Pasos para la seleccin de la solucin Optima

La seleccin ptima fue realizar una matriz de leds de 7x16, sin embargo para poder realizar el circuito y hacer que el programa funcionara correctamente, fue necesario aprender a hacer

circuitos que utilicen puerto paralelo y realizar programas en C++ que interacten con ellos; Los pasos que realizamos para hacer funcional nuestra pantalla de leds fueron los siguientes: 3.1. Encendido de un led mediante el puerto paralelo Primero realizamos la prueba de cmo poder prender un led mediante el puerto paralelo, para esto se investigo en qu consiste el puerto paralelo, cules son sus pines y como se pueden utilizar.

Tambin se aprendi a utilizar el programa PARMON, el cual es una simulacin del puerto paralelo, ya que puede manipular los pines y asignar valores de 0 y 1 a estos.

3.2. Manipulacin de un Display mediante un programa de puerto paralelo Para entender como interactan los programas de C++ con el puerto paralelo, se realizo la prueba de un programa que utilice un display.

3.3. Uso de circuito integrado DM74LS154 Para poder manipular una matriz de leds con pocos pines como los que cuenta el puerto paralelo fue necesario utilizar un circuito integrado DM74LS154, para entender cmo funcionaba se obtuvo el datasheet del integrado, donde se aprendi a utilizar mediante el puerto paralelo.

3.4. Manejar una matriz de 3x5 leds mediante el puerto paralelo Implementado el circuito integrado anterior se realizo una matriz de 3 x 5 leds y se prosigui a entender cmo funcionaba el uso de matrices de leds mediante el puerto paralelo.

3.5. Eleccin de Solucin Optima


Para el circuito final se decidi realizar el siguiente circuito:

El cdigo del programa que se utiliza para manejar la pantalla de leds es:

Principal.cpp #include<iostream> #include<string.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> #include "io.h" #define dirFILA 0x378 #define dirABCD 0x37A using namespace std; int Menu() { int op; do{ system("cls"); cout<<"\n"; cout<<"Huber Giron, David Flores, Fernando Palacios, Andres De Anda; PROYECTO;\n"; cout<<"**Equipo 4**"; cout<<"\n\n\n\n"; cout<<"El siguiente programa muestra un texto o frase en la pantalla de leds: \n\n"; cout<<"\n (1) Proporcionar una frase"; cout<<"\n (2) Mostrar texto la pantalla de leds "; cout<<"\n (3) Salir"; cout<<"\n Introduce el numero de la opcion:"; op = getche(); } while(op<='0' || op>='4'); return op; }

//direccion base del puerto paralelo

void main() {LoadIODLL(); int COL[16],TIPO[99],i,H,z,op2, FRASE[200],n,L,Y,q,s; COL[15]=0X1B; COL[14]=0X1A;COL[13]=0X19;COL[12]=0X18;COL[11]=0X1F;COL[10]=0X1E;COL[9]=0 X1D;COL[8]=0X1C;COL[7]=0X13; COL[6]=0X12;COL[5]=0X11;COL[4]=0X10;COL[3]=0X17;COL[2]=0X16;COL[1]=0X15;CO L[0]=0X14; TIPO[0]=0XBE ;TIPO[1]=0X8A ;TIPO[2]=0X82; TIPO[3]=0X88;TIPO[4]=0XB4;TIPO[5]=0X8E;TIPO[6]=0XAA ;TIPO[7]=0XB6 ;TIPO[8]=0XBA ;TIPO[9]=0XA0 ;TIPO[10]=0X9A ;

TIPO[11]=0XAE;TIPO[12]=0XA2;TIPO[13]=0X84 ;TIPO[14]=0XAE ;TIPO[15]=0X9C;TIPO[16]=0XBC ;TIPO[17]=0X9E ; TIPO[18]=0XA4 ;TIPO[19]=0XB8 ;TIPO[20]=0X90 ;TIPO[21]=0XB8 ;TIPO[22]=0X8E ;TIPO[23]=0XB2;TIPO[24]=0XA6 ; PortOut(dirFILA,0X00);

do {op2 = Menu(); switch (op2) { case '1': char A[100]; strcpy(A,"________ system("cls"); ");

cout<<"\n Escribe una frase(maximo 50 caracteres- Letras y espacios, \n todo debe de ser escrito en MAYUSCULAS): \n\n"; cin.getline(A,100);

cout<<"\n\n La frase que escribio es: "; cout<<"\n "<<A<<" "; for(s=0;s<=7;s++) { for(q=99;q>0;q--) { A[q]=A[q-1]; } A[0]='_'; } n=0; L=0; for(L=0;A[L+1]!=' ' || A[L+2]!=' ';L++) { if (A[L]=='A' || A[L]=='a') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[1]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='B' || A[L]=='b') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[7]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='C' || A[L]=='c') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='D' || A[L]=='d') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[15]; n++; FRASE[n]=0x00; n++; } if (A[L]=='E' || A[L]=='e') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='F' || A[L]=='f') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[1]; n++; FRASE[n]=TIPO[2]; n++; FRASE[n]=0x00; n++; } if (A[L]=='G' || A[L]=='g') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[8]; n++; FRASE[n]=0x00; n++; } if (A[L]=='H' || A[L]=='h') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='I' || A[L]=='i') { FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='J' || A[L]=='j') { FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[2]; n++;

FRASE[n]=0x00; n++; } if (A[L]=='K' || A[L]=='k') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[4]; n++; FRASE[n]=0x00; n++; } if (A[L]=='L' || A[L]=='l') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[9]; n++; FRASE[n]=TIPO[9]; n++; FRASE[n]=0x00; n++; } if (A[L]=='M' || A[L]=='m') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[13]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[13]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='N' || A[L]=='n') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[13]; n++; FRASE[n]=TIPO[3]; n++;

FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='O' || A[L]=='o') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='P' || A[L]=='p') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[1]; n++; FRASE[n]=TIPO[5]; n++; FRASE[n]=0x00; n++; } if (A[L]=='q' || A[L]=='Q') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[9]; n++; FRASE[n]=0x00; n++; } if (A[L]=='R' || A[L]=='r') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[10]; n++;

FRASE[n]=TIPO[11]; n++; FRASE[n]=0x00; n++; } if (A[L]=='S' || A[L]=='s') { FRASE[n]=TIPO[14]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[8]; n++; FRASE[n]=0x00; n++; } if (A[L]=='T' || A[L]=='t') { FRASE[n]=TIPO[2]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[2]; n++; FRASE[n]=0x00; n++; } if (A[L]=='u' || A[L]=='U') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[9]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='v' || A[L]=='V') { FRASE[n]=TIPO[17]; n++; FRASE[n]=TIPO[9]; n++; FRASE[n]=TIPO[17]; n++; FRASE[n]=0x00; n++;

} if (A[L]=='W' || A[L]=='w') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[20]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[20]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='x' || A[L]=='X') { FRASE[n]=TIPO[7]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[7]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='Y' || A[L]=='y') { FRASE[n]=TIPO[22]; n++; FRASE[n]=TIPO[21]; n++; FRASE[n]=TIPO[22]; n++; FRASE[n]=0x00; n++; } if (A[L]=='z' || A[L]=='Z') { FRASE[n]=TIPO[23]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[24]; n++;

FRASE[n]=0x00; n++; } if (A[L]=='1') { FRASE[n]=TIPO[18]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[9]; n++; FRASE[n]=0x00; n++; } if (A[L]=='2') { FRASE[n]=TIPO[8]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[14]; n++; FRASE[n]=0x00; n++; } if (A[L]=='3') { FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='4') { FRASE[n]=TIPO[5]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='5') { FRASE[n]=TIPO[14]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[21]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='6') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[21]; n++; FRASE[n]=0x00; n++; } if (A[L]=='7') { FRASE[n]=TIPO[2]; n++; FRASE[n]=TIPO[1]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='8') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[6]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='9') { FRASE[n]=TIPO[5];

n++; FRASE[n]=TIPO[1]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]=='0') { FRASE[n]=TIPO[0]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[0]; n++; FRASE[n]=0x00; n++; } if (A[L]==' ' || A[L]=='_') { FRASE[n]=0x00; n++; FRASE[n]=0x00; n++; } if (A[L]=='!') { FRASE[n]=TIPO[14]; n++; FRASE[n]=0x00; n++; } if (A[L]=='') { FRASE[n]=TIPO[8]; n++; FRASE[n]=0x00; n++; } if (A[L]=='.') { FRASE[n]=TIPO[9]; n++; FRASE[n]=0x00; n++; }

if (A[L]=='+') { FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[15]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=0x00; n++; } if (A[L]=='-') { FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=TIPO[3]; n++; FRASE[n]=0x00; n++; } if (A[L]=='/') { FRASE[n]=0X86; n++; FRASE[n]=0X8C; n++; FRASE[n]=0X98; n++; FRASE[n]=0x00; n++; } if (A[L]=='*') { FRASE[n]=0XA8; n++; FRASE[n]=0X90; n++; FRASE[n]=0XA8; n++; FRASE[n]=0x00; n++; } if (A[L]==':') { FRASE[n]=0X94;

n++; FRASE[n]=0x00; n++; } if (A[L]=='=') { FRASE[n]=0X94; n++; FRASE[n]=0X94; n++; FRASE[n]=0X94; n++; FRASE[n]=0x00; n++; }

if (A[L]=='?') { FRASE[n]=TIPO[2]; n++; FRASE[n]=TIPO[8]; n++; FRASE[n]=TIPO[22]; n++; FRASE[n]=0x00; n++; } if (A[L]=='') { FRASE[n]=TIPO[21]; n++; FRASE[n]=TIPO[14]; n++; FRASE[n]=TIPO[9]; n++; FRASE[n]=0x00; n++; } if (A[L]=='(') { FRASE[n]=TIPO[15]; n++; FRASE[n]=TIPO[12]; n++; FRASE[n]=0x00; n++; }

if (A[L]==')') { FRASE[n]=TIPO[12]; n++; FRASE[n]=TIPO[15]; n++; FRASE[n]=0x00; n++; }

} break;

case '2': i=16; H=0; z=0; while(!kbhit()) { for(int p=1; p<=30000; p++) { i--; if(i==-1) {i=15;} if(H==z+16) {H=z;} if (H<n) { PortOut(dirFILA,0X00); PortOut(dirABCD,COL[i]); PortOut(dirFILA,FRASE[H]); } H++; } z++; if(z==n) {z=0;} H=z;

PortOut(dirFILA,0X00); break; default: printf("\n\n\n+++++Adios+++++ \n"); } getch(); }while(op2!='3'); UnloadIODLL(); }

Io.cpp #include "io.h" PORTOUT PortOut; PORTWORDOUT PortWordOut; PORTDWORDOUT PortDWordOut; PORTIN PortIn; PORTWORDIN PortWordIn; PORTDWORDIN PortDWordIn; SETPORTBIT SetPortBit; CLRPORTBIT ClrPortBit; NOTPORTBIT NotPortBit; GETPORTBIT GetPortBit; RIGHTPORTSHIFT RightPortShift; LEFTPORTSHIFT LeftPortShift; ISDRIVERINSTALLED IsDriverInstalled; HMODULE hio; void UnloadIODLL() { FreeLibrary(hio); } int LoadIODLL() { hio = LoadLibrary("io"); if (hio == NULL) return 1; PortOut = (PORTOUT)GetProcAddress(hio, "PortOut"); PortWordOut = (PORTWORDOUT)GetProcAddress(hio, "PortWordOut"); PortDWordOut = (PORTDWORDOUT)GetProcAddress(hio, "PortDWordOut"); PortIn = (PORTIN)GetProcAddress(hio, "PortIn"); PortWordIn = (PORTWORDIN)GetProcAddress(hio, "PortWordIn"); PortDWordIn = (PORTDWORDIN)GetProcAddress(hio, "PortDWordIn"); SetPortBit = (SETPORTBIT)GetProcAddress(hio, "SetPortBit"); ClrPortBit = (CLRPORTBIT)GetProcAddress(hio, "ClrPortBit"); NotPortBit = (NOTPORTBIT)GetProcAddress(hio, "NotPortBit"); GetPortBit = (GETPORTBIT)GetProcAddress(hio, "GetPortBit");

RightPortShift = (RIGHTPORTSHIFT)GetProcAddress(hio, "RightPortShift"); LeftPortShift = (LEFTPORTSHIFT)GetProcAddress(hio, "LeftPortShift"); IsDriverInstalled = (ISDRIVERINSTALLED)GetProcAddress(hio, "IsDriverInstalled"); atexit(UnloadIODLL); return 0; }

Io.h #include <windows.h> typedef void (WINAPI *PORTOUT) (short int Port, char Data); typedef void (WINAPI *PORTWORDOUT)(short int Port, short int Data); typedef void (WINAPI *PORTDWORDOUT)(short int Port, int Data); typedef char (WINAPI *PORTIN) (short int Port); typedef short int (WINAPI *PORTWORDIN)(short int Port); typedef int (WINAPI *PORTDWORDIN)(short int Port); typedef void (WINAPI *SETPORTBIT)(short int Port, char Bit); typedef void (WINAPI *CLRPORTBIT)(short int Port, char Bit); typedef void (WINAPI *NOTPORTBIT)(short int Port, char Bit); typedef short int (WINAPI *GETPORTBIT)(short int Port, char Bit); typedef short int (WINAPI *RIGHTPORTSHIFT)(short int Port, short int Val); typedef short int (WINAPI *LEFTPORTSHIFT)(short int Port, short int Val); typedef short int (WINAPI *ISDRIVERINSTALLED)(); extern PORTOUT PortOut; extern PORTWORDOUT PortWordOut; extern PORTDWORDOUT PortDWordOut; extern PORTIN PortIn; extern PORTWORDIN PortWordIn; extern PORTDWORDIN PortDWordIn; extern SETPORTBIT SetPortBit; extern CLRPORTBIT ClrPortBit; extern NOTPORTBIT NotPortBit; extern GETPORTBIT GetPortBit; extern RIGHTPORTSHIFT RightPortShift; extern LEFTPORTSHIFT LeftPortShift; extern ISDRIVERINSTALLED IsDriverInstalled; extern int LoadIODLL(); extern void UnloadIODLL();

4. Lista de Componentes a utilizar, caractersticas y precios.


Los componentes a utilizar en el circuito son:

Componente Circuito Integrado DM74LS154

Cantidad 1

Precios MXN $50.50

Imagen

Diodo Led (Rojo)

112

$1.00 x 112

Placa para soldar

$100.00

Cautn

$65.00

Soldadura

100 grs

$98.00

Alambre de cobre

1 m.

$4.00

Cable de conexin tipo macho puerto paralelo

$9.00

Cable de conexin tipo hembra puerto paralelo

$25.00

TOTAL: $ 463.50

5. Hoja de datos (Datasheet) del circuito DM74LS154

6. Uso de la pantalla de Leds y fotos.


El circuito funciona de la siguiente manera:

Se corre el programa y se comienza en el Men del mismo.

Se proporciona la frase que se quiere mostrar en la pantalla de leds.

Despus regresamos al men del programa y le damos el nmero dos, para mostrar en la pantalla de leds.

Se observa el mensaje en la pantalla de leds.

Como ltimo paso en la pantalla de men ponemos el nmero tres para salir del programa.

Fotos:

7. MARCO TEORICO Qu es el lenguaje c++?


El comit para el estndar ANSI C fue formado en 1983 con el objetivo de crear un lenguaje uniforme a partir del C original, desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estndar lo marcaba el libro escrito en 1978 por estos dos autores. El lenguaje C++ se comenz a desarrollar en 1980. Su autor fue B. Stroustrup, tambin de la ATT. Al comienzo era una extensin del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenz a ser utilizado fuera de la ATT en 1983. El nombre C++ es tambin de ese ao, y hace referencia al carcter del operador incremento de C (++). Ante la gran difusin y xito que iba obteniendo en el mundo de los programadores, la ATT comenz a estandarizarlo internamente en 1987. En 1989 se form un comit ANSI (seguido algn tiempo despus por un comit ISO) para estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es un lenguaje verstil, potente y general. Su xito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisin y eficiencia. Adems, ha eliminado algunas de las dificultades y limitaciones del C original. La evolucin de C++ ha continuado con la aparicin de Java, un lenguaje creado simplificando algunas cosas de C++ y aadiendo otras, que se utiliza para realizar aplicaciones en Internet. Hay que sealar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de ste fueron tomadas del C++. El lenguaje C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con l. Como lenguaje orientado a objetos se basa en una filosofa completamente diferente, que exige del programador un completo cambio de mentalidad. Las caractersticas propias de la Programacin Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que s que cambian radicalmente su naturaleza.

Leds

El LED es un tipo especial de diodo, que trabaja como un diodo comn, pero que al ser atravesado por la corriente elctrica, emite luz. Existen diodos LED de varios colores que dependen del material con el cual fueron construidos. Hay de color rojo, verde, amarillo, mbar, infrarrojo, entre otros. Elctricamente el diodo LED se comporta igual que un diodo de silicio o germanio. Si se pasa una corriente a travs del diodo semiconductor, se inyectan electrones y huecos en las regiones P y N, respectivamente. Dependiendo de la magnitud de la corriente, hay recombinacin de los portadores de carga (electrones y huecos). Hay un tipo de recombinaciones que se llaman recombinaciones radiantes (aqu la emisin de luz). La relacin entre las recombinaciones radiantes y el total de recombinaciones depende del material semiconductor utilizado (GaAs, GaAsP,y GaP) Dependiendo del material de que est hecho el LED, ser la emisin de la longitud de onda y por ende el color. Debe de escogerse bien la corriente que atraviesa el LED para obtener una buena intensidad luminosa y evitar que este se pueda daar. El LED tiene un voltaje de operacin que va de 1.5 V a 2.2 voltios aproximadamente y la gama de corrientes que debe circular por l est entre los 10 y 20 miliamperios (mA) en los diodos de color rojo y de entre los 20 y 40 miliamperios (mA) para los otros LEDs. Los diodos LED tiene enormes ventajas sobre las lmparas indicadoras comunes, como su bajo consumo de energa, su mantenimiento casi nulo y con una vida aproximada de 100,000 horas. El diodo LED debe ser protegido. Una pequea cantidad de corriente en sentido inverso no lo daar, pero si hay picos inesperados puede daarse.

Puerto paralelo
Hace aos, IBM dise el puerto paralelo para manejar impresoras desde su gama de microcomputadores PC/XT/AT. Un conector estndar macho de 25 pines apareca en la parte trasera del PC con el solo propsito de servir de interfaz con la impresora. El sistema operativo DOS cargado en dichos PC soporta hasta tres puertos paralelos asignados a los identificadores LPT1, LPT2 y LPT3, y cada puerto requiere tres direcciones consecutivas del espacio de E/S (entrada-salida) del procesador para seleccionar todas sus posibilidades. Desde el punto de vista del hardware, el puerto consta de un conector hembra DB25 con doce salidas latch (poseen memoria/buffer intermedio) y cinco entradas, con ocho lneas de tierra. Desde el punto de vista del software, el puerto paralelo consta de tres registros (datos, estado y control) de 8 bits cada uno, que ocupan tres direcciones de E/S (I/O) consecutivas de la arquitectura x86. La funcin normal del puerto consiste en transferir datos a una impresora mediante 8 lneas de salida de datos, usando las seales restantes como control de flujo. Sin embrago, puede ser usado como un puerto E/S de propsito general por cualquier dispositivo o aplicacin que se ajuste a sus posibilidades de entrada/salida. Descripcin del conector fsico

La conexin del puerto paralelo al mundo exterior se realiza mediante un conector hembra DB25. Observando el conector de frente y con la parte que tiene mayor nmero de pines hacia arriba, se numera de derecha a izquierda y de arriba a abajo, del 1 al 13 (arriba) y del 14 al 25 (abajo).

8. Conclusiones
Al principio se crey que iba a ser demasiado complicado resolver este problema, sin embargo al realizarse paso por paso, de lo sencillo a lo complejo se consigui resolver el problema de manera satisfactoria. Los pasos para resolver el proyecto fueron los siguientes: 1: Identificacin del Problema.- Tal y como lo dice se identifico el problema de manera clara y sencilla. 2: Recopilacin de Informacin- Se recopilo informacin para entender lo que se estaba pidiendo y as u vez para entender cuales serian las soluciones y como realizarlas; esto se puede observar en Hojas de datos (Datasheet), historia, entre otros. 3: Bsqueda de Soluciones creativas (tcnicas)- se investigo las posibles soluciones para resolver el problema, de tal manera que se termino creando un diagrama de circuito nico y creativo para resolver el problema. 4: Evaluacin y seleccin de la mejor solucin- Se evalu para comprobar si cumpla con los requerimientos necesarios para resolver el problema, el circuito creado lo consigui de manera satisfactoria. 6: Elaboracin de reportes, planos y especificaciones e Implementacin del Diseo- Se elaboraron tablas de listas de componentes y especificaciones, clasificacin de sus componentes en pasivos y activos, tipos de seales y etapas analgicas y digitales, lista de precios y material utilizado, entre otros. 7: Programacin- La programacin que se realizo se realizo en el entorno de visual studio lo cual nos hizo ms amigable la utilizacin de c++ para crear el programa de manejo del puerto paralelo

Para concluir cabe decir que el proyecto resulto ser muy til y supero las expectativas de los conocimiento que se iban a adquirir; al realizarse todo este proceso de investigacin, aprendimos como hacer un circuito complicado as sobre cmo llegar a resolver problemas lgicos mediante la utilizacin de programas de computadora.

FUENTES DE INFORMACION

[1] C++ Manual de Referencia con anotaciones; Margaret A. Ellis, Bjarne Stroustrup; [E-book]Disponible en: http://books.google.com.mx/books?id=8XB8DMjKNMC&printsec=frontcover&dq=c%2B%2B&hl=es&ei=QAvzS9vNKIOglAes1KSl DQ&sa=X&oi=book_result&ct=result&resnum=2&ved=0CDEQ6AEwAQ#v=onepage &q&f=false; [Fecha de consulta: 11 de Mayo de 2010] [2] Como Usar Puerto Paralelo (C++, Visual Basic, Lab View); Foros de electronica; Disponible en: http://www.forosdeelectronica.com/f26/usar-puerto-paralelo-c-visualbasic-lab-view-2259/; [Fecha de consulta: 11 de Mayo de 2010] [3] Puerto Paralelo - Leccin 1; uteq; Disponible en: http://electronica.uteq.edu.mx/proyectos/informatica/Puerto%20Paralel1%20final.pdf ; [Fecha de consulta: 13 de Mayo de 2010] [4] Data Sheet (Circuito Integrado DM74LS154); National semiconductor S.A..; Disponible en: http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS006394.PDF; [Fecha de consulta: 13 de Mayo de 2010] [5] Simple LED fler circuits; Colin Pringle; Disponible en: http://wildbohemian.com/electronics/flasher.html; [Fecha de consulta: 10 de Diciembre de 2009] [6] LED; Ucontrol; Disponible en: http://www.ucontrol.com.ar/wiki/index.php/LED#Historia; [Fecha de consulta: 10 de diciembre]

S-ar putea să vă placă și