Autor Tema: No funciona LCD  (Leído 6642 veces)

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

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
No funciona LCD
« en: 08 de Septiembre de 2010, 08:00:46 »
hola:

El codigo que adjunto funciona  bien en proteus pero en el hardware real no. la lcd se enciende y solo me muestra la primera linea con todos los caracteres en negro en forma de cuadrado. He probado todas las combinaciones posibles de puertos y tampoco. Lo unico que no he hecho es cablear los pines 15 y 16 de la lcd pero esos creo que no se cablean.

un saludo

aitor
Código: [Seleccionar]

#include <16f876a.h>
#fuses XT,NOWDT
#use fast_io(c)
#use delay(clock=4000000)
#define CS PIN_C0
#define LCD_RS PIN_B1
#define LCD_RW PIN_B2
#define LCD_E  PIN_B3
#define LCD_DB4 PIN_B4
#define LCD_DB5 PIN_B5
#define LCD_DB6 PIN_B6
#define LCD_DB7 PIN_B7
#include "flex_lcd.c"
int Templ=0;
int Temph=0;
signed int16 Temp16Bits=0;
float decimales=0;
float enteros=0;
int1 banderanegativo=0;
float Temperatura;
void main(){
set_tris_c(0b00010000);
setup_spi(spi_master|spi_l_to_h| spi_ss_disabled);
lcd_init();
//configuracion del sensor en modo continuo
//output_low(CS);
//spi_read(0);//leemos byte alto
//spi_read(0);//leemos byte bajo
//spi_write(0x00);
//spi_write(0xFF);
//spi_read(0);//leemos byte alto
//spi_read(0);//leemos byte bajo
//spi_write(0x00);
//spi_write(0x00);
//output_high(CS);
while(1){
output_low(CS);
Temph=spi_read(0);//obtenemos el Temp alto del registro de temperatura
Templ=spi_read(0);//obtenemos el Temp bajo del registro de temperatura
output_high(CS);
Temp16Bits=make16(Temph,Templ);//convertimos a un registro de 16Bits
banderanegativo=0;
if (Temp16Bits<0){
banderanegativo=1;
Temp16Bits=~Temp16Bits+8;
}//si es negativo lo complementamos a 2 y le sumamos 8
Temp16Bits=Temp16Bits>>3;//descartamos los 3 bits menos significativos
decimales=(float)(Temp16Bits&0b0000000000001111)*0.0625;//damos formato a los decimales
enteros=(float)(Temp16Bits>>4); //damos formato a los enteros, solo descartando los decimales
if (banderanegativo){
Temperatura=-1*(enteros+decimales);
}
else{
Temperatura=(enteros+decimales);
}
printf(lcd_putc,"\f");
lcd_gotoxy(1,2);
printf(lcd_putc,"Temp=%3.4f   \n",Temperatura);
delay_ms(100);
}
}



Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No funciona LCD
« Respuesta #1 en: 08 de Septiembre de 2010, 10:03:09 »
Que marca de LCD es? Seguramente hay que retocar la inicialización. Busca en el foro sobre problemas con LCD, hay mucho para probar.....


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: No funciona LCD
« Respuesta #2 en: 08 de Septiembre de 2010, 10:41:28 »
Que marca de LCD es? Seguramente hay que retocar la inicialización. Busca en el foro sobre problemas con LCD, hay mucho para probar.....


Saludos!

Hola:

Aqui tienes una imagen de la LCD.

Un saludo

Aitor


Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: No funciona LCD
« Respuesta #3 en: 08 de Septiembre de 2010, 10:59:13 »
Hola aitorsp,

bajo mi experiencia con LCDs te puedo dar algunos consejos:

- Si funciona con Proteus DEBE funcionar con PIC; a no ser que el módulo esté roto: algo poco probable si no no se encendería o simplemente algunos caracteres se verían con menos contraste.
- No puentees el backligth.
- Revisa que todos los cables estén conectados de forma correcta. Muchas veces una conexión erronea envía ciertos comandos y otros no.
- ¿Estás  seguro de que el PIC funciona? ¿El cristal está conectado de forma correcta? ¿le pusiste los condensadores del valor que toca?

Tiene pinta de mala conexión. Yo revisaría el cableado y el reloj con un osciloscopio; tambien probaría el timming con un led parpadeando. Es poco probable que esté roto...

Un saludo.

Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: No funciona LCD
« Respuesta #4 en: 08 de Septiembre de 2010, 11:23:36 »
.


Citar
- Si funciona con Proteus DEBE funcionar con PIC (...)

Por experiencia se que esto no es cierto, y sobre todo con LCDs, porque el módulo que trae el Proteus está basado un un modelo específico de controlador (que no se bien cuál es, pero me parece que es uno de Hitachi). Así que si tenés un módulo con un controlador distinto, la rutina de inicialización no tiene por qué ser igual, y lo único que terminás viendo es un montón de cuadraditos negros.
El "datasheet" de tu módulo: link. Según esto, el controlador es el ST7066U-0A, así que deberías buscar su datasheet y seguramente ahí te detalle la rutina de inicialización que le corresponde.

¡Saludos!
When you see a good move, look for a better one (Emanuel Lasker)

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: No funciona LCD
« Respuesta #5 en: 08 de Septiembre de 2010, 11:35:33 »
.


Citar
- Si funciona con Proteus DEBE funcionar con PIC (...)

Por experiencia se que esto no es cierto, y sobre todo con LCDs, porque el módulo que trae el Proteus está basado un un modelo específico de controlador (que no se bien cuál es, pero me parece que es uno de Hitachi). Así que si tenés un módulo con un controlador distinto, la rutina de inicialización no tiene por qué ser igual, y lo único que terminás viendo es un montón de cuadraditos negros.
El "datasheet" de tu módulo: link. Según esto, el controlador es el ST7066U-0A, así que deberías buscar su datasheet y seguramente ahí te detalle la rutina de inicialización que le corresponde.

¡Saludos!


Hola:

Quieres decir que tendria que modificar la flex_lcd y concretamente la funcion lcd_init()?

Aitor

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: No funciona LCD
« Respuesta #6 en: 08 de Septiembre de 2010, 11:43:07 »
Dí por hecho que el controlador era compatible con HD44780... Si no es así tendrás que cambiar la rutina de iniciación. No creo que los comandos difieran... pero en fín si me equivoqué una vez es probable q me equivoque 2...XD

Un saludo
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: No funciona LCD
« Respuesta #7 en: 08 de Septiembre de 2010, 11:56:07 »
http://www.sparkfun.com/datasheets/LCD/HD44780.pdf
(pag 45)

http://www.allshore.com/pdf/Sitronix_ST7066.pdf
(pag 20)

Parece la misma secuencia... Ya nos cuentas!

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No funciona LCD
« Respuesta #8 en: 08 de Septiembre de 2010, 12:51:50 »
Citar
- Si funciona con Proteus DEBE funcionar con PIC (...)
Por experiencia se que esto no es cierto, y sobre todo con LCDs, porque el módulo que trae el Proteus está basado un un modelo específico de controlador (que no se bien cuál es, pero me parece que es uno de Hitachi). Así que si tenés un módulo con un controlador distinto, la rutina de inicialización no tiene por qué ser igual, y lo único que terminás viendo es un montón de cuadraditos negros.

Exactamente!
No contesto mensajes privados, las consultas en el foro

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: No funciona LCD
« Respuesta #9 en: 08 de Septiembre de 2010, 12:56:45 »
Citar
- Si funciona con Proteus DEBE funcionar con PIC (...)
Por experiencia se que esto no es cierto, y sobre todo con LCDs, porque el módulo que trae el Proteus está basado un un modelo específico de controlador (que no se bien cuál es, pero me parece que es uno de Hitachi). Así que si tenés un módulo con un controlador distinto, la rutina de inicialización no tiene por qué ser igual, y lo único que terminás viendo es un montón de cuadraditos negros.

Exactamente!

Hola:

Y ninguno de vosotros ha utilizado este tipo de controlador?. He probado de todo y me siguen apareciendo los cuadrados negros.
Un saludo

Aitor

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: No funciona LCD
« Respuesta #10 en: 08 de Septiembre de 2010, 14:03:30 »
Revisaste el hardware? En otros tantos hilos se habla de que hay que revisar cuando no anda el LCD.
No contesto mensajes privados, las consultas en el foro

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: No funciona LCD
« Respuesta #11 en: 08 de Septiembre de 2010, 14:12:18 »
Revisaste el hardware? En otros tantos hilos se habla de que hay que revisar cuando no anda el LCD.

Hola:

si que lo revise. Posiblemente sea lo que comentan algunos compañeros sobre el controlador y la inicializacion. Como ultimo recurso me comprare una LCD con el controlador adecuado.

un saludo

aitor

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: No funciona LCD
« Respuesta #12 en: 08 de Septiembre de 2010, 14:15:30 »
.


A simple vista las inicializaciones solamente difieren en una instrucción. Fijate en los datasheets que buscó manwenwe, y cambiale esa partecita, a ver si anda.
Saludos.

When you see a good move, look for a better one (Emanuel Lasker)

Desconectado aitorsp

  • PIC18
  • ****
  • Mensajes: 296
Re: No funciona LCD
« Respuesta #13 en: 09 de Septiembre de 2010, 11:08:12 »
Hola:

A grandes males, grandes remedios asi que he conseguido una LCD compatible con la flex_lcd. Pero como no podia ser de otra manera, algo tenia que fallar. esta vez se trata de que no se me enciende el display pero si que muestra los caracteres tal como muestra la foto a continuación. Está hecha con flash en la camara asi que no es que haya luz de fondo (precisamente ese es el problema) sino que solo muestra los caracteres. ¿Alguna idea de que puede ser?.El modelo de LCD es LMB162A

Un saludo

Aitor




Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: No funciona LCD
« Respuesta #14 en: 09 de Septiembre de 2010, 11:44:33 »
esta vez se trata de que no se me enciende el display pero si que muestra los caracteres tal como muestra la foto a continuación.

Si te refieres al backligth: tienes que alimentar entre los pines 15 y 16 con la tensión y corriente que te indique el datasheet. Por cierto... yo le pondría regularía el contraste (pin 3: de VSS a VDD) porque no se acaba de ver del todo nítido.

Saludos.
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -


 

anything