Autor Tema: funcionamiento extraño del lcd  (Leído 1818 veces)

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

Desconectado polo1984

  • PIC10
  • *
  • Mensajes: 13
funcionamiento extraño del lcd
« en: 01 de Marzo de 2007, 19:53:02 »
hola a todos

estoy haciendo mis primeras pruebas con un lcd de 2x16 y me ocurren ciertas cosas a las que no se dar ninguna explicacion y queria saber si alguien le pasa lo mismo y si lo ha solucionado.

lo primero, me ha costado bastante tiempo ser capaz de visualizar mensajes por el lcd, cuando lo consegui se visualizaba bien, el micro que usaba era el PIC16LF876A, al rato probe otro programa en él y ya no me iba. al dia siguiente probe con el PIC16F876A (sin la L) el mismo prorama y para mi sorpresa funcionaba, eso si no se visualizaba tan bien como el dia anterior con el otro micro. para ser mas concretos se visualizan bien los caracteres situados en la mitad derecha del lcd y los de la izquierda se visualizan pero mucho más claras, casi ni se ven con el contraste al maximo. pense que se me podia haber escacharrado el lcd, pero he probado a conectar solo la alimentacion del lcd con la patilla del contraste, y moviendo el potenciometro se observa que el lcd da la misma intensidad de luz en un lado y otro cuando salen los cuadraditos (que aparecen cuando se inicializa mal el lcd). he probado a cambiar la libreria lcd.c de ccs multiplicando los tiempos de retardo por 2 y por 8 de los que trae el archivo lcd.c y el funcionamiento es el mismo ¿alguien tiene alguna expliación para esto?

otra cosilla que me ha chocado un poco ha sido que si declaro la siguientes lineas:
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=10000000)
al probar el funcionamiento del lcd con el pic funcionaba como antes he comentado, pero he probado a cambiar el cristal en la placa por uno de 16Mhz y por otro de 10Mhz y tambien funcionaba. Supuestamente con el fuse HS se declara que se va a usar un cristal de mas de 4Mhz, pero ¿para que sirve entonces la linea #use delay(clock=10000000)? supongo que sera para las instrucciones como delay_ms() aunque no esoty seguro.

seguire probando alguna cosilla más pero no creo que si se visualiza bien me entere muy bien a que se debe.

Un saludo y ya me comentais si os ha pasado algo igual.





Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7918
Re: funcionamiento extraño del lcd
« Respuesta #1 en: 01 de Marzo de 2007, 23:14:19 »
Bienvenido al foro!!

El display LCD necesita un timing especial para recibir la comunicacion (especificada por cada fabricante en su hoja de datos), por lo cual sugiero que te hagas con la hoja de datos correspondiente, antes de seguir...

La libreria LCD.c original tiene el problema de realizar las pausas necesarias para el timing en el envio de datos usando la sentencia Delay_cicles() (o algo asi se llama), que toma una pausa de N ciclos de reloj que uses en la sentencia.

Eso anda bien hasta que cambias el cristal por uno de mas velocidad, por ejemplo la libreria original segun los que entienden esta hecha para un cristal de 4 MHz, cuando lo cambias por uno de 16 MHz este tiempo de pausa baja a 1/4, dejando de respetar el timing del fabricante...

Como recomendacion te dire que reemplazes todos los Delay_cicles() por Delay_us(), respetando los valores originales de las pausas, esto hara que la libreria se compile bien si declaras correctamente el cristal que estas utilizando.

Como colorario a este comentario ahora si te daras cuenta que el hecho de declarar el cristal correcto tiene que ver con el uso de las pausas, comunicaciones seriales y otras yerbas...

Hace poco deje sin darme cuenta un cristal de 4 MHz y declare uno de 3.6864 MHz, la transmicion serial enviava hasta 68 caracteres sin perder ninguno, pero si escribia 69 ya no funcionaba, me volvio loco encontrar el defecto, pero estas cosas nos pasan a todos, para eso estamos en este foro!! :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything