TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: QIQE en 03 de Enero de 2007, 17:44:42
-
Hola felix año a todos aqui vengo con otro problema ando liado con una pantalla Glcd de 128x64 pixels y tengo un problema de barrido cada vez que actualizo la pantalla aparece el molesto barridoeste es mi código
glcd_rect(7, 0, 125, 7, YES, off); //Rectangulo para borrar lo que habia antes
glcd_text57(7, 0, GTiempo, 1, on); //Muestra por pantalla la fecha y la hora
glcd_rect(7, 10, 110, 17, YES, off); //Rectangulo para borrar lo que habia antes
glcd_text57(7, 10, Gtemp1, 1, on); //Muestra por pantalla el valor Temperatura
//glcd_circle(56,12,2,no,on) ; //Simbolo de grados
glcd_text57(62, 10, Ghume1, 1, on); //Muestra por pantalla el valor Humedad
glcd_circle(113,10,1,no,on) ; //
glcd_circle(115,15,1,no,on) ; //Tanto por cien
glcd_line(116,9,112,16,on); //
glcd_rect(7, 18,110, 28, YES, off); //Rectangulo para borrar lo que habia antes
glcd_text57(7, 18, Gtemp2, 1, on); //Muestra por pantalla el valor Temperatura
//glcd_circle(56,12,2,no,on) ; //Simbolo de grados
glcd_text57(62, 18, Ghume2, 1, on); //Muestra por pantalla el valor Humedad
estoy usando un 16f877A a 12Mhz alguna idea para evitar esto??? muxas gracias a todos
-
¿No puedes sobreescribir en los datos de temperatura y humedad? así sólo tendria dos lineas de código, las que muestra la temperatura y la que muestra la humedad.
Suerte!!! ;)
-
hola si eso lo intenté pero se queda "emborronado", me explico mejors por ejemplo era un 8 loq ue tenia y luego tengo un 9 se sigue viendo el 8, por eso decidí poner el rectangulo... alguna idea???
-
Hola qiqe!
La librería del display tiene un define que es:
#define FAST_GLCD
Cuando pones esta directiva en tu código principal lo que haces es utilizar un buffer y despues con una función que se llama 'glcd_update()' lo que haces es volcar ese buffer en la pantalla.
Con esto evitas el parpadeo que nos comentas pero tenemos un problema. El PIC16F877 no tiene suficiente memoria para crear ese buffer, es decir, con el 16F877 no puedes utilizar el FAST_GLCD.
Ahora mismo estoy haciendo la prueba con un 18F4550 y funciona muy bien. Además, si no pongo el FAST_GLCD puedo observar a la perfección el efecto indeseado que nos comentas.
A ver si esto te puede servir de algo.
Un saludo desde Alicante!
-
Hola muchas gracias por la respuesta el 16f877 la verdad se esta quedando corto el pobre estoy a mitad de desarrollo y ya esta al 97% mas o menos dentro de poco le saldrá humo por las orejas jejej inventando inventando he encontrado una solucion que no deja de ser algo parecido a lo que me comentas, guardo la variable antigua (Vieja) y lescribo a off, esto le cuesta mucho menos tiempo que el recuadro por lo menos visualmente, y luego escribo el dato real bueno con un ejemplo se verá mucho mejor, estaba pensando en subirle la velocidad al micro hasta los 20Mhz pero supongo que desde 12Mhz no notaré mucho la diferencia en la pantalla no?? ya que va a su propoia velocidad.... en fin aqui dejo el programa
glcd_text57(7, 0, GvTiempo, 1, off); //Borramos de la pantalla la fecha y la hora la v indica que es una variable antigua (vieja).
glcd_text57(7, 0, GTiempo, 1, on); //Muestra por pantalla la fecha y la hora
glcd_text57(7, moverpant, Gvtemp1, 1, off); //Borramos Temp.. de la pantalla
glcd_text57(7, moverpant, Gtemp1, 1, on); //Muestra por pantalla el valor Temp...
glcd_circle(40,moverpant+1,2,no,on) ; //Simbolo de grados
glcd_text57(62,moverpant, Gvhume1, 1, off); //Borramos Hum.. de la pantalla
glcd_text57(62, moverpant, Ghume1, 1, on); //Muestra por pantalla el valor Humedad
un saludo desde valencia ;)