10 – Display LCD 20×4 con librería xlcd.h (XC8)

En la publicación #1, de este blog, se explicó como controlar el popular display LCD 16×2 con la librería xlcd.h, a raíz de esto, muchos me han consultado si podemos controlar un display con mas filas y caracteres ya que en ocasiones necesitamos mostrar mas información. Afortunadamente la librería es muy flexible y en efecto nos permite trabajar con otros tipos de display. En concreto, veremos como manipular el también popular LCD 20×4.

Las direcciones.

El código para controlar un display 20×4 es esencialmente el mismo para un display 16×2, la diferencia radica en las direcciones de las filas y las posiciones de los datos en cada una de ellas. La siguiente tabla muestra las direcciones correspondientes:

direcciones 20x4Tomando como base la información de la tabla, si deseamos colocar el caracter “C” en la tercera fila, posición 18, debemos ubicarnos en la dirección 0x25 y posteriormente enviar el caracter:

SetDDRamAddr(0x25);
putsXLCD("C");

El siguiente código de ejemplo muestra información en todas las filas del display 20×4:

#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include <plib/xlcd.h>
#include <plib/delays.h>

//BITS DE CONFIGURACION.....
#pragma config PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2
#pragma config FOSC = HSPLL_HS, FCMEN = OFF, IESO = OFF
#pragma config PWRT = OFF, BOR = OFF, VREGEN = OFF
#pragma config WDT = OFF, WDTPS = 32768
#pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
#pragma config STVREN = ON, LVP = OFF, ICPRT = OFF, XINST = OFF

#define _XTAL_FREQ 48000000

//Funciones requeridas por la librería XLCD
void DelayFor18TCY(void);
void DelayPORXLCD(void);
void DelayXLCD(void);

int main() {
//Configurando LCD
OpenXLCD(FOUR_BIT & LINES_5X7);
//Esperar hasta que el display esté disponible.
while(BusyXLCD());
//Mover cursor a la derecha...
WriteCmdXLCD(0x06);
//Desactivando el cursor.
WriteCmdXLCD(0x0C);

while(1)
{
//Primera fila
SetDDRamAddr(0x00);
putrsXLCD("PRIMERA FILA LCD20X4");
//Segunda fila
SetDDRamAddr(0x40);
putrsXLCD("SEGUNDA FILA LCD20X4");
//Tercera fila
SetDDRamAddr(0x14);
putrsXLCD("TERCERA FILA LCD20X4");
//Cuarta fila
SetDDRamAddr(0x54);
putrsXLCD("CUARTA FILA LCD20X4");
}
}

void DelayFor18TCY(void)
{
Delay10TCYx(120);
}

void DelayPORXLCD(void)
{
Delay1KTCYx(180);
return;
}

void DelayXLCD(void)
{
Delay1KTCYx(60);
return;
}

Obtendremos el siguiente resultado:

funcionamiento20x4

Como puede apreciarse siempre que se conozcan las direcciones, es muy sencillo manipular este tipo de display con xlcd.h.

Un saludo,

Acerca de jjguevara09

Me gusta la electrónica
Esta entrada fue publicada en Microcontroladores PIC y etiquetada , , , , , . Guarda el enlace permanente.

3 respuestas a 10 – Display LCD 20×4 con librería xlcd.h (XC8)

  1. hernando beleño dijo:

    buen día

    estoy retomando el tema de programar micros, hace muchos años lo hice pero se me han olvidado muchas cosas y la tecnología ha cambiado, estoy intentando trabajar un display lcd 20X4 y me he guiado por el ejemplo y no he tenido resultado, tengo otro pic 16f648A y estoy trabajando con el cristal interno del pic espero pueda colaborarme

    Me gusta

  2. Matias dijo:

    Muy bien explicadoy muy productivo post. Me quedan algunas dudas al respecto:
    1) Como imprimo variables en el display, ya sean tipo int, char o demas? estoy utilizando un teclado 4×4 alfanumerico y quisiera q aparezcan en pantalla las teclas oprimidas.
    2) que funciones utilizar para limpiar el lcd, acomodar cursor y demas funciones? Me refiero, a que otras funciones tiene la libreria xlcd a demas de imprimir un msj comun y como hago uso de esas caracteristicas.
    Desde ya muhas gracias y felicidades por tus aportes!

    Me gusta

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s