LCD Pic 4550
LCD Pic 4550
LCD Pic 4550
2 DISPLAYS LCD
En la guía MPLAB para las librerías del compilador C18 (pág. 75) se explican
detalladamente las funciones disponibles así como los argumentos de cada una de
ellas. También, proporciona un pequeño ejemplo de implementación. Recomiendo
que se revise dicho documento para comprender con mayor facilidad el código que
aquí se muestra. El display que vamos a utilizar es un 16×2 basado en el
controlador HITACHI HD44780, el cual es ampliamente utilizado en circuitos de
visualización microcontrolados..
Podemos ver que por default tiene cargado el valor: 0100 X000 que de acuerdo con
los valores de la tabla anterior corresponderían a la siguiente configuración:
La librería requiere que el usuario defina los siguientes retardos para el display:
El ejemplo es el siguiente:
1 #include <xc.h>
2 #include <stdio.h>
#include <stdlib.h>
3 #include <plib/xlcd.h>
4 #include <plib/delays.h>
5
6 //CON ESTE ORDEN DE CONFIGURACION FUNCIONA RB5.....
7 #pragma config PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2
#pragma config FOSC = HSPLL_HS, FCMEN = OFF, IESO = OFF
8 #pragma config PWRT = OFF, BOR = OFF, VREGEN = OFF
9 #pragma config WDT = OFF, WDTPS = 32768
10 #pragma config MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF
11 #pragma config STVREN = ON, LVP = OFF, ICPRT = OFF, XINST = OFF
12
13 #define _XTAL_FREQ 48000000
14
//Retardos requeridos por la librería XLCD
15 void DelayFor18TCY(void);
16 void DelayPORXLCD(void);
17 void DelayXLCD(void);
18
19 int main() {
20 //Configurando LCD 4 bits mutilínea
OpenXLCD(FOUR_BIT & LINES_5X7);
21 //Esperar hasta que el display esté disponible.
22 while(BusyXLCD());
23 //Mover cursor a la derecha...
24 WriteCmdXLCD(0x06);
//Desactivando el cursor.
25 WriteCmdXLCD(0x0C);
26
27 while(1)
28 {
29 //Primera línea
30 SetDDRamAddr(0x00);
putrsXLCD("HOLA");
31 //Segunda línea
32 SetDDRamAddr(0x40);
33 putrsXLCD("MUNDO");
34 }
35
}
36 void DelayFor18TCY(void)
37 {
38 Delay10TCYx(120);
39 }
40
41 void DelayPORXLCD(void)
{
42 Delay1KTCYx(180);
43 return;
44 }
45
46 void DelayXLCD(void)
47 {
Delay1KTCYx(60);
48 return;
49 }
50