Autor Tema: Leer datos desde un lcd 16x2  (Leído 4705 veces)

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

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Leer datos desde un lcd 16x2
« en: 08 de Marzo de 2018, 04:11:57 »
Saludos

Si buscas informacion de como escribir datos desde un PIC a un LCD puedes encontrar miles de explicaciones.
Pero, si lo que quieres es leer datos desde el LCD entonces ya no hay tanta informacion. Y, realmente, creo que se tiene que poder hacer porque, viendo el datasheet, la patilla R/W (que nunca he utilizado hasta ahora, tengo que admitirlo :lol:) parece que sirve para elegir entre modo escritura y lectura.

Y porque quiero hacer esto? Porque tengo un LCD al que le salen letras raras de vez en cuando.(Me imagino que es un problema de ruido que le entra al PIC desde alguna maquina cercana pero todavia no encuentro la fuente). Dejando de lado el hardware,  he pensado que una manera de hacer un software mas resistente contra el ruido seria leyendo lo escrito en el LCD y comprobandolo para ver si de verdad ha escrito lo que le hemos mandado. Si no es asi, lo considero ruido y tomo medidas.

Hablando claro, quiero saber si hay alguna manera de saber si lo que he escrito en el LCD se escribe bien o no, y comprobar que la memoria del display tiene los datos correctos…

No se si me explicado con claridad pero agradeceria cualquier comentario.

Gracias de antemano

PD. Iba a poner este comentario en el hilo “luchando contra el ruido por software” o “hablemos del ruido” pero llevan anos sin movimiento asi que he abierto un tema nuevo.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Leer datos desde un lcd 16x2
« Respuesta #1 en: 08 de Marzo de 2018, 08:14:05 »
Leer es simple. primero seteas la direccion ( como para escribir) ejemplo si quisiera ver la primera linea el primer caracter, deberia poner la direccion 0x00 y luego leer.
Como leer? el datasheet te lo dice, pone R/W y RS en 1, luego dale un pulso en E, y tendrias tus datos en los pines de DB0 a DB7.

Y si usas el pin de lectura, ya no usas mas demoras al escribir, ya que podrias leer los flags, para ver cuando es que ya termino de ejecutarse la instruccion de escritura.

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Re:Leer datos desde un lcd 16x2
« Respuesta #2 en: 08 de Marzo de 2018, 09:45:04 »
KILLERJC: Gracias por tu respuesta.

Pues no parece muy dificil, todo es probar...pero, crees que puede valer como medida contra el ruido?

Saludos



Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Leer datos desde un lcd 16x2
« Respuesta #3 en: 08 de Marzo de 2018, 14:18:58 »
Si tenes ruido al enviar el dato, que te asegura de lo que al momento de leer sea exactamente lo que muestra el LCD y no LCD + ruido. Ademas nada evita que el ruido afecte a ambos ( lo que envias como lo que recibis) por igual aunque lejana posibilidad.

Lo ideal seria eliminar la causa del ruido. Y si pienso que seria mas difícil de que ocurra algo (impresion de caracter incorrecto) pero también significa el doble de trabajo para mostrar algo.

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Re:Leer datos desde un lcd 16x2
« Respuesta #4 en: 08 de Marzo de 2018, 22:51:54 »
Gracias por la respuesta.


Lo ideal seria eliminar la causa del ruido.


Totalmente de acuerdo y en ello estoy pero me parece que no va a ser facil. Tengo mas de 300 circuitos iguales circulando por ahi sin ningun problema pero, mira por donde, en 2 de ellos metidos en una sala de maquinas salen caracteres raros en el display.
El PIC controla varios botones y una bomba de desague pero estos siguen funcionando normalmente a pesar de los caracteres extranos asi que el PIC parece que va bien.

He visitado el lugar dos veces y en ninguna de las dos el problema se ha presentado ante mis ojos asi que creo el ruido tiene que venir de alguna maquina que solo se enciende de vez en cuando o algo asi, pero todavia no logro localizar el problema :oops:

Asi que, aqui me tienes, sin saber razon exacta y pensando en posibles soluciones :?

Aunque creo que este es un problema mas bien de hardware, tambien estaba pensando en mejorar el soft y lo de leer el caracter escrito en la pantalla y comprobarlo de nuevo me parecio una idea, pero, leyendo tus comentarios ya no me parece tan buena.

No habra alguna forma de que el PIC pueda saber si el LCD ha escrito bien los caracteres o no :(??

Saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Leer datos desde un lcd 16x2
« Respuesta #5 en: 08 de Marzo de 2018, 23:14:03 »
Citar
No habra alguna forma de que el PIC pueda saber si el LCD ha escrito bien los caracteres o no :(??

Es la que dijiste.

No dije que sea mala idea,y como comentas tal ves es ruido que ocurre ocasionalmente, por lo tanto podrias implementar lo que planteas, ya que si es asi, no creo que ocurra en 2 momentos, al escribir y leer, distinto si era un ruido constante.

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Re:Leer datos desde un lcd 16x2
« Respuesta #6 en: 08 de Marzo de 2018, 23:25:11 »
Citar
No habra alguna forma de que el PIC pueda saber si el LCD ha escrito bien los caracteres o no :(??

Es la que dijiste.

No dije que sea mala idea,y como comentas tal ves es ruido que ocurre ocasionalmente, por lo tanto podrias implementar lo que planteas, ya que si es asi, no creo que ocurra en 2 momentos, al escribir y leer, distinto si era un ruido constante.

Entendido. El programa se me va hacer bastante largo, pero creo que se puede intentar.

De todas maneras, si no es para esta vez, puede ser una medida a tener en cuenta para circuitos futuros.

Gracias por la ayuda ((:-)).

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Leer datos desde un lcd 16x2
« Respuesta #7 en: 08 de Marzo de 2018, 23:57:52 »
 
Yo blindaría bien el circuito.

Todo metido en una caja metálica puesta a masa, ferritas en el positivo de alimentación para evitar interferencias de radiofrecuencia (creo que las ferritas en la masa también hacen su función), un buen condensador o condensadores de filtro (de 20000 uF para arriba). Aisla también la alimentación del LCD de la del micro, usa si es necesario un regulador conmutado solo para alimentar el LCD, con los filtros indicados (ferritas y condensadores). Si el LCD se conecta a la electrónica, externamente con un cable, que ese cable esté apantallado y conectado a masa.

Intentar resolverlo por software es no atacar la causa real de problema, y puede que algún día eso te afecte también al funcionamiento del micro y provoque algún desastre (el watchdog puede evitar desastres, pero el funcionamiento anómalo seguiría existiendo).

Yo tuve un caso en el que un motor eléctrico me reseteaba un micro STM32, fué incrementar la capacidad del condensador de filtro de la alimentación y mano de santo, nunca más apareció el problema.
« Última modificación: 09 de Marzo de 2018, 00:07:47 por planeta9999 »

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Re:Leer datos desde un lcd 16x2
« Respuesta #8 en: 09 de Marzo de 2018, 01:17:13 »
plantea9999: Gracias por tus consejos

Estaba pensando poner este filtro delante del transformador:

 https://www.digikey.com.mx/product-detail/es/tdk-lambda-americas-inc/RSEL-2003W/RSEL-2003W-ND/2136823

En otros circuitos me ha funcionado.

Para comunicar el PIC con el LCD utilizo un cable plano de este tipo:

 https://www.tme.eu/es/pages/New_Product:cable-plano-con-conectores-idc.html

de unos 25 centimetros que me parece bastante sospechoso :?. Tengo intencion de utilizar cable blindado y poner el blindaje a tierra.

En cuanto a los condensadores de la fuente tengo intencion de aumentarlos.

Ya he comentado antes que creo que este es un problema de hardware, lo del software es solo pensar en ir un poco mas alla en mis estudios de programacion.  No me va a solucionar este problema, pero quien sabe si en el futuro me puede ayudar.

Saludos

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Leer datos desde un lcd 16x2
« Respuesta #9 en: 09 de Marzo de 2018, 08:42:19 »
si es largo el cableado, tambien probaria con uan ferrita, para el cable del LCD si es que nada de lo anterior funciona.

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Re:Leer datos desde un lcd 16x2
« Respuesta #10 en: 13 de Marzo de 2018, 04:06:42 »
Leer es simple. primero seteas la direccion ( como para escribir) ejemplo si quisiera ver la primera linea el primer caracter, deberia poner la direccion 0x00 y luego leer.
Como leer? el datasheet te lo dice, pone R/W y RS en 1, luego dale un pulso en E, y tendrias tus datos en los pines de DB0 a DB7.


Pues al ponerme resulta que no es tan simple jejeje :lol:.

Tengo conectado el LCD con configuracion de 4 bits a los bits altos del PORTD (RB4~RB7).
Entonces:

1) Antes de leer les configuro como entradas para que reciban el dato desde el LCD? 
2) Si esta configurado a 4 bits, entonces tengo que leer el lcd 2 veces?

Agradeceria cualquier ayuda

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Leer datos desde un lcd 16x2
« Respuesta #11 en: 13 de Marzo de 2018, 07:31:11 »

- Seteas la direccion que vas a querer leer, como te dije si queres leer el primer caracter de la primer linea es 0x00, si es el segundo caracter de la 2da linea es 0x41
- Pasas a entrada RB4 a RB7, y pones R/W a 1, RS a 0
- Tal ves un pequeño delay aca¿? ( ver datasheet del driver )
- E en 1
- Leo parte alta
- Pulso en E ( bajo a 0 y luego a 1 )
- Leo parte baja
- E en 0

Y ya podes pasarlo a salida. O si das mas pulsos en E este va a continuar incrementando en las direcciones de memoria, es decir si leiste 0x41 el proximo dato es 0x42

PD: Tener en cuenta los limites de tiempo que exige el driver. Desde el R/W hasta el dato listo, el tiempo de E, etc.


 

anything