Hola Nano
hace tiempo edite caracteres y por lo que veo puede ser que se este pisando los datos cargados en la ram del lcd...
no entiendo tu programa por eso no te puedo decir mas
usando el programa que usas edite el digito ''0'' usando otras posiciones de memoria por si queres probar a ver que pasa...
por lo que veo editas caracteres de 5x7 ,si queres podes editar 5x8 ,la ultima linea en algunos lcd es editable 100x100
y en otros solo podes cargar 1FH
int const caracter0_direccion[8]={0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47};
int const caracter0_datos[8]={0b11111,0b01111,0b10000,0b11000,0b11000,0b11000,0b11000,0b0};
int const caracter1_direccion[8]={0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4e,0x4f};
int const caracter1_datos[8]={0b11111,0b11110,0b00001,0b00011,0b00011,0b00011,0b00011,0b0};
int const caracter2_direccion[8]={0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57};
int const caracter2_datos[8]={0b11000,0b11000,0b11000,0b11000,0b10000,0b01111,0b11111,0b0};
int const caracter3_direccion[8]={0x58,0x59,0x5a,0x5b,0x5c,0x5d,0x5e,0x5f};
int const caracter3_datos[8]={0b00011,0b00011,0b00011,0b00011,0b00001,0b11110,0b11111,0b0};
Saludos!