Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/02/2014 #1

Avatar de mermer

LCD por I2C no muestra texto
Hola!

Necesito una librería para programar un LCD mediante el bus IIC(I2C) y estoy un poco perdida por que no se en realidad que tengo que buscar. Mi pregunta es ¿ la librería tiene que ser específica para el microcontrolador que voy a usar(MC9S08QG8) o tiene que ser específica del módulo LCD que voy a usar?

Un saludo y gracias de antemano
19/02/2014 #2

Avatar de Scooter

Pues si y pues si.
La librería tendrá que ser del compilador que uses que a su vez es específico del microcontrolador y por supuesto del LCD. Eso si, si está escrita en un lenguaje estandard será fácil trasladar a otro.
19/02/2014 #3

Avatar de mermer

Vale ,gracias por responder.
20/02/2014 #4

Avatar de miguelus

Buenos días.

En realidad los Módulos LCD no se programan por Bus I2C, estos Módulos tienen 8 líneas de Datos y tres señales de control.

Dependiendo del Micro o Pic que utilices, tendrás que hacer tu el programa, si utilizas Pic de Microchip tendrás práctcamente casi todo el trabajo hecho ya que existen multitud de rutinas y ejemplos ya hechos, solo los tendrás, con pocos retoques, que adaptarlo a tus necesidades.

Te recomiendo que busques por Internet (Google) información de cómo programar estos Módulos LCD.



Sal U2
Archivos Adjuntos
Tipo de Archivo: pdf LCD.pdf (320,8 KB (Kilobytes), 11 visitas)
20/02/2014 #5


miguelus dijo: Ver Mensaje
En realidad los Módulos LCD no se programan por Bus I2C, estos Módulos tienen 8 líneas de Datos y tres señales de control.
Pero hay adaptadores I2C para LCD
http://www.ebay.com/itm/LCD-1602-Dis...item2a3162113c
03/03/2014 #6

Avatar de mermer

LCD por I2C no muestra texto
Buenas tardes. Quiero usar un microcontrolado con un módulo IIC para establecer una comunicación serie con un lcd que dispone de un adaptador IIC.
Entiendo cómo configurar el módulo IIC, pero lo que no entiendo es ¿cómo debo mandar los datos para que adaptador IIC del lcd coloque los datos adecuados en cada pin del lcd? Lo único que se me ha ocurrido que podría ser es que si mi lcd tiene 10 pines y necesito introducir 10 bits de datos para controlarlo , tendría que enviar los datos en orden segun el número del pin del lcd,es decir, si mando 10 bits el primero que se mande irá al pin 1, el segundo al pin 2..etc.

Si alguien puede ayudarme se lo agradecería!
Un saludo. ...
03/03/2014 #7

Avatar de chclau

los datos i2c no tienen que llegar a los pines paralelos del LCD sino al cerebro interno del LCD que sabe procesar los datos que le llegan ya sea en serie o en paralelo.
03/03/2014 #8

Avatar de papirrin

¿cómo debo mandar los datos para que adaptador IIC del lcd coloque los datos adecuados en cada pin del lcd?
los debes mandar segun la trama que se especifica en la ficha tecnica del LCD si es que este soporta I2C, si no tendras que mandarlos como te indique.

podrias poner con que microcontrolador y compilador lo quieres hacer y de que LCD se trata?
03/03/2014 #9

Avatar de mermer

Quizás me he explicado mal.
Viendo la imagen que adjunto,mi duda es que yo envio los datos desde el microncontrolador al adaptador IIC, que en la imagen es el PCF8574(A), que está conectado en paralelo con el lcd. y mi pregunta es como sabe qué bit tiene que mandar al pin 4,11,12,13,14....etc del LCD. si hay que enviarlo en algún orden o algo. es que no me queda claro.

---------- Actualizado después de 9 minutos ----------

papirrin dijo: Ver Mensaje
podrias poner con que microcontrolador y compilador lo quieres hacer y de que LCD se trata?
El microcontrolador que quiero usar es el MC9S08QG8 de freescale, el adaptador IIC es el PCF8574A y el controlador del lcd es el hitachi hd44780U y usaré el compilador del codewarrior.
Imágenes Adjuntas
Tipo de Archivo: jpg Schematic_diagram.jpg (120,0 KB (Kilobytes), 10 visitas)
03/03/2014 #10

Avatar de papirrin

si hay que enviarlo en algún orden o algo
tu le envias los datos al pcf8574(a) y este se encarga de "convertirlos" para el LCD

lo que tienes que hacer es enviar en forma serial sincrona (i2c) mediante los pines SCL(clock) SDA(data), pero para eso tienes que ver la trama en su ficha tecnica.
03/03/2014 #11

Avatar de mermer

vale,gracias,lo miraré!!!
04/03/2014 #12

Avatar de mermer

papirrin dijo: Ver Mensaje
lo que tienes que hacer es enviar en forma serial sincrona (i2c) mediante los pines SCL(clock) SDA(data),
Ya, si entiendo como funciona el módulo IIC, yo le envio los datos por SDA y los recibe el PCF8574(A), el adaptador, lo que no entiendo es cómo envia los datos el adaptador al lcd de forma correcta.

papirrin dijo: Ver Mensaje
pero para eso tienes que ver la trama en su ficha tecnica.
He estado mirando la ficha técnica y no viene nada, simplemente explica el protocolo IIC.


¿ALguien sabe dónde puedo encontrar más información o sabe la respuesta a mi duda?

De antemano gracias.
04/03/2014 #13

Avatar de chclau

el pcf8574 es un IO expander para I2C, la funcion que cumple es tipica de conversores serie a paralelo.

Los datos van entrando en serie hasta que se completa una trama I2C, solamente cuando llego la trama completa el dispositivo saca todos los bits hacia el LCD en paralelo, o sea simultaneamente
04/03/2014 #14

Avatar de papirrin

lei super rapido el datasheet parece ser que la trama esta en el apartdao 7 y 8
http://www.nxp.com/documents/data_sh...4_PCF8574A.pdf

si usas C y en especifico CCS abre la libreria del LCD y ahi ves como debes de mandar los datos al LCD en forma paralela. y claro en tu caso lo envias atraves del Expansor I2C
04/03/2014 #15

Avatar de mermer

papirrin dijo: Ver Mensaje
lei super rapido el datasheet parece ser que la trama esta en el apartdao 7 y 8
Muchisimas gracias!!el datasheet que encontré yo, no me venia eso, de hecho me faltan muchas cosas que vienen ahi.
05/03/2014 #16


En la hoja de datos SEGURO dice, están para que la gente las lea.

El protocolo I2C, cuando escribís, mandás primero la dirección del esclavo, o sea, lo llamás o le avisás que le vas a mandar algo. Después, escribís la dirección donde vas a leer o escribir, y después lees o escribis sobre esa última dirección. Si volvés a escribir sin finalizar la transmisión, lo que escribas se guarda en la siguiente dirección de memoria.

Lo más coherente es que le mandés la dirección (1,1) o (2,8) del cursor, y después el carácter de 8 bits en ASCII.
28/04/2014 #17

Avatar de mermer

Hola!

Tengo un par de nuevas dudas sobre unos de los registros del módulo iic del microcontrolador MC9S08QG8.

¿En el registro IICA se pone la dirección del dispositivo que va a ser el esclavo?, en este caso la dirección una pantalla lcd, o ¿qué dirección es la que se pone ahí?

Para iniciar una trasmisión i2c lo primero que hay que hacer es enviar una señar start ,luego la dirección del dispositivo esclavo, y finalmente los datos a trasmitir y mi duda es :
si la dirección del esclavo la tengo que colocar en el registro IICD, que es donde se irá colocando los bytes de datos que vamos a trasmitir, o se coloca en el registro IICA y en IICD se van poniendo los datos que quiero ir trasmitiendo?

Espero que entendais lo que quiero decir.

Un saludo y gracias.
Imágenes Adjuntas
Tipo de Archivo: png IICA.png (38,8 KB (Kilobytes), 7 visitas)
Tipo de Archivo: png IICD.png (90,6 KB (Kilobytes), 6 visitas)
03/05/2014 #18


LCD por I2C no muestra texto
Hola a todos.
Estoy intentado escribir en un LCD via I2C (Los que tienen una plaquita con un chip PCF8574).
No he encontrado ninguna librería (Todo para Arduino) que me sirva, así que me he puesto manos a la obra.
Estos LCD funcionan igual que los Hitachi HD44780 de toda la vida en modo 4 BIT, con la diferencia que el PCF8574 se encarga de interpretar los datos recibidos por I2C y escribirlos de forma paralela (8 bit) en el LCD.
El caso es que lo tengo casi resuelto, y digo casi porque los estados que veo en las señales (D4-D7, RS, RW y E) parecen corréctos, pero sin embargo el LCD no muestra nada.

La secuencia que he seguido, tras horas en Google y revisando la librería de Arduino:
Con RS y RW a 0, y haciendo pulso de E con cada dato válido:
INICIALIZACION
- Retardo 1sg.
-> 0x3 (4 bits en D4 a D7)
- Retardo 20 ms. (En la imagen aparecen 10, pero lo he reducido para que cupiera)
-> 0x3
- Retardo 20 ms
-> 0x3
Retardo 20 ms
Hasta aquí se supone que he reseteado el LCD, y queda en modo 8 BIT
-> 0x2
- Retardo 20ms. Tras esto el LCD está en modo 4BIT. Según el Datasheet, con 40 usg. se ejecuta

A partir de aquí comandos (En dos "nibbles" o semibytes, cada uno con un pulso de E):
0x28 (4BIT, 2 líneas, 5x7 puntos)
0x08 (Deshabilito LCD, cursor y parpadeo)
0x0F (Habilito LCD, cursor y parpadeo)
0x07 (Habilito autoincremento hacia +)
0x02 (Vuelta a HOME del cursor)

Tras esto, activo RS (Envio de datos, no comandos) y envío 20 veces 0x45 ('E')

Creo que debería funcionar. ¿Será defectuoso mi LCD?

Adjunto un pantallazo de lo que he capturado en las diferentes señales.
Están todas las señales del LCD. La última, SCL_TRIG, la he cogido del bus (I2C) para el trigger del analizador.

Si a alguien se le ocurre algo, agradecería una respuesta.

P.D.: No tengo problema en compartir la librería (Si consigo que funcione), aunque aviso que no me dedico profesionamente a esto del C y mi programación puede ser bastante ... cuando menos curiosa. La he hecho para un STM32F4 Discovery, usando Chibios con sus librerías HAL en vez de las de STM.
Imágenes Adjuntas
Tipo de Archivo: jpg BUS_LCD.jpg (63,0 KB (Kilobytes), 22 visitas)
03/05/2014 #19

Avatar de TRILO-BYTE

no me quedo claro si es para arduino o para otro micro

la idea principal para hacer un LCD en modo serie es el siguiente:
1.- tratar de hacer una libreria que escriba en un puerto de 8 bits
2.-una vez que consigas escribir en el puerto trata de que en lugar de escribir en el puerto se guarde todo el patillaje en un registro de 8 bits como un char.

3.- una vez que logres enviar todo el patillaje al registro trata de reflejar ese registro al puerto
deberia encender la pantalla sin problemas, asi puedes ver que el registro puede ser mapeado a cualquier puerto

4.- trata de enviar un dato por I2c sin problemas

5.- ahora trata de enviar el registro de la LCD por el I2C deberia funcionar
NOTA:

no uses muchos delays por que todo puede estropearse
04/05/2014 #20


Gracia por tu pronta respuesta.
No es para Arduino sino para ARM (Kit Discovery STM32F4).
Hasta el punto 5 está resuelto, como puede verse en la imagen (Estoy registrando los Estados lógicos de los pines reales en el LCD).
Respecto a los retardos, los he ido incrementando mucho, ya que no he visto en ningún sitio valores máximos. Incluso leído un artículo en el que lo hacen manualmente con interruptores.
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.