Una de las principales tareas de los sistemas empotrados es la representación por pantalla de datos, en este caso vamos a mostrar cómo trabajar con una pantalla LCD de un modelo bastante extendido en la industria: LCD Hitachi 44780 (módulo LM016L).
Para tal tarea, como venimos haciendo, vamos a emplear la placa MSP430 Launchpad y el micro MSP430G2231. Para empezar, vamos a mostrar algunas características técnicas de esta pantalla LCD:
Características LCD Hitachi 44780 | |
· Caracteres de 5x8 o 5x10 | · ASCII Compatible |
· Consumo reducido | · Permite programar caracteres por el usuario |
· Libertad de configuración por el usuario | · Interfaz de 4 u 8 bits de bus de datos |
En este capítulo no pretendemos hacer una explicación de este periférico de forma aislada, nuestro propósito es mostrar cómo controlarlo mediante la librería que hemos diseñado para tal fin. Esta librería contiene dos archivos:
· LCD4bits.c : Dónde se alojan todas las funciones necesarias para el control del LCD.
· LCD4bits.h : Dónde se alojan todas las definiciones, constantes y declaraciones necesarias del LCD.
Librería: LCD4bits | |
· Lo que podemos hacer: | |
· Controlar el LCD mediante bus de 4-bits | · Representar palabras y frases |
· Inicializar y Configurar el LCD | · Acceder a la CGRAM y representar datos |
· Control del Busy Flag | · Controlar posición del carácter |
· Lo que no podemos hacer: | |
· Controlar el LCD mediante bus de 8-bits | · Leer desde el LCD. |
Una de las cualidades que nos ofrece esta librería es que podemos declarar cualquier puerto disponible de nuestro microcontrolador para manejar el LCD, para ello, podemos hacerlo de dos maneras, o declarar el puerto antes de poner la librería en nuestro programa principal:
#define | LCD_DIR | P1DIR |
#define | LCD_OUT | P1OUT |
#define | LCD_IN | P1IN |
O directamente ir al archivo LCD4bits.h y cambiar los puertos anteriores por los que queremos emplear, en caso de no definir ninguno, se asumirá que se emplea el puerto 1 (P1). Así mismo, podemos definir los pines (patitas) de nuestro microcontrolador para controlar (conectarlo con) el LCD, en este caso, debemos ir al archivo LCD4bits.h para configurarlo, por defecto, los pines a usar son los siguientes:
#define | LCD_RS | BIT0 |
#define | LCD_RW | BIT1 |
#define | LCD_E | BIT2 |
#define | LCD_DB4 | BIT3 |
#define | LCD_DB5 | BIT4 |
#define | LCD_DB6 | BIT5 |
#define | LCD_DB6 | BIT6 |
Y hay que prestar atención en este punto, ya que si queremos emplear el Busy Flag (el propio controlador del LCD dispone de un mecanismo para determinar si está ocupada o no el LCD), debemos declararlo antes de poner esta librería en nuestro código, por defecto no está activado.
Por lo tanto, si simplemente ponemos esta librería en nuestro código sin tocar (configurar) nada, por defecto tendríamos la siguiente configuración:
Configuración por defecto: LCD4bits | ||
· Puerto a usar: | ||
· P1 | ||
Pin Launchpad | Pin LCD | |
P1.0 | ---> | RS |
P1.2 | ---> | E |
P1.3 | ---> | DB4 |
P1.4 | ---> | DB5 |
P1.5 | ---> | DB6 |
P1.6 | ---> | DB7 |
Una vez resuelto el problema de la conexión entre el microcontrolador (mediante la placa Launchpad) y el LCD, debemos tener en cuenta otro aspecto más de configuración, y este es (¡cómo no!) la velocidad a la que está configurado el puerto a usar o nuestro reloj del sistema (hay que tener en cuenta que los periféricos internos del microcontrolador pueden ajustarse a una frecuencia de reloj distinta a la del reloj principal), en este caso, por defecto está configurada a una velocidad de 1MHz, en caso de ser otra la frecuencia de reloj del periférico, se deberá definir tal y cómo lo veníamos haciendo hasta ahora, declarándola antes de poner la librería en nuestro código:
#define | fosc | 1000000 |
Pues bien, ya hemos terminado de exponer todo lo referente al conexionado y funcionamiento entre la placa Launchpad y el LCD, a partir de ahora, se expondrán las funciones disponibles para tanto el control como el manejo de la pantalla.
Para empezar a trabajar con el LCD Hitachi 44780, debemos inicializarla para decirle al controlador que maneja el LCD que vamos a trabajar en modo 4-bit, para ello disponemos de la siguiente función con las distintas configuraciones:
Inicializar el LCD Hitachi 44780 | |
· Función: | |
void LCD_INI (unsigned char FuncSet, unsigned char EntryMode) | |
· FuncSet: | Descripción |
ONE_Line_5x7 | LCD sólo una línea con carácter 5x7 |
ONE_Line_5x10 | LCD sólo una línea con carácter 5x10 |
TWO_Lines_5x7 | LCD dos líneas con carácter 5x7 |
· EntryMode: | |
NoShift_Decrement | No se desplaza al escribir nuevo carácter y decremento posición cursor |
Shift_Decrement | Se desplaza al escribir nuevo carácter y decremento posición cursor |
NoShift_Increment | No se desplaza al escribir nuevo carácter e incremento posición cursor |
Shift_Increment | Se desplaza al escribir nuevo carácter e incremento posición cursor |
La anterior función, será la primera que debemos poner para controlar el LCD, una vez inicializado, podemos mandarle comandos de control para su configuración mediante la siguiente función:
Controlar/Configurar el LCD Hitachi 44780 | |
· Función: | |
void LCD_Control (unsigned char data) | |
· data: | Descripción |
ClearDisplay | Limpia completamente la pantalla del LCD |
ReturnHome | El puntero se posiciona al primer carácter del LCD |
DisOFF_CurOFF_BliOFF | · Pantalla: Apagada · Cursor: Apagado · Parpadeo del cursor: Apagado |
DisOFF_CurOFF_BliON | · Pantalla: Apagada · Cursor: Apagado · Parpadeo del cursor: Activado |
DisOFF_CurON_BliOFF | · Pantalla: Apagada · Cursor: Activado · Parpadeo del cursor: Apagado |
DisOFF_CurON_BliON | · Pantalla: Apagada · Cursor: Activado · Parpadeo del cursor: Activado |
DisON_CurOFF_BliOFF | · Pantalla: Encendida · Cursor: Apagado · Parpadeo del cursor: Apagado |
DisON_CurOFF_BliON | · Pantalla: Encendida · Cursor: Apagado · Parpadeo del cursor: Activado |
DisON_CurON_BliOFF | · Pantalla: Encendida · Cursor: Activado · Parpadeo del cursor: Apagado |
DisON_CurON_BliON | · Pantalla: Encendida · Cursor: Activado · Parpadeo del cursor: Activado |
CursorShift_Left | Se desplaza el cursor hacia la izquierda |
CursorShift_Right | Se desplaza el cursor hacia la derecha |
DisplayShift_Left | Se desplaza el LCD hacia la izquierda |
DisplayShift_Right | Se desplaza el LCD hacia la derecha |
Para representar datos por el LCD, tenemos dos funciones, ésta primera nos permite representar letras:
Representar letras por el LCD Hitachi 44780 | |
· Función: | |
void LCD_putc (unsigned char data) | |
· data: | Letra compatible con el código ASCII o dirección del carácter en la DDRAM |
· Ejemplos: | Descripción |
LCD_putc('M'); | Representa por el LCD el carácter M |
LCD_putc(0x24); | Representa por el LCD el carácter $ |
La siguiente función nos permite representar una frase:
Representar frase por el LCD Hitachi 44780 | |
· Función: | |
void LCD_printf(char cadena[]) | |
· cadena[]: | Frase a representar por el LCD |
· Ejemplos: | Descripción |
LCD_printf("Aqueronte"); | Representa por el LCD la palabra Aqueronte |
· NOTA: | Reconoce el comando salto de línea \n |
LCD_printf("\nAqueronte"); | Representa Aqueronte en la segunda línea del LCD |
Una vez mostradas las funciones para representar información por el LCD, vamos a exponer otra función que permite posicionar el cursor en la posición que queramos:
Posicionar el cursor en el LCD Hitachi 44780 | |
· Función: | |
void LCD_xy (unsigned char x, unsigned char y) | |
· x | Posición horizontal del LCD |
· y | Posición vertical del LCD |
Y por último, disponemos de una función para poder grabar en la memoria (RAM) CGROM los caracteres que hayamos definidos previamente y que no tengamos disponibles por defecto, también sirve para guardar información, la función es la siguiente:
Manejo CGRAM del LCD Hitachi 44780 | |
· Función: | |
void LCD_CGRAM (unsigned char position, unsigned char pattern[]) | |
· position | Posición de memoria de la CGRAM para almacenar nuestro nuevo carácter: 0, 8, 16, 24, etc |
· pattern[] | Carácter a guardar |
Os pongo a vuestra disposición, los archivos que componen la librería para el manejo y control del LCD Hitachi 44780 (módulo LM016L):
MSP430: Librería LCD4bits | |||||||||||||||||||
Compilador IAR | Compilador MSPGCC | ||||||||||||||||||
C | C | ||||||||||||||||||
|
|
Para poner en práctica los conceptos y el control del LCD Hitachi 44780 (módulo LM016L), os dejo un ejemplo:
Ejemplo: LCD Hitachi 44780 con MSP430 Launchpad | |
1. Programa | Configuración/Control LCDHitachi 44780 y MSP430. |
He intentado que la librería en sí sea sencilla de usar y que se acerque lo más posible a las especificaciones técnicas del LCD Hitachi 44780, ésto facilita los conocimientos adquiridos por la lectura de la hoja de especificaciones del dispositivo y su posterior puesta en marcha mediante este tipo de librerías.
0 comentarios:
Publicar un comentario