Sei sulla pagina 1di 19

MICROCONTROLADORES

Programación de Microcontroladores PIC, AVR, ARDUINO

  

Inicio » Pantallas LCD con microcontroladores

Pantallas LCD con microcontroladores

Pantallas LCD con el PIC BASIC PRO.


Pantallas LCD con el CCS.
Pantallas LCD con el XC8.
Pantallas LCD con el AVR.
Pantallas LCD con el ARDUINO.

Aprender a utilizar pantallas LCD es muy importante


cuando se utilizan microcontroladores, las pantallas lcd
son útiles para obtener información en forma visual
sobre que es lo que está ocurriendo en el
microcontrolador, como puede ser los valores de los
registros, o de alguna variable que se esté utilizando,
la observación por ejemplo de algún dato como puede ser una medida analógica entre muchas otras
informaciones de interés.

En este apartado se comentará sobre las pantallas LCD de 2×16 caracteres es decir pantallas LCD de
2 lineas por 16 columnas como las que se muestran en la imagen, estas pantallas lcd dejan ver 16
caracteres por fila, permitiendo por lo tanto la observación de hasta 32 caracteres, pero en realidad
por cada fila se puede almacenar hasta 40 caracteres dando un total de 80 caracteres.

Los caracteres están almacenados dentro de una memoria interna que tienen las pantallas lcd, son
controlador por un microcontrolador HD44780 o algún otro compatible que viene con la pantalla;
entonces para utilizarlas lo que hay que hacer es que el microcontolador que se esté utilizando ya sea
un PIC, un AVR, un ARDUINO o algún otro, se comunique con el microcontrolador del LCD,
interactuen y nos permitan ver información en las pantallas LCD mediante caracteres.

Las pantallas LCD tienen una serie de pines, las cuales tienen unos nombres especiales que por
supuesto tienen un orden de conexión, son 14 pines ordenados del 
1 al 14, esto siempre viene
indicado en la placa de las pantallas lcd, estos pines son para
Política la alimentación,
y privacidad de Cookiesel control y la
comunicación, el envió y recibo de datos, tienen ademas 2 pines para el uso de un led interno que
algunas pantallas lcd lo tienen y otras no, normalmente serán como se ve en la siguiente imagen.

Pantallas LCD pines de conexión


En la siguiente lista se tienen los pines de las pantallas LCD de 2×16 con su número de orden, su
nombre y su función:

El siguiente es un vídeo publicado por MrElberni, donde se da una breve introducción a las
características de las pantallas LCD, se hacen unas pruebas en cuanto a la alimentación, el contraste
de los caracteres y del led interno del LCD.
En este enlace encontrarás información mas detallada sobre las características de las pantallas lcd.

Para utilizar las pantallas LCD con los microcontroladores, primeramente hay que alimentar
adecuadamente el LCD, con su pin 1 al negativo o tierra, su pin 2 al positivo, y su pin 3 a un
potenciometro para regular el contraste de los caracteres, en el vídeo anterior se muestra como hacer
esto. Sus pines 4, 5 y 6 que son los pines de control se conectarán cada uno a un pin diferente del
microcontrolador, los pines 7 a 14 son los pines a través de los cuales se enviarán los datos del
microcontrolador al LCD, para este envío de datos no es necesario utilizar los 8 pines que van del 7 al
14, se puede utilizar solo 4 de estos pines que es lo que normalmente se hará para hacer que el LCD
trabaje adecuadamente, de esta manera se utilizan menos pines del microcontrolador que podrán ser
utilizados para otras labores, en la siguiente imagen se muestra como hacer esto.
No es necesario conocer el funcionamiento interno de las pantallas LCD para su utilización ya que es
un tanto complejo aunque si es muy interesante, si te interesa lo puedes ver en este enlace,
normalmente los programas como el PicBasicPro, el CCS, el ARDUINO, entre otros traen drivers para
el manejo de los microcontroladores, solo hay que indicar los pines del microcontrolador donde se
conectarán los pines del LCD, luego utilizar una serie de funciones del programa que se esté
utilizando para poder trabajar con el microcontrolador y el LCD.

Pantallas LCD en PIC BASIC PRO (PBP)


El PBP tiene una serie de definiciones que hacen bien simple el uso de las pantallas LCD estas son las
que se indican a continuación:

DEFINE LCD_DREG PORTX ‘Se utiliza el puerto x para los datos a enviar al LCD.

DEFINE LCD_BITS 4 ‘Se utilizarán 4 bits para el bus de datos.

DEFINE LCD_DBIT 4 ‘Se utilizarán los pines D4, D5, D6 y D7 del LCD.

DEFINE LCD_RSREG PORTx ‘El pin RS del LCD se conectará al puerto x.

DEFINE LCD_RSBIT n ‘RS se conectará en el pin n del puerto x.

DEFINE LCD_EREG PORTx ‘El pin E del LCDse conectará al puerto x.


DEFINE LCD_EBIT m ‘E se conectará al pin m del puerto x.

DEFINE LCD_LINES 2 ‘El LCD será de 2 líneas (2×16).

Una vez configurados los pines a utilizar, mediante la instrucción lcdout del PBP se hace que las
pantallas LCD hagan algo.

En el canal de Youtube de MrElberni se han publicado 3 vídeos para el manejo de las pantallas LCD
mediante el PBP.

Microcontroladores PIC en PBP pantallas LCD ejemplo 1, en este primer vído publicado por
MrElberni se realiza un primer programa para el manejo de una pantalla LCD de 2×16 con el PBP, en
este caso se utiliza el PIC16F84A; se comenta sobre la forma en que hay que escribir el código para
decirle al programa que pines del PIC serán utilizados para datos y que pines serán los de control;
luego mediante la instrucción lcdout del PBP se enviarán mensajes que se podrán ver en la pantalla
LCD.

El formato de la instrucción lcdout que se utiliza tiene la siguiente forma:

lcdout dato,dato,dato…

Donde dato puede ser una instrucción para la pantalla LCD, y si dato va entre comillas será eso lo
que se imprima en la pantalla.

En este caso se utiliza la instrucción $fe,1 la cual sirve para limpiar o borrar la pantalla LCD, es decir
que borre todo lo escrito en la pantalla.

El vídeo es el siguiente:

El código utilizado en este caso es el siguiente:


Microcontroladores PIC en PBP pantallas LCD ejemplo 2 en este segundo vídeo publicado por
MrElberni se ve la forma que se codifica en PBP para ver números en el la pantallas LCD en forma
decimal, binaria, hexadecimal y en código ASCII, se utilizan las dos líneas del LCD 2×16; el programa
utilizado en este caso es el PBP (PIC BASIC PRO), se usa el programador pickit3, se usa el PIC16F84A

Para ver los datos numéricos en forma decimal se utiliza la palabra dec o el caracter #

dec dato

# dato

Para ver datos numéricos en forma binaria se utiliza la palabra bin

bin dato

Para ver datos numéricos en forma hexadecimal se utiliza la palabra hex

hex dato

Si no se antepone ninguna de las palabras anteriores al dato numérico, este se verá en la pantalla lcd
en su equivalente ASII.

En este ejemplo también se trata sobre como se puede cambiar de línea en la pantalla LCD de 2×16,
para eso se utilizan las siguientes instrucciones:

$fe,$80 con esta instrucción se va al inicio de la primera línea del LCD.


$fe,$c0 con esta instrucción se va al inicio de la segundo línea del LCD

El vídeo es el siguiente:

El diagrama de flujo y las conexiones realizadas en la siguiente imagen:


El código en PBP utilizado en este caso es el siguiente:

Microcontroladores PIC en PBP pantallas LCD ejemplo 3, en este tercer vídeo publicado por
MrElberni se realiza un programa en el PBP, para poder visualizar información sobre lo que está
ocurriendo en el PIC, dicha información se verá a través de una pantalla LCD de 2×16 caracteres, se
usa el programador pickit3, se usa el PIC16F84A.

En este caso se crea una variable, cuyo valor irá cambiando con el tiempo, este valor lo podremos ver
en la pantalla LCD, además se activarán unos pines donde se conectan unos leds los cuales
encenderán o apagarán de acuerdo al valor que vaya tomando la variable, en la pantalla LCD se
informará cual de los leds se ha activado.

El vídeo es el siguiente:
El diagrama de flujo del programa utilizado es el siguiente:

Las conexiones del circuito utilizado a continuación:


El código en PBP utilizado en este caso es el siguiente:
Pantallas LCD en CCS
El CCS tiene un driver para el manejo de pantallas LCD, este driver hay que incluirlo en la cabecera
del programa mediante la siguiente línea de código

#include <lcd.c>

Este driver trabaja por defecto con el puerto D y permite utilizar las pantallas LCD para que trabajen
con 4 bits de datos, siendo los pines a conectar como se muestra a continuación.

Pin del PIC Pin del LCD

RD0 E

RD1 RS

RD2 RW

RD4 D4

RD5 D5

RD6 D6

RD7 D7

También se puede hacer que trabaje con el puerto B agregando la siguiente linea de código

#define use_portb_lcd TRUE

Siendo el orden de conexión de los pines el mismo pero en este caso en el puerto B

La elección de los pines a utilizar del microcontrolador PIC, tambíen se puede seleccionar con el
asistente al crear el programa, se puede elegir cualquier pin para los pines de control y para los pines
de datos, en la siguiente imagen se muestra el asistente del CCS para elegir el uso de pantallas LCD
con el pic, se selecciona la casilla Use LCD, luego se seleccionan los pines que se usaran para el
control y el envió de datos a la pantalla LCD.
Al darle en Create Project, el programa incluirá automaticamente el archivo de cabecera, las
definiciones de los pines a utilizar los cuales deben ir antes de la inclusión del archivo de cabecera
para el uso de las pantallas LCD, además crea la función lcd_init() tal como se muestra en la
siguiente imagen:
Una vez incluido el archivo de cabecera y elegido los pines del microcontrolador a utilizar ya se
pueden utilizar las funciones para el manejo de las pantallas lcd, la primera función que hay que
llamar siempre es

lcd_init(); //esta se encargará de inicializar las pantallas lcd para su utilización.

Luego hay otras funciones mas como:

lcd_gotoxy(int8 x, int8 y);//para ubicar el cursor en una posición de la pantalla x para la columna
e y para la fila, por ejemplo lcd_gotoxy(4,1) que indica en la primera fila la cuarta columna.

lcd_putc(char s);//para escribir caracteres en la pantalla lcd.

printf(lcd_putc,cstring,valores);//esta es una función del lenguaje C por lo que se recomienda


que se lea sobre la función printf en el lenguaje C, en este caso está adaptada para su uso con los
microcontroladores, permite ver en las pantallas lcd cadenas de caracteres con formato, un ejemplo
sería:

printf(lcd_putc,”timer1 = %u”,timer1);// donde %u es para indicarle que el dato timer1 será de tipo
entero sin signo, para datos de tipo cadena sería %s, en la siguiente tabla se pueden ver los
formatos para los diferentes tipos de datos.

Formato Tipo de dato

%c Caracter

%s Cadena o caracter

%u Entero sin signo


%d Entero con signo

%Lu Entero largo sin signo

%Ld Entero largo con signo

%x Entero hexadecimal en minúsculas

%X Entero hexadecimal en mayúsculas

%Lx Entero largo hexadecimal en minúsculas

%LX Entero largo hexadecimal en mayúsculas

%f Número real o flotante

%g Número real o flotante con redondeo

%e Número real o flotante en forma exponencial

Si esto se ve en una forma mas general tendrían esta forma %t donde t puede ser cualesquiera de
los indicados, esto se puede manipular mas si se usa la forma %nt, donde n representa una opción
para mejorar la presentación de los números en la pantalla.

si n va de 1 a 9 indica la cantidad de caracteres que se tendrán, si tiene la forma de 01 a 09 indica la


cantidad de ceros a la izquierda y si va de 1.1 a 9.9 para indicar cuantos decimales tendrá el número.

por ejemplo %3d indica un entero con signo de 3 caracteres, %.3f indica un numero real con 3
decimales.

También se cuenta con unos caracteres especiales como

“\n” para cambiar de una fila a otra.

“\f” para limpiar o borrar la pantalla.

Ejemplito 1 El siguiente es un ejemplo del uso de las pantallas lcd con el CCS, en este caso se está
utilizando el PIC16F877A del cual previamente se han configurado sus bits, está trabajando con un
cristal de 4Mhz, este programa solo imprimirá el mensaje Amor mio en la pantalla LCD como se ve
luego de la imagen del programa.
Borra la pantalla, imprime “amor mio”, espera 200ms, vuelve a borrar la pantalla, vuelve a imprimir
“amor mio”, vuelve a esperar 200ms, vuelve a borrar la pantalla, vuelve a imprimir “amor mio”,
vuelve a borrar la pantalla, vuelve a…. y así hasta el infinito, lo que pasa es que ocurre muy rápido
por eso que no se ve.

El circuito funcionando es el siguiente:


En el siguiente vídeo publicado por MrElberni, se comenta la forma de utilizar el CCS para hacer
trabajar las pantallas lcd con un microcontrolador PIC, la intención en este caso es conocer el driver
necesario para realizar esto, y el uso del asistente del CCS para el manejo de las pantallas LCD, a la
hora de iniciar un programa.
Ejemplito 2 El siguiente programa de ejemplo imprimirá el mensaje “Juntos amor” en la primera
fila y en la segunda fila una variable entera de 8 bits llamada tiempo que ira aumentando de de uno
en uno desde 0 hasta 255, en la imagen que se tome aparecerá un número entre estos valores ya
que no se podrá ver como cambia, si gustan se puede simular en el proteus, el programa es el
siguiente:

Borra o limpia la pantalla, el cursor del lcd se ubica en la primera columna de la primera fila, a partir
de esa posición imprime Junto a ti Amor, luego el cursor se ubica en la primera columna de la
segunda fila, a partir de allí imprime Tiempo = valor de la variable tiempo, la variable tiempo
aumentará en una unidad cada 200ms esto no se podrá ver en la imagen que sigue pero se verá
algún valor entre 0 y 255, cuando el valor de la variable tiempo es igual a 255 la variable tiempo se
pondrá a 0 nuevamente.
El circuito funcionando es el siguiente:

En el siguiente vídeo publicado por MrElberni, se comenta sobre la forma de lograr ver datos
numéricos en una pantalla LCD la cual se encuentra conectada al PIC16F877A, se utiliza el CCS para
lograr esto.

Pantallas LCD en MPLAB XC8