He escrito un controlador LCD que funciona para un NHD ‐ 0212WH ‐ ATGH ‐ JT y me gustaría agregar la posibilidad de crear tus propios personajes personalizados.
A través de algunas investigaciones, entendí que debo escribir un byte para cada fila en el CGRAM en posiciones específicas y luego apuntar a esa posición al intentar escribir un carácter.
Hice lo siguiente pero no parece funcionar:
La matriz de caracteres para los bytes para escribir en CGRAM se obtuvo con herramientas en línea como HD44780 Gráficos definidos por el usuario de LCD . Las funciones y los comandos no parecen ser el problema, ya que escribo bien todos los demás caracteres ASCII.
char myCustomCharacter[8] = {0x0,0x1,0x3,0x16,0x1c,0x8,0x0};
void createCharacter(unsigned char location, unsigned char[] bytes){
writeCommand(0x40+(location*8));
writeData(bytes[0]);
writeData(bytes[1]);
writeData(bytes[2]);
writeData(bytes[3]);
writeData(bytes[4]);
writeData(bytes[5]);
writeData(bytes[6]);
writeData(bytes[7]);
}
Luego en alguna prueba principal:
int main(void){
initLCD();
createCharacter(1, myCustomCharacter);
setCursor(0, 0);
writeCharacter('A'); //This work just fine, the A is displayed as expected
writeCharacter(0x08); //Doesn't work, I don't see the character I stored in the CGRAM at the 1st position. Any standard ASCII character still works just fine.
}
¿Cómo accedo al carácter personalizado como si fuera solo otro carácter ASCII y cómo sé que he escrito correctamente el byte en el CGRAM?