Que tal foro tengo un problema con el manejo de un LCD, igual este funciona esta bien calado el programa y todo nomas es que a veces ocupo resetear el micro varias veces hasta que se vea bien ya de ahi nunca mas ocupo resetearlo, no se a que se deba esto igual les dejo como lo estoy inicializando para ver que error le ven o que detalle o consejo lo que sea gracias de antemano.
[/CODE]
Código:
[CODE]
#define LCD P2 //definición al puerto a conectar el LCD
/*************** Cómo cablearlo? el puerto elegido ***************/
/*************** debe ser de 8 bits siguiendo lo ***************/
/*************** siguiente: ***************/
/*************** LCD=DB7,DB6,DB5,DB4,NC,E,RS,RW ***************/
/*************** donde DB7 es el más significativo ***************/
unsigned char temp;
unsigned char DB ;
void enable()
{
temp=DB&0xF0; //Filtramos el nibble mas significativo
LCD=temp|0x04; //Activamos el enable
retardo_ms(3); //Retardo para asegurar el envio del dato al LCD
LCD=LCD&0xF0; //Desactivamos el enable
retardo_ms(3); //Retardo para asegurar el apagado del enable
temp=DB<<4; //Recorremos el dato 4 lugares
temp=temp&0xF0; //Filtramos el dato ahora el nibble menos significativo
LCD=temp|0x04; //Activamos el enable
retardo_ms(3); //Retardo para asegurar el envio del dato al LCD
LCD=LCD&0xF0; //Desactivamos el enable
retardo_ms(3); //Retardo para asegurar el apagado del enable
}
void function_set()
{
DB=0x28; //0x28 para modo 4 bits o 0x38 modo 8 bits
enable();
}
void display_on_off()
{
DB=0x0F; // 0x0C para apagar el cursor 0x0F para encenderlo
enable();
}
void display_clear()
{
DB=0x01; // Para limpiar la pantalla
enable();
}
void inicializacion_LCD()
{
LCD=0; //Inicia con un valor de cero el puerto
retardo_ms(50); //Aplicamos un retardo de 50mS para darle tiempo de encender al LCD
function_set(); //Elegimos el modo a usar a 4 u 8 bits
display_on_off(); //Elegimos el tipo de cursor y si este estara presente o no
display_clear(); //Limpia la pantalla de cualquier ruido inicial
}