A menudo sucede que una pantalla LCD HD44780 16x2 muestra caracteres confusos durante el uso. La mayoría de la ayuda en la web aconseja utilizar técnicas de snubbing para evitar el ruido de voltaje como el pico de inducción. He hecho todo eso pero el problema persiste. ¿Qué puedo hacer?
Respuesta
¿Demasiados anuncios?Este problema ocurre en el modo de 4 bits, la pantalla LCD pierde un nibble de datos (un carácter está hecho de dos nibbles de 4bits) y entonces todos los caracteres subsiguientes son desplazados por 4bit. Puede comprobar que este es su problema verificando que la basura mostrada se repite siempre para una cadena conocida que se supone que se muestra, por ejemplo "Stop" 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. El MCU puede seguir trabajando con un voltaje menor pero cuando pone el pin "EN" (enable) del LCD en HIGH, si está por debajo del valor mínimo para ese LCD ( 2,2V por ejemplo ) entonces el nibble de 4 bits no se registrará cuando el "EN" se ponga a bajo de nuevo haciendo que la pantalla sea confusa hasta que este error ocurra de nuevo y la pantalla se restablezca.
Para solucionar esto, lo mejor es que la MCU espere hasta que su tensión de alimentación vuelva a un valor superior al valor mínimo de la tensión HIGH de entrada de la pantalla LCD más un margen de seguridad. Por ejemplo en MSP430 energia o arduino antes de llamar a lcd.print
siempre llamarías a algo así:
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);
}
}