Caracter fantasma en LCD

#1
Hola, Tengo un problema con los display lcd, me aparece un caracter "fantasma" que no debería aparecer, lo hace luego de la presentacion.
En la simulacion no aparece, y no es problema del display porque de los 4 circuitos que arme aparece en todos.
En el codigo le meti lcd_putc("\f") por todos lados pero sigue ahi.
En la foto puede verse, debajo del 1. Saludos y gracias.
 

Adjuntos

#2
Faltan datos.
Que compilador usas, que microcontrolador y un codigo de referencia.

Yo tuve problema parecido con el keil en los ARM optimizado al tamaño del hex, lo resolvi agregando en el array un elemento mas a que uso.
 
#3
Hacé esto: Conectá las patas de control y datos así:



Es decir, conectalas a dip switches y pulsadores... Esto te sirve para hacer todo el proceso de inicialización manual, y te asegurás que no sea un problema de tiempos...

Si con eso sigue el problema, seguramente sea un problema del controlador del lcd...

Un saludo,
Gonzalo
 
#4
Compilador CCS, micro 16f886.
No puede ser un problema del controlador, a menos que los 5 o 6 display que tengo esten todos fallados.
Gonzalo, tengo las placas armadas, no puedo hacerlo. De todos modos el caracter aparece en la segunda pantalla, en la primera de bienvenida no aparece, por lo que no creo que sea la inicializacion.

Me olvide mencionar que luego de escoger un menu, el caracter desaparece.


void main() {

set_tris_c(0);
output_c(0);
lcd_init();
delay_ms (20);
lcd_putc("\f");
lcd_gotoxy(4,1);
lcd_putc("SELECCIONE");
lcd_gotoxy(5,2);
lcd_putc("SISTEMA");
delay_ms (1000);
lcd_putc("\f");
while(true)
{
/////////ACA APARECE EL CARACTER FANTASMA///////////////
lcd_gotoxy(1,1);
lcd_putc("1-induc 2-piezo");
lcd_gotoxy(1,2);
printf (lcd_putc," sistema:%U\n\r",testeado);
 
#8
Perdon por la demora. Esta es la variable:

if (input(pin_a1)==1){delay_ms(300); break;}
else if(input(pin_a0)){delay_ms(300); testeado++; if(testeado>2){testeado=2;};}
else if(input(pin_a2)){ delay_ms(300); testeado--; if(testeado<1){testeado=1;};}
}
if(testeado==0) // si la opcion seleccionada es la 0, salimos del menú
{

// enable_interrupts(GLOBAL);
// enable_interrupts(INT_EXT);
// lcd_putc("\f");
// break;
}
else if(testeado==1){induc(); lcd_putc("\f");}
else if(testeado==2){piezo(); lcd_putc("\f");}
 
#9
Hacé esto:

Copiá todo el código en otro proyecto y andá sacándole funcionalidades hasta que el caracter fantasma desaparezca...

Un saludo,
Gonzalo
 
#10
Es muy raro lo que comentas marcelo, cuando tengo esa clase de problemas que no les veo solución por ser algo muy raro recurro al soporte de CCS, es muy bueno siempre encuentran la solución y rápidamente, tambíen intenta buscar alguna versión más nueva del compilador, en internet anda dando vuelta la 4.110 que implementa muchas mejoras con respecto a la versión que usas ahora. Probablemente el error esté en un bug con la función printf().

Saludos si encontras la solución posteala
 
#11
Cuando tenga tiempo probare. Pero para complicarcelas mas, si "testeado" es igual a 2, el carecter desaparece, pero si es 1, a pesar de que se limpia la pantalla luego de seleccionar la opcion, SE QUEDA AHI!!!

else if(testeado==1){induc(); lcd_putc("\f");}
 
#12
marcelo esto afirma más aun lo que pienso, es un bug de la función printf a mi parecer, busca una versión más reciente del compilador y proba, yo creo que se soluciona así.

Saludos
 
#15
Despues de un tiempo, descargue la version 4.114, la ultima que encontre con key, y el caracter sigue ahi, es mas, antes estaba medio borroso y se notaba un parpadeo, ahora esta bien fijo y con buen contraste. No se que sera. Saludos.
 

Temas similares

Arriba