Autor Tema: Problemas inicializando LCD 2x16 HD44780... es extrañisimo...  (Leído 2163 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Problemas inicializando LCD 2x16 HD44780... es extrañisimo...
« en: 11 de Febrero de 2008, 21:17:15 »
Hola

Antes de todo, deciros que he vuelto para dar guerra a este foro, despues de la tempestad de los examenes vuelvo a pegarle duro al PFC. Espero no perderos de vista!

Os comento. Aver si podeis echarme una mano. Con la placa de mi robot (el proyecto fin de carrera) estoy intentando interfacear una LCD de 2x16 HD44780 de las de toda la vida. Total, que copio-pego el codigo de CCS (porteandolo a C30, para trabajarlo con un 30F6014 a 20MIPS), y total que no funciona ni por asomo. Le he subido los delays un monton y demas, pero nada.

Total que cogí otra rutina lcd por ahi, y la volvi a portear a C30. Esta, almenos, despues de unos rodeos, me da resultados "coherentes". La cuestion es, que despues de inicializar (esa secuencia de comandos que hay que mandar), mando un dato, y me lo escribe en fila1columna1. Hasta ahi bien. Siguiente dato. Fila 1 posicion 8! Y a partir de ahi, cualquier dato que escriba se escribe en esa posicion! Ademas, si mando el comando "home" o "clear display", no responde.

No se que pensar. He exagerado los tiempos de retardo entre comandos y demas, y nada. Estoy desesperado. Agradeceria que pudierais ayudarme, o al menos arrojarme luz sobre el asunto con alguna rutina LCD que os funcione (si no os importa, claro) o alguna informacion valiosa.

Muchisimas gracias de antemano. Esta vez hay vidas en juego (jajaja queva, pero tengo que terminar esto para junio, y el LCD no es mas que un grano de arena del tremendo castillo de arena que tengo que hacer). Desde luego, he trabajado bastante con LCDs y nunca me habia pasado. Decir tambien, que el LCD no ha sufrido ningun daño. Es nuevecito.

Un saludo y gracias!

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17764
    • MicroPIC
Re: Problemas inicializando LCD 2x16 HD44780... es extrañisimo...
« Respuesta #1 en: 12 de Febrero de 2008, 08:51:23 »
Luego te lo paso, lo tengo en casa.
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Re: Problemas inicializando LCD 2x16 HD44780... es extrañisimo...
« Respuesta #2 en: 12 de Febrero de 2008, 10:59:25 »
quetal nocturno! jejej

Aver, os comento. Sigo dandole caña a esto.

He descubierto que todo se debe, a que el programa no es capaz de leer el flag BUSY del lcd. COdigo:

Código: [Seleccionar]
unsigned char LCD_read(char control)
{
unsigned int data_high,data_low;
unsigned char data;
if(control==1) LCD_RS=1;
else LCD_RS=0;

Delayus(2);
LCD_RW=1;
LCD_E=0;

LCD_PORT|=0xF000;
LCD_TRIS|=0xF000;

LCD_E=1;
Delayus(5);
data_high=LCD_PORT;
data_high&=0xF000;

LCD_E=0;
Delayus(1);

LCD_E=1;
Delayus(5);
data_low=LCD_PORT;
data_low&=0xF000;



LCD_E=0;


data=(unsigned char)((data_high>>8)|(data_low>>12));
LCD_TRIS&=0x0FFF;
LCD_PORT&=0x0FFF;
LCD_RW=0;

return data;


}

La interfaz es de 4bits, D4..D7 corresponden a PORTD12..15, en un 30f6014A. E,RS y RW estan en el nibble bajo de PORTD pero funcionan bien. Digo que funcionan bien porque si quito todo lo referente a comprobar el flag busy y pongo un delay de unos 5ms, va perfecto el LCD. Pero antes muerto que sencillo.

Aver si alguien me puede echar un vistazo a esa porcion de codigo. Segun he debugeado (cutremente, inyectando rutinas printf a rs232 en el codigo), tanto data_high como data_low son CERO !!! enfin, que yo sepa, me he estirado bastante con los tiempos.

Saludos!