Você está na página 1de 12

Práctica 6

Control de LCD 16x2 con PIC


16F84A.

Eduardo V. Abad

www.eduardoabad.esy.es
Descripción de las características y
funcionamiento del LCD 44780
Las pantallas de cristal líquido (LCD) se han popularizado mucho en los últimos
años, debido a su gran versatilidad para presentar mensajes de texto (fijos y en
movimiento), valores numéricos y símbolos especiales, su precio reducido, su bajo
consumo de potencia, el requerimiento de solo 6 pines del PIC para su conexión y
su facilidad de programación en lenguajes de alto nivel (por ejemplo, lenguaje C).
Desde todo punto de vista el empleo de la pantalla LCD 2x16 debería
considerarse como la primera opción a la hora de decidir por un dispositivo de
presentación alfanumérica, excepto cuando las condiciones de iluminación
ambiental no sean las más favorables. En este último caso se debería pensar en
el empleo de displays de 7 segmentos, que aunque no tienen la misma
versatilidad tienen la ventaja innegable de sus mejores características de
visibilidad aún en los ambientes más desfavorables. En la actualidad existen
diversos modelos de pantalla LCD, aunque los más comunes son las pantallas
LCD (2 filas x 16 caracteres), gobernados por el microcontrolador Hitachi
HD44780, que se ha convertido en el estándar de facto para las aplicaciones con
PICs. Específicamente se hará referencia al módulo LM016L, que tiene las
características mencionadas, aunque cualquier otro módulo LCD con el
controlador HD44780 o compatible se puede programar con las funciones
indicadas aquí.

La pantalla LCD 2x16 tiene en total 16 pines, La pantalla muestra 14 pines, los dos
pines adicionales son el ánodo (15) y el cátodo (16) del LED de alumbrado de
fondo.

www.eduardoabad.esy.es
La polarización del LED de fondo se logra conectando una resistencia externa de
50 ohm-1/4 W con lo que se asegura el correcto encendido sin una corriente
excesiva. El control de contraste se consigue con un potenciómetro de 10 k con el
cual se ajusta el nivel de voltaje en el pin 3 (Vee ó VLC).

Cómo conectar el LCD 2x16 al PIC


La conexión más recomendable de la pantalla LCD 2x16 requiere 4 pines para los
datos (D7:D4), 1 pin para habilitar/deshabilitar el display (E) y 1 pin para los modos
comando/carácter (RS). En la figura se indica la forma de conectar el display al
PIC 16F88 y al PIC16F628A.

Conexión del LCD al PIC16F88 (16F628A) con 4 bits

www.eduardoabad.esy.es
Control de LCD mediante BUS de 4 bits

Para el trabajo con el módulo LCD se debe añadir la librería Lcd, que contiene las
funciones listadas en la tabla 3.1. Para poder utilizar estas funciones se debe
declarar previamente un total de 12 variables: 6 que definen los pines del PIC y
otras 6 que permiten programar su sentido de circulación de datos (se detallarán
en los ejemplos de este capítulo).

Tabla 3.1 Funciones para LCD de la librería Lcd de mikroC

Ejemplos de mensajes de texto fijos y en movimiento con


valores numéricos
Estos ejemplos corresponden al PIC16F88. El código fuente para los PICs
16F628A y 16F877A se encuentra en las carpetas correspondientes que
acompañan a este libro.
En el siguiente ejemplo se emplea la función ByteToStr de la librería Conversions,
para convertir el contenido de la variable “contador” (un byte) en una cadena de
caracteres (string) y así poderlo visualizar en el display con la función Lcd_Out.

Cada vez que presiona el pulsador conectado en RA4 se incrementa un contador


que se visualiza en el centro de la segunda línea de la pantalla (figura 3.1.1). Si la
cuenta supera 100, el conteo se reinicia desde 0. En el centro de la primera línea
se muestra la palabra “Conteo:”.

www.eduardoabad.esy.es
//LCD1.c
//Declaración de las 12 variables necesarias para la conexión
//de la pantalla LCD 2x16.
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D4 at RB0_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D7 at RB3_bit;

sbit LCD_RS_Direction at TRISB4_bit;


sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D4_Direction at TRISB0_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D7_Direction at TRISB3_bit;
// Fin de declaración de variables de conexión.

char contador=0,estado=1,texto1[]="Conteo:", texto2[4];

void main(){
OSCCON=0x40; //Oscilador interno a 1MHz.
while (OSCCON.IOFS==0);//Esperar mientras el oscilador está inestable.
ANSEL=0x00; //Bits AN6:AN0 como E/S digital.
Lcd_Init(); //Inicializa el LCD.
Lcd_Cmd(_LCD_CLEAR); //Borra el display.
Lcd_Cmd(_LCD_CURSOR_OFF); //Apaga el cursor.
Lcd_Out(1,6,texto1); //Escribe el texto1.
while (1)
{
if (Button(&PORTA,4,1,0)) estado=0; //Si se pulsa.
if (estado==0 && Button(&PORTA,4,1,1)) //Si se pulsa y se libera.
{
contador++; //"contador" contiene el número de pulsaciones.
if (contador>100) contador=0;
estado=1;
}
ByteToStr(contador,texto2); //Convierte el contenido de la variable
//en texto.
Lcd_Out(2,6,texto2); //Escribe el texto2.
}
}

www.eduardoabad.esy.es
Cuestionario
Menciona que registros y bits de estos registros se afectan en el control del LCD
16x2.

Se escriben primero los 4 bits menos significativos y después los otros 4. El modo
requiere el doble de ciclos de escritura que el anterior y complica levemente la
implementación, pero presenta la ventaja de necesitar sólo 7 líneas, utilizando así
un puerto del microcontrolador.

Dado que sobra un bit del puerto, éste se suele utilizar para el encendido de la
retroiluminación (en los displays de los que se disponga de ella).

Las 3 señales de control adicionales son las siguientes:

 E [Enable]: Señal de strobe o pulso de escritura/lectura. Cuando esta señal


se pone a nivel alto se le está indicando al LCD que se deben leer/escribir
los datos del bus.
 RW [Read/Write]: Señal que indica al LCD si los datos se van a leer o
escribir.
 RS [Register select]: Señal de selección de registro. Indica al LCD si se
quiere acceder al registro de comandos o de datos.

Describe el funcionamiento de cada uno de los ejercicios propuestos.

En los ejercicios propuestos se observa claramente lo que se vio en esta


investigación ya que se manipula mediante 4 bits y los registros y bits que se usan
los ejercicios son los comunes.

Vemos declaración de variables, inicializaciones, el cuerpo del programa, inicializa


el lcd, manda señal al lcd, y al compilar los códigos generamos los archivos
requeridos para la simulación, cabe mencionar que muchas de las funciones
usadas en estos programas ya han sido utilizadas anteriormente en otros
ejemplos.

www.eduardoabad.esy.es
CODIGOS EN MPLAB
Código 1: verificamos que esta nuestro código y están agregadas las librerías.

Verificamos que no hubo errores y que genero el HEX.

www.eduardoabad.esy.es
Código 2: verificamos que esta el código con las librerías necesarias.

Verificamos que no tuvo error y que genero el HEX.

www.eduardoabad.esy.es
Código 3: verificamos que esta el código con las librerías necesarias.

Verificamos que no hubo errores y genero el HEX.

www.eduardoabad.esy.es
PROTEUS

CODIGO 1: Nos damos cuenta que se genero el HEX y ahora lo importamos.

Ahora verificamos que importamos correctamente y corremos

www.eduardoabad.esy.es
CODIGO 2: Nos damos cuenta que se genero el HEX y ahora lo importamos.

Ahora verificamos que importamos correctamente y corremos

www.eduardoabad.esy.es
CODIGO 3: Nos damos cuenta que se genero el HEX y ahora lo importamos.

Ahora verificamos que importamos correctamente y corremos

www.eduardoabad.esy.es

Você também pode gostar