PIC18 Pantalla LCD de resolución de problemas

0

Estoy tratando de inicializar una pantalla LCD de 4x20 usando un PIC18 en una interfaz serial de 8 bits. Este es un LCD que encontré en el laboratorio y no puedo encontrar una hoja de datos para esta exacta.

Estoy luchando para que funcione, ya que todo lo que logro son bloques en la pantalla LCD. He pasado innumerables horas sin ninguna señal de éxito. ¿Hay algo en el código que me falta?

Toda la ayuda es apreciada.

LCD.c

#define DataBus PORTA      //Data is set to 8 pins on port A
#define RS PORTCbits.RC0   
#define RW PORTCbits.RC1 
#define Enable PORTCbits.RC2 


void LCD_CmdWrite(int Cmd){
DataBus = Cmd;   //Sets command on Port A pins
Enable = 0;
RS = 0;
RW = 0;
Enable = 1;
__delay_ms(20);  //Delay for LCD
Enable = 0;

__delay_ms(10);

}

void LCD_intialize(){
RW = 0;
__delay_ms(20);

LCD_CmdWrite(0x38);  //LCD 8 bit mode
LCD_CmdWrite(0x01);  //Clears LCD
LCD_CmdWrite(0x06);  
LCD_CmdWrite(0x0F);  //Display on, cursor on, blink on
LCD_CmdWrite(0x80);

__delay_ms(2); 
}

main.c

#include <xc.h>  //Allows access to device specific features like TRIS etc.
#include <stdio.h>  //Allows access to input/output pins
#include <stdlib.h>  //Memory management and text conversion

#include "LCD.h" //Includes LCD Display functions

void main(void) {
OSCEN = 0b01000000;
OSCCON1 = 0b01100000;  
OSCCON2 = 0b01100000;
OSCFRQ = 0b000101;   //Sets clock at 16MHZ


TRISC = 0x00; //Sets PORT C as Output
TRISA = 0x00;//Sets PORT A as Output
PORTC = 0;
PORTA = 0;

__delay_us(200);  
LCD_intialize();  //Initializes LCD

__delay_us(200);
LCD_clear();  //Clears LCD again

while(1);

}
    
pregunta DigiJockforLife

2 respuestas

0

Averigua qué es el LCD. Una forma de hacerlo es encenderlo sin inicialización y ajustar el contraste para ver si ve una línea de cajas negras en la fila superior. Si lo hace, es el antiguo 44780. Encuentre una hoja de datos y codifíquelo.

Si no, bueno, será mucho más difícil. Pero enfócate en encontrar una hoja de datos.

    
respondido por el dannyf
0

Si la pantalla LCD es un 44780, entonces podrías ser Lucky. Una compañía con el nombre de Extreme Electronics (India) produjo una biblioteca descargable completa con configuración, etc. Yo mismo utilicé lib para pic1618877, pic16F648A y pic16F877A. La lib es pequeña y puede adaptarse a sus necesidades personales. Para el pic16F18877 necesitaba modificar el uso de los registros.

Aquí está el enlace enlace

Mirando el comentario, parece un 44780. El error descrito puede ocurrir después de un ciclo de programación y reinicio. En ese caso, apague y reinicie.

    
respondido por el Decapod

Lea otras preguntas en las etiquetas