lunes, 13 de febrero de 2012

MSP430: Hitachi 44780

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:

#defineLCD_DIRP1DIR
#define LCD_OUTP1OUT
#define LCD_INP1IN

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:

#defineLCD_RSBIT0
#defineLCD_RWBIT1
#define LCD_EBIT2
#define LCD_DB4BIT3
#defineLCD_DB5BIT4
#defineLCD_DB6BIT5
#defineLCD_DB6BIT6

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:

#definefosc1000000

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_IncrementNo se desplaza al escribir nuevo carácter e incremento posición cursor
Shift_IncrementSe 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_LeftSe desplaza el cursor hacia la izquierda
CursorShift_RightSe desplaza el cursor hacia la derecha
DisplayShift_LeftSe desplaza el LCD hacia la izquierda
DisplayShift_RightSe 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 IARCompilador MSPGCC
CC
LCD4bits
LCD4bits
LCD4bits
LCD4bits
LCD4bits
LCD4bits

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. ProgramaConfiguració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.

No hay comentarios:

Publicar un comentario