Paso 1: Cómo imprimir los caracteres especiales
SpecialCharacters.c
Mirar por encima del siguiente código y vamos a revisar
Arriba es una captura de pantalla del ejemplo de código en la pantalla:
Observe la línea a través de los caracteres de 5 x 10. Mi pantalla es una ERM2004-1
En la especificación de la a continuación detalle del personaje, podría explicar esta línea. Pero no puedo decir con certeza como documentación es limitada.
#include #include "hd44780_4bit_lib.h"/* * This code example uses 5 x 10 character and one line * to display the special characters show in table 4, ROM Code A00 * in the hd44780 specification. * Note using the 5 x 10 characters you can only write to one line on * the display. * */void main() { WDTCTL = WDTPW | WDTHOLD; // Disable watchdog timer // according to spec give the display 10ms to come up to voltage __delay_cycles(10000 * CPUSPEED); // set up data length, number of lines and font // Note 1 line and 5 x 10 characters hd44780_init(N_1LINE, FONT_10); // if needed set up the cursor and blink // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR); // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK); // set Increment direction and cursor direction hd44780_send_command(HD44780_CMD_INCREMENT); hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT); // refer to table 4 ROM Code AOO // on how to convert upper 4 bits and // lower 4 bits to formulate the below characters hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF); // this character and the next // character takes up the full // 10 dots in height to print the // decending j and g hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB);}
Vamos a romper el código y analizarlo línea por línea:
// according to spec give the display 10ms to come up to voltage __delay_cycles(10000 * CPUSPEED); // set up data length, number of lines and font // Note 1 line and 5 x 10 characters hd44780_init(N_1LINE, FONT_10);
La función __delay_cycles() detiene a 10 milisegundos para dar el voltaje de la pantalla para llegar a rango de operación. Mira el archivo hd44780_4bit_lib.h. Hay algunos CPU velocidad constantes relacionadas definidas para su uso con la función __delay_cycles().
Nota: la función __delay_cycles() sólo puede tener constantes como un argumento por lo que se puede utilizar una variable con esta función.
La función hd44780_init() inicializa la pantalla y se pueden pasar argumentos para establecer el número de líneas y tamaño de fuente. Esta función también ajusta la interfaz de hd44780 con operación de 4 bits en lugar de operación de 8 bits. Compruebe la especificación para más detalles.
// if needed set up the cursor and blink // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR); // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK); // set Increment direction and cursor direction hd44780_send_command(HD44780_CMD_INCREMENT); hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT);
La función hd44780_send_command() se utiliza para enviar comandos a la interfaz de hd44780. El hd44780 puede aceptar comandos y datos. Cambiando algunos bits de la interfaz MPU puede enviar datos o instrucciones.
En este siguiente ejemplo, si tenemos un comentario o de las dos líneas podemos mostrar un cursor y parpadea el cursor.
Si te interesa ver la referencia a la bit Selector de registro RS, RS y RW, leer escribir poco para obtener más información.
Una de las cosas interesantes que puedes hacer con la interfaz de hd44780 es determinar si desea escribir los datos de izquierda a derecha o de derecha a izquierda. Estos dos comandos determinan estos valores. Podemos incrementar o disminuir el sentido de movimiento del cursor y mover el cursor a la izquierda o la derecha cuando los datos se envían a la pantalla.
// refer to table 4 ROM Code AOO // on how to convert upper 4 bits and // lower 4 bits to formulate the below characters hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xEF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF); hd44780_write_special_char(0xFF);
Hay una tabla de la especificación, tabla 4 ROM código A00 que listas de caracteres y símbolos que son compatibles con el hd44780. Si usted siga arcoss la parte superior de la tabla para obtener la columna de símbolo que busca, (anota los cuatro bits superiores) y siga hasta la fila que contiene el símbolo que busca, escriba los 4 bits inferiores, de ese símbolo.
Ahora puede construir un símbolo completo de 8 bits, convertir este número binario a hex y este valor hexadecimal es lo que se puede enviar utilizando la función hd44780_write_special{char().
La función de hd44780_write_special_char() cambia los bits en la interfaz MPU RW y RS y envía el símbolo para el registro de pantalla (DDRAM) (DR).
Después de escribir al DR registro de la AC, contador de la dirección es incrementado o disminuye sobre la situación de incremento/decremento, ajustes del Cursor a la izquierda/Cursor derecha. Una vez que se establece la dirección inicial, el contador de dirección realiza un seguimiento de donde se escriben los caracteres y símbolos.
// this character and the next<br>// character takes up the full // 10 dots in height to print the // decending j and g</p><p>hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7); hd44780_write_special_char(0xE7);</p><p>hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA); hd44780_write_special_char(0xEA);</p><p>hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB); hd44780_write_special_char(0xEB);
Esta siguiente sección de código también utiliza la función hd44780_write_special_char() para escribir caracteres en la pantalla. Dos de esos personajes son la minúscula 'g' y 'j'. Lo interesante a destacar es que estos dos personajes se extienden más y utilizan el patrón completo 10 puntos de la pauta de carácter de 5 x 10.
Así que cuando estos personajes la impresión debe cambiar la pantalla al llamar a la función hd44780_init() anterior. La limitación de la configuración de la pantalla a patrón de punto de 5 x 10 caracteres es perder una línea de la pantalla, ahora puede imprimir sólo en una línea en la pantalla.