User Tag List

Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 25

Tema: ¿Cómo funciona una LCD de trama de puntos?

  1. #1

    Fecha de ingreso
    Aug 2003
    Mensajes
    14,383
    Mencionado
    49 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    116
    Agradecer Thanks Received 
    284
    Thanked in
    Agradecido 183 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1

    ¿Cómo funciona una LCD de trama de puntos?

    Buenas, quiero hacer un proyectillo del que ya comentaré más detalles: la historia es que quiero saber a grosso modo, cómo funciona una lcd tipo "dot matrix" o calculadora. He estado buscando información pero no me aclaro.

    El asunto es que tengo un cacharro con conector con una tira de pines donde supuestamente iba un lcd de estos. Lo que quiero hacer es ponerle algún lcd tipo los que hay para arduino.
    No tengo el pinout del conector, pero dispongo de un osciloscopio para identificar las señales y sacar el pinado, pero claro no tengo ni idea de cómo funciona ni de qué pines necesito obtener. Tampoco sé si es compatible la señal o tendría que hacer una conversión con algún arduino, aunque ésto me importaría poco.

    ¿Alguien que me oriente?

  2. #2

    Fecha de ingreso
    Apr 2006
    Mensajes
    10,558
    Mencionado
    147 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    2,089
    Agradecer Thanks Received 
    3,073
    Thanked in
    Agradecido 1,428 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    15
    Si quieres meterle un display de los tipicos de arduino (un 1602 p.ej) piensa que estos usan el bus i2c, un bus serie para comunicarse. Primero lo que hay que saber es que tipo de bus tenia el display antiguo:

    La original es matriz de puntos o son varios displays de 7 segmentos ? Cuantos pines tenia ?


  3. #3

    Fecha de ingreso
    Aug 2003
    Mensajes
    14,383
    Mencionado
    49 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    116
    Agradecer Thanks Received 
    284
    Thanked in
    Agradecido 183 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    Es de matriz de puntos creo que de 16x1 caracteres (aunque las letras eran bastante altas, no sé si usaba dos filas para mostrarlas).

    No sé exactamente cuantos pines tenía porque en ese conector van mas cosas aparte de la información al LCD. :S
    Última edición por enkonsierto; 08/03/2016 a las 19:01

  4. #4

    Fecha de ingreso
    Aug 2003
    Mensajes
    14,383
    Mencionado
    49 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    116
    Agradecer Thanks Received 
    284
    Thanked in
    Agradecido 183 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    He estado investigando un poco más y casi que puedo confirmar que es una pantalla de 16x1 con 14 pines de entrada (+2 para iluminación de la pantalla). No creo que pueda averiguar el tipo de bus, pero sí puedo analizar las señales de los pines para intentar averiguarlo.

  5. #5

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    Sería interesante saber qué tipo de comunicación tiene tu cacharro porque según el mismo necesitarás un osciloscopio normalito o uno que disponga de memoria.
    Te podría decir distintos tipos de LCD que conozco, pero mi información anda algo desfasada, y sé que te fias de mi información menos que del "cuore", así que me limitaré a decirte que intentes averiguar si la señal de transmisión es tipo serie o paralela. Con 14 pines seguro que es serie, usando unos cuantos pines para transmitir la información en bloques. Tendrás un pin de alimentación, otro de masa y otro para sincronizar los datos.

    Por otro lado, una pantalla "dot matrix" de 16x1, por definición sólo tiene 16 pixels. 16x1 caracteres no es una dot matrix, es por segmentos, como una calculadora... salvo que tenga una controladora que admita valores ASCII o un formato similar, por lo que volvemos al protocolo de comunicación.
    Una dot matrix "a pelo" recibe lineas o columnas de bits, que indican si cada pixel debe estar iluminado o no, y usando la controladora que incorpora y la señal de sincronía, se va cambiando de fila/columna a "iluminar" en cada flanco de subida o de bajada (dependiendo del tipo de controladora), de la misma forma que la tele se va dibujando por lineas.

    Pero ya digo, depende de muchos factores. He visto LCDs de calculadoras en el que se tiene un buffer de datos, y al LCD se le pasa sólo 1 bit en cada ciclo de reloj, ya que se ilumina sólo un segmento de la pantalla a cada ciclo, pero como funciona a varios MHz, la velocidad es tan rápida que parece que estén varios iluminados a la vez. Mientras que en el proyecto "Viciosa" buscábamos usar una controladora que ya te hace todo el trabajo, y sólo tienes que rellenar una matriz de datos, y automáticamente el HW se lo manda a la pantalla.

    Sin más datos, es lo que te puedo decir. Ahora, me puedes creer o no.
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  6. El siguiente usuario agradece a Drumpi este mensaje:

    enkonsierto (08/03/2016)

  7. #6

    Fecha de ingreso
    Aug 2003
    Mensajes
    14,383
    Mencionado
    49 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    116
    Agradecer Thanks Received 
    284
    Thanked in
    Agradecido 183 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    Cita Iniciado por Drumpi Ver mensaje
    Sería interesante saber qué tipo de comunicación tiene tu cacharro porque según el mismo necesitarás un osciloscopio normalito o uno que disponga de memoria.
    Te podría decir distintos tipos de LCD que conozco, pero mi información anda algo desfasada, y sé que te fias de mi información menos que del "cuore", así que me limitaré a decirte que intentes averiguar si la señal de transmisión es tipo serie o paralela. Con 14 pines seguro que es serie, usando unos cuantos pines para transmitir la información en bloques. Tendrás un pin de alimentación, otro de masa y otro para sincronizar los datos.

    Por otro lado, una pantalla "dot matrix" de 16x1, por definición sólo tiene 16 pixels. 16x1 caracteres no es una dot matrix, es por segmentos, como una calculadora... salvo que tenga una controladora que admita valores ASCII o un formato similar, por lo que volvemos al protocolo de comunicación.
    Una dot matrix "a pelo" recibe lineas o columnas de bits, que indican si cada pixel debe estar iluminado o no, y usando la controladora que incorpora y la señal de sincronía, se va cambiando de fila/columna a "iluminar" en cada flanco de subida o de bajada (dependiendo del tipo de controladora), de la misma forma que la tele se va dibujando por lineas.

    Pero ya digo, depende de muchos factores. He visto LCDs de calculadoras en el que se tiene un buffer de datos, y al LCD se le pasa sólo 1 bit en cada ciclo de reloj, ya que se ilumina sólo un segmento de la pantalla a cada ciclo, pero como funciona a varios MHz, la velocidad es tan rápida que parece que estén varios iluminados a la vez. Mientras que en el proyecto "Viciosa" buscábamos usar una controladora que ya te hace todo el trabajo, y sólo tienes que rellenar una matriz de datos, y automáticamente el HW se lo manda a la pantalla.

    Sin más datos, es lo que te puedo decir. Ahora, me puedes creer o no.
    Si yo te creo hombre, siempre que no te pongas con elucubraciones. Se agradace el esfuerzo. :P

    Visualmente la pantalla es de este tipo:

    Nombre:  1pcs-font-b-16x1-b-font-1601-font-b-lcd-b-font-display-module-16-1.jpg
Visitas: 148
Tamaño: 54.5 KB

    Cuando dije 16x1 caracteres no me refería a 16x1 pixeles, sino a 16 recuadros de 5x7 pixeles cada uno. Como una calculadora no es, ya le comenté a jojo que no iba por segmentos.
    La cuestión es que quiero obtener el pinout analizando la señal de los pines, pero claro, tengo la limitación que no sé que protocolo usa, pero aparentemente tiene que ser un standard de 14 pines.

    He comprobado que un pinout compatible podría ser este:

    Nombre:  HTB1lwfiJFXXXXX7XVXXq6xXFXXXr.jpg
Visitas: 146
Tamaño: 51.4 KB

    Si fuera así, ¿qué señales necesito encontrar? (visualmente hablando)

    GND y VCC es sencillo, los buses de datos imagino que estarían pulsando constantemente, me faltaría analizar el resto.
    Última edición por enkonsierto; 08/03/2016 a las 21:21

  8. #7

    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    8,516
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    191
    Agradecer Thanks Received 
    299
    Thanked in
    Agradecido 177 veces en [ARG:2 UNDEFINED] posts
    Habría que ver qué controlador llevaba la pantalla original. Por lo visto uno popular para pantallas de ese estilo es el ST7066 y compatibles. Aquí puedes ver cómo se comunica uno con él https://www.sparkfun.com/datasheets/LCD/st7066.pdf Con eso puedes empezar a comparar los datos que se envían por el bus con lo que sale en la hoja de características y ver si son compatibles.

  9. #8

    Fecha de ingreso
    Sep 2005
    Mensajes
    15,202
    Mencionado
    247 Post(s)
    Tagged
    1 Tema(s)
    Agradecer Thanks Given 
    675
    Agradecer Thanks Received 
    1,847
    Thanked in
    Agradecido 1,264 veces en [ARG:2 UNDEFINED] posts
    Cita Iniciado por enkonsierto Ver mensaje
    Si yo te creo hombre, siempre que no te pongas con elucubraciones. Se agradace el esfuerzo. :P

    Visualmente la pantalla es de este tipo:

    Nombre:  1pcs-font-b-16x1-b-font-1601-font-b-lcd-b-font-display-module-16-1.jpg
Visitas: 148
Tamaño: 54.5 KB

    Cuando dije 16x1 caracteres no me refería a 16x1 pixeles, sino a 16 recuadros de 5x7 pixeles cada uno. Como una calculadora no es, ya le comenté a jojo que no iba por segmentos.
    La cuestión es que quiero obtener el pinout analizando la señal de los pines, pero claro, tengo la limitación que no sé que protocolo usa, pero aparentemente tiene que ser un standard de 14 pines.

    He comprobado que un pinout compatible podría ser este:

    Nombre:  HTB1lwfiJFXXXXX7XVXXq6xXFXXXr.jpg
Visitas: 146
Tamaño: 51.4 KB

    Si fuera así, ¿qué señales necesito encontrar? (visualmente hablando)

    GND y VCC es sencillo, los buses de datos imagino que estarían pulsando constantemente, me faltaría analizar el resto.
    Pues más elucubraciones que las que te he dicho en el anterior mensaje, imposible

    Lo que te ha pasado Segata es interesante, porque te haces una idea de las señales que podrías tener, pero vamos, para este tipo de LCDs es lo más habitual.
    Obviamente necesitas identificar todas las señales para saber qué LCDs le puedes añadir, pero no las necesitas todas para hacer que funcione. Es posible que una señal de lectura/escritura no te haga falta si no puedes leer la información del LCD, por poner un ejemplo.

    Identificarlos puede ser sencillo si tienes control total de los valores de salida. No hace falta que envíes señales binarias (aunque ayudaría enormemente), pero sí que puedas setear que vas a escribir, activar la señal de envío... esas cosas.
    Empieza por la alimentación, que es lo más obvio, pero ojo: la alimentación de la iluminación es diferente de las de las señales (en tu ejemplo, pines 1, 2, 15 y 16) ¡NO PUEDES MEZCLARLAS! Lo más sencillo es buscar un chip, y ver cuál es la linea de alimentación de señal en la placa, y seguirla hasta el conector.
    Luego es ya ir modificando una señal, manteniendo fijas las otras. Si es un Arduino, hacer un programa para eso debería ser sencillo. Es más, incluso es posible que el pinout que has puesto sea el que tengas en el tuyo, los estandars no suelen ser muy diferentes, aunque modifiquen el orden para que les compres a una marca determinada. De nuevo, si usas un Arduino, les interesa seguir un estandar, y deberías tener información de ese conector en internet, y hasta un datasheet como el que ha puesto Segata.

    Y me voy a repetir: no conozco los estándares de comunicación, por lo que no te puedo asegurar que el ejemplo que has puesto sean las señales que usan todos los LCD de este tipo (puede que existan otras señales o no). Es un punto de partida, y es bastante obvio qué hace cada señal (si no te queda claro, a continuación te digo como iría tu ejemplo). Son señales muy simples (o deberían) y no dependen del tiempo (hay señales que según lo que se envió unos ciclos atrás pueden significar una cosa u otra, pero no es tu caso), así que con el osciloscopio y un código sencillo que modifique el pin que estás buscando, identificarlos no te debería llevar mucho.


    Sobre cómo funciona tu ejemplo: a groso modo, el read/write se pone a cero para mandarle un valor (de ahí la L junto a write), y en data/command se pone 5v para enviar un dato (H significa HIGH, que es un 1 binario, que en este caso son 5v), y luego se le manda un caracter ASCII o el que sea a través de los 8 pines de datos. Los comandos pueden ser cosas como borrar la pantalla, ponerla negra, desplazar los caracteres a la derecha... cada comando tiene un valor entre 0 y 255 (8bits, los 8 mismos pines de datos) y depende del LCD.
    Por último, el ENABLE activa la toma de datos del LCD (lee los datos, según entiendo, cuando este valor pasa de 5v a 0v, o eso entiendo de la flecha de H.H -> L: es la señal de sincronía).
    PROYECTOS REALIZADOS: FrikiMusic, Motor Scroll Tileado v3.2, Venturer2X (GP2X/WIZ), Echo, Screen Break Time
    PROYECTOS EN MARCHA (algunos): Bennu GP2X: 95% (necesito ayuda) ¡Antes de Halloween!: 92% SpaceH2H: 8%

  10. #9

    Fecha de ingreso
    Aug 2003
    Mensajes
    14,383
    Mencionado
    49 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    116
    Agradecer Thanks Received 
    284
    Thanked in
    Agradecido 183 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    Cita Iniciado por Drumpi Ver mensaje
    Pues más elucubraciones que las que te he dicho en el anterior mensaje, imposible

    Lo que te ha pasado Segata es interesante, porque te haces una idea de las señales que podrías tener, pero vamos, para este tipo de LCDs es lo más habitual.
    Obviamente necesitas identificar todas las señales para saber qué LCDs le puedes añadir, pero no las necesitas todas para hacer que funcione. Es posible que una señal de lectura/escritura no te haga falta si no puedes leer la información del LCD, por poner un ejemplo.

    Identificarlos puede ser sencillo si tienes control total de los valores de salida. No hace falta que envíes señales binarias (aunque ayudaría enormemente), pero sí que puedas setear que vas a escribir, activar la señal de envío... esas cosas.
    Empieza por la alimentación, que es lo más obvio, pero ojo: la alimentación de la iluminación es diferente de las de las señales (en tu ejemplo, pines 1, 2, 15 y 16) ¡NO PUEDES MEZCLARLAS! Lo más sencillo es buscar un chip, y ver cuál es la linea de alimentación de señal en la placa, y seguirla hasta el conector.
    Luego es ya ir modificando una señal, manteniendo fijas las otras. Si es un Arduino, hacer un programa para eso debería ser sencillo. Es más, incluso es posible que el pinout que has puesto sea el que tengas en el tuyo, los estandars no suelen ser muy diferentes, aunque modifiquen el orden para que les compres a una marca determinada. De nuevo, si usas un Arduino, les interesa seguir un estandar, y deberías tener información de ese conector en internet, y hasta un datasheet como el que ha puesto Segata.

    Y me voy a repetir: no conozco los estándares de comunicación, por lo que no te puedo asegurar que el ejemplo que has puesto sean las señales que usan todos los LCD de este tipo (puede que existan otras señales o no). Es un punto de partida, y es bastante obvio qué hace cada señal (si no te queda claro, a continuación te digo como iría tu ejemplo). Son señales muy simples (o deberían) y no dependen del tiempo (hay señales que según lo que se envió unos ciclos atrás pueden significar una cosa u otra, pero no es tu caso), así que con el osciloscopio y un código sencillo que modifique el pin que estás buscando, identificarlos no te debería llevar mucho.


    Sobre cómo funciona tu ejemplo: a groso modo, el read/write se pone a cero para mandarle un valor (de ahí la L junto a write), y en data/command se pone 5v para enviar un dato (H significa HIGH, que es un 1 binario, que en este caso son 5v), y luego se le manda un caracter ASCII o el que sea a través de los 8 pines de datos. Los comandos pueden ser cosas como borrar la pantalla, ponerla negra, desplazar los caracteres a la derecha... cada comando tiene un valor entre 0 y 255 (8bits, los 8 mismos pines de datos) y depende del LCD.
    Por último, el ENABLE activa la toma de datos del LCD (lee los datos, según entiendo, cuando este valor pasa de 5v a 0v, o eso entiendo de la flecha de H.H -> L: es la señal de sincronía).
    Aquí dices cosas interesantes. Desgraciadamente no tengo control de los datos que aparecen. Para que nos entendamos es una placa que aparte de todo manda esa información al LCD (tipo como los lcd de un pinball, por un lado el pinball hace sus cosas y aparte muestra las puntuaciones y otras cosas, imagenes por ejemplo en otros pinballs mas modernos).

    Suponiendo que debería obtener las señales que he puesto antes, hasta el momento tengo esto:
    PIN Funcion Señal esperada
    1 GND 0v
    2 VDD 5v
    3 Contraste 0v-5v Según el contraste?
    4 Select ?
    5 Read/Write 0v? (Puesto que siempre estaremos escribiendo)
    6 Enable 5v?
    7 D0 Pulsos
    8 D1 Pulsos
    9 D2 Pulsos
    10 D3 Pulsos
    11 D4 Pulsos
    12 D5 Pulsos
    13 D6 Pulsos
    14 D7 Pulsos
    15 A Backlight + 5v?
    16 A Backlight - GND?

    He puesto interrogante a lo que no estoy seguro, que opinais?

    EDIT: Acabo de caer en la cuenta. También puedo ir camino atrás y ver de donde salen todas esas señales, (un bus de datos tiene que salir de un pin de datos de un IC, por ejemplo).
    Última edición por enkonsierto; 08/03/2016 a las 23:08

  11. #10

    Fecha de ingreso
    Feb 2004
    Ubicación
    Madrid
    Mensajes
    8,516
    Mencionado
    30 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    191
    Agradecer Thanks Received 
    299
    Thanked in
    Agradecido 177 veces en [ARG:2 UNDEFINED] posts
    El de "select" sirve para elegir entre el registro de datos y el de instrucciones a la hora de leer y escribir, así que en ese también deberías ver pulsos. En el de R/W lo mismo: probablemente sí que se lea de la pantalla, concretamente el bit de "ocupado" que señaliza al usuario cuándo puedes enviar datos y comandos a la pantalla y cuando no porque está ocupada. En el de enable lo mismo: si enchufas los dos canales del osciloscopio deberías ver que todas las señales anteriores varían, y un pelín después de que hayan terminado de variar, la de enable tiene un flanco (no se si ascendente o descendente), indicando a la pantalla que dichas señales son válidas y que las procese.

  12. #11

    Fecha de ingreso
    Apr 2007
    Ubicación
    Anoeta
    Mensajes
    5,495
    Mencionado
    43 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    12
    Agradecer Thanks Received 
    100
    Thanked in
    Agradecido 70 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    27
    eso tiene pinta de rular directamente con el controlador de lcd (¿LCD.h?)de arduino directamente si lo configuras con un bus de datos de 8 bits en vez de con uno de 16.

    Puedes sacarle foto del otro lado?

  13. #12

    Fecha de ingreso
    Aug 2003
    Mensajes
    14,383
    Mencionado
    49 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    116
    Agradecer Thanks Received 
    284
    Thanked in
    Agradecido 183 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    Cita Iniciado por Segata Sanshiro Ver mensaje
    El de "select" sirve para elegir entre el registro de datos y el de instrucciones a la hora de leer y escribir, así que en ese también deberías ver pulsos. En el de R/W lo mismo: probablemente sí que se lea de la pantalla, concretamente el bit de "ocupado" que señaliza al usuario cuándo puedes enviar datos y comandos a la pantalla y cuando no porque está ocupada. En el de enable lo mismo: si enchufas los dos canales del osciloscopio deberías ver que todas las señales anteriores varían, y un pelín después de que hayan terminado de variar, la de enable tiene un flanco (no se si ascendente o descendente), indicando a la pantalla que dichas señales son válidas y que las procese.
    Muchas gracias, lo revisaré tambien.

    -----Actualizado-----

    Cita Iniciado por Jurk Ver mensaje
    eso tiene pinta de rular directamente con el controlador de lcd (¿LCD.h?)de arduino directamente si lo configuras con un bus de datos de 8 bits en vez de con uno de 16.

    Puedes sacarle foto del otro lado?
    No es un arduino, es una pcb. Si voy avanzando daré más datos

  14. #13

    Fecha de ingreso
    Apr 2007
    Ubicación
    Anoeta
    Mensajes
    5,495
    Mencionado
    43 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    12
    Agradecer Thanks Received 
    100
    Thanked in
    Agradecido 70 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    27
    No, si lo que digo es que lo podrias controlar con un arduino casi casi seguro, que los displays lcd son bastante standar

  15. #14

    Fecha de ingreso
    Aug 2003
    Mensajes
    14,383
    Mencionado
    49 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    116
    Agradecer Thanks Received 
    284
    Thanked in
    Agradecido 183 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    1
    Cita Iniciado por Jurk Ver mensaje
    No, si lo que digo es que lo podrias controlar con un arduino casi casi seguro, que los displays lcd son bastante standar
    Eso sí, el asunto es que no conozco el standard que usa el conector.

  16. #15

    Fecha de ingreso
    Apr 2007
    Ubicación
    Anoeta
    Mensajes
    5,495
    Mencionado
    43 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    12
    Agradecer Thanks Received 
    100
    Thanked in
    Agradecido 70 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    27
    si tiene 14 pines casi seguro que funciona como los de arduino. Por otra parte, supongo que habras mirado el modelo del LCD, verdad? lo pondra en la placa

    Acabo de releer el primer post...lo que desconoces es el pcb... seguro que usa un lcd estandar
    Última edición por Jurk; 09/03/2016 a las 07:56

Página 1 de 2 12 ÚltimoÚltimo

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •