Gestión y creación de visualizaciones gráficas.... |
El objetivo de esta página es aclarar el manejo y por tanto el uso de la visualización gráfica, lo que no es precisamente una tarea fácil. Comencemos descargando la hoja de datos de Hitachi HDM64GS12 o AGM1264F u otras pantallas equivalentes siempre que tengan una matriz de 128 x 64. Vemos que además de las dimensiones, características eléctricas y otra información, se informa la siguiente tabla que debería aclarar cómo se gestiona cada píxel individual de la pantalla . Así que una vez que tengas la pantalla, el PIC y los conocimientos necesarios, es cuestión de escribir algo de código para gestionar la pantalla... bueno, ¡¡ya lo he abandonado!! Si intentamos dibujar algunas líneas verticales con algunos bucles FOR lo logramos, pero si luego queremos agregar algunas líneas horizontales (sin eliminar las verticales) el problema se vuelve muy complejo. Por suerte hay un vacío legal y se llama GLCD.C: es una biblioteca escrita en C que se encarga de interconectar el PIC con la pantalla. Desafortunadamente, este archivo está protegido por derechos de autor y por lo tanto no es de código abierto, pero si buscas en Internet... de hecho puedes encontrar múltiples versiones y a continuación te reporto dos versiones, la primera con un formato más 'elegante' de 5 x 7. matriz de caracteres y una matriz de 3 x 5 con caracteres más pequeños:
Veamos cómo funciona la biblioteca: primero que nada les cambié el nombre GLCD_35.C y GLCD_57.C para usarlos como quisiera. Luego puede llamar a las distintas rutinas para las siguientes funciones: glcd_init(mode): inicializa el modo de visualización ON OFF glcd_pixel(x,y,color) x o posición. y pos. vert. color ON OFF ON enciende el píxel OFF lo apaga glcd_line(x1,y1,x2,y2,color) dibuja una línea con coordenadas x1,y1 comienza y x2,y2 termina la línea ON y OFF escribe o elimina glcd_text35(x,y, textptr, color) escribe o elimina texto x e y coordenadas de inicio de escritura textptr cadena para escribir color ON OFF escribe o elimina. Como puede ver, cada función incluye la opción ON y OFF, lo cual es absolutamente esencial porque cualquier cambio en la escritura o cualquier otra cosa en la pantalla requiere que se elimine primero el valor anterior; de lo contrario, la escritura se superpondrá glcd_fillScreen(color) enciende o apaga todos los píxeles de la pantalla glcd_circle (x,y,radius,fill,color), glcd _bar(x1,y1,x2,y2,width,color), glcd_rect(x1,y1,x2,y2,fill,color) menos utilizado Pasemos entonces a las implementaciones prácticas. Las dos implementaciones propuestas se refieren a un ADC_Tester y un osciloscopio digital. Ambos usan el mismo diagrama eléctrico, por lo tanto los mismos componentes solo cambian el software a descargar en el PIC. En este sentido, si alguien está interesado, puede descargar los archivos fuente y .hex en la sección de descargas. |
Como puede ver, ADC_Tester muestra el estado de las líneas de salida del ADC0820 y el valor del voltaje de entrada. Esta es principalmente una implementación didáctica, sin embargo, se podrían agregar otras ocho entradas de los puertos RA0-7 no utilizados.RA0-7 . |
Osciloscopio digital. Este es el proyecto final para el cual se finaliza el estudio de visualización. Proyecto totalmente funcional, pero aún en trámite para intentar aumentar el ancho de banda (por ahora limitado a unos pocos KHz a pesar del uso del ADC0820 externo al notoriamente lento PIC) además hay que mejorar la sincronización con la señal de entrada, así como un circuito de entrada para llevar el voltaje de entrada máximo a al menos 50 voltios. |
Osciloscopio digital. Proyecto extraído del sitio www.semifluid.com/?p=16 desde donde es posible descargar el proyecto y el software incluida la biblioteca a modificar . |