P. 1
PROGRAMAS EN C, GRAFICACIÓN Y PUERTOS

PROGRAMAS EN C, GRAFICACIÓN Y PUERTOS

|Views: 7.354|Likes:
Programas en C y C++ de Gráficos y Puertos
Programas en C y C++ de Gráficos y Puertos

More info:

Published by: Juan García Pedro Octavio on May 28, 2011
Copyright:Attribution Non-commercial

Availability:

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

08/09/2013

pdf

text

original

“PROGRAMACIÓN BÁSICA”

PROFESORA: ÁNGELES HERNÁNDEZ LEONOR

UNIDAD 7 y 8

PROGRAMAS EN C, GRAFICACIÓN Y PUERTOS

ALUMNO:  JUAN GARCÍA PEDRO OCTAVIO

NÚMERO DE CONTROL: 10680250

SEGUNDO SEMESTRE INGENIERÍA EN MECATRÓNICA

H.H. CUAUTLA MOR. 27 DE MAYO DEL 2011
Programación básica página 1

Unidad 7 Gráficos

Gráficos BGI
Los gráficos BGI, son gráficos para el modo DOS, que se pueden ejecutar gracias a la librería BGI (Borland Graphics Interface). Utilizar esta librería nativa del Borland C++, nos evita tener que estar utilizando interrupciones al DOS escritas en ASM. Además, basta con que incluyamos las librerías en la misma carpeta que nuestra aplicación y quien lo reciba, podrá ver los gráficos sin ningún problema.

Para poder utilizar los gráficos BGI en nuestras aplicaciones, debemos incluir la librería graphics.h.

Comandos en la librería 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 círculo, àX, Y, Radio line(int,int,int,int) //Dibuja una línea, àX1, Y1, X2, Y2 rectangle(int,int,int,int) //Dibuja un rectángulo à 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.

Programación básica

página 2

Colores disponibles:
BLACK --> Negro RED --> Rojo BLUE --> Azul MAGENTA --> Púrpura GREEN --> Verde BROWN --> Marrón 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 --> Púrpura 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 alineación que le damos a los textos:
LEFT_TEXT à Alineado hacia la izquierda CENTER_TEXT à Centrado RIGHT_TEXT à Alineado hacia la derecha

Programación básica

página 3

Un programa de gráficos para compilar en Borland 3.1
Ejemplo: Diseñe un programa que imprima un círculo en la pantalla y en el centro escriba “Ingeniería Mecánica”
#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; }

Programación grafica en DEV-C++ usando la librería no estándar WINBGIM.

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

Programación básica

página 4

Esta librería no solo soporta los 16 colores de la librería 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 estaría el indicado el color. El resto de las funciones gráficas funcionan igual que en la librería 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 librería winbgim.h
Función 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 línea desde x1,y1 x2, int y2); hasta x2,y2 Traza una línea desde la void lineto (int x, int y) posición 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

Programación básica

página 5

Ejemplos en DEV-C++
1. Dibuja una línea desde 0,0 hasta 400,400.

Programación básica

página 6

2. Gráfica del sin 𝑥 .

Programación básica

página 7

3. Dibujo de un rectángulo, circulo y un cuadrado.

4. Pinta toda la pantalla con colores rgb.

Programación básica

página 8

Modelo de color RGB
La descripción RGB (del inglés Red, Green, Blue; "rojo, verde, azul") de un color hace referencia a la composición del color en términos 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 síntesis aditiva, con el que es posible representar un color mediante la mezcla por adición 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 círculo.

Programación básica

página 9

Unidad 8 Puertos
El puerto paralelo de la PC
Los puertos de comunicación de la PC son de particular interés para el estudio de la electrónica ya que le permiten utilizar una computadora personal para controlar todo tipo circuitos electrónicos utilizados, principalmente, en actividades de automatización de procesos, adquisición de datos, tareas repetitivas y otras actividades que demandan precisión. Éste artículo es el primero de una serie que analizará diversos usos para el puerto paralelo de la PC.

Conceptos básicos
Existen dos métodos básicos para transmisión de datos en las computadoras modernas. En un esquema de transmisión de datos en serie un dispositivo envía datos a otro a razón de un bit a la vez a través de un cable. Por otro lado, en un esquema de transmisión de datos en paralelo un dispositivo envía datos a otro a una tasa de n número de bits a través de n número de cables a un tiempo. Sería fácil pensar que un sistema en paralelo es n veces más rápido que un sistema en serie, sin embargo esto no se cumple, básicamente el impedimento principal es el tipo de cable que se utiliza para interconectar los equipos. Si bien un sistema de comunicación en paralelo puede utilizar cualquier número de cables para transmitir datos, la mayoría de los sistemas paralelos utilizan ocho líneas de datos para transmitir un byte a la vez, como en todo, existen excepciones, por ejemplo el estándar SCSI permite transferencia de datos en esquemas que van desde los ocho bits y hasta los treinta y dos bits en paralelo. En éste artículo nos concentraremos en transferencias de ocho bits ya que ésta es la configuración del puerto paralelo.

Un típico sistema de comunicación en paralelo puede ser de una dirección (unidireccional) o de dos direcciones (bidireccional). El más 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 información en las líneas de datos e informa a la parte receptora que la información (los datos) están disponibles; entonces la parte receptora lee la información en las líneas de datos e informa a la parte transmisora que ha tomado la información (los datos). Observe que ambas partes sincronizan su respectivo acceso a las líneas de datos, la parte receptora no leerá las líneas de datos hasta que la parte transmisora se lo indique en tanto que la parte transmisora no colocará nueva información en las líneas de datos hasta que la parte receptora remueva la información y le indique a la parte transmisora que ya ha
Programación básica página 10

tomado los datos, a ésta coordinación de operaciones se le llama acuerdo ó entendimiento. En estos ámbitos tecnológicos es recomendable utilizar ciertas palabras en inglés que nos permiten irónicamente un mejor entendimiento de los conceptos tratados. Repito: a la coordinación de operaciones entre la parte transmisora y la parte receptora se le llama handshaking, que en español es el acto con el cual dos partes manifiestan estar de acuerdo, es decir, se dan un apretón de manos.

El handshaking
Para implementar el handshaking se requieren dos líneas adicionales. La línea de estroboscopio (en inglés strobe) es la que utiliza la parte transmisora para indicarle a la parte receptora la disponibilidad de información. La línea de admisión (acknowledge) es la que utiliza la parte receptora para indicarle a la parte transmisora que ha tomado la información (los datos) y que está lista para recibir más datos. El puerto paralelo provee de una tercera línea de handshaking llamada en inglés 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 información en las líneas de datos. Una típica sesión de transmisión de datos se parece a lo siguiente:

Parte transmisora:
       La parte transmisora checa la línea busy para ver si la parte receptora está ocupada. Si la línea busy está activa, la parte transmisora espera en un bucle hasta que la línea busy esté inactiva. La parte transmisora coloca la información en las líneas de datos. La parte transmisora activa la línea de strobe. La parte transmisora espera en un bucle hasta que la línea acknowledge está activa. La parte transmisora inactiva la línea de strobe. La parte transmisora espera en un bucle hasta que la línea acknowledge esté inactiva. La parte transmisora repite los pasos anteriores por cada byte a ser transmitido.

Programación básica

página 11

Parte receptora:
       La parte receptora inactiva la línea busy (asumiendo que está lista para recibir información). La parte receptora espera en un bucle hasta que la línea strobe esté activa. La parte receptora lee la información de las líneas de datos (y si es necesario, procesa los datos). La parte receptora activa la línea acknowledge. La parte receptora espera en un bucle hasta que esté inactiva la línea de strobe. La parte receptora inactiva la línea 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 líneas de datos, en tanto que la parte receptora no debe leer más datos que los que le envíe la parte transmisora, un byte a la vez.

El hardware del puerto paralelo
El puerto paralelo de una típica PC utiliza un conector hembra de tipo D de 25 pines (DB25 S), éste es el caso más común, sin embargo es conveniente mencionar los tres tipos de conectores definidos por el estándar 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 mayoría de las impresoras; el tercero se denomina 1284 tipo C, se trata de un conector similar al 1284 tipo B pero más pequeño, además se dice que tiene mejores propiedades eléctricas y mecánicas, éste conector es el recomendado para nuevos diseños. La siguiente tabla describe la función de cada patita del conector 1284 tipo A:

Programación básica

página 12

Patita 1 2~9 10

E/S Salida Salida Entrada

Polaridad activa 0 0

Descripción Strobe Líneas de datos (bit 0/patita 2, bit 7/patita 9) Línea acknowledge (activa cuando el sistema remoto toma datos) Línea busy (si está activa, el sistema remoto no acepta datos) Línea Falta de papel (si está activa, falta papel en la impresora) Línea Select (si está activa, la impresora se ha seleccionado) Línea Autofeed (si está activa, la impresora inserta una nueva línea por cada retorno de carro) Línea Error (si está activa, hay un error en la impresora) Línea Init (Si se mantiene activa por al menos 50 micro-segundos, ésta señal autoinicializa la impresora)
página 13

11

Entrada

0

12

Entrada

1

13

Entrada

1

14

Salida

0

15

Entrada

0

16

Salida

0

Programación básica

17 18 ~ 25

Salida -

0 -

Línea Select input (Cuando está inactiva, obliga a la impresora a salir de línea) Tierra eléctrica

Tabla 1: Configuración del puerto paralelo estándar
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 dirección base de un puerto paralelo, el registro de estado aparece en la dirección base + 1, y el registro de control aparece en la dirección base + 2. Por ejemplo, para un puerto LPT2 localizado en 0x378h, ésta es la dirección del registro de datos, al registro de estado le corresponde la dirección 0x379h y su respectivo registro de control está en la dirección 0x37Ah. Cuando la PC se enciende el BIOS ejecuta una rutina para determinar el número de puertos presentes en el sistema asignando la etiqueta LPT1 al primer puerto localizado, si existen más puertos entonces se asignarán consecutivamente las etiquetas LPT2 y LPT3 de acuerdo a la siguiente tabla:

Dirección inicial 0000:0408 0000:040A 0000:040C 0000:040E

Función Dirección base para LPT1 Dirección base para LPT2 Dirección base para LPT3 Dirección base para LPT4

Tabla 5: Direcciones base en el BIOS

Programación básica

página 14

Interfaz para el puerto paralelo
Actualmente, la mayoría de los puertos instalados en las computadoras son de tipo multimodal configurables a través del BIOS de la máquina, en éste artículo me refiero expresamente al modo Normal (SPP), además de éste están las opciones Bidireccional, EPP versión 1.7, EPP versión 1.9 y ECP principalmente. El modo de operación Normal es el más elemental y solamente permite la escritura en las líneas de datos, patitas 2 a la 9 del conector DB-25 del puerto paralelo de la PC. Eléctricamente, el puerto paralelo entrega señales TTL y como tal, teóricamente, se le puede conectar cualquier dispositivo que cumpla con los niveles de voltaje específicos de la lógica TTL, sin embargo el hardware del puerto paralelo está muy limitado en cuanto a su capacidad de manejo de corriente, por ésta razón se debe ser muy cuidadoso con el manejo de las señales del puerto, un corto circuito puede dañar permanentemente la tarjeta madre de la PC. Para disminuir lo más posible el riesgo de daños 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 líneas de datos del puerto paralelo. El circuito se detalla en el siguiente diagrama:

Programación básica

página 15

Por cada línea 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 información escrita en las líneas de datos del puerto. Además es posible habilitar ó deshabilitar el despliegue del nibble de orden inferior ó superior del byte escrito en el puerto. Colocando en un nivel lógico alto la patita 1 del CI 74LS244 inhabilitamos el despliegue del nibble de orden bajo, un nivel lógico 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 números las correspondientes patitas del conector DB-25. Obviamente se requiere de una fuente regulada de 5 Voltios para operar éste circuito, además 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 más 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 conéctelo a una fuente regulada de 5 Voltios, conecte temporalmente un extremo de una resistencia de 10,000 Ohms a una línea de entrada, el resto de las líneas de entrada conéctelas a tierra. El otro extremo de la resistencia conéctelo directamente al borne positivo de la fuente de alimentación para inducir una señal 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 línea de entrada para inducir una señal TTL de lógica baja, el LED se debe apagar. Repita ésta operación para cada una de las ocho líneas 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 asegurándose 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 líneas 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 algún diodo permanece encendido esto no indica una condición de falla, es responsabilidad del software que Usted escriba para controlar el puerto inicializarlo con un valor adecuado antes de realizar cualquier otra operación.

Programación básica

página 16

Ejemplos en Turbo C++
1. En el ejemplo se envía un byte a las líneas de datos y se recibe un byte de las líneas de estado con las funciones outportb e inportb.
/* Ejemplo básico de E/S digital mediante el puerto paralelo Salidas: líneas de datos (bits D0-D7 del registro de datos) Entradas: líneas de estado (bits S3-S7 del registro de estado) Suponemos puerto estándar en la dirección 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); /* envía un byte a las líneas de datos */ printf ("Polariza las lineas de estado y pulsa una tecla\n"); getchar(); byte = inportb (0x378+1); /* lee un byte de las líneas de estado */ printf ("El valor leido es %i", byte); return 0; }

Programación básica

página 17

2.

Ejemplo Diseñar una aplicación:       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 más significativo Recorrer los leds desde el más 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");

Programación básica

página 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

Programación básica

página 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; }

Programación básica

página 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); Programación básica página 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); Programación básica página 22

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

Programación básica

página 23

4. Hacer un programa que controle 4 semáforos 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"; Programación básica página 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); Programación básica página 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; Programación básica página 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...";

Programación básica

página 27

Programación básica

página 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; página 29

Programación básica

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

Programación básica

página 30

Programación básica

página 31

Referencias bibliográficas: 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

Programación básica

página 32

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)//-->