lunes, 30 de noviembre de 2009

Caracteres especiales LCD

Aquí tenéis un sencillo tutorial sobre la creación de nuevos caracteres o símbolos en Displays alfanuméricos.
Estos LCDs tienen normalmente un controlador HD44780 o compatible y se componen de una matriz de 5 píxeles horizontales por 8 verticales por carácter. En su memoria CGRAM puede almacenar hasta 8 nuevos caracteres.

La aplicación de símbolos es muy utilizada para crear animaciones o en indicadores de estado, como podría ser el triángulo para Play, cuadrado para Stop, símbolo de batería, etc...

Esta matriz con cuadros nos ayudara a calcular los Bytes necesarios para crear un carácter o símbolo nuevo.

Los cuadrados coloreados en negro se suman de manera horizontal para formar una linea,
y cada linea se suma independientemente.
Ahora solo nos falta enviar la información al microcontrolador de la siguiente manera:

LCDOUT 254, 64, 30, 18, 18, 28, 20, 18, 17, 0

Donde LCDOUT es la instrucción que controla el LCD.
Enviando 254 o $FE le indicamos al LCD que va a recibir un comando.
El comando 64 indica al LCD que es el primer carácter de la memoria CGRAM.
Los datos 30, 18, 18, 28, 20, 18, 17, 0 representan los Bytes del nuevo carácter.

Una vez echo esto, el nuevo carácter ya está grabado en la memoria CGRAM del LCD, pero no se visualizara hasta que lo utilicemos de la siguiente manera:

LCDOUT 0

Donde LCDOUT es la instrucción que controla el LCD.
Y 0 es el primer carácter de la memoria CGRAM que previamente habíamos grabado en el comando 64.

Para añadir más caracteres a la memoria CGRAM tenemos que sumarle 8 al comando, en ese caso es 64 + 8 = 72 y así sucesivamente.
En este ejemplo podemos observar los 8 comandos ya calculados con los Bytes de los nuevos caracteres.

LCDOUT 254, 64, 4,10,10,4,4,6,4,6 ;Lave POSICION "0"
LCDOUT 254, 72, 4,14,31,21,31,31,27,27
;Casa POSICION "1"
LCDOUT 254, 80, 4,14,10,10,10,10,10,14 ;Bateria POSICION "2"
LCDOUT 254, 88, 0,10,31,31,31,14,4,0 ;Corazón POSICION "3"
LCDOUT 254, 96, 10,21,0,10,0,21,17,14 ;Sonrisa POSICION "4"
LCDOUT 254, 104,0,0,0,4,2,31,2,4 Flecha derecha POSICION "5"
LCDOUT 254, 112,4,14,14,14,14,14,21,21
;Cohete POSICION "6"
LCDOUT 254, 120,0,14,21,21,23,17,14,0 ;Reloj POSICION "7"

Una vez echo esto, para poder visualizarlos solo es necesario escribir la posición donde se grabaron.

LCDOUT 0, 1, 2, 3, 4, 5, 6, 7

Donde LCDOUT es la instrucción que controla el LCD.
Y 0 corresponde al carácter guardado en el comando 64.
El 1 corresponde al carácter guardado en el comando 72 y así sucesivamente.
Para este tutorial se ha utilizado un microcontrolador PIC 16F628A y un lcd Powertip1602-G alfanumérico de 2 filas de 16 caracteres cada una.
para la configuración de los pines del LCD a 4bits usaremos la predefinida por el compilador pbp
es decir los puertos A1, A2, A3, A4 seran los data e iran conectados al lcd a sus pines D4, D5, D6, D7. El puerto A4 corresponde a pin R/S del LCD y el puerto B3 al pin E. Igual que en la siguiente figura:



Está escrito en Lenguaje Basic, concretamente el PicBasic Pro 2.46C (PBP).

PAUSE 500 ;Tiempo para iniciar el LCD

LCDOUT 254,64, 4 ,10 ,10 ,4 ,4 ,6 ,4 ,6 ;Posición 0(llave)
LCDOUT 254,72, 4 ,14 ,31 ,21 ,31 ,31 ,27 ,27
;posición 1 (casa)
LCDOUT 254,80, 0 ,14 ,27, 31 ,3 ,31 ,14 ,0 ;posición 2 (Bateria)
LCDOUT 254,88, 0 ,10 ,31, 31 ,31 ,14 ,4 ,0 ;posición 3 (corazón)
PAUSE 200
LCDOUT $FE,1
;borrar la pantalla
LCDOUT " infotronikblog " ;Imprime en pantalla los caracteres
LCDOUT $FE, $C0,
" " ,0,1,2,3 ;grabados en la CGRAM del LCD
END


Tabla con caracteres normales en LCD.

No hay comentarios :

Publicar un comentario