A menudo sucede que una pantalla LCD HD44780 16x2 muestra caracteres ilegibles durante el uso. La mayor parte de la ayuda en la web aconseja el uso de técnicas de amortiguamiento para evitar el ruido de voltaje, como el pico de inducción. Ya hice todo eso pero el problema persiste. Qué puedo hacer ?
Este problema ocurre en el modo de 4 bits, la pantalla LCD pierde un nibble de datos (un carácter está formado por dos nibbles de 4 bits) y luego todos los caracteres subsiguientes se compensan en 4 bits. Puede verificar que este es su problema verificando que la basura que se muestra siempre se repite para una cadena conocida que se supone que se muestra, por ejemplo, "Detener" siempre mostrará "7Fπ ...".
Esto puede ocurrir por varias razones, pero la principal en mi caso fue la baja potencia en la MCU que controla la pantalla. La MCU aún puede funcionar con un voltaje más bajo, pero cuando establece el pin "EN" (habilitar) de la pantalla LCD en ALTO, si está por debajo del valor mínimo para esa pantalla LCD (2,2 V, por ejemplo), entonces el nibble de 4 bits no se registrará cuando el "EN" se establece en bajo nuevamente, lo que hace que la pantalla se distorsione hasta que este error vuelva a ocurrir y se restablezca la pantalla.
Para solucionar esto, es mejor que la MCU espere hasta que su voltaje de suministro vuelva a un valor superior al valor mínimo del voltaje ALTO de entrada mínimo de LCD más un margen de seguridad. Por ejemplo, en MSP430 energia o arduino antes de llamar, lcd.print
siempre llamarías algo como esto:
setup(){
analogReference(INTERNAL2V5);
}
void waitVoltage(){
while(true){
// 3v(what we want)/2.5 (reference) x1024/2=614
//we read VSS/2 on port 11, we want more than 2.5v to write on the lcd
if(analogRead(0x1011)>613){
break;
}
delay(50);
}
}
akohlsmith
Manu de Hanói