TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: zeus123 en 25 de Abril de 2010, 03:31:35
-
Buenos días,
tengo un pequeño problema con este pic, en especial a la hora de combinar la pantalla LCD con los leds.
Como bien sabemos, en el PIC16F786, tanto la pantalla LCD como los leds van conectados al puerto b, por lo que si se configura el puerto B de salida (TRISB = 0x00), tendremos que cualquier cosa que escribamos por pantalla (una vez inicializada esta) también afectará al estado de los leds. Aquí está mi problema, me gustaría saber si existe la posibilidad de "aislar" leds y pantalla aún estando en el mismo puerto conectados.
Lo que quiero decir con esto es que, por ejemplo, tengo un led (SW5) que se enciende siempre que la gasolina de mi coche está por debajo de cierto valor, lo que no me interesa es que mientras estoy controlando en todo momento el estado de dicho led (para que en caso de que el led se encienda acudir a una gasolinera a hechar gasolina), si escribo cualquier cosa en la pantalla lcd, como está se conecta al mismo puerto que el led, el led se encendería y apagaría indiscriminadamente por el hecho de estr modificando el PUERTO B para escribir por pantlla.
¿Alguien me podría ayudar a encontrar una solución a esto? La única solución que yo le veo sería quitar el jumper de los leds, escribir por pantalla y luego ponerlo de nuevo, pero esto no interesa, no vas a estar quitando y poniendo jumper todo el rato.
Muchas gracias de antemano.
Saludos
-
Hola zeus123 los leds puedes conectarlos en el puerto que quieras y referente al pic creo que te refieres al 16f876, pero de todos modos puedes hacerlo por interrupcion
Saludos
Miquel_S
-
Gracias Miquel,
Ha sido un error al escribir, quería decir PIC16F876.
El problema que tengo que, por la funcionalidad del circuito, tanto pantalla como leds han de estar conectados a dicho puerto (PUERTO B).
¿A qué te refieres con lo de .. hacerlo con interrupción? ¿Interrupción por cambio de estado en el PUERTO B?
-
Lo mas lógico, es que repongas el estado de los led cada vez que termines la escritura del lcd, de esta forma al ser el acceso de pocos mili-segundos, a efectos visuales el led permanecerá encendido o apagado, porque así es como estará la mayor parte del tiempo.
-
Hola zeus.
aux = input_b();
aux &= 0b11000000; //solo pon un 1 donde en ese bit del puertoB haya un LED conectado
output_b(valor_a_enviar | aux);
El problema es que vas a tener que modificar con esto a la libreria del LCD cada vez que escriba sobre el puertob entero.
Saludos.