Está en la página 1de 6

UNIVERSIDAD MAYOR DE SAN ANDRÉS

FACULTAD DE INGENIERÍA
INGENIERÍA ELECTRÓNICA

PROYECTO:
“RELOJ ANALÓGICO”

SISTEMAS DE COMPUTACIÓN
ETN – 903 LAB

Presentado por:
Grupo:
Richard APAZA MAMANI
Maria Cecilia BALLESTEROS GONZALES
Maria Fernanda VARGAS SAAVEDRA
Docente:
Javier SANABRIA GARCIA
Fecha de entrega: 7 – 12 – 2018

LA PAZ – BOLIVIA
“RELOJ ANALOGICO”

1. Objetivos
 Diseñar un sistema en LINUX que lea la hora del sistema y lo despliegue en
la pantalla en forma de un reloj analógico
 Utilizar la librería VGA para el dibujo de la interfaz.
 Leer el estado del TIC y del teclado.
 Estructurar el programa mediante el uso de subrutinas y macros.

2. Descripción y análisis del laboratorio


Primero, se realizo la lectura de la hora del sistema y el estado del teclado. Para la
lectura del teclado se utilizó el servicio 101 de la interrupción 80. Una vez inicializado
el teclado se lee el estado de este y se verifica si se presiono la tecla [ENTER]; si
es así, se sale del programa. Para la lectura del estado del TIC se utilizó el servicio
0Dh de la interrupción 80; este servicio nos da la hora de la zona horaria TDF en
segundos. Para obtener la hora boliviana se restó 14400 (equivalente a 4 horas en
segundos), que es la diferencia horaria.
Una vez obtenida la hora en segundos, se convirtió en horas, minutos y segundos;
con estos datos se calculó las coordenadas polares, para graficar el horero, el
minutero y el segundero. Para los cálculos matemáticos se uso el coprocesador
matemático y para dibujar el reloj con sus elementes (secciones y agujas) se usó la
librería VGA.

Subrutinas.-
Interfaz.- Dibuja la interfaz (círculos del reloj)
initec.- Inicializa el teclado
fintec.- finaliza el teclado
adq_seg.- convierte de segundos a horas, minutos y segundos
punto2.- utiliza funciones matemáticas para encontrar el ángulo en el que se
encuentran posicionados las agujas del reloj.
segund, minut, hors.- encuentran las posiciones en las que se encuentran el
segundero, minutero y horero respectivamente.
Macros.-
_vga_setcolor.- Selecciona el modo de video
_vga_drawline.- Dibuja una linea
_vga_font.- Dibuja los números del reloj en una determinada posición y con un
determinado formato
_vga_circulo,- dibuja círculos

DESCRIPCIÓN DEL ALGORITMO

Figura 1. Interfaz
Primero se grafico la interfaz, para lo cual se dibujo primero la circunferencia central,
y las marcas correspondientes a los minutos y segundos. Luego se procedió a
dibujar los números alrededor del reloj.
Para el diseño de las letras y números graficados en la interfaz, se realizo el mapeo
de cada numero y letra en una matriz de 16 bits por 16 bits (variables ‘.short’): ‘0’
no se coloca pixel, ‘1’ se coloca pixel. Se utilizo el macro _vga_font, que contiene
un algoritmo que se fija en el valor de cada bit en la matriz a dibujar, para decidir si
colocar el pixel en una determinada posición, y con un determinado color.
Figura 2. Ejemplo del Mapeo de Letras y Números

Una vez dibujada toda la interfaz, se leyó el estado del teclado y se verifico si se
presionó [ENTER]; si es este el caso se sale inmediatamente del programa, de otra
forma se lee la hora. El servicio 0D de la interrupción 80, nos devuelve el tiempo en
segundos. Para calcular las horas, minutos y segundos, se dividió entre 60 dos
veces: el resto de la primera división nos dio los segundos, el resto de la segunda
división nos dio los minutos y el cociente de esta última nos dio las horas. Con estos
datos, se obtuvo los ángulos (coordenadas polares) para el minutero, segundero y
horero. Con estos ángulos, se calculo las posiciones de cada una de las agujas del
reloj. Con estas posiciones se dibujo las manecillas del reloj actuales,
asegurándonos de borrar el dibujo de las manecillas en la posición anterior.

DIAGRAMA DE FLUJO
3. Conclusiones.

- Se realizó el programa con herramientas como la librería VGA y el


coprocesador matemático.
- Difiere el cambio del modo de video en LINUX que la forma en la que se hace
en WINDOWS. En Windows se utiliza servicios de interrupciones para
cambiar a un modo de video determinado, mientras que en LINUX se utiliza
la librería VGA.
- Para utilizar la librería VGA se necesita permisos de administrador. En
Windows no era necesario este paso. Sin embargo, en LINUX la
programación del modo de video se resume al uso de las características y
funciones de una librería, mientras que en WINDOWS había que codificar
estos cambios en assembler.
- Para poder realizar el dibujo de las manecillas se encontró sus coordenas
polares y sus posiciones. Fue necesario el uso del coprocesador matemático,
debido al gran número de funciones matemáticas que se necesitó en este
paso.
- Para realizar este proyecto se utilizó el material avanzado en clases tanto de
lo aprendido en WINDOWS (coprocesador) y lo aprendido en LINUX (librerias
como el VGA).
- Este proyecto se podría implementarlo fácilmente para WINDOWS, solo
diferenciaría en el uso de ciertas interrupciones y el cambio del modo de
video.

También podría gustarte