Está en la página 1de 70

UNIVERSIDAD TECNOLÓGICA DE TULA TEPEJI

OPTATIVA I
“CARRITO CONTROLADO CON TURBO C++”

DOCENTE:
ING. JOSE ALBERTO GARCIA CHAVEZ

CARRERA:
INGENIERIA EN MECATRÓNICA

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ

LUIS MIGUEL HERNANDEZ

WILFRIDO CÁRDENAS GONZÁLEZ

CICLO ESCOLAR 2010 – 2011

ABRIL DE 2011.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
INDICE

INTRODUCCION 3

ESTRUCTURAS BASICAS EN C++ 4

CONDICIONES 5

CICLOS DE CONTROL
6

SENTENCIAS 6

7
PROYECTO REALIZADO: CARRITO EN TURBO C++

- INFORMACION ADICIONAL 8

Conceptos Básicos de graficacion 8

Conexión y programación con el puerto paralelo 15

Puerto paralelo en un PC 17

Entradas y salidas del Puerto Paralelo 20

Desarrollo del Proyecto 26

- PROGRAMA 30

- EVIDENCIAS 65
- IMAGEN VISUAL DE PANTALLA (Librería LAW)
68

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
INTRODUCCION

Compilador de C, de Borland, que se emplea para crear una gran variedad de


productos comerciales. Es conocido por su bien diseñado depurador. Las versiones
orientadas a objetos, de Borland, de C son Turbo C++ y Borland C++.

EL lenguaje C es el resultado de un proceso de desarrollo, este influenció a otro,


inventado por Ken Thompson. En los años 70; éste lenguaje llevó a la aparición del C.

Con la popularidad de las microcomputadoras muchas compañías comenzaron a


implementar su propio C por lo cual surgieron discrepancias entre sí.

Algunos de las C existentes son:

C es un lenguaje de programación de nivel medio ya que combina los elementos del


lenguaje de alto nivel con la funcionalidad del ensamblador.

Su característica principal es ser pórtale, es decir, es posible adaptar los programas


escritos para un tipo de computadora en otra.

Otra de sus características principales es el ser estructurado, es decir, el programa se


divide en módulos (funciones) independientes entre sí.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
El lenguaje C inicialmente fue creado para la programación de:

Actualmente, debido a sus características, puede ser utilizado para todo tipo de
programas.

ESTRUCTURA BASICA EN TURBO C++

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Estructuras de Decisión o Selección

Estructuras de Repetición o Bucles

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
PROYECTO:
“EL CARRITO EN
TURBO C++”

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
INFORMACION ADICIONAL
CONCEPTOS BÁSICOS DE GRAFICACIÓN

Tal como un artista selecciona diversos medios para representar sus pinturas, los
programadores, escogen un modo y formato especial para habilitar el monitor para
graficar. Cada modo proporciona ciertas características como la resolución, número
posible de colores, modo texto o modo gráfico y otros elementos donde cada modo
requiere de cierto equipo (hardware).

Resolución
Las imágenes gráficas mostradas en un monitor de computadora se componen de
pequeños puntos llamados píxeles, los cuales están distribuidos en la pantalla en filas;
existe una cantidad específica de filas y cada fila tiene una cantidad específica de
píxeles. La cantidad de píxeles usada en la pantalla se conoce como resolución. Cada
modo gráfico tiene una resolución particular.

Inicializar el monitor en modo gráfico


Para habilitar el monitor en modo gráfico y utilizar sus píxeles, es necesario incluir el
encabezado #include<graphics.h> que contiene las declaraciones y funciones
relacionadas con graficación e inicializar el monitor en modo gráfico y utilizar sus
píxeles con la función initgraph(). Dicha función requiere las declaraciones mostradas
en la Fig. 1.
int monitor=DETECT; // Variable para detectar el tipo de monitor
int modo; // Modo de operación del monitor

También se puede declarar e inicializar con un tipo de monitor específico como lo


presenta la Fig. 2.
int monitor=VGA; // Variable para usar el monitor tipo VGA
int modo=VGAHI; // Usar el monitor VGA a su maxima resolución

La función initgraph()
Una vez declaradas las variables monitor y modo que controlarán la resolución
identificando el tipo de pantalla o monitor y su modo de operación respectivamente, se
utiliza la función initgraph() para habilitar el monitor seleccionado en modo gráfico.
La función initgraph() tiene 3 parámetros o argumentos:
1) La variable que identifica el monitor.
2) El modo de operación gráfico.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
3) Subdirectorio que contiene los controladores de los monitores (archivos con
extensión BGI) y los archivos con los tipos de letra (extensión CHR) como lo muestra
la Fig.3.

Si se desea usar el directorio actual por defecto, se utiliza la función initgraph() como
lo indica la Fig. 4

La función closegraph()
Para terminar de usar el monitor en modo gráfico y devolverlo a su modo de texto
normal se usa la función closegraph().

Uso de coordenadas
Una vez que se inicializa el monitor en modo gráfico, las coordenadas tienen al píxel
como unidad de medida. La función getmaxx() calcula la cantidad de píxeles por
renglón y la función getmaxy() calcula la cantidad de renglones de la pantalla.

Las funciones de gráficos tienen como estándar el orden de manejo de coordenadas


como columna, renglón; es decir, primero se anota la columna y después el renglón
para posicionarse en dicha coordenada.

FUNCIONES DE GRAFICACIÓN
Sería muy difícil considerar todas las opciones posibles de todas las funciones de
graficación; sin embargo, en esta antología se tratan los temas fundamentales para
implementar este tipo de funciones. Básicamente mostraremos que antes de utilizar un
color, un tipo de línea, de relleno, etc. es necesario definirlo.

Píxeles, líneas, figuras geométricas, colores y rellenos


En esta sección se presentan las funciones básicas de graficación, utilizadas para
colocar pixeles, líneas, figuras geométricas, etc. en la pantalla.

La función putpixel()
Tal como se mencionó en la sección anterior, al habilitar el monitor en modo gráfico, la
pantalla se divide en pequeños puntos llamados pixeles. La función putpixel() coloca
un punto o píxel de un color específico en determinada coordenada de la pantalla.
Esta función requiere 3 argumentos (Fig. 5):

1) Columna del punto (coordenada x).


2) Renglón del punto (coordenada y).
3) Color del píxel.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
El código fuente del programa de la Fig. 6 muestra un ejemplo que inicializa el monitor
en modo gráfico y coloca , en forma aleatoria, múltiples pixeles de colores en la
pantalla hasta que se oprima cualquier tecla.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
La función line()
Esta función se utiliza para dibujar una línea entre 2 puntos. Para ello, la función
requiere 4 parámetros que representan las coordenadas (en pixeles) de los dos
puntos que se desea unir mediante una línea recta. La Fig. 7 muestra un ejemplo que
une los puntos 50,100 y 300,200 (columna, renglón respectivamente).
/*
Programa para inicializar el monitor en modo grafico
Tecnicas avanzadas de programacion en Lenguaje C++
*/
#include <graphics.h> // Encabezado con declaraciones de
graficos
#include <conio.h> // Para el uso de kbhit()
#include <stdlib.h> // Para el uso de random()
#include <dos.h> // Para el uso de delay
void main(void)
{
int monitor=VGA, modo=VGAHI; // Declaracion de tipo de monitor y modo
initgraph(&monitor,&modo,"\\tc\\bgi");
// Inicializa el modo grafico indicando el monitor y modo utilizado
// El subdirectorio \\tc\\bgi indica la ruta de localizacion de los
// archivos *.BGI (monitores) y *.CHR (tipos de letras)
while(!kbhit()) // Mientras no se oprima cualquier tecla
{
putpixel(random(getmaxx()),random(getmaxy()),random(getmaxcolor
()));
// Coloca un pixel en la pantalla, seleccionando al azar la columna
// (1..getmaxx), el renglon (1..getmaxy) y el color (1..getmaxcolor) delay(5);
}
closegraph(); // Termina el modo grafico (vuelve a su modo normal)
}

La función setlinestyle()
Esta función se utiliza para determinar el tipo de línea o trazo que se desea. Se
pueden utilizar trazos con línea continua, línea punteada, línea interrumpida, o un
patrón de línea definido por el usuario. Esta función requiere 3 argumentos:

 Tipo de línea: Puede ser SOLID_LINE, DOTTED_LINE, CENTER_LINE,


DASHED_LINE o USERBIT_LINE.
 Patrón: Este argumento regularmente es ignorado (excepto cuando se trata de
un tipo de línea definido por el usuario).
 Ancho de línea: Define la amplitud del trazo.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
La Fig. 8 muestra un ejemplo que une los puntos 50,100 y 300,200 con una línea
punteada.

La función circle()

Esta función dibuja un círculo y requiere 3 argumentos:


1) Coordenada de la columna del centro (en pixeles).
2) Coordenada del renglón del centro (en pixeles).
3) Radio del círculo (en pixeles).
La Fig. 9 dibuja un círculo cuyo centro se encuentra en el punto 300,150 y su radio es
de 27 pixeles.

Se pueden combinar funciones de graficación para obtener trazos específicos o


determinados colores, sólo es cuestión de definir previamente el color o tipo de trazo
deseado para después invocar la función de graficación deseada. El ejemplo de la Fig.
10 muestra el código necesario para dibujar un círculo con un trazo interrumpido. En
este caso primeramente se define el tipo de línea (trazo) deseado y posteriormente se
invoca la función circle() con los parámetros adecuados.

La función rectangle()
Esta función dibuja un rectángulo indicando las coordenadas de las esquinas superior
izquierda e inferior derecha respectivamente. La Fig. 11 muestra un ejemplo de una
función que dibuja un rectángulo desde el punto 50,100 hasta el punto 400,250.

La función ellipse()
Se usa esta función para dibujar un arco elíptico o una elipse completa. Esta función
requiere 6 argumentos:

1) Columna del centro de la elipse (coordenada x).


ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
2) Renglón del centro de la elipse (coordenada y).
3) Ángulo inicial del arco.
4) Ángulo donde termina el arco.
5) Radio horizontal de la elipse.
6) Radio vertical de la elipse.

Se puede dibujar una elipse completa indicando el ángulo inicial como 0° (cero) y el
ángulo final como 359° . La Fig. 12 dibuja una elipse completa con centro en 100,150,
con radio horizontal de 25 y radio vertical de 40 pixeles.

La función arc()
Se usa esta función para dibujar un arco circular. Esta función requiere argumentos:

1) Columna del centro del arco (coordenada x).


2) Renglón del centro del arco (coordenada y).
3) Ángulo inicial del arco.
4) Ángulo donde termina el arco.

Los puntos de inicio y final del arco se especifican por medio de sus ángulos medidos
en el sentido de las manecillas del reloj; es decir, con 0° en las 3:00, 90° en las 12:00 y
así sucesivamente. La Fig. 13 dibuja un arco de 30° con centro en 100,150 y radio 40
pixeles.

La función setcolor()
Se utiliza esta función para definir el color de los trazos siguientes; es decir, antes de
dibujar un trazo de un color específico, éste debe definirse. Esta función sólo tiene un
argumento que representa el código del color deseado. P. ejem. BLACK, RED, BLUE,
GREEN, YELLOW, etc. o bien su número entero correspondiente. La Fig. 14 muestra
la tabla de colores y sus respectivos valores.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
La Fig. 15 muestra un ejemplo del uso de la función setcolor() donde se dibuja un
circulo de color rojo y después un rectangulo de color azul.

Definiendo el tipo de relleno de una figura con la función setfillstyle()


Si se desea rellenar una figura, es necesario definir previamente el patrón y color del
relleno. La Fig. 16 muestra los patrones de relleno disponibles.

PATRÓN VALOR DESCRIPCIÓN


ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Por ejemplo, si se desea definir el patrón de relleno de puntos cercanos de color rojo,
se usa la función setfillstyle() como lo muestra la Fig. 17. Setfillstyle
(CLOSE_DOT_FILL, RED);

Conexión y programación con el puerto paralelo

Las comunicaciones en paralelo se realizan mediante la transferencia simultánea de


todos los bits que constituyen el dato (byte o palabra). Presentan la ventaja de que la
transmisión puede ser más rápida. Sin embargo, las comunicaciones en paralelo no
pueden ser implementadas para grandes distancias debido a que no es viable la
conexión física de todas las líneas necesarias.

Las comunicaciones en paralelo propiamente dichas no han sido normalizadas, lo que


sí se reconoce es la norma Centronic:, para la conexión del PC a la impresora,
mediante el envío simultáneo de 8 bits de datos (un byte), además de un conjunto de
líneas de protocolo (handshake o intercambio). La operación más frecuente en la que
interviene el puerto paralelo del PC es en el envío de datos a la impresora.

Los antiguos circuitos integrados que se incluían en las tarjetas de interface del puerto
paralelo no permitían la recepción de datos, sólo estaban diseñados para el envío de
información al exterior. Las versiones recientes de estas tarjetas de interface de
puertos paralelo sí permiten la recepción de datos y dan la posibilidad, por ejemplo,
de intercambiar información entre PC a través del puerto paralelo, siempre que se
utilice el software adecuado.

La norma Centronics hace referencia a las características de la conexión entre un


interface de puerto paralelo y una impresora. Las líneas son latcheadas, esto es,
mantienen siempre el último valor establecido en ellas mientras no se cambien
expresamente y los niveles de tensión y de corriente coinciden con los niveles de la
lógica TTL, cuyos valores típicos son:

-Tensión de nivel alto: 5 V.

-Tensión de nivel bajo: 0 v.

-Intensidad de salida máxima: 2.6 mA.

-Intensidad de entrada máxima: 24 mA.

La norma Centronics establece el nombre y las características de 36 líneas eléctricas


para la conexión entre el PC y la impresora.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
En realidad, para la transferencia de las señales de datos y de control a través de la
tarjeta de interface paralelo sólo se requieren 18 líneas, las restantes son líneas de
masa que se enrollan alrededor de los cables de señal para proporcionarles
apantallamiento y protección contra interferencias. Por esto, las citadas tarjetas
suelen incorporar un conector hembra DB-25, mientras que prácticamente todas las
impresoras incorporan un conector hembra tipo Centronics macho de 36 pines,

Los cables comerciales para la conexión paralelo entre el PC y la impresora tienen una
longitud de 2 metros, aunque no es recomendable que tengan una longitud superior a
5 metros si se desea una conexión fiable y sin interferencias.

En la siguiente tabla se describen todas las líneas del estándar Centronics, con
indicación de su denominación y el número de pin que le corresponde, tanto en el
conector tipo Centronics de 36 pines como en el conector DB-25. En esa tabla se
indica que las 8 líneas correspondientes a los bits de datos (D0 a D7) son líneas de sal
ida, pues así lo establece el estándar Centronics, sin embargo y sobre todo en las
implementaciones más recientes, la circuitería asociada al interface del puerto paralelo
puede ser tal que las líneas de datos pueden ser leídas desde el PC y, por tanto, ser
consideradas como líneas bidireccionales, aunque sea en determinadas condiciones
y con el software adecuado.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Descripción de los pines del Puerto paralelo:

El puerto paralelo en un PC

Todos los ordenadores tipo PC están equipados, al menos, con una tarjeta de
interface paralelo, frecuentemente junto a un interface serie. Como sistema operativo,
el DOS puede gestionar hasta cuatro interfaces de puertos paralelo, LPT1 , LPT2 ,
LPT 3 y LPT4, además, reserva las siglas PRN como sinónimo del LPT 1, de modo
que puede ser tratado como un archivo genérico. En el byte 0040:0011 del BIOS
almacena el número de interfaces de puertos paralelo que se hayan instalado en el
equipo. La dirección de entrada/salida de cada uno de los puertos paralelo y el número
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
de puertos instalados en un PC se muestra en la pantalla inicial de arranque del
equipo es frecuente, casi estandard que las direcciones de los dos primeros puertos
paralelos sean las siguientes:

LPT1 = 0x378 Hexadecimal

LPT2 = 0x278 Hexadecimal

Las tarjetas del puerto paralelo tiene una estructura muy simple; consta de tres
registros: de control, de estado y de datos. Todas las señales que intervienen en el
puerto tienen asociado un bit en uno de esos registros, de acuerdo con las funciones
asignadas a cada línea en particular.

· El registro de datos

Es de tipo latch de 8 bits, que puede ser leído y escrito desde el procesador. Es el
registro donde el procesador, en operaciones de salida (OUT), pone el dato que se
quiere enviar a la impresora y su dirección coincide con la dirección base del puerto
paralelo ( 0x 378 en LPT 1 ). En la Figura 32.1 se muestra la distribución de los bits
de este registro y los pines asociados a cada uno de ellos en el conector DB-25.

· El registro de estado

El registro de estado indica la situación actual de la impresora conectada al puerto, de


acuerdo con los niveles de tensión que tengan las líneas ACK, BSY, PAP y OF/ON , lo
que permite controlar el comportamiento de la impresora.

Se trata de un registro de entrada (Lectura) de información, su dirección se obtiene


sumando 1 a la dirección base del puerto (0x379 en LPT1).

Error® es 11,10,12,12,15

Los bits de este registro se designan según se muestran en la Figura 32.2, en la que el
símbolo «/» delante del nombre del bit indica que es activo a nivel bajo.
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Pero el bit 7 además ( / BSY ) del registro de estado (bit 7) es invertido por el hardware
y, por tanto, la línea tiene un nivel complementado al que aparece en ese bit.

El significado que tienen los bits de este registro es el siguiente:

¨ Si el bit 7 (/BSY ® Busy) está a O, significa que la impresora está ocupada (buffer de
impresión lleno, procesando información, pendiente de inicializar, etc. ).

¨ El bit 6 (/ACK ® Acknoledge) indica que se ha producido una transferencia correcta:


cuando del puerto paralelo se transfiere un byte a la impresora, la impresora activa la
línea ACK de reconocimiento del carácter y, como consecuencia, el bit ACK del
registro de estado pasa a nivel bajo; cuando el bit ACK está a nivel alto, significa que
la impresora está ocupada y no se pueden realizar envíos.

¨ El bit 5 (PAP ® Paper) si está a 1, señala que la impresora no dispone de papel.

¨ El bit 4 (OF/ON ® Line Off) indica cuando está a 1, que la impresora no está en línea.

¨ El bit 3 (ERR) si está a 0, indica que se ha producido un error de impresora (mal


funcionamiento, falta de papel, impresora fuera de línea ...).

Los bits 0,1 y 2 no se utilizan.

· El registro de control

El registro de control permite controlar las transferencias de información con la


impresora, y puede ser escrito y leído desde el microprocesador. Es un registro de
entrada/salida cuya dirección se obtiene sumando 2 a la dirección base del puerto (
0x37A en L PT 1 ). Los bits de este registro se designan en la Figura 32.3, donde el
símbolo «/» delante del nombre del bit indica que es activo a nivel bajo.

El símbolo ( * ) indica que los bits STR, ALF y OSL del registro de control son
invertidos por el hardware con relación a las líneas correspondientes al cable de
conexión, por lo que el nivel de los bits 0,1 y 3 del registro es complementado con
relación a las líneas correspondientes.

El significado que tienen los bits de este registro es el siguiente:

¨El bit 4 ( IRQ ) es el que permite controlar la generación de interrupciones de tipo


hardware desde el puerto paralelo. Si este bit está a 1, el interface paralelo puede
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
generar la petición de interrupción IRQ7 (en LPT1), que se corresponden con las
interrupción 0x0Fh respectivamente del procesador 80X86. Esta petición de
interrupción se produce cuando se da una transición H®L en la línea ACK.

¨El bit 3 (DSL) : La mayoría de las impresoras paralelo IBM-compabiles, no utilizan


esta línea y son activadas con un pulsador de on-line. El bit 2 (INI) produce una
inicialización de la impresora ( es poco utilizado ).

¨Si el bit 1 (ALF) está a nivel alto, la impresora produce automáticamente un cambio de
línea (LF) cada vez que recibe un retorno de carro (CR).

¨El bit 0 (STR) controla la línea que permite validar el dato existente en el registro de
datos. La puesta a 1 del bit STR genera un impulso corto que indica a la impresora
que el carácter del registro de datos es válido y debe ser aceptado. Así pues, cada vez
que se precise enviar un carácter, no basta con ponerlo en el registro de datos, sino
que hay que hacer un reset en el bit STR del registro de control y validar el dato
volviendo a poner un 1 en ese bit.

¨Los bits 5, 6 y 7 no se utilizan.

Entradas y salidas por el puerto paralelo

Al hablar de operaciones de entrada y salida por el puerto paralelo no debe olvidarse


que, inicialmente, este elemento se desarrolló de acuerdo con el están dar Centronics
con el fin, casi exclusivo, de que el PC pudiese enviar datos en paralelo a la
impresora conectada, no se pensó en la posibilidad inversa: que el PC pudiese recibir
datos a través de ese puerto.

Las operaciones de entrada y salida de información a través del puerto paralelo en el


PC las realizaremos gestionando el puerto paralelo en el nivel de registros, es
decir, programando directamente los circuitos integrados o chips que constituyen la
tarjeta de interface, lo cual permitirá aprovechar al máximo todas las posibilidades que
ofrezca realmente el hardware de la tarjeta de interface.

Características E/S

Cuando usamos el puerto paralelo para otro cometido distinto al original,


solo,podemos hablar de 12 líneas de salida de información desde el ordenador:

· pines del 2 al 9 ® registro de datos

· pines 1,14, 16 y 17 ® registro de control

15 líneas de entrada al mismo:

· pines 2-9® registro de datos

· pines 10,11,12,13 y 15 ® registro de estado

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Esto hace del puerto paralelo un interface de comunicación con el exterior bastante
flexible.

El registro de estado es de sólo lectura. Cuando se lee este registro, lo que se recibe
es el estado lógico De los pines 10, 11, 12, 13 y 15 del conector DB-25 (el bit S 7
contiene el complemento del estado de la línea). Los tres bits de menor peso (SO-S2)
no se utilizan y, habitualmente, se encuentran a nivel alto

El registro de control es parcialmente bidireccional. Cuando se escribe en los cuatro


bits de menor peso (C0 - C3 ) lo que se hace es establecer el nivel lógico de los pines
C 2 de forma directa y C0, C 1 y C 3 de forma complementada.

Los tres bits de mayor peso (C 5 C 7) no se utilizan.

De forma experimental, se ha podido comprobar que, sólo en algunas tarjetas de


interface paralelo, el bit C 6 del registro de control influye en la configuración, de modo
que si C 6 = 0 las I líneas de datos se configuran como ENTRADAS y si C 6 = 1 las
líneas de datos se configuran como SALIDAS. Otras tarjetas, sobre todo si son
bidireccionales, no permiten el cambio de nivel de ese bit.

El registro de datos es de tipo latch de lectura y de escritura, de modo que cuando se


realiza una operación de escritura (OUT) el dato se carga en los bits correspondientes

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
y las líneas asociadas del conector tienden a alcanzar la tensión correspondiente a
ese estado.

En algunas ocasiones las líneas de datos de la tarjeta de interface paralelo


(Centronics) son bidireccionales, pero la etapa de salida se ha construido mediante
buffers con transistores en colector abierto. En este caso, el hecho de que las
operaciones de entrada y salida se hagan por las mismas líneas, condiciona
notablemente el proceso de lectura, ya que con esa configuración electrónica de las
líneas de datos (D0 - D7), los valores lógicos leídos dependerán del nivel lógico
presente en el registro y del valor de tensión en la línea ( que no tienen por qué
coincidir) de acuerdo con lo mostrado en la Tabla 32.2.

A la vista de la Tabla 32.2, lo que se deduce es que, si se va a realizar una


operación de lectura sobre el puerto paralelo, lo que se va a leer realmente es la
operación AND lógica entre el nivel lógico del registro y el nivel lógico de la línea,
lo que implica que, si se desea realizar una lectura real del estado de las líneas,
deberá escribirse antes el dato 0xFF en el registro de datos del puerto paralelo.

La tarjeta de E/S que se va a utilizar es un simulador de impresora, donde se pueden


activar los 8 bits de datos y realizar lecturas del registro de control.

Las instrucciones en Turbo C que dan acceso a los puertos están en la librería
conio.h y son, para escribir, outp (puerto ,dato), y para leer inp (puerto).

La tarjeta consta de 2 búferes para aislar las conexiones desde al PC y el exterior.


Cada Led representa 1 bit del registro de datos, siendo el Led superior el
correspondiente a D0 y el inferior al D7. Debemos pensar que si tenemos 8 bits de
datos, cada uno de ellos se encendería de acuerdo a la potencia de 2 que nos da su
peso, así los datos 1,2,4,8,16,32,64 y 128, encenderían cada uno de los Leds D0 a
D7. Si queremos activar el Led de D3 escribiríamos la siguiente instrucción en C: outp
(0x378, 8) -instrucción -puerto -dato

Uso de la tarjeta como secuenciador

Si pensamos en la estructura real de un circuito digital que realice una secuenciación


veremos que se asemeja a este diagrama:

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
En una memoria Eprom guardamos los datos y mediante un contador fijo vamos
leyendo las distintas posiciones. Este circuito simple tiene el inconveniente poder
realizar sólo una secuencia programada, aunque con alguna lógica adicional podemos
incluir varios programas y seleccionarlos a posteriori. Vemos que es necesario un
circuito contador y también presenta el problema de modificar el programa de la
secuenciación, que debe ser extraída la memoria, borrarla completamente, y re grabar
el nuevo programa y todos los anteriores.

Si utilizamos una tarjeta de E/S nos podemos olvidar de la Eprom e implementarla


mediante una matriz. Podemos declarar una matriz de caracteres, cuyos valores están
dentro del rango de 8 bits y se puede inicializar la matriz con el programa o secuencia
que necesitemos. Luego mediante bucles del tipo for o while se puede recorrer la
matriz, e incluso variar el recorrido y el programa en función de ciertas condiciones.

Un ejemplos :

· Recorrido del puerto:

#include <conio.h>

void main (void)

{ char i=0;

for (i=0;i<256;i++)

outp (0x378,i);

· Parpadeo de todos los leds de forma simultánea

durante 10 veces:

#include <conio.h>

void main (void)

{ char i;

for (i=0;i<10;i++)

outp (0x378,255);

outp (0x378,0);

Encendido secuencial ascendente – descendente

#include <conio.h>
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
void main (void)

{ char datos [ ]={1,2,4,8,16,32,64,128};

char i;

outp (0x378,0);

for (i=0,i<8,i++) // Recorrido ascendente

outp (0x378,datos[i]);

outp (0x378,0);

for (i=7,i<0,i--)

outp (0x378,datos[i]); // Recorrido descendente

Uno de los posibles convertidores que cumplen todos nuestros requerimientos es el


LTC 1092 de Linear Technology. Su funcionamiento es el siguiente:

El integrado LTC 1092 comienza su ciclo cuando la línea de selección (CS) se pone a
cero. Después de unos 2 ciclos de estabilización el integrado proporciona una
conversión por aproximaciones sucesivas, para después transmitir el resultado
mediante 10 pulsos de reloj (1 por bit). Esta señal será generada ordenador. La forma
de hacerlo es fácil. Se pone una de las salidas del puerto paralelo alto, se espera un
poco, después se vuelve a poner a nivel bajo y volvemos a esperar otro poco; y así
sucesivamente. En medio de este proceso leemos el valor que nos proporciona el
convertidor. La frecuencia de muestreo debe ser entre 10KHz y 500Khz. El resto de
las líneas del puerto paralelo se situarán a nivel alto para que todas ellas en paralelo
puedan alimentar al circuito.

Otros componentes:

Todos los convertidores AD necesitan una tensión de referencia que es aquella que
equivale al fondo de escala del convertidor. Si el circuito es de 10 bits podemos
alcanzar hasta 210-1= 1023®Vref. y 0® 0voltios. Mediante el integrado LM336 de
National generamos una tensión estable y prácticamente inmune a cambios de
temperatura centrada en 2.49v y gracias a una resistencia ajustable regulamos a 1
voltio. (Técnicamente el circuito puede ajustarse hasta medir tensiones de 2.5v de
fondo de escala). Ya sólo nos queda por describir el último componente, que es el
sensor de temperatura. Se trata del LM35 que ofrece una tensión /ºC de 0.01 voltio,
así 0º ® 0 voltios y 25º ® 0,25 voltios. Como el fondo de escala es de 1 voltio la
temperatura máxima es de 100 grados.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Ahora se requiriere de un programa en el PC con el fin de transformar las señales
analógicas en digitales. Como podemos ver en listado adjunto podemos direccionar el
puerto paralelo realizando una operación de salida (OUT) en puerto correspondiente,
que por defecto es 0x378h para el LPT1

Recordemos que todas las salidas deben ponerse a nivel alto, exceptuando
aquellas donde van a existir variaciones. La programación del chipLTC1092 es
relativamente sencilla.

Si seguimos el esquema, el bit 0 del puerto corresponde con la señal CS mientras que
el bit 1 corresponde con la señal de reloj. Para la entrada de datos se utiliza el bit 7 del
registro de estado (pin 11). Tenemos dos macros, denominadas HIGH y LOW que
determinan el estado del reloj.

El algoritmo opera de la siguiente forma a la hora de realizar una conversión: en primer


lugar, con el reloj en estado bajo, procedemos a activar la línea CS, que debe pasar
del estado alto de reposo al bajo de comienzo de actividad. Deberá mantenerse en
este estado bajo hasta terminar el ciclo, momento en el cual se alzará. Seguidamente,
se produce un ciclo de reloj, es decir , se pone el reloj a nivel bajo y acto seguido a
nivel alto.

En este ciclo no se realiza ninguna operación. A partir de este momento, todo está
preparado para recibir los bits uno a uno. En cada ciclo de reloj leeremos el puerto de
entrada recibiendo un bit. Dicho de otra manera, subimos el bit de reloj, lo bajamos y
leemos un bit en el puerto. Esta operación la realizaremos diez veces, obteniendo así
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
diez bits, de forma que nos llega primero el de mayor peso (D9) [en el programa
b=512 porque son 10 bits] y finalmente el de menor (Do).

El resultado obtenido puede verse influenciado por inestabilidades fruto de la


electrónica, por lo que es recomendable el empleo de un filtro que estabiliza la lectura.
En general, las medidas ofrecidas por el tienen una gran estabilidad, aunque es
posible que en ocasiones se pueda producir algún "ruido" externo que estropee el
valor de la señal.

Para minimizar estos problemas, se suele emplear algún algoritmo que obtenga la
media de tres o cuatro lecturas consecutivas, lo que suaviza la respuesta eliminado
picos indeseados.

Desarrollo del proyecto


Comenzó con el diseño del carro a trabajar con gráficos y las coordenadas de inicio, que
herramientas utilizaríamos para facilitar la programación.

Decidimos utilizar struct para las coordenadas en x, y para el inicio y fin de cada figura
(rectángulos).

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Lo siguiente fue la asignación de los movimientos adelante, atrás, derecha e izquierda
con las flechas del teclado, esto lo hicimos asignando un valor a 4 variables (DERE,
IZQ, ARRI, ABA).

#define ARRI 72

#define ABA 80

#define IZQ 75

#define DER 77

#define ESC 27

Realizamos case en el programa para cada uno de las direcciones que tomaría el carrito con
ayuda de una variable de tipo char llamada tecla el case deben de estar dentro de un do while
del cual solo podríamos salir con escape del teclado, esto fue asignado a una variable la cual
también definimos anteriormente.

Los casos ARRI y ABA fueron los más fácil de hacer ya que estos solo se incrementa o
decremento la posición en x, y de pendiendo el caso.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Las opciones DERE e IZQ fueron las más complicadas ya en estas se tenía que hacer un arreglo
especial, dependiendo la posición en la que se encontrara la figura girara conforme a la
instrucción que sedaba y fuera capaz de identificar en donde se encuentra para poder moverse
a una nueva.

1 4

2 4 1 3

3 2

Esto se logro con ayuda de contadores y banderas que ayudaban a guardar la dirección en la
que se encontraba el carro.

Después de esto hicimos las restricciones de pantalla a si como las restricciones de los giros si
es que la pantalla no era suficiente.

La comunicación del puerto paralelo y el carrito fue nuestro siguiente paso, y en el que nos
dimos cuenta que pera activar nuestra señal a control remoto necesitábamos negar nuestras
salidas y hacer una placa con un integrado 74ls04.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
Para finalizar utilizamos nuestra propia librería y presentación al mismo tiempo, hacer un
pequeño menú para hacer posible la selección de un color (Rojo, Azul, Cyen, Maganta y Verde)
para el carro.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
PROGRAMA REALIZADO EN EL PROYECTO
#include<LAW.h>

#define ARRI 72

#define ABA 80

#define IZQ 75

#define DER 77

#define ESC 27

void color();

struct

int x,y,x1,y1,x2,y2;

r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,v1,v2,l1,l2,l3,l4,l5,l6,lz1,lz2;

int main()

int aux1,y3,cont=0,cont2=0,b=0,aux2,aux3;

char tecla;

textcolor(7);

presentacion();

color();

cin>>aux3;

if(aux3>0&&aux3<6)

int gdriver = DETECT, gmode, errorcode;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
initgraph(&gdriver, &gmode, "c:\\tc\\bgi");

outportb(0x378,255);

r1.x=525; r2.x=520; r3.x=520;

r1.y=295; r2.y=317; r3.y=425;

r1.x1=610; r2.x1=525; r3.x1=525;

r1.y1=474; r2.y1=338; r3.y1=446;

r1.y2=400; r2.y2=320; r3.y2=430;

r1.x2=600; r2.x2=522; r3.x2=522;

r4.x=610; r5.x=610; r6.x=530;

r4.y=317; r5.y=425; r6.y=370;

r4.x1=615; r5.x1=615; r6.x1=605;

r4.y1=338; r5.y1=444; r6.y1=400;

r4.y2=320; r5.y2=430; r6.y2=430;

r4.x2=613; r5.x2=613; r6.x2=560;

r7.x=550; v1.x2=560;

r7.y=380; v1.x=530;

r7.x1=580; v1.y=330; v2.x=530;

r7.y1=390; v1.x1=605; v2.y=410;

r7.y2=385; v1.y1=360; v2.x1=605;

r7.x2=555; v1.y2=350; v2.y1=440;


ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
v2.y2=420; v2.x2=560;

l1.x=530; l2.x=530; l3.x=610;

l1.y=400; l2.y=370; l3.y=410;

l1.x1=525; l2.x1=525; l3.x1=605;

l1.y1=410; l2.y1=360; l3.y1=400;

l4.x=610; l5.x=610; l6.x=525;

l4.y=360; l5.y=385; l6.y=385;

l4.x1=605; l5.x1=605; l6.x1=530;

l4.y1=370; l5.y1=385; l6.y1=385;

lz1.x=530; lz2.x=590;

lz1.y=295; lz2.y=295;

lz1.x1=540; lz2.x1=600;

lz1.y1=300; lz2.y1=300;

lz1.x2=532; lz2.x2=592;

lz1.y2=297; lz2.y2=297;

/* draw a rectangle */

while(tecla!=ESC)

clrscr();

//cleardevice();

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
setcolor(BLACK); setcolor(BLACK);

rectangle(r1.x,r1.y,r1.x1,r1.y1); rectangle(r2.x,r2.y,r2.x1,r2.y1);

setfillstyle(SOLID_FILL,aux3); setfillstyle(SOLID_FILL,BLACK);

floodfill(r1.x2,r1.y2,BLACK); floodfill(r2.x2,r2.y2,BLACK);

//R4

rectangle(r3.x,r3.y,r3.x1,r3.y1); rectangle(r4.x,r4.y,r4.x1,r4.y1);

setfillstyle(SOLID_FILL,BLACK); setfillstyle(SOLID_FILL,BLACK);

floodfill(r3.x2,r3.y2,BLACK); floodfill(r4.x2,r4.y2,BLACK);

//R5 //ventana1

rectangle(r5.x,r5.y,r5.x1,r5.y1); setcolor(6);

setfillstyle(SOLID_FILL,BLACK); rectangle(v1.x,v1.y,v1.x1,v1.y1);

floodfill(r5.x2,r5.y2,BLACK); setfillstyle(SOLID_FILL,BLACK);

floodfill(v1.x2,v1.y2,6);

//ventana2 //R6

rectangle(v2.x,v2.y,v2.x1,v2.y1); rectangle(r6.x,r6.y,r6.x1,r6.y1);

setfillstyle(SOLID_FILL,BLACK); setfillstyle(SOLID_FILL,BLACK);

floodfill(v2.x2,v2.y2,6); floodfill(r6.x2,r6.y2,6);

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
//R7

setcolor(6);

rectangle(r7.x,r7.y,r7.x1,r7.y1);

setfillstyle(SOLID_FILL,BLACK);

floodfill(r7.x2,r7.y2,6);

//lineas de ventana

//l1 //l4

line(l1.x,l1.y,l1.x1,l1.y1); line(l4.x,l4.y,l4.x1,l4.y1);

//l2 //l5

line(l2.x,l2.y,l2.x1,l2.y1); line(l5.x,l5.y,l5.x1,l5.y1);

//l3 //l6

line(l3.x,l3.y,l3.x1,l3.y1); line(l6.x,l6.y,l6.x1,l6.y1);

//lz1

if(b==1)

aux2=rand()%5;

else

aux2=4;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
setcolor(0); rectangle(lz2.x,lz2.y,lz2.x1,lz2.y1);

rectangle(lz1.x,lz1.y,lz1.x1,lz1.y1); setfillstyle(SOLID_FILL,aux2);

setfillstyle(SOLID_FILL,aux2); floodfill(lz2.x2,lz2.y2,0);

floodfill(lz1.x2,lz1.y2,0); delay(1);

outportb(0x378,255);

tecla=getch();

kbhit();

switch (tecla)

case ARRI:

if(r1.y>=0)

if(cont==0||cont==4)

outportb(0x378,1);

outportb(0x378,1);

r1.y--; r2.y--; r3.y--;

r1.y1--; r2.y1--; r3.y1--;

r1.y2--; r2.y2--; r3.y2--;

r4.y--; r5.y--; r6.y--;

r4.y1--; r5.y1--; r6.y1--;

r4.y2--; r5.y2--; r6.y2--;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r7.y--; v1.y--; v2.y--;

r7.y1--; v1.y1--; v2.y1--;

r7.y2--; v1.y2--; v2.y2--;

l1.y--; l2.y--; l3.y--;

l1.y1--; l2.y1--; l3.y1--;

l4.y--; l5.y--; l6.y--;

l4.y1--; l5.y1--; l6.y1--;

lz1.y--; lz2.y--;

lz1.y1--; lz2.y1--;

lz1.y2--; lz2.y2--;

if(r1.x>0)

if(cont==1)

outportb(0x378,1);

outportb(0x378,1);

r1.x--; r1.x2--; r2.x--;

r1.x1--; r2.x1--;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x2--; r3.x--; r3.x2--;

r3.x1--;

r4.x--; r5.x--; r6.x--;

r4.x1--; r5.x1--; r6.x1--;

r4.x2--; r5.x2--; r6.x2--;

r7.x--;

r7.x1--;

r7.x2--;

v1.x--; v2.x--;

v1.x1--; v2.x1--;

v1.x2--; v2.x2--;

l1.x--; l2.x--; l3.x--;

l1.x1--; l2.x1--; l3.x1--;

l4.x--; l5.x--; l6.x--;

l4.x1--; l5.x1--; l6.x1--;

lz1.x--; lz2.x--;

lz1.x1--; lz2.x1--;

lz1.x2--; lz2.x2--;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}

if(r1.x1<639)

if(cont==3)

outportb(0x378,1);

outportb(0x378,1);

r1.x++; r2.x++; r3.x++;

r1.x1++; r2.x1++; r3.x1++;

r1.x2++; r2.x2++; r3.x2++;i

r4.x++; r5.x++; r6.x++;

r4.x1++; r5.x1++; r6.x1++;

r4.x2++; r5.x2++; r6.x2++;

r7.x++;

r7.x1++;

r7.x2++;

v1.x++; v2.x++;

v1.x1++; v2.x1++;

v1.x2++; v2.x2++;

l1.x++; l2.x++; l3.x++;

l1.x1++; l2.x1++; l3.x1++;


ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x++; l5.x++; l6.x++;

l4.x1++; l5.x1++; l6.x1++;

lz1.x++; lz2.x++;

lz1.x1++; lz2.x1++;

lz1.x2++; lz2.x2++;

if(r1.y1<479)

if(cont==2)

outportb(0x378,1);

outportb(0x378,1);

r1.y++; r2.y++; r3.y++;

r1.y1++; r2.y1++; r3.y1++;

r1.y2++; r2.y2++; r3.y2++;

r4.y++; r5.y++; r6.y++;

r4.y1++; r5.y1++; r6.y1++;

r4.y2++; r5.y2++; r6.y2++;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r7.y++;

r7.y1++;

r7.y2++;

v1.y++; v2.y++;

v1.y1++; v2.y1++;

v1.y2++; v2.y2++;

l1.y++; l2.y++; l3.y++;

l1.y1++; l2.y1++; l3.y1++;

l4.y++; l5.y++; l6.y++;

l4.y1++; l5.y1++; l6.y1++;

lz1.y++; lz2.y++;

lz1.y1++; lz2.y1++;

lz1.y2++; lz2.y2++;

break;

case ABA:
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
if(r1.y1<479)

if(cont==0||cont==4)

outportb(0x378,0x2);

outportb(0x378,0x2);

r1.y++; r2.y++; r3.y++;

r1.y1++; r2.y1++; r3.y1++;

r1.y2++; r2.y2++; r3.y2++;

r4.y++; r5.y++; r6.y++;

r4.y1++; r5.y1++; r6.y1++;

r4.y2++; r5.y2++; r6.y2++;

r7.y++;

r7.y1++;

r7.y2++;

v1.y++; v2.y++;

v1.y1++; v2.y1++;

v1.y2++; v2.y2++;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l1.y++; l2.y++; l3.y++;

l1.y1++; l2.y1++; l3.y1++;

l4.y++; l5.y++; l6.y++;

l4.y1++; l5.y1++; l6.y1++;

lz1.y++; lz2.y++;

lz1.y1++; lz2.y1++;

lz1.y2++; lz2.y2++;

if(r1.x1<639)

if(cont==1)

outportb(0x378,0x2);

outportb(0x378,0x2);

r1.x++; r2.x++; r3.x++;

r1.x1++; r2.x1++; r3.x1++;

r1.x2++; r2.x2++; r3.x2++;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r4.x++; r5.x++; r6.x++;

r4.x1++; r5.x1++; r6.x1++;

r4.x2++; r5.x2++; r6.x2++;

r7.x++;

r7.x1++;

r7.x2++;

v1.x++; v2.x++;

v1.x1++; v2.x1++;

v1.x2++; v2.x2++;

l1.x++; l2.x++; l3.x++;

l1.x1++; l2.x1++; l3.x1++;

l4.x++; l5.x++; l6.x++;

l4.x1++; l5.x1++; l6.x1++;

lz1.x++; lz2.x++;

lz1.x1++; lz2.x1++;

lz1.x2++; lz2.x2++;

}
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
if(r1.x>0)

if(cont==3)

outportb(0x378,0x2);

outportb(0x378,0x2);

r1.x--; r2.x--; r3.x--;

r1.x1--; r2.x1--; r3.x1--;

r1.x2--; r2.x2--; r3.x2--;

r4.x--; r5.x--; r6.x--;

r4.x1--; r5.x1--; r6.x1--;

r4.x2--; r5.x2--; r6.x2--;

r7.x--;

r7.x1--;

r7.x2--;

v1.x--; v2.x--;

v1.x1--; v2.x1--;

v1.x2--; v2.x2--;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l1.x--; l2.x--; l3.x--;

l1.x1--; l2.x1--; l3.x1--;

l4.x--; l5.x--; l6.x--;

l4.x1--; l5.x1--; l6.x1--;

lz1.x--; lz2.x--;

lz1.x1--; lz2.x1--;

lz1.x2--; lz2.x2--;

if(r1.y>0)

if(cont==2)

outportb(0x378,0x2);

outportb(0x378,0x2);

r1.y--; r2.y--; r3.y--;

r1.y1--; r2.y1--; r3.y1--;

r1.y2--; r2.y2--; r3.y2--;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r4.y--; r5.y--; r6.y--;

r4.y1--; r5.y1--; r6.y1--;

r4.y2--; r5.y2--; r6.y2--;

r7.y--;

r7.y1--;

r7.y2--;

v1.y--; v2.y--;

v1.y1--; v2.y1--;

v1.y2--; v2.y2--;

l1.y--; l2.y--; l3.y--;

l1.y1--; l2.y1--; l3.y1--;

l4.y--; l5.y--; l6.y--;

l4.y1--; l5.y1--; l6.y1--;

lz1.y--; lz2.y--;

lz1.y1--; lz2.y1--;

lz1.y2--; lz2.y2--;

}
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}

break;

case IZQ:

cont++;

if(cont==1)

if(r1.x1-179>=0&&r1.y+184<=479)

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

r1.x=r1.x1-179;

r1.y=r1.y1-85;

lz1.x=r1.x; lz2.x=r1.x;

lz1.x1=lz1.x+5; lz2.x1=lz2.x+5;

lz1.y=r1.y1-20; lz2.y=r1.y+10;

lz1.y1=lz1.y+10; lz2.y1=lz2.y+10;

r2.x=r1.x+27; r3.x=r1.x1-60; r4.x=r1.x+27;

r2.y=r1.y+85; r3.y=r1.y+85; r4.y=r1.y-5;

r2.x1=r2.x+26; r3.x1=r3.x+26; r4.x1=r4.x+26;

r2.y1=r2.y+5; r3.y1=r3.y+5; r4.y1=r1.y;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r5.x=r1.x1-60; r6.x=r1.x+75; r7.x=r1.x+85;

r5.y=r1.y-5; r6.y=r1.y+5; r7.y=r1.y+25;

r5.x1=r5.x+26; r6.x1=r6.x+30; r7.x1=r7.x+10;

r5.y1=r1.y; r6.y1=r6.y+75; r7.y1=r7.y+30;

v1.x=r1.x+30; v2.x=r1.x1-60;

v1.y=r1.y+5; v2.y=r1.y+5;

v1.x1=v1.x+30; v2.x1=v2.x+30;

v1.y1=v1.y+75; v2.y1=v2.y+75;

l1.x=r1.x+105; l2.x=r6.x; l3.x=r6.x;

l1.y=r1.y1-5; l2.y=r1.y1-5; l3.y=r6.y;

l1.x1=l1.x+10; l2.x1=l2.x-10; l3.x1=l3.x-10;

l1.y1=l1.y+5; l2.y1=l2.y+5; l3.y1=l3.y-5;

l4.x=r6.x1; l5.x=r6.x1-15; l6.x=r6.x1-15;

l4.y=r6.y; l5.y=r6.y; l6.y=r6.y1+5;

l4.x1=l4.x+10; l5.x1=l5.x; l6.x1=l6.x;

l4.y1=l4.y-5; l5.y1=l5.y-5; l6.y1=l6.y-5;

else

cont=0;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}

if(cont==2)

if(r1.y+179<=479&&r1.x+184<=639)

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

r1.x=r1.x1-85;

r1.y1=r1.y+179;

cont2=2;

lz1.x=r1.x+10; lz2.x=r1.x1-20;

lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;

lz1.y=r1.y1-5; lz2.y=r1.y1-5;

lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;

r2.x=r1.x1; r3.x=r1.x1; r4.x=r1.x-5;

r2.y=r1.y1-42; r3.y=r1.y+26; r4.y=r1.y+136;

r2.x1=r2.x+5; r3.x1=r3.x+5; r4.x1=r4.x+5;

r2.y1=r2.y+26; r3.y1=r3.y+26; r4.y1=r4.y+26;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r5.x=r1.x-5; r6.x=r1.x+5; r7.x=r1.x+25;

r5.y=r1.y+26; r6.y=r1.y+75; r7.y=r1.y+85;

r5.x1=r1.x; r6.x1=r6.x+75; r7.x1=r7.x+30;

r5.y1=r5.y+21; r6.y1=r6.y+30; r7.y1=r7.y+10;

v1.x=r1.x+5; v2.x=r1.x+5;

v1.y=r1.y+30; v2.y=r1.y1-60;

v1.x1=v1.x+75; v2.x1=v2.x+75;

v1.y1=v1.y+30; v2.y1=v2.y+30;

l1.x=r6.x; l2.x=r6.x; l3.x=r6.x1;

l1.y=r1.y1-105; l2.y=r6.y1; l3.y=r6.y1;

l1.x1=r1.x; l2.x1=r1.x; l3.x1=r1.x1;

l1.y1=l1.y-10; l2.y1=l2.y+10; l3.y1=l3.y+10;

l4.x=r6.x1; l5.x=r6.x1; l6.x=r6.x;

l4.y=r6.y; l5.y=r6.y+15; l6.y=r6.y+15;

l4.x1=r1.x1; l5.x1=r1.x1; l6.x1=r1.x;

l4.y1=l4.y-10; l5.y1=l5.y; l6.y1=l6.y;

else

cont=1;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}

if(cont==3)

if(r1.x+179<=639&&r1.y1-184>=0)

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

r1.x1=r1.x+179;

r1.y1=r1.y+85;

cont2=1;

lz1.x=r1.x1-5; lz2.x=r1.x1-5; r2.x=r1.x+136;

lz1.x1=lz1.x+5; lz2.x1=lz2.x+5; r2.y=r1.y-5;

lz1.y=r1.y1-20; lz2.y=r1.y+10; r2.x1=r2.x+26;

lz1.y1=lz1.y+10; lz2.y1=lz2.y+10; r2.y1=r2.y+5;

r3.x=r1.x+27; r4.x=r1.x+27; r5.x=r1.x1-47;

r3.y=r1.y-5; r4.y=r1.y+85; r5.y=r1.y1;

r3.x1=r3.x+26; r4.x1=r4.x+26; r5.x1=r5.x+21;

r3.y1=r3.y+5; r4.y1=r4.y+5; r5.y1=r5.y+5;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r6.x=r1.x+75; r7.x=r1.x+85;

r6.y=r1.y+5; r7.y=r1.y+25;

r6.x1=r6.x+30; r7.x1=r7.x+10;

r6.y1=r6.y+75; r7.y1=r7.y+30;

v1.x=r1.x+30; v2.x=r1.x1-60;

v1.y=r1.y+5; v2.y=r1.y+5;

v1.x1=v1.x+30; v2.x1=v2.x+30;

v1.y1=v1.y+75; v2.y1=v2.y+75;

l1.x=r1.x+105; l2.x=r6.x; l3.x=r6.x;

l1.y=r1.y1-5; l2.y=r1.y1-5; l3.y=r6.y;

l1.x1=l1.x+10; l2.x1=l2.x-10; l3.x1=l3.x-10;

l1.y1=l1.y+5; l2.y1=l2.y+5; l3.y1=l3.y-5;

l4.x=r6.x1; l5.x=r6.x1-15; l6.x=r6.x1-15;

l4.y=r6.y; l5.y=r6.y; l6.y=r6.y1+5;

l4.x1=l4.x+10; l5.x1=l5.x; l6.x1=l6.x;

l4.y1=l4.y-5; l5.y1=l5.y-5; l6.y1=l6.y-5;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
}

else

cont=2;

if(cont==4)

if(r1.y1-179>=0&&r1.x1-184>=0)

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

outportb(0x378,0x4);

r1.x1=r1.x+85;

r1.y=r1.y1-179;

lz1.x=r1.x+10; lz2.x=r1.x1-20;

lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;

lz1.y=r1.y; lz2.y=r1.y;

lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;

r2.x=r1.x1; r3.x=r1.x1; r4.x=r1.x-5;

r2.y=r1.y1-42; r3.y=r1.y+26; r4.y=r1.y+136;

r2.x1=r2.x+5; r3.x1=r3.x+5; r4.x1=r4.x+5;

r2.y1=r2.y+26; r3.y1=r3.y+26; r4.y1=r4.y+26;


ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r5.x=r1.x-5; r6.x=r1.x+5; r7.x=r1.x+25;

r5.y=r1.y+26; r6.y=r1.y+75; r7.y=r1.y+85;

r5.x1=r1.x; r6.x1=r6.x+75; r7.x1=r7.x+30;

r5.y1=r5.y+21; r6.y1=r6.y+30; r7.y1=r7.y+10;

v1.x=r1.x+5; v2.x=r1.x+5;

v1.y=r1.y+30; v2.y=r1.y1-60;

v1.x1=v1.x+75; v2.x1=v2.x+75;

v1.y1=v1.y+30; v2.y1=v2.y+30;

l1.x=r6.x; l2.x=r6.x; l3.x=r6.x1;

l1.y=r1.y1-105; l2.y=r6.y1; l3.y=r6.y1;

l1.x1=r1.x; l2.x1=r1.x; l3.x1=r1.x1;

l1.y1=l1.y-10; l2.y1=l2.y+10; l3.y1=l3.y+10;

l4.x=r6.x1; l5.x=r6.x1; l6.x=r6.x;

l4.y=r6.y; l5.y=r6.y+15; l6.y=r6.y+15;

l4.x1=r1.x1; l5.x1=r1.x1; l6.x1=r1.x;

l4.y1=l4.y-10; l5.y1=l5.y; l6.y1=l6.y;

cont=0;

else

{
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
cont=3;

break;

case DER:

cont2++;

if(cont==0)

if(r1.x+179<=639&&r1.y+184<=479)

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

r1.x1=r1.x+179;

r1.y=r1.y1-85;

cont=3;

cont2=1;

lz1.x=r1.x1-5; lz2.x=r1.x1-5;

lz1.x1=lz1.x+5; lz2.x1=lz2.x+5;

lz1.y=r1.y+10; lz2.y=r1.y1-20;

lz1.y1=lz1.y+10; lz2.y1=lz2.y+10;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x=r1.x+136; r3.x=r1.x+27; r4.x=r1.x+27;

r2.y=r1.y-5; r3.y=r1.y-5; r4.y=r1.y+85;

r2.x1=r2.x+26; r3.x1=r3.x+26; r4.x1=r4.x+26;

r2.y1=r2.y+5; r3.y1=r3.y+5; r4.y1=r4.y+5;

r5.x=r1.x1-47; r6.x=r1.x+75; r7.x=r1.x+85;

r5.y=r1.y1; r6.y=r1.y+5; r7.y=r1.y+25;

r5.x1=r5.x+21; r6.x1=r6.x+30; r7.x1=r7.x+10;

r5.y1=r5.y+5; r6.y1=r6.y+75; r7.y1=r7.y+30;

v1.x=r1.x+30; v2.x=r1.x1-60;

v1.y=r1.y+5; v2.y=r1.y+5;

v1.x1=v1.x+30; v2.x1=v2.x+30;

v1.y1=v1.y+75; v2.y1=v2.y+75;

l1.x=r1.x+105; l2.x=r6.x; l3.x=r6.x;

l1.y=r1.y1-5; l2.y=r1.y1-5; l3.y=r6.y;

l1.x1=l1.x+10; l2.x1=l2.x-10; l3.x1=l3.x-10;

l1.y1=l1.y+5; l2.y1=l2.y+5; l3.y1=l3.y-5;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1-15; l6.x=r6.x1-15;

l4.y=r6.y; l5.y=r6.y; l6.y=r6.y1+5;

l4.x1=l4.x+10; l5.x1=l5.x; l6.x1=l6.x;

l4.y1=l4.y-5; l5.y1=l5.y-5; l6.y1=l6.y-5;

else

cont=0;

if(cont==1)

if(r1.y1-179>=0&&r1.x+184<=639)

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

r1.x=r1.x1-85;

r1.y=r1.y1-179;

cont=0;

lz1.x=r1.x+10; lz2.x=r1.x1-20;

lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;

lz1.y=r1.y; lz2.y=r1.y;

lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x=r1.x1; r3.x=r1.x1; r4.x=r1.x-5;

r2.y=r1.y1-42; r3.y=r1.y+26; r4.y=r1.y+136;

r2.x1=r2.x+5; r3.x1=r3.x+5; r4.x1=r4.x+5;

r2.y1=r2.y+26; r3.y1=r3.y+26; r4.y1=r4.y+26;

r5.x=r1.x-5; r6.x=r1.x+5; r7.x=r1.x+25;

r5.y=r1.y+26; r6.y=r1.y+75; r7.y=r1.y+85;

r5.x1=r1.x; r6.x1=r6.x+75; r7.x1=r7.x+30;

r5.y1=r5.y+21; r6.y1=r6.y+30; r7.y1=r7.y+10;

v1.x=r1.x+5; v2.x=r1.x+5;

v1.y=r1.y+30; v2.y=r1.y1-60;

v1.x1=v1.x+75; v2.x1=v2.x+75;

v1.y1=v1.y+30; v2.y1=v2.y+30;

l1.x=r6.x; l2.x=r6.x; l3.x=r6.x1;

l1.y=r1.y1-105; l2.y=r6.y1; l3.y=r6.y1;

l1.x1=r1.x; l2.x1=r1.x; l3.x1=r1.x1;

l1.y1=l1.y-10; l2.y1=l2.y+10; l3.y1=l3.y+10;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1; l6.x=r6.x;

l4.y=r6.y; l5.y=r6.y+15; l6.y=r6.y+15;

l4.x1=r1.x1; l5.x1=r1.x1; l6.x1=r1.x;

l4.y1=l4.y-10; l5.y1=l5.y; l6.y1=l6.y;

else

cont=1;

if(cont==2)

if(r1.x1-179>=0&&r1.y1-184>=0)

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

r1.x=r1.x1-179;

r1.y1=r1.y+85;

cont=1;

lz1.x=r1.x; lz2.x=r1.x;

lz1.x1=lz1.x+5; lz2.x1=lz2.x+5;

lz1.y=r1.y1-20; lz2.y=r1.y+10;

lz1.y1=lz1.y+10; lz2.y1=lz2.y+10;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
r2.x=r1.x+27; r3.x=r1.x1-60; r4.x=r1.x+27;

r2.y=r1.y+85; r3.y=r1.y+85; r4.y=r1.y-5;

r2.x1=r2.x+26; r3.x1=r3.x+26; r4.x1=r4.x+26;

r2.y1=r2.y+5; r3.y1=r3.y+5; r4.y1=r1.y;

r5.x=r1.x1-60; r6.x=r1.x+75; r7.x=r1.x+85;

r5.y=r1.y-5; r6.y=r1.y+5; r7.y=r1.y+25;

r5.x1=r5.x+26; r6.x1=r6.x+30; r7.x1=r7.x+10;

r5.y1=r1.y; r6.y1=r6.y+75; r7.y1=r7.y+30;

v1.x=r1.x+30; v2.x=r1.x1-60;

v1.y=r1.y+5; v2.y=r1.y+5;

v1.x1=v1.x+30; v2.x1=v2.x+30;

v1.y1=v1.y+75; v2.y1=v2.y+75;

l1.x=r1.x+105; l2.x=r6.x; l3.x=r6.x;

l1.y=r1.y1-5; l2.y=r1.y1-5; l3.y=r6.y;

l1.x1=l1.x+10; l2.x1=l2.x-10; l3.x1=l3.x-10;

l1.y1=l1.y+5; l2.y1=l2.y+5; l3.y1=l3.y-5;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1-15; l6.x=r6.x1-15;

l4.y=r6.y; l5.y=r6.y; l6.y=r6.y1+5;

l4.x1=l4.x+10; l5.x1=l5.x; l6.x1=l6.x;

l4.y1=l4.y-5; l5.y1=l5.y-5; l6.y1=l6.y-5;

else

cont=2;

if(cont==3&&cont2==2)

if(r1.y+179<=479&&r1.x1-184>=0)

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

outportb(0x378,0x8);

r1.x1=r1.x+85;

r1.y1=r1.y+179;

cont=2;

cont2=0;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
lz1.x=r1.x+10; lz2.x=r1.x1-20;

lz1.x1=lz1.x+10; lz2.x1=lz2.x+10;

lz1.y=r1.y1-5; lz2.y=r1.y1-5;

lz1.y1=lz1.y+5; lz2.y1=lz2.y+5;

r2.x=r1.x1; r3.x=r1.x1; r4.x=r1.x-5;

r2.y=r1.y1-42; r3.y=r1.y+26; r4.y=r1.y+136;

r2.x1=r2.x+5; r3.x1=r3.x+5; r4.x1=r4.x+5;

r2.y1=r2.y+26; r3.y1=r3.y+26; r4.y1=r4.y+26;

r5.x=r1.x-5; r6.x=r1.x+5; r7.x=r1.x+25;

r5.y=r1.y+26; r6.y=r1.y+75; r7.y=r1.y+85;

r5.x1=r1.x; r6.x1=r6.x+75; r7.x1=r7.x+30;

r5.y1=r5.y+21; r6.y1=r6.y+30; r7.y1=r7.y+10;

v1.x=r1.x+5; v2.x=r1.x+5;

v1.y=r1.y+30; v2.y=r1.y1-60;

v1.x1=v1.x+75; v2.x1=v2.x+75;

v1.y1=v1.y+30; v2.y1=v2.y+30;

l1.x=r6.x; l2.x=r6.x; l3.x=r6.x1;

l1.y=r1.y1-105; l2.y=r6.y1; l3.y=r6.y1;

l1.x1=r1.x; l2.x1=r1.x; l3.x1=r1.x1;

l1.y1=l1.y-10; l2.y1=l2.y+10; l3.y1=l3.y+10;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
l4.x=r6.x1; l5.x=r6.x1; l6.x=r6.x;

l4.y=r6.y; l5.y=r6.y+15; l6.y=r6.y+15;

l4.x1=r1.x1; l5.x1=r1.x1; l6.x1=r1.x;

l4.y1=l4.y-10; l5.y1=l5.y; l6.y1=l6.y;

else

cont=3;

cont2=0;

r1.x2=r1.x+2;

r1.y2=r1.y+2;

break;

case 'c':

b=1;

outportb(0x378,16);

outportb(0x378,16);

outportb(0x378,16);

outportb(0x378,16);

break;

cout<<b;
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
//getch();

r1.x2=r1.x+2; r2.x2=r2.x+2; r3.x2=r3.x+2;

r1.y2=r1.y+2; r2.y2=r2.y+2; r3.y2=r3.y+2;

r4.x2=r4.x+2; r5.x2=r5.x+2; r7.x2=r7.x+2;

r4.y2=r4.y+2; r5.y2=r5.y+2; r7.y2=r7.y+2;

v1.x2=v1.x+2; lz1.x2=lz1.x+2;

v1.y2=v1.y+2; lz1.y2=lz1.y+2;

v2.x2=v2.x+2; lz2.x2=lz2.x+2;

v2.y2=v2.y+2; lz2.y2=lz2.y+2;

closegraph();

else

clrscr();

cout<<"\n\n\n OPCION INCORRETA!!";

getch();

return 0;

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
void color()

cout<<"\n\n SELECCIONE EL COLOR DE AUTO\n\n";

cout<<"1-AZUL\n";

cout<<"2-VERDE\n";

cout<<"3-CYAN\n";

cout<<"4-ROJO\n";

cout<<"5-MAGENTA\n";

EVIDENCIAS

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
DISEÑO DE PANTALLA
(Librería”LAW”)
#include <iostream.h>

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include<dos.h>

presentacion()

cout<<" \n\n\n\n\n\n\n\n\n\n\n <<UNIVERSIDAD TECNOLOGICA DE TULA TEPEJI>>


\n\n\n";

cout<<" ->PROYECTO DE OPTATIVA AVANZADA<-\n\n\n";

cout<<" Proyect: -= CONTROL DE UN CARRO CON C++=-\n\n";

cout<<" Pofesor: -= ING. ALBERTO GARCIA CHAVEZ=-\n\n\n";

cout<<" Integrantes: ->GUADALUPE ADRIANA RAMIREZ HERNANDEZ<-\n\n


->LUIS MIGUEL HERNANDEZ<-\n\n
->WILFRIDO GONZALEZ CARDENAZ<-\n\n";

cout<<" \n Grupo: *>8IMCAG3<*\n";

NOTA:

El al momento de escribirlo a Word se redujo espacios y se tuvo que abreviar por


columnas, al igual que el use port este se tiene que bajar para poder usar el puerto de
la impresora. El DB25.

ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA
ALUMNOS:
GUADALUPE ADRIANA RAMIREZ HERNANDEZ
LUIS MIGUEL HERNANDEZ
WIFRIDO CARDENAS GONZALEZ
8 IMC – G3 DE INGENIERIA EN MECATRONICA

También podría gustarte