Paso 2: Cómo imprimir en una posición específica del Cursor
Continuemos con la revisión de los ejemplos de código de biblioteca de LCD hd44780. Por favor consulte el post anterior para enlaces y una explicación de lo que estamos trabajando en el código fuente.
Ahora veremos el siguiente ejemplo de código:
CursorPosition.c
Nota: En la imagen de arriba, las líneas que comienzan con '0' y '1' son línea uno.
Las líneas que empiezan por '2' y '3' son dos.
La pantalla que tengo es un ERM2004-1. Soporta dos 40 líneas de carácter dividir entre 4 20 líneas de carácter en la pantalla.
Si no lo ha hecho, se refieren al último post, el enlace del repositorio de código y descargar el código fuente para que pueda seguir.
En primer lugar mostrar el ejemplo de código completo y luego discutir el código sección por sección.
#include #include "hd44780_4bit_lib.h"/* * This code example uses the hd44780_setCursorPosition() functioh * to set the starting cursor position using row, col information * This cursor info is then written to the DDRAM address. * Using this method it is very easy to postion text on the dissplay */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 // notice we have setup the display for 2 lines and // using the 5 x 8 character size hd44780_init(N_2LINE, FONT_8); // if needed set up the cursor // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR); // hd44780_send_command(HD44780_CMD_DISPLAY_ON_CURSOR_BLINK); hd44780_send_command(HD44780_CMD_RETURN_HOME); hd44780_send_command(HD44780_CMD_CLEAR_DISPLAY); // set Increment direction and cursor direction hd44780_send_command(HD44780_CMD_INCREMENT); hd44780_send_command(HD44780_CMD_MOVE_CURSOR_RIGHT); // hd44780_send_command(HD44780_CMD_RETURN_HOME); //hd44780_send_command(HD44780_CMD_CLEAR_DISPLAY); // The display I am testing with is a two line 40 character display // The display shows 20 characters per line so each line wraps twice // for what looks like a 4 line display. // On line one if you write past the 20th character the text // shows up on what appears // to be the third line. // Same goes for the second line, any character past the // 20th character is written // to what appears to be the fourth line. // hd44780_setCursorPosition(0, 0); hd44780_write_string("0123456789"); hd44780_setCursorPosition(0, 10); hd44780_write_string("0123456789"); hd44780_setCursorPosition(0, 20); hd44780_write_string("11234567890123456789"); hd44780_setCursorPosition(1, 0); hd44780_write_string("21234567890123456789"); hd44780_setCursorPosition(1, 20); hd44780_write_string("31234567890123456789"); hd44780_send_command(HD44780_CMD_RETURN_HOME);}
La sección primera del código se explica en la sección anterior.
La función de hd44780_send_command() define la interfaz de hd44780 para enviar comandos al IR, registro de instrucción. Estos comandos solo se configuración la pantalla para escribir.
Si usted está interesado, por favor consulte la especificación de hd4780 para más detalles. Consulte el post anterior para un enlace para la especificación.
hd44780_setCursorPosition(0, 0); hd44780_write_string("0123456789"); hd44780_setCursorPosition(0, 10); hd44780_write_string("0123456789"); hd44780_setCursorPosition(0, 20); hd44780_write_string("11234567890123456789"); hd44780_setCursorPosition(1, 0); hd44780_write_string("21234567890123456789"); hd44780_setCursorPosition(1, 20); hd44780_write_string("31234567890123456789"); hd44780_send_command(HD44780_CMD_RETURN_HOME);
La función hd44780_setCursorPosition() llama a una instrucción, llamada ' Dirección DDRAM Set "
Los argumentos pasados a configurar la línea y cursor Coloque de manera que los datos de tiempo siguiente se envía a la pantalla, que datos se coloca en el lugar correcto.
La función hd44780_write_string() la cadena pasada e imprime un carácter a la vez para la ubicación inicial especificada por la función hd44780_setCursorPosition(). El contador de dirección de AC trabaja magia para que no tenga que preocuparse de incrementar o disminuir la posición del cursor.