Quiero encender una pantalla LCD con un PIC18F4550 y la biblioteca periperial xlcd.h. Mi código es el siguiente:
#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include <plib/xlcd.h>
#include <plib/delays.h>
#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
void DelayFor18TCY(void);
void DelayPORXLCD(void);
void DelayXLCD(void);
int main() {
OpenXLCD(FOUR_BIT & LINES_5X7);
while(BusyXLCD());
WriteCmdXLCD(0x06);
WriteCmdXLCD(0x0C);
while(1)
{
SetDDRamAddr(0x00);
putrsXLCD("HELLO");
SetDDRamAddr(0x40);
putrsXLCD("WORLD");
}
}
void DelayFor18TCY(void)
{
Delay10TCYx(120);
}
void DelayPORXLCD(void)
{
Delay1KTCYx(180);
return;
}
void DelayXLCD(void)
{
Delay1KTCYx(60);
return;
}
Y funciona perfectamente en Proteus
Elproblemavieneconhacerelcircuitoreal,yaquelapantallaLCDsoloparpadeaenlaprimeraposición:
Midiagramaeselsiguiente(
No veo por qué no funciona, todo está conectado como muestra el diagrama. La pantalla LCD funciona bien cuando uso un Arduino. Todas las conexiones vss tienen una base común y la misma para las conexiones vdd que tienen un 5V común. Incluso tengo condensadores de desacoplamiento para los pines vdd. Agradecería cualquier sugerencia, gracias
Información adicional: Estoy usando el PICkit3 para programarlo y un adaptador de 5V DC de un teléfono celular. Ya he probado con 2 adaptadores diferentes y dos PIC18F4550 diferentes