Professional Documents
Culture Documents
UNIDAD 7 y 8
ALUMNO: NÚMERO DE
CONTROL:
SEGUNDO SEMESTRE
INGENIERÍA EN MECATRÓNICA
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.
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{int gdriver = DETECT, gmode;
int x,y;
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.
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
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.
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.
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.
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.
main ()
{
unsigned char byte; /* byte para operaciones de E/S */
return 0;
}
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
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#define ESC 27
int main()
char cCar;
int i;
clrscr();
outp(PORT,0);
printf("\n --------------------------------");
printf("\n---------------------------------");
for(i=0;i<5;i++)
switch(cCar)
case '1'://Derecha
break;
case '2'://Izquierda
break;
break;
case '4'://Afuera
break;
outp(PORT,0);delay(250);
return 0;
//JUAN_GARCIA_PEDRO_OCTAVIO
//PRORAMACION DEL NOMBRE DESPLEGADO EN UN DISPLAY
#include <stdio.h>
#include <conio.h>
#include <dos.h>
#include <iostream.h>
#include <time.h>
int main()
{
textcolor(12);
textbackground(0);
clrscr();
outportb (0x378,0);
cout << "J"; outportb (0x378,14);
sleep(2);// Retraso de 1 segundos
#include <stdio.h>
#include <dos.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
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";
#include <conio.h>
#include <stdio.h>
#include <dos.h>
void main()
int seleccion,repetir=1;
while (repetir==1)
textcolor(4);
clrscr();
printf(" 3. Paro\n\n");
printf(" 4. Salir\n\n");
printf("\n\n");
seleccion=getche ();
switch (seleccion)
printf("Instrucciones no validas");
getch();
2. http://www.latindevelopers.com/forum/introduccion-a-
graphics-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