Está en la página 1de 32

PROGRAMACIN BSICA

PROFESORA: NGELES HERNNDEZ LEONOR

UNIDAD 7 y 8

PROGRAMAS EN C, GRAFICACIN Y PUERTOS

ALUMNO: JUAN GARCA PEDRO OCTAVIO

NMERO DE CONTROL: 10680250

SEGUNDO SEMESTRE INGENIERA EN MECATRNICA

H.H. CUAUTLA MOR. 27 DE MAYO DEL 2011


Programacin bsica pgina 1

Unidad 7 Grficos

Grficos BGI
Los grficos BGI, son grficos para el modo DOS, que se pueden ejecutar gracias a la librera BGI (Borland Graphics Interface). Utilizar esta librera nativa del Borland C++, nos evita tener que estar utilizando interrupciones al DOS escritas en ASM. Adems, basta con que incluyamos las libreras en la misma carpeta que nuestra aplicacin y quien lo reciba, podr ver los grficos sin ningn problema.

Para poder utilizar los grficos BGI en nuestras aplicaciones, debemos incluir la librera graphics.h.

Comandos en la librera graphics.h.


cleardevice() //Limpia la pantalla, reemplaza a clrscr() en BGI setbkcolor() //Establece el color de fondo de la pantalla setcolor(COLOR) //Establece el color de una imagen o figura bar(int,int,int,int) //Dibuja una barra, Izquierda,Arriba,Derecha,Abajo bar3D //Dibuja una barra en formato 3D, con profundidad. // Izquierda,Arriba,Derecha,Abajo,profundidad,tope circle(int,int,int) //Dibuja un crculo, X, Y, Radio line(int,int,int,int) //Dibuja una lnea, X1, Y1, X2, Y2 rectangle(int,int,int,int) //Dibuja un rectngulo Izquierda,Arriba,Derecha,Abajo ellipse(int,int,int,int,int,int) //Dibuja una elipse X, Y, ngulo Inicial, ngulo Final, Radio de X, Radio de Y.

Programacin bsica

pgina 2

Colores disponibles:
BLACK --> Negro RED --> Rojo BLUE --> Azul MAGENTA --> Prpura GREEN --> Verde BROWN --> Marrn CYAN --> Matiz entre azul y verde YELLOW --> Amarillo LIGHTGRAY --> Gris Claro DARKGRAY --> Gris Oscuro LIGHTBLUE --> Azul Claro LIGHTGREEN --> Verde Claro LIGHTCYAN --> Matiz entre azul y verde, claro.... LIGHTRED --> Rojo Claro WHITE --> Blanco LIGHTMAGENTA --> Prpura Claro

Tipos de letra o fuentes que tenemos disponibles:


TRIPLEX_FONT SMALL_FONT GOTHIC_FONT DEFAULT_FONT SANS_SERIF_FONT

Ahora, mostraremos las alineaciones, es decir, si el texto se va a mostrar de manera horizontal (Izquierda a Derecha) o vertical (Arriba a Abajo):
HORIZ_DIR VERT_DIR

La alineacin que le damos a los textos:


LEFT_TEXT Alineado hacia la izquierda CENTER_TEXT Centrado RIGHT_TEXT Alineado hacia la derecha

Programacin bsica

pgina 3

Un programa de grficos para compilar en Borland 3.1


Ejemplo: Disee un programa que imprima un crculo en la pantalla y en el centro escriba Ingeniera Mecnica
#include #include #include #include <graphics.h> <stdlib.h> <stdio.h> <conio.h>

int main(void) {int gdriver = DETECT, gmode; int x,y; initgraph(&gdriver, &gmode, "c:\\bc31\\bgi"); x=getmaxx()/2; y=getmaxy()/2; circle(x,y,100); outtextxy(x-80,y,"Ingenieria Mecanica"); getch(); closegraph(); return 0; }

Programacin grafica en DEV-C++ usando la librera no estndar WINBGIM.

La librera winbgim.h a sido creada originalmente por Konstantin Knizhnik's winbgi shareware y posteriormente modificada por Mark Richardson y Michael Main, esta librera tiene como objetivo emular la librera graphics.h de Borland C++ y facilitar algunas funciones del Mouse. La ventaja de esta librera es que nos permite crear aplicaciones grficas con compiladores GNU tales como el ambiente de desarrollo Dev C++ de la misma manera como se crean en el compilador comercial Borland C++.

Programacin bsica

pgina 4

Esta librera no solo soporta los 16 colores de la librera graphics.h de Borland mediante las constantes BLACK BLUE GREEN CYAN RED MAGENTA BROWN LIGHTGRAY DARKGRAY LIGHTBLUE LIGHTGREEN LIGHTCYAN LIGHTRED LIGHTMAGENTA YELLOW WHITE, sino que es posible usar colores rgb, lo cual nos da al rededor de 16 millones de colores incrustando el macro COLOR(r,g,b) en donde originalmente estara el indicado el color. El resto de las funciones grficas funcionan igual que en la librera original graphics.h y pueden encontrarse en la ayuda del Turbo C++ de Borland o e cualquier manual de este mismo.

Funciones principales de la librera winbgim.h


Funcin Tarea void circle (int x, int y, int Dibuja un circulo en x,y de radius); radio radius void cleardevice (void); Borra la pantalla void line (int x1, int y1, int Traza una lnea desde x1,y1 x2, int y2); hasta x2,y2 Traza una lnea desde la void lineto (int x, int y) posicin actual de cursor hasta x,y void putpixel (int x, int y, Dibuja un pixel en x,y de int color); color color Dibuja un rectangulo de void rectangle (int left, int esquenas top,left y top, int right, int bottom); right,bottom void setcolor (int color); Establece el color actual. Retorna la coordenada x del int mousex(void) Mouse relativa a la esquina superior izquierda Retorna la coordenada y del int mousey(void) Mouse relativa a la esquina superior izquierda

Programacin bsica

pgina 5

Ejemplos en DEV-C++
1. Dibuja una lnea desde 0,0 hasta 400,400.

Programacin bsica

pgina 6

2. Grfica del sin .

Programacin bsica

pgina 7

3. Dibujo de un rectngulo, circulo y un cuadrado.

4. Pinta toda la pantalla con colores rgb.

Programacin bsica

pgina 8

Modelo de color RGB


La descripcin RGB (del ingls Red, Green, Blue; "rojo, verde, azul") de un color hace referencia a la composicin del color en trminos de la intensidad de los colores primarios con que se forma: el rojo, el verde y el azul. Es un modelo de color basado en la sntesis aditiva, con el que es posible representar un color mediante la mezcla por adicin de los tres colores luz primarios. El modelo de color RGB no define por s mismo lo que significa exactamente rojo, verde o azul, por lo que los mismos valores RGB pueden mostrar colores notablemente diferentes en diferentes dispositivos que usen este modelo de color. Aunque utilicen un mismo modelo de color, sus espacios de color pueden variar considerablemente. 5. Dibujo de un crculo.

Programacin bsica

pgina 9

Unidad 8 Puertos
El puerto paralelo de la PC
Los puertos de comunicacin de la PC son de particular inters para el estudio de la electrnica ya que le permiten utilizar una computadora personal para controlar todo tipo circuitos electrnicos utilizados, principalmente, en actividades de automatizacin de procesos, adquisicin de datos, tareas repetitivas y otras actividades que demandan precisin. ste artculo es el primero de una serie que analizar diversos usos para el puerto paralelo de la PC.

Conceptos bsicos
Existen dos mtodos bsicos para transmisin de datos en las computadoras modernas. En un esquema de transmisin de datos en serie un dispositivo enva datos a otro a razn de un bit a la vez a travs de un cable. Por otro lado, en un esquema de transmisin de datos en paralelo un dispositivo enva datos a otro a una tasa de n nmero de bits a travs de n nmero de cables a un tiempo. Sera fcil pensar que un sistema en paralelo es n veces ms rpido que un sistema en serie, sin embargo esto no se cumple, bsicamente el impedimento principal es el tipo de cable que se utiliza para interconectar los equipos. Si bien un sistema de comunicacin en paralelo puede utilizar cualquier nmero de cables para transmitir datos, la mayora de los sistemas paralelos utilizan ocho lneas de datos para transmitir un byte a la vez, como en todo, existen excepciones, por ejemplo el estndar SCSI permite 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.

Un tpico sistema de comunicacin en paralelo puede ser de una direccin ( unidireccional) o de dos direcciones (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. La parte transmisora coloca la informacin en las lneas de datos e informa a la parte receptora que la informacin (los datos) estn disponibles; 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). Observe que ambas partes sincronizan su respectivo acceso a las lneas de datos, la parte receptora no leer las lneas de datos hasta que la parte transmisora se lo indique en tanto que la parte transmisora no colocar nueva informacin en las lneas de datos hasta que la parte receptora remueva la informacin y le indique a la parte transmisora que ya ha
Programacin bsica pgina 10

tomado los datos, a sta coordinacin de operaciones se le llama acuerdo entendimiento. En estos mbitos tecnolgicos es recomendable utilizar ciertas palabras en ingls que nos permiten irnicamente un mejor entendimiento de los conceptos tratados. Repito: a 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 estroboscopio (en ingls 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 de handshaking llamada en ingls 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:
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. La parte transmisora coloca la informacin en las lneas de datos. La parte transmisora activa la lnea de strobe. La parte transmisora espera en un bucle hasta que la lnea acknowledge est activa. La parte transmisora inactiva la lnea de strobe. La parte transmisora espera en un bucle hasta que la lnea acknowledge est inactiva. La parte transmisora repite los pasos anteriores por cada byte a ser transmitido.

Programacin bsica

pgina 11

Parte receptora:
La parte receptora inactiva la lnea busy (asumiendo que est lista para recibir informacin). La parte receptora espera en un bucle hasta que la lnea strobe est activa. La parte receptora lee la informacin de las lneas de datos (y si es necesario, procesa los datos). La parte receptora activa la lnea acknowledge. La parte receptora espera en un bucle hasta que est inactiva la lnea de strobe. La parte receptora inactiva la lnea acknowledge. La parte receptora repite los pasos anteriores por cada byte que debe recibir.

Se debe ser muy cuidadoso al seguir stos pasos, 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 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 D de 25 pines (DB25 S), ste es el caso ms comn, sin embargo es conveniente mencionar los tres tipos de conectores definidos por el estndar IEEE 1284, el primero, llamado 1284 tipo A es un conector hembra de 25 patitas de tipo D, es decir, el que mencionamos al principio. El orden de las patitas del conector es ste:

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, adems se dice que tiene mejores propiedades elctricas y mecnicas, ste conector es el recomendado para nuevos diseos. La siguiente tabla describe la funcin de cada patita del conector 1284 tipo A:

Programacin bsica

pgina 12

Patita 1 2~9 10

E/S Salida Salida Entrada

Polaridad activa 0 0

Descripcin Strobe Lneas de datos (bit 0/patita 2, bit 7/patita 9) 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)
pgina 13

11

Entrada

12

Entrada

13

Entrada

14

Salida

15

Entrada

16

Salida

Programacin bsica

17 18 ~ 25

Salida -

0 -

Lnea Select input (Cuando est inactiva, obliga a la impresora a salir de lnea) Tierra elctrica

Tabla 1: Configuracin del puerto paralelo estndar


Una PC soporta hasta tres puertos paralelo separados, por tanto puede haber hasta tres juegos de registros en un sistema en un momento dado. Existen tres direcciones base para el puerto paralelo asociadas con tres posibles puertos paralelo: 0x3BCh, 0x378h y 0x278h, nos referimos a stas como las direcciones base para el puerto LPT1, LPT2 y LPT3, respectivamente. El registro de datos se localiza siempre en la direccin base de un puerto paralelo, el registro de estado aparece en la direccin base + 1, y el registro de control aparece en la direccin base + 2. Por ejemplo, para un puerto LPT2 localizado en 0x378h, sta es la direccin del registro de datos, al registro de estado le corresponde la direccin 0x379h y su respectivo registro de control est en la direccin 0x37Ah. Cuando la PC se enciende el BIOS ejecuta una rutina para determinar el nmero de puertos presentes en el sistema asignando la etiqueta LPT1 al primer puerto localizado, si existen ms puertos entonces se asignarn consecutivamente las etiquetas LPT2 y LPT3 de acuerdo a la siguiente tabla:

Direccin inicial 0000:0408 0000:040A 0000:040C 0000:040E

Funcin Direccin base para LPT1 Direccin base para LPT2 Direccin base para LPT3 Direccin base para LPT4

Tabla 5: Direcciones base en el BIOS

Programacin bsica

pgina 14

Interfaz para el puerto paralelo


Actualmente, la mayora de los puertos instalados en las computadoras son de tipo multimodal configurables a travs del BIOS de la mquina, en ste artculo me refiero expresamente al modo Normal (SPP), adems de ste estn las opciones Bidireccional, EPP versin 1.7, EPP versin 1.9 y ECP principalmente. El modo de operacin Normal es el ms elemental y solamente permite la escritura en las lneas de datos, patitas 2 a la 9 del conector DB-25 del puerto paralelo de la PC. Elctricamente, el puerto paralelo entrega seales TTL y como tal, tericamente, se le puede conectar cualquier dispositivo que cumpla con los niveles de voltaje especficos de la lgica TTL, sin embargo el hardware del puerto paralelo est muy limitado en cuanto a su capacidad de manejo de corriente, por sta razn se debe ser muy cuidadoso con el manejo de las seales del puerto, un corto circuito puede daar permanentemente la tarjeta madre de la PC. Para disminuir lo ms posible el riesgo de daos al puerto utilizamos un circuito integrado 74LS244 como etapa separadora y al mismo tiempo mejoramos la capacidad de manejo de corriente, de esta forma podemos conectar una serie de diodos emisores de luz (LED) que nos indiquen la actividad en las lneas de datos del puerto paralelo. El circuito se detalla en el siguiente diagrama:

Programacin bsica

pgina 15

Por cada lnea de entrada que tomamos directamente del puerto paralelo existe una etapa amplificadora-separadora dentro del circuito integrado 74LS244 que nos permite trabajar con una tasa de entrega de corriente suficiente para desplegar en los diodos emisores de luz la informacin escrita en las lneas de datos del puerto. Adems es posible habilitar deshabilitar el despliegue del nibble de orden inferior superior del byte escrito en el puerto. Colocando en un nivel lgico alto la patita 1 del CI 74LS244 inhabilitamos el despliegue del nibble de orden bajo, un nivel lgico alto en la patita 19 evita el despliegue del nibble de orden alto. Para comodidad, conecto las patitas 1 y 19 permanentemente a tierra de tal manera que sea posible visualizar la actividad en los diodos emisores de luz (LED). En el diagrama se especifican con nmeros las correspondientes patitas del conector DB-25. Obviamente se requiere de una fuente regulada de 5 Voltios para operar ste circuito, adems los siguientes materiales:

1. Circuito Integrado TTL 74LS244. 8. Diodos Emisores de Luz. 8. Resistencias de 220 Ohms, 1/2 Watt. 1. Cable y conector para el puerto paralelo.

Naturalmente lo ms recomendable es probar el correcto funcionamiento del circuito antes de conectarlo al puerto paralelo de la PC. Ensamble el circuito, preferentemente en un circuito impreso, y conctelo a una fuente regulada de 5 Voltios, conecte temporalmente un extremo de una resistencia de 10,000 Ohms a una lnea de entrada, el resto de las lneas de entrada conctelas a tierra. El otro extremo de la resistencia conctelo directamente al borne positivo de la fuente de alimentacin para inducir una seal TTL alta, el respectivo LED debe encender. Con un trozo de alambre conectado a Tierra, toque temporalmente el extremo de la resistencia que est conectado a la lnea de entrada para inducir una seal TTL de lgica baja, el LED se debe apagar. Repita sta operacin para cada una de las ocho lneas de entrada. Una vez que ha verificado el correcto funcionamiento del circuito est listo para conectarlo al puerto paralelo de la PC. En primer lugar apague la computadora y el circuito. Conecte el cable al puerto paralelo asegurndose que el conector est firme en su sitio. Encienda el circuito y por ltimo encienda la computadora, por regla general, el circuito de restablecimiento de la computadora coloca inicialmente en las lneas de datos del puerto paralelo un valor igual a 0x0h, por lo tanto todos los diodos deben estar apagados una vez que la computadora ha terminado su proceso de arranque, sin embargo, si algn diodo permanece encendido esto no indica una condicin de falla, es responsabilidad del software que Usted escriba para controlar el puerto inicializarlo con un valor adecuado antes de realizar cualquier otra operacin.

Programacin bsica

pgina 16

Ejemplos en Turbo C++


1. En el ejemplo se enva un byte a las lneas de datos y se recibe un byte de las lneas de estado con las funciones outportb e inportb.
/* Ejemplo bsico de E/S digital mediante el puerto paralelo Salidas: lneas de datos (bits D0-D7 del registro de datos) Entradas: lneas de estado (bits S3-S7 del registro de estado) Suponemos puerto estndar en la direccin 0x378 */ #include <stdio.h> #include <dos.h>

main () { unsigned char byte;

/* byte para operaciones de E/S */

printf ("Introduce el byte que se enviara al puerto: "); scanf("%u", &byte); getchar(); outportb (0x378, byte); /* enva un byte a las lneas de datos */ printf ("Polariza las lineas de estado y pulsa una tecla\n"); getchar(); byte = inportb (0x378+1); /* lee un byte de las lneas de estado */ printf ("El valor leido es %i", byte); return 0; }

Programacin bsica

pgina 17

2.

Ejemplo Disear una aplicacin: Desde el punto de vista del hardware existen un grupo de leds que se cuelgan del puerto 0x378 (Dato 0-7). El programa debe realizar 4 efectos: Recorrer los leds desde el menos significativo hasta el ms significativo Recorrer los leds desde el ms significativo al menos significativo Recorrer los leds desde los extremos hacia el centro Recorrer los leds desde el centro hacia los extremos

Nota.- Cada efecto ha de ser mostrado 5 veces.


#include <stdio.h> #include <conio.h> #include <dos.h>

#define ESC 27 #define PORT 0x378

int main() { char cCar; int i; clrscr(); outp(PORT,0); printf("\n Seleccione una accion:"); printf("\n --------------------------------"); printf("\n 1. Secuencia a la derecha:"); printf("\n 2. Secuencia a la izquierda:"); printf("\n 3. Secuencia hacia el centro:"); printf("\n 4. Secuencia hacia afuera:"); printf("\n---------------------------------"); printf("\n Presione ESC para terminar");

Programacin bsica

pgina 18

while( (cCar=getch()) != ESC){

for(i=0;i<5;i++) switch(cCar) { case '1'://Derecha outp(PORT,0x01);delay(250); //0000 0001 outp(PORT,0x02);delay(250); //0000 0010 outp(PORT,0x04);delay(250); //0000 0100 outp(PORT,0x08);delay(250); //0000 1000 outp(PORT,0x10);delay(250); //0001 0000 outp(PORT,0x20);delay(250); //0010 0000 outp(PORT,0x40);delay(250); //0100 0000 outp(PORT,0x80);delay(250); //1000 0000 break;

case '2'://Izquierda outp(PORT,0x80);delay(250); //1000 0000 outp(PORT,0x40);delay(250); //0100 0000 outp(PORT,0x20);delay(250); //0010 0000 outp(PORT,0x10);delay(250); //0001 0000 outp(PORT,0x08);delay(250); //0000 1000 outp(PORT,0x04);delay(250); //0000 0100 outp(PORT,0x02);delay(250); //0000 0010 outp(PORT,0x01);delay(250); //0000 0001 break; case '3'://Al centro outp(PORT,0x81);delay(250); //1000 0001

Programacin bsica

pgina 19

outp(PORT,0x42);delay(250); //0100 0010 outp(PORT,0x24);delay(250); //0010 0100 outp(PORT,0x18);delay(250); //0001 1000 break;

case '4'://Afuera outp(PORT,0x18);delay(250); //0001 1000 outp(PORT,0x24);delay(250); //0010 0100 outp(PORT,0x42);delay(250); //0100 0010 outp(PORT,0x81);delay(250); //1000 0001 break; } outp(PORT,0);delay(250); } return 0; }

Programacin bsica

pgina 20

3. Hacer un programa que desplegu su nombre en un display de 7 segmentos. //JUAN_GARCIA_PEDRO_OCTAVIO //PRORAMACION DEL NOMBRE DESPLEGADO EN UN DISPLAY
#include #include #include #include #include <stdio.h> <conio.h> <dos.h> <iostream.h> <time.h>

int main() { textcolor(12); textbackground(0); clrscr(); outportb (0x378,0); cout << "J"; outportb (0x378,14); sleep(2);// Retraso de 1 segundos cout << "U"; outportb (0x378,62); sleep(2); cout << "A"; outportb (0x378,119); sleep(2); cout << "N"; outportb (0x378,55); sleep(2); cout << "_"; outportb (0x378,8); sleep(2); cout << "G"; outportb (0x378,125); sleep(2); cout << "A"; outportb (0x378,119); sleep(2); cout << "R"; outportb (0x378,80); sleep(2); cout << "C"; outportb (0x378,57); sleep(2); Programacin bsica pgina 21

cout << "I"; outportb (0x378,48); sleep(2); cout << "A"; outportb (0x378,119); sleep(2); cout << "_"; outportb (0x378,8); sleep(2); cout << "P"; outportb (0x378,115); sleep(2); cout << "E"; outportb (0x378,121); sleep(2); cout << "D"; outportb (0x378,63); sleep(2); cout << "R"; outportb (0x378,80); sleep(2); cout << "O"; outportb (0x378,92); sleep(2); cout << "_"; outportb (0x378,8); sleep(2); cout << "O"; outportb (0x378,92); sleep(2); cout << "C"; outportb (0x378,57); sleep(2); cout << "T"; outportb (0x378,49); sleep(2); cout << "A"; outportb (0x378,119); sleep(2); cout << "V"; outportb (0x378,28); sleep(2); cout << "I"; outportb (0x378,48); sleep(2); cout << "O"; outportb (0x378,92); Programacin bsica pgina 22

sleep(2); cout << "\nSALIENDO..."; sleep(2); outportb (0x378,0); return 0; }

Programacin bsica

pgina 23

4. Hacer un programa que controle 4 semforos de un crucero.


//JUAN GARCIA PEDRO OCTAVIO //Control de semaforo #include #include #include #include #include #define a #define b #define c int main () { textcolor(4); textbackground(0); clrscr (); a; outportb (0x378,0); cout <<"\n\n"; cout <<"\t"; cout << " Inicio de programa..."; getch (); clrscr (); a; b; c; textcolor(14); cout << "\n\n"; cout << "\t"; cout << "Verde"; outportb (0x378,12); cout << "\n\n"; cout << "\t"; cout << "Rojo"; sleep (10); clrscr (); a; b; c; textcolor(2); cout << "\n\n"; Programacin bsica pgina 24 <stdio.h> <dos.h> <iostream.h> <conio.h> <time.h> cout << "Controlador de semaforo"; cout << "\n\n\tAvenida1"; cout << "\n\n\n\tAvenida2";

cout << "\t"; cout << "Amarillo"; outportb (0x378,10); cout << "\n\n"; cout << "\t"; cout << "Rojo"; sleep (2); clrscr (); a; b; c; textcolor(4); cout << "\n\n"; cout << "\t"; cout << ""; outportb (0x378,8); cout << "\n\n"; cout << "\t"; cout << "Rojo"; sleep (2); clrscr (); a; b; c; textcolor(14); cout << "\n\n"; cout << "\t"; cout << "Amarillo"; outportb (0x378,10); cout << "\n\n"; cout << "\t"; cout << "Rojo"; sleep (2); clrscr (); a; b; c; textcolor(2); cout << "\n\n"; cout << "\t"; cout << ""; outportb (0x378,8); cout << "\n\n"; cout << "\t"; cout << "Rojo"; sleep (2); clrscr (); a; b; c; textcolor(4); Programacin bsica pgina 25

cout << "\n\n"; cout << "\t"; cout << "Amarillo"; outportb (0x378,10); cout << "\n\n"; cout << "\t"; cout << "Rojo"; sleep (2); clrscr (); a; b; c; textcolor(14); cout << "\n\n"; cout << "\t"; cout << "Rojo"; outportb (0x378,33); cout << "\n\n"; cout << "\t"; cout << "Verde"; sleep (10); clrscr (); a; b; c; textcolor(2); cout << "\n\n"; cout << "\t"; cout << "Rojo"; outportb (0x378,17); cout << "\n\n"; cout << "\t"; cout << "Amarillo"; sleep (2); clrscr (); a; b; c; textcolor(4); cout << "\n\n"; cout << "\t"; cout << "Rojo"; outportb (0x378,1); cout << "\n\n"; cout << "\t"; cout <<""; sleep (2); clrscr(); a; b; c; Programacin bsica pgina 26

textcolor(14); cout << "\n\n"; cout << "\t"; cout << "Rojo"; outportb (0x378,17); cout << "\n\n"; cout << "\t"; cout << "Amarillo"; sleep (2); clrscr (); a; b; c; textcolor(2); cout << "\n\n"; cout << "\t"; cout << "Rojo"; outportb (0x378,1); cout << "\n\n"; cout << "\t"; cout << ""; sleep (2); clrscr (); a; b; c; textcolor(4); cout << "\n\n"; cout << "\t"; cout << "Rojo"; outportb (0x378,17); cout << "\n\n"; cout << "\t"; cout << "Amarillo"; sleep (2); outportb (0x378,0); clrscr(); cout << " getch (); return 0; } Precione cualquier teclapara salir...";

Programacin bsica

pgina 27

Programacin bsica

pgina 28

5. Hacer un programa que controle un motor de corriente directa por puerto paralelo.
//JUAN GARCIA PEDRO OCTAVIO //Control de motor CD. #include <conio.h> #include <stdio.h> #include <dos.h> void main() { int seleccion,repetir=1; while (repetir==1) { textcolor(4); clrscr(); printf(" 1. printf(" 2. printf(" 3. printf(" 4. Sentido de giro a la derecha\n\n"); Sentido de giro la izquierda\n\n"); Paro\n\n"); Salir\n\n");

printf("\n\n"); seleccion=getche (); switch (seleccion) { case '1': printf(". Girando outport(0x378,2);getch();break; case '2': printf(". Girando outport(0x378,4);getch();break; hacia la derecha\n\n");

hacia

la

izquierda\n\n");

case '3': printf(". Paro\n\n\n");outport(0x378,0);getch();break; case '4': repetir=0;break; pgina 29

Programacin bsica

default: { printf("Instrucciones no validas"); getch(); } } } }

Programacin bsica

pgina 30

Programacin bsica

pgina 31

Referencias bibliogrficas: Digital: 1. http://www.latindevelopers.com/forum/introduccion-agraphics-h-t303.html 2. http://www.latindevelopers.com/forum/introduccion-agraphics-h-t303.html 3. http://usuarios.multimania.es/charlytospage/dev.htm 4. http://www.modelo.edu.mx/univ/virtech/circuito/paralelo.htm 5. http://cfievalladolid2.net/tecno/cyr_01/control/practicas/p_0.ht m 6. http://alos.5u.com/c/modulo10.html 7. http://www.mcbtec.com/puerto_paralelo_pc.htm 8. http://www.youtube.com/watch?v=OUKDLlpBb5o&feature=r elated 9. http://www.youtube.com/watch?v=Su2u4S6HW2c 10. http://www.youtube.com/watch?v=dmST4Tq1sKs&featu re=related

Programacin bsica

pgina 32

También podría gustarte