Autor Tema: Pantalla LCD y 16F877A PDIP  (Leído 3202 veces)

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

Desconectado Zero13

  • PIC12
  • **
  • Mensajes: 66
Pantalla LCD y 16F877A PDIP
« en: 10 de Abril de 2004, 17:31:00 »
Buenas a todos!...hace algunos dias consegui por fin hacer funcionar una LCD compatible con Hitachi de 16 x 2 lineas y retroiluminada...pero con con PIC 16F84A.....

Ahora he convertido el codigo...cambiando el nuevo micro y sus especificaciones y manteniendo los mismo puertos de la placa y ....nada ...no se enciende la pantalla con las palabras a mostrar por el LCD

Me dijeron que la linea R/W debe ir a tierra...pues funciono...pero con el 16F84A...

Mi pregunta es: ¿ Para el 16F877A, debere quitar el R/W de tierra y conectarlo como pin en el puerto por ejemplo RAx ???

Ya lo he probado todo...he oido por ahi que hay que poner una resistencia tipo PULLDOWN...que significa...Yo no le puesto nada adicional al LCD, solamente una resistencia regulable para el contraste de la LCD.

Espero vuestras respuestas...Gracias a todos por vuestra colaboracion...

SldS!
Zero13

Desconectado NPI_C

  • PIC10
  • *
  • Mensajes: 8
RE: Pantalla LCD y 16F877A PDIP
« Respuesta #1 en: 10 de Abril de 2004, 20:46:00 »
Hola,
Bueno, el pin R/W de un LCD es para indicarle si quieres "escribir en él" o "leer de él". Con un "0" en dicho pin lo pones en modo escritura y viceversa.
Un LCD es un periférico que lleva su propio micro y es mucho más lento que un PIC.... dirás... ¿por qué coño suelta este rollo?
Al ser el PIC más rápido... si queremos que el LCD se entere de lo que le mandamos hay que decírselo despacito a base de retardos... seguramente esto ya lo sepas si dices que lo has hecho funcionar en un F84. Bueno, pues esto explica que:

Hay dos técnicas para hacer trabajar un LCD:
-Mandándole los datos y esperar "a ciegas" que se entere a base de retardos tras cada cosa que le enviemos antes de mandar la siguiente.... Con este método el pin R/W no tiene sentido, puesto que siempre estamos estamos "escribiendo en´él": escribir-esperar, escribir-esperar.... con lo cual, bien podemos poner a masa dicho pin, puesto que solo lo tendremos como valor "0": escritura.

-La otra forma es hacer uso del "flag" de busy, es decir, cada vez que mandamos un dato o instrucción, leer dicha "bandera de ocupado" y ver si el LCD ya ha asimilado la información, para mandarle lo siguiente. Este método, qué es más ventajoso aunque quizá más difícil, sí que necesita del bit R/W, puesto que al consultar el "flag" de ocupado, estamos leyendo del LCD.

Conclusión: Dependiendo de la técnica que uses, podrás poner el pin R/W a masa o no.....

Espero no haberte liado más

Saludos



-

Desconectado Zero13

  • PIC12
  • **
  • Mensajes: 66
RE: Pantalla LCD y 16F877A PDIP
« Respuesta #2 en: 11 de Abril de 2004, 03:01:00 »
Esta bastante claro....

Gracias NPI_C!...

...pero como debo averiguar el estado del LCD a traves de codigo teniendo en cuenta que debere conectar el pin de R/W al PIC ??

La verdad no he encontrado mucha informacion al respecto sobre programacion de LCD en PicBasic...y es mi gran problema, si tienes algo al respecto, te lo agradeceria.

Ejemplos de codigo de LCD solamente tengo los que viene con el Compilador PicBasic..,

Mil Gracias..espero tu respuesta

Saludos!
Zero13



Desconectado CDT_Gonzalo

  • PIC12
  • **
  • Mensajes: 93
RE: Pantalla LCD y 16F877A PDIP
« Respuesta #3 en: 11 de Abril de 2004, 03:14:00 »
Escrito originalmente por Zero13
Buenas a todos!...hace algunos dias consegui por fin hacer funcionar una LCD compatible con Hitachi de 16 x 2 lineas y retroiluminada...pero con con PIC 16F84A.....

Ahora he convertido el codigo...cambiando el nuevo micro y sus especificaciones y manteniendo los mismo puertos de la placa y ....nada ...no se enciende la pantalla con las palabras a mostrar por el LCD

Me dijeron que la linea R/W debe ir a tierra...pues funciono...pero con el 16F84A...

Mi pregunta es: ¿ Para el 16F877A, debere quitar el R/W de tierra y conectarlo como pin en el puerto por ejemplo RAx ???

Ya lo he probado todo...he oido por ahi que hay que poner una resistencia tipo PULLDOWN...que significa...Yo no le puesto nada adicional al LCD, solamente una resistencia regulable para el contraste de la LCD.

Espero vuestras respuestas...Gracias a todos por vuestra colaboracion...

SldS!
Zero13



con respecto a lo de la resistencia PULLDOWN y PULLUP, no es un tipo de resistencia, sino una forma de conectarla..

el concepto es el siguiente...si vos queres hacer que un pulsador al ser presionado saque estado bajo (V-) conectas un extremo a masa y el otro a la patita de entrada, pero el problema es que cuando no mantenes presionado el pulsador, no se conduce corriente entonces no hay un estado definido, sino que la patita queda al aire, entonces lo que se hace es aplicarle corriente (V+), entonces mientras el pulsador no este presionado habrá estado alto, y cuando se presiona habra estado bajo. Pero si no hay una resistencia que funcione como carga, si tenes el estado alto en la entrada y presionas el pulsador se genera un cortocircuito (quemando todo de esta forma [me ha pasado ])...es por eso que se usa la resistencia..por lo general tenes que usar una resistencia que vaya desde los 4k7 a los 10k.

te dejo una imagen de como funciona


espero te haya sido de ayuda

un abrazo
gonzalo

Desconectado NPI_C

  • PIC10
  • *
  • Mensajes: 8
RE: Pantalla LCD y 16F877A PDIP
« Respuesta #4 en: 11 de Abril de 2004, 08:46:00 »
Escrito originalmente por Zero13

...pero como debo averiguar el estado del LCD a traves de codigo teniendo en cuenta que debere conectar el pin de R/W al PIC ??



Mediante una rutina, que es básicamente un bloque en el que comparas lo que lees del bus de datos del LCD (cambiando la configuración del puerto que uses a ENTRADA) con un valor binario que significa que el LCD está ocupado, mientras son iguales sigues en el bucle.

Escrito originalmente por Zero13

La verdad no he encontrado mucha informacion al respecto sobre programacion de LCD en PicBasic...y es mi gran problema, si tienes algo al respecto, te lo agradeceria.



Siento no poder ayudarte con la programación en PicBasic , nunca la he utilizado y no tengo ni idea. Yo uso siempre Assembler, para lo cual si que te puedo mandar algún documento que encontré en internet sobre LCDs y con los que yo aprendí, o bien algunas rutinas de control para que las pruebas...  ???
Ya me dirás.

Saludos








Desconectado BINARIO

  • PIC16
  • ***
  • Mensajes: 156
Re: Pantalla LCD y 16F877A PDIP
« Respuesta #5 en: 30 de Enero de 2007, 15:05:54 »
Me gustaria saber si es posible que publiques el codigo en asm del programa que haces funcionar un LCD de 2x16 con un 16f877 porque e tenido inconvenientes con ello y no encuentro un prg en la red al respecto o si conoces algun link podrias pasarmelo para ver si puedo meter mano con este tipo de lcd, yo consegui un prg pero es para un 16cf84 y no se como adaptarlo a un 16f877, espero que tengas algo. gracias :-/ :-/ :-/
000101111 101110000011110 00010 11101 110 1 000111 00010010011010111100 101101001 11110000 001 00 10110 111 00001 01110 0010101 01011110 00 00011111111 0011111 011110001111111111 1011111111101100000000

Desconectado tithanae

  • PIC16
  • ***
  • Mensajes: 109
Re: Pantalla LCD y 16F877A PDIP
« Respuesta #6 en: 30 de Enero de 2007, 17:00:00 »
mira colega este es el manual del picbasic asi que bajalo imprimilo y lee el desde lapagina 46 adelante para lo que es el manejo de un lcd si tienes alguna duda busca en el manual esta casi todo y si no entiendes algo pregunta sobre lo que no entiendes en concreto yo aprendi solo con ese manual y casi nada mas.

http://www.savefile.com/files/453967


Desconectado Vayadespiste

  • PIC12
  • **
  • Mensajes: 53
Re: Pantalla LCD y 16F877A PDIP
« Respuesta #7 en: 31 de Enero de 2007, 02:50:17 »
Zero13 el 877 lleva un modulo ADC y hay que definir los pines Analogico/Digital de puerto A, no se si lo has tenido en cuenta pero no se me ocurre otra diferencia para que si te funciona en un 84 no te funcione en el 877, el registro en concreto es el ADCON1 y el valor a introducir para que todos los pines sean Digitales sería xxxx011x (las x es indiferente el valor).

Suerte

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Pantalla LCD y 16F877A PDIP
« Respuesta #8 en: 19 de Febrero de 2007, 17:44:34 »
muy cierto lo que dice  Vayadespiste, con el cambio al 16f877(A), hay que estar pendiente de los módulos activados por defectos, como es el caso del CAD y hay otro detalle: el pin RB3 del PORTB , si lees en la página  de 39582b.pdf leeras:

LVP: Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
1 = RB3/PGM pin has PGM function; low-voltage programming enabled
0 = RB3 is digital I/O, HV on MCLR must be used for programming


debes activarlo por la configuration word para que trabaje como i/o.

- otra costumbre que tengo es limpiar las variables (GPR) antes de hacer cualquier proceso.

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado reiniertl

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1187
Re: Pantalla LCD y 16F877A PDIP
« Respuesta #9 en: 19 de Febrero de 2007, 18:41:18 »
La LCD, la has conectado con bus de datos de 4 bits o de 8 bits. Porque si la conectaste en modo de 4 bits, es posible que tengas que pasarle uno de los parámetros de configuración dos veces, voy a buscar cual de ellos es y mañana lo pongo en el hilo. Yo tuve una LCD a la que tenía que hacerle esto porque de otro modo no trabajaba, estaba conectada con solo 4 bits.

Otra cosa es que a mí no me gusta colgar las LCD del puerto B, ya que en este puerto está INT/Ext (la interrupción externa) y las interrupciones por cambio de estado desde RB1...RB4. La primera claro está es la interrupción externa más importante para cualquier sistema, conectarías aquí algo que deba ser atendido INMEDIATAMENTE, las de RB1..RB4 son muy útiles para conectar teclados ya que además tienen un PullUp interno.

Otro aspecto como ya te señalaron es el de las temporizaciones, eso lo podrás encontrar en las cartas de tiempo de la LCD, es un aspecto que mucha gente ignora pero que HAY QUE SEGUIR AL PIE DE LA LETRA, y no pegadito a los límites sino justo en el tiempo que hace falta:
  • Si es en el medio de un espacio de tiempo: hay que hacer los cálculos para poner los datos o leerlos justo en el centro del período de tiempo
  • Si hay un límite de tiempo, pués las cosas un poco antes, nunca muy cerca del límite
  • Si es un tiempo después: pués un poco después, no antes para que no te quedes corto.

saludos Reinier




Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Pantalla LCD y 16F877A PDIP
« Respuesta #10 en: 19 de Febrero de 2007, 22:03:16 »
mañana le vere ayudar

saludos


 

anything