TODOPIC
Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: Loudness en 22 de Marzo de 2016, 12:09:08
-
Hola a todos.
Sobre la utilizacion de un LCD con un PIC16f877A:
① Tal como dice el titulo, que hacer con las patillas del LCD (DB0~3) que no se usan en modo 4bits?. Buscando en el datasheet del hitachi HD4478 (el micro que suelen tener estos LCDs) dice que tienen que quedarse al aire, pero buscando en internet me he encontrado un par de paginas en las que dice que deben ponerse a tierra para evitar que interferencias externas (ruido) afecten al LCD.
② Sobre la patilla enable (E) tambien tengo una duda. Hasta ahora la he utilizado conectandola directamente al puerto del PIC y esa parece ser la forma mas normal segun he buscado en internet. Sin embargo, tambien he visto alguna pagina en la que recomiendan poner una resistencia de pull down para evitar ruidos(?). Alguna experiencia/consejo sobre este tema?
Llevo utilizando PICs durante algun tiempo dejando las patillas DB0~3 al aire y sin pull down en la patilla enable. Pero, desde hace un tiempo llevo teniendo problemas con un LCD que se borra o saca carateres raros en la pantalla. En un principio dude del programa del PIC (16F877A). Pero, despues de buscar y estudiar un tiempo, estoy empezando a dudar del LCD en si.
Cualquier ayuda o experiencia sera bienvenida.
Saludos
-
Hola Loudness, los libros recomiendan dejar los pines del puerto al aire y el enable al PIC.
Pero yo en mi experiencia siempre a los pines del puerto (DB0~3) les coloco una pull down de 10K a masa.
El enable necesitas que valla al pic porque lo usa para la configuración del micro, pero el pin R/W si no piensas usar caracteres definidos por el usuario, pues lo conectas directamente a masa y listo.
Un saludo.
Atte. CARLOS.
-
Gracias por la respuesta
Pero yo en mi experiencia siempre a los pines del puerto (DB0~3) les coloco una pull down de 10K a masa.
Entonces, esas lineas tienen que estar configuradas como salidas?
-
Hola Loudness, con (DB0~3) estoy hablando de los pines del módulo LCD, y esas lineas no las puedes configurar.
Normalmente esas lineas son de entrada, pero bajo ciertas condiciones pueden ser salidas, por ese motivo es que pongo las pull down, con estas resistencias y si son entradas estarían con un cero lógico en las mismas, pero si por casualidad o error se configuraran como salida, la resistencia de 10K sería la carga a dichas salidas y no quemaría nada, pero si estuvieran directo a masa arriesgamos que esa salida sea quemada.
Con esas 4 resistencias podemos salvar ante un error o mal funcionamiento el display.
Un saludo.
Atte.CARLOS
-
Gracias de nuevo
Hola Loudness, con (DB0~3) estoy hablando de los pines del módulo LCD, y esas lineas no las puedes configurar.
Lo siento, se me ha liado la cabeza y he confundido pines del PIC y del LCD :oops:
Lo de dejar las salidas abiertas no me convence demasiado por mucho que lo diga el datasheet.
Es posible que los errores que estoy teniendo con el LCD vengan por ahi? No lo se, pero voy a probar lo de las Pull down.
Gracias por la ayuda
-
yo trabajo en "C" con el 877a, tenco .c y un .h donde podes usar el LCD tanto en 4 como en 8 bit, y te puedo mandar el circuito electronico tambien, las patas que no se usan del LCD en modo 4 BIT se ponen a masa o tierra o nuetro , como quieras llamarlo
-
Gracias por tu respuesta
yo trabajo en "C"
Basicamente trabajo en ensamblador y no tengo ni idea de c :oops: pero si me envias el circuito seguro que me servira de referencia
Gracias por la ayuda
-
Creo que todas las conexiones al LCD en 4 bits son iguales.
Y lo unico que puede cambiar es si vas a unicamente escribir o leer tambien.
Respecto al mal funcionamiento, lo primero que probaria es cambiar el LCD. Y me explico el por que.
Si tenes funcionando el programa y decis que el programa es correcto, no deberias tener problemas, D0 a D3 solo se toman en cuenta en la inicializacion, luego de inicializado el modulo del LCD no se deberia prestar mas atencion a estos pines. Y vos no estas teniendo problemas con la inicializacion, sino que luego de haber inicializado correctamente el LCD ( configurarlo a 4bits ) estas teniendo problemas con que aparecen caracteres raros y se borra la pantalla. Entonces es un problema de la RAM del LCD y el barrido que esta haciendo, suponiendo que no le llega nada y hace tenes esos problemas.
Resistencia en el pin E del LCD no hace falta, por que la misma salida del PIC lo tiene a 0V o 5V, en ningun momento deberias poner E como entrada para que necesites de ese pull-down.
Respecto a lo de las demas entradas/salidas D0 a D3 coincido con ambas versiones, tanto como dejarlas al aire, son entradas ( y no deberian ser tomadas en cuenta por el driver del LCD terminada la inicializacion ), y tambien por lo que dijo Chaly de que existe la posibilidad que si usas el pin R/W de tenerlas como salida y se necesitaria una resistencia de pull-down o pull-up por cada pin ( no una para todas ).
Finalmente es posible aplicar lo de w3-sistemas si es que nunca vas a leer desde el LCD es decir el pin R/W lo tenes a 0V siempre. Esto va a depender de tu libreria, si es que lo usa o no.
-
Gracias KILLERJC por el mensaje.
Ya me paso antes hace unos meses que, despues de cambiar el programa y revolverlo todo, el problema se soluciono cambiando el LCD que estaba defecutoso. Lo primero que hare esta vez sera cambiar el LCD.
Lo que pasa es que quiero exprimir todas las posibilidades y escuchar diferentes opiniones para aprender y, la proxima vez, hacer el mejor diseno posible. En ese sentido me esta audando mucho este foro.
Gracias a todos por la ayuda
-
aca te dejo el .h y el circuito, como respondo poco no pude mandarte todo ya que perdi el post
-
Gracias por el esquema (Muy interesante) y por el .h(Lo guardare para cuando aprenda C)
Hablando del esquema, en la patilla K del LCD (imagino que alimentacion del backlight) hay un transistor.
Para que sirve?. Para controlar el apagado del backlight desde el PIC?.
-
Hola Loudness, exacto, eso es para controlar el encendido del display, pero también debería de tener una resistencia en serie para controlar la corriente por el mismo, de lo contrario podrías dañarlo.
Un saludo.
Atte. CARLOS.
-
Hola Loudness, exacto, eso es para controlar el encendido del display, pero también debería de tener una resistencia en serie para controlar la corriente por el mismo, de lo contrario podrías dañarlo.
En el pin que va a la A del LCD desde los 5V ya hay una resistencia en serie. En la base del transistor tambien esta puesta en serie.
Donde habria que ponerla para no danar el display?
Gracias por la ayuda
-
En el pin que va a la A del LCD desde los 5V ya hay una resistencia en serie. En la base del transistor tambien esta puesta en serie.
Donde habria que ponerla para no danar el display?
Gracias por la ayuda
Seguro Chaly no vio la resistencia del Anodo, pero asi como esta es correcto, la resistencia limita la corriente del led de backlight que era lo que nombraba Chaly.
-
Hola Loudness, KILLERJC tiene razón, perdona elerror. Y gracias KILLERJC por la corrección.
Un saludo.
Atte. CARLOS.
-
hola a todos, el circuito que les pase funciona correctamente, es un receptor DMX, es un circuito que yo utilizo en mis luces, la conexion del lcd es por puerto bajo, osea utilizo RB0 a RB3, y en el display uso DB4 a DB7, tengan encuenta esto al momento de programar, la resistencia que uso es mas que nada para tener algo que limite, es de 22 ohm, el display soporta tranquilamente los 5 volts direcyos sin quemarce el back light, la resistencia de base es para que el transistor no se queme y tambien influye en la limitacion de corriente es de 4700 ohm, y el preset o potenciometro que usa el display es de 2200 ohm , es para el contraste del display, en mi programa hago que cuando toco los pulsadores buscando en el menu del programa, el back se mantenga prendido, despues de un tiempo lo atenuo y luego de un tiempo mas largo lo apago, lo hago a travez de un PWM por soft, cualquier otra duda .....si puedo.......los ayudo, saludos
-
Gracias a todos por su atencion
en mi programa hago que cuando toco los pulsadores buscando en el menu del programa, el back se mantenga prendido, despues de un tiempo lo atenuo y luego de un tiempo mas largo lo apago, lo hago a travez de un PWM por soft
Lo de atenuar el display suena muy interesante y creo que es hora de ponerme a estudiar porque el PWM del PIC es uno de los temas que tengo pendientes.
Creo que dentro de poco volvere a molestaros con mis preguntas jejeje
Saludos
-
hola, el pwm que utilizo no es el del micro en si, es un pwm hacho por soft, colocado en el timero, les mando la hoja del timer0 donde ademas estan los antirrebotes de los interruptores, saludos
-
Gracias por el archivo w3-sistemas.
Como te comente, no conozco nada de C :lol: pero me guardare el archivo por si acaso.
No quiero empezar de nuevo el tema de si es mejor lenguaje c o assembler, pero, por lo que veo, al subir de difilcutad en los proyectos todo el mundo se pasa al c.
Yo solo he trabajado con PIC16 y PIC18, todo en assembler y estudiado por mi cuenta (realmente este no es mi trabajo) y poco a poco me gustaria empezar a estudiar el PIC24 o incluso los dsPic. Pero en cuanto buscas algo en internet el 99% de lo que sale son proyectos en c.
Porque todo el mundo se pasa al c? Es tan dificil el ensamblador para dspic?
Saludos
-
hola, mira yo comencé estudiando en asembler sabiendo solo algo de electronica analigica, no digital, asi que me costo bastante, y me pase al "C" por cuestiones de que las formulas matematicas son mas fasil en "C", a=b, axd, a/b, etc, con menos lineas escritas haces lo mismo, no significa que ocupe menos memoria, al contrario ocupa mas, igual te digo que cuando mas aprendes mas complejo es todo. pero te aconsejo ir viendo los tutoriales que hay para "c" aca en todo pic y me parece que te vas a ir directo al "C", es mas, si usas los pic de microchip, y empesas a usar MPLAB con XC8 ( compilador ) podes usar una herramienta que se llama MCC que te fasilita en gran parte la programacion del micro, saludos