Refrescar Pantalla LCD

Hola a todos!
Estoy trabajando en mi proyecto, en el cual mido con un PIC una determinada frecuencia, y la muestro por una pantalla LCD.

Mido la frecuencia constantemente, más o menos, cada medio minuto.

Mi problema es, que tras la 1ª vuelta, la LCD muestra correctamente el resultado, pero a la siguiente vuelta, aparecen unos símbolos muy extraños, y a la siguiente otra vez lo muestra correctamente.

He intentado todo, borrar la pantalla tras un delay, borrarla al inicio del main...cuando hago esto a la 1ª vuelta me muestra el dato y a la siguiente la pantalla se pone en negro...y así sucesivamente.

Pienso que el problema debe estar en la libería que utilizo..pero no se donde puede estar.

Teneis idea de lo que me puede estar pasando??Es como si no se refrescara la pantalla...

Aquí os adjunto la libería que utilizo para la LCD y la parte de mi programa en el que muestro los datos.

Saludosss! y Gracias!!Me serían de gran ayuda vuestras respuestas!!

Estas son las asignaciones:

unsigned float f;
unsigned float frecuencia,f_fracpart;
unsigned int s_intpart;
unsigned int u_fracpart;
char buf[10];

Código:

Inicializa_LCD();
Comando_LCD(CURSOR_ON & BLINK_ON);
for(i=1;i<=10;++i){
Delay10KTCYx(100);
}
s_intpart = frecuencia; // integer part of float, as a signed int
f_fracpart = (frecuencia - s_intpart); // fractional part of float, as a float
u_fracpart = f_fracpart * 100; // 100 * fractional part, as an unsigned int
sprintf(buf,(const far rom char*) "%d.%02u", s_intpart , u_fracpart );
Datos_LCD(" F= ");//una cadena desde la memoria de programa
Dato_String_LCD(buf);//una cadena desde la memoria de datos
Datos_LCD(" Hz ");//una cadena desde la memoria de programa
//con este comando pasamos a la linea 2 del LCD
Comando_LCD(DDRAM_LINEA_2);
for(i=1;i<=60;++i){
Delay10KTCYx(250);

Comando_LCD(CLEAR);

Gracias!!
 

Adjuntos

  • midisplay..txt
    5.9 KB · Visitas: 4
Atrás
Arriba