in

Microcontroladores: Display de LED

Display LCD en LPT

Los microcontroladores aplicados en procesos domésticos o industriales, siempre tienen algo para mostrarnos. Hay oportunidades en que un LCD alfanumérico es una opción desmedida cuando sólo intentamos representar un número de pocas cifras, o bien, esa alternativa se torna ineficiente cuando la intención es visualizar indicaciones de gran tamaño y a una distancia de varios metros. La elección de un display de LED puede ser la más acertada pero: ¿cómo implementarla de la manera más eficiente? En este artículo podremos discutir sobre los circuitos multiplexados o los manejados con latch (enclavamiento) y decidiremos cuál nos conviene para nuestro próximo indicador visual. Una aplicación con un contador ascendente / descendente que puedes utilizar en cualquier proyecto, es un buen ejemplo.

Al momento de decidir cómo implementar un indicador luminoso de dígitos, automáticamente se nos vienen a la mente los populares display de siete segmentos que los podemos encontrar en el mercado con la cantidad de dígitos que se nos ocurra, con una variedad de colores muy amplia y con dos configuraciones constructivas muy definidas y que debemos atender a no equivocarnos para evitar un arrepentimiento posterior. Las configuraciones citadas son: de cátodo común y de ánodo común. Esto significa que los LEDs que forman cada segmento del dígito, se unen en un terminal común para su conexión y puede hacerse uniendo todos lo ánodos o todos los cátodos, según el modelo que el fabricante decida. El punto decimal que habitualmente acompaña a cada dígito, se conecta de manera individual, tal como puedes ver en la siguiente imagen.

Configuraciones de ánodo común y cátodo común

Cuando se trabaja con estos indicadores, debes tener presente que necesitarás disponer para su activación de ocho terminales de un microcontrolador. Es decir, un puerto completo de ocho bits y cuando los recursos constructivos son acotados, destinar un puerto completo para manejar un solo dígito puede ser una elección poco apropiada. Si además sumamos a la situación, que la cuenta debe realizarse con números que superan las unidades, debemos apelar a otros pines de otros puertos para resolver la construcción del indicador deseado. En los casos en que se requiere obtener un número de varios dígitos la conexión es sencilla reduciéndose a conectar todos los segmentos de los dígitos en paralelo y habilitando la entrega de datos mediante el terminal común de cada display. Observa la próxima imagen.

Es decir, al bus de datos formado por los terminales a, b, c, d, e, f, y g se envían todos los dígitos necesarios para mostrar, y la visualización se realizará en la medida que los transistores conectados a los respectivos cátodos (según la imagen), sean habilitados en el momento preciso. Esto es: si deseamos visualizar el número 396, primero enviamos el número 6 a todos los dígitos y sólo activamos T1, luego enviamos al bus el número 9 y sólo energizamos T2. Por último enviamos el número 3 y mediante la conducción de T3, este número se verá solamente en el dígito de las centenas.

Conexión de tres dígitos multiplexados

La acción rápida y repetitiva de esta secuencia descripta, sumada a la persistencia en la visión que poseemos los humanos, nos hará percibir que los tres dígitos están encendidos en todo momento y en simultáneo siendo que en realidad, se encienden en forma ordenada, secuencial y de uno por vez. La velocidad de activación y la lentitud de nuestra visión en percibir el cambio, hacen el resto. A esta modalidad de funcionamiento se la llama multiplexión o multiplexación. Esta palabra adquiere otras conjugaciones dentro de la dialéctica particular de los diseñadores y la más habitual que podemos encontrar en los textos es que estamos ante un circuito “multiplexado” de activación de dígitos.

A pesar de disminuir la cantidad de conexiones requeridas gracias a la conexión en paralelo de los segmentos de los dígitos, no tenemos opción de salvarnos de tener que utilizar al menos 10 pines de un microcontrolador. Peor sería el escenario si agregamos el empleo de los puntos decimales. Serían tres pines más que elevarían la cantidad a 13 I/O del microcontrolador. Todo un desperdicio.

Los circuitos integrados al rescate

BCD a 7 segmentos 7447

Afortunadamente existen circuitos integrados que pueden ayudarnos a reducir drásticamente la cantidad de conexiones empleadas en el microcontrolador y también a disminuir la cantidad de código necesario para obtener un correcto funcionamiento de varios dígitos. Un ejemplo de esto sería la utilización del circuito integrado TTL, 7447 en cualquiera de sus versiones según nuestra conveniencia (AS, LS, ALS, S, etc.). La utilización de este componente nos permitirá reducir a cuatro la cantidad de pines necesarios para enviar hacia el/los dígitos la información numérica que deseamos mostrar. La gran ventaja que agregan estos dispositivos es la posibilidad de ingresar a ellos con un número binario sencillo y el mismo circuito integrado se encargará de transformarlo en un número comprensible y útil en la presentación visual. Agregando beneficios a las prestaciones que estos componentes pueden ofrecernos, encontramos acceso a pines que pueden ser de gran utilidad para el apagado total, y a veces necesario, del dígito o para la verificación del buen funcionamiento de todos los segmentos con solo cambiar el estado lógico de un pin.

Tabla de verdad de un 7447

Con la aplicación de estos componentes tenemos que con sólo cuatro pines podemos controlar todos los segmentos de los dígitos. Luego, con las cuatro salidas restantes del puerto, podemos activar cuatro transistores para multiplexar cuatro dígitos. Puedes observar que hemos saltado de un dígito a cuatro con el agregado de un solo IC que vale apenas unos pocos centavos. Por último, yendo un poco más allá en la optimización de posibilidades, en lugar de manipular cuatro transistores individuales, podemos conectar un “demultiplexor” como es el 74154 que nos permitirá ingresar con cuatro bits (los que nos sobraban del puerto) y obtener al final de este IC 16 salidas decimales para poder lograr de este modo un display de 16 dígitos con un solo puerto. O sea, ingresamos al 74154 con cuatro bits y a su salida tenemos el barrido de 16 salidas que multiplexarán esta cantidad de dígitos.

Hasta aquí el multiplexado parece ser la solución a todos nuestros problemas con los display numéricos pero debemos resolver la situación que se plantea al momento en que el microcontrolador debe realizar otros trabajos. Digamos, medir una temperatura, atender la operación de un teclado o de un sensor que se encargue de contar impulsos de entrada, por citar unos pocos ejemplos. Llegados a este punto, tenemos dos opciones muy definidas: apelamos a una mayor velocidad de proceso de datos o utilizamos los dispositivos que incorporan un LATCH. Para poder manejar un circuito multiplexado sin parpadeos, flikers, ni cortes en la presentación cuando trabajamos en circuitos de proceso que involucran una complejidad relativa, debemos recurrir a un minucioso y muy atendido programa que mientras estamos en faz experimental o de aprendizaje, puede resultarnos muy tedioso y hasta en ocasiones una experiencia frustrante.

¿Qué es un LATCH?
En electrónica se conoce a estos elementos como dispositivos capaces de almacenar un bit de información. Algo similar a una memoria rudimentaria. Para nuestra aplicación la “magia” resultará en que utilizaremos un sistema exactamente igual al antes explicado, con multiplexado de los dígitos, pero con el siguiente agregado: los circuitos integrados que operan cada dígito grabarán la información suministrada y la presentarán de manera constante a pesar que dejemos de enviarles información. Es decir, en una secuencia de acciones sucedería lo siguiente:

  • Enviamos al bus el dígito a mostrar
  • Activamos el IC correspondiente al lugar donde queremos ubicar el dígito enviado
  • Enviamos la señal al LATCH del IC que comanda el dígito iluminado
  • Continuamos con el dígito siguiente
  • El/los dígito/s quedará/n encendido/s y podremos utilizar el puerto para otras aplicaciones como puede ser la entrada de un teclado o de un sensor óptico, magnético o inductivo
  • El programa dentro del microcontrolador puede atender otras operaciones importantes sin detenerse a pensar en que debe mantener activo el display

No podemos negar que la ventaja de utilizar un circuito con Latch nos favorecerá en nuestros primeros trabajos con display, permitiéndonos focalizar nuestros esfuerzos de aprendizaje en otros factores más críticos dentro de un programa. En nuestro ejemplo de hoy, el circuito integrado elegido es el CD4511B

Tabla de verdad y conexiones del CD4511B

Empleando un display de dos dígitos obtenido mediante el canibalismo sobre un viejo televisor, hemos armado un circuito para mostrarte el funcionamiento de un sistema contador entre 00 y 99 que puedes utilizar en cualquier aplicación doméstica o industrial que requiera la exposición de una información como la mencionada. Un contador de envases que circulan por una cinta transportadora dentro de una fábrica de dulces, o un contador de pasaje de personas por un determinado lugar. Un contador de vehículos que cruzan frente a tu casa, o la cantidad de veces que tus hermanos se cruzan frente al TV mientras estás viendo tu serie favorita. Todo lo que requiera una cuenta automatizada y desatendida lo puedes realizar con el circuito que hoy te proponemos. Por supuesto que deberás reemplazar los pulsadores que utilizamos nosotros y adecuar los sensores o actuadores que mejor se adapten a tus necesidades de diseño, pero el circuito siempre será el mismo. Aquí tienes lo que resultará de este circuito que veremos:

Como es nuestra costumbre, utilizaremos un PIC 16F628A aunque tú puedes emplear el microcontrolador que mejor te resulte por practicidad o disponibilidad. Comprendiendo el concepto del funcionamiento del sistema, puedes trasladar la idea a cualquier arquitectura de microcontrolador. El display puede ser uno doble como hemos utilizado nosotros o dos individuales y del color que te guste, también según tus posibilidades. Pasando al funcionamiento en sí, puedes observar que es tan sencillo como colocar dos pulsadores para incrementar o decrementar la cuenta y un tercer botón para aplicar RESET o, lo que es lo mismo, una puesta a cero del contador. El circuito como puedes ver en la imagen de abajo es, como te dijimos antes, el mismo que se utiliza en el caso de una configuración de circuito multiplexado.

Circuito para el contador ascendente / descendente

Las partes fundamentales del circuito están formadas por los pulsadores que ingresan a los pines 0 y 1 del puerto A, los cuatro pines del puerto B destinados a las entradas A, B , C y D de los CD4511B y las activaciones de las entradas BI y LE del CD4511B. Luego vemos una fuente tradicional de 5 Volts, el cristal de 4 Mhz empleado y el conector ICSP (In Circuit Serial Programmer) para programar el microcontrolador sin quitarlo de la placa de pruebas. BI significa Blanking Input y según la tabla de verdad del dispositivo, cuando este pin se encuentra en estado alto, la presentación se realiza normalmente pero cuando se coloca en un estado lógico bajo, el display se apaga como si se desconectara de la alimentación. Esta función es muy útil cuando se produce el envío de datos al conjunto de dígitos. A pesar de ser un intervalo muy corto de tiempo, la transición de datos se muestra visible y en ocasiones molesta sobre el display. La metodología de aplicación más elegante entonces es, mediante la manipulación de este pin, apagar los dígitos, cargar el número en el bus de datos (A, B, C y D) y luego volver a habilitar la visualización. La transición es tan rápida que no se muestra como un efecto desagradable a la vista.

El contador funcionando en una placa de pruebas

Por último, LE significa Latch Enable, lo que quiere decir que mientras estemos enviando un dato al bus y este terminal se encuentre en estado bajo, los datos pasarán y cambiarán la presentación en el display. Por el contrario, al momento de pasarlo a un estado lógico alto el último dato ingresado permanecerá almacenado y exponiéndose en el display sin importar las actividad que pase a tener el bus. Por lo tanto, de esta forma podremos utilizar el PIC para otras funciones útiles sin necesidad que el mismo tenga que estar siempre atento a la presentación visual. De este modo, nuestros programas serán mucho más eficientes y ocupados en las cosas importantes, mientras la indicación numérica es atendida en forma automática por los LATCH de los CD4511B.

Aquí te dejamos el listado del programa que hemos utilizado en el ejemplo mostrado en el video donde puedes apreciar que tenemos una variable N que incrementaremos o decrementaremos de a una unidad (tú puedes variar esta condición). Esta variable es manipulada dentro de la subrutina DISPLAY donde se extrae el dígito de las unidades y se coloca en presentación y luego se hace lo mismo con el dígito de las decenas. Seguramente tu podrás mejorar y adaptar el desarrollo a tus necesidades agregando dígitos o seleccionando otro tipo de ingreso de datos. Por ejemplo, podrías utilizar un microcontrolador con entradas analógicas y construir un pequeño voltímetro o un termómetro. También puedes improvisar un sensor inductivo que al introducirle un vástago de material ferroso te devuelva una medida de distancia para aplicar en un taladro de precisión. En fin, como siempre decimos, tu imaginación es el límite. La base es la mostrada, las aplicaciones son infinitas y todas dependen de tu ingenio.

Listado del programa utilizado

Reportar

¿Qué te pareció?

Escrito por Mario

27 Comments

Leave a Reply
  1. Gran vida a Mario¡¡¡¡….aqui estamos de nuevo para agradecerte la simplicidad y las explicaciones de tus proyectos,, en lo personal estaba buscando algo asi…y tu proyecto cae muy bien (muchisimas gracias)…ahora lo que necesito averiguar es como hacer para que en vez de displays pequeños pueda hacer uno de gran tamaño para emplearlo en el conteo de un marcador de voly-bol….pero tengo la idea de hacerlo usando unos transitores y leds para hacer los segmentos…..un abrazo desde Mexico y gracias por este sencillo pero excelente articulo¡¡¡¡¡

    • Hola Carlos !

      Revisá un poco entre los artículos de Ariel que me parece que una vez él publicó algo hecho con números grandes.

      Saludos amigo !!!

  2. Hola Mario,

    Este tipo de articulos son los que te ayudan muchismo a abrir tus posiblidades a la hora de hacer tus propias aplicaciones. El manejo de los display 7 segementos siempre es una gran ayuda para las diversas aplicaciones que puedas tener, aparte de su bajo costo, es muy visible y agradable a la vista, asi que se pueden realizar muchisimas cosas interesantes con estos grandes guerreros. Ademas que con este articulos nos enseñas algo muy importante, ya que le das a los display 7 segementos una caracteristica muy especial parecida a la que tienen los LCD, y es una memoria frente a lo que se desea escribir, cosas que es muy importante para muchas aplicaciones.

    Muchas gracias por estos proyectos, y bueno estamos muy inquietos siempre a tus geniales articulos.

    Un abrazo desde Colombia.

  3. Excelente trabajo muy didáctico. Gracias

    P.D. Alguien me podría decir con que programa se hizo este diseño de circuito, me refiero al simbolismo, me gusta bastante y no lo consigo.

  4. Hola que tal muy buena info , mi consulta es , bueno si es que se pudiese consultar, como usar dos display pero con un solo decoder, de preferencia el 7447 o 7448 porque el cmos no lo domino muy bien , si por ahi encuentras el diagrama te agradeceria que me pasaras la liga , hace mucho lo encontre pero no lo grabe ahora lo busco y sin frutos.

    Como siempre con muy buena INFO NEOTEO

  5. como se nota que los que visitamos esta web, somos muy fanaticos de la electronica, sigue asi, son muy emocionantes y me encantan estos tipos de notas

  6. Hola amigos me interesa muchísimo el contador para acoplárselo a mi Kart para saber en qué marcha voy, tengo un problema con programar el pic 16f628, lo he programado con el t20 me dice que está programado pero no funciona, puede ser porque no lo he programado en el mismo circuito del contado, agradecería muchísimo que me echarais una mano, Gracias
    Un 10 por la información de la web.

  7. Hola mario, excelente pagina, todo lo que un buen electronico quiere saber, bueno me anime a montar el display, consegui todos los componentes inclusive el software pero no me deja compilarlo ya que por ejemplo en PIC SIMULATOR IDE la mayoria de sentencias no lo reconoce (intente buscarl similitudes pero nada), en Mikrobasic igual, el unico que se parecia mucho fue en Pic Basic Pro pero la manera de generar los .hex no me salio bien, al final estoy estancado, te agradeceria que me dijeras en que software se compila, un abrazo.

    • Pues al final pude compilarlo pero no contaba nada, y hacia cosas raras, asi que estuve horas comprobando pin por pin, cable por cable y nada todo estaba correcto, entonces empece a probar las salidas y me tope con un detalle que quiero compartirlo con todos y con el gran Mario, resulta que en el cd4511 las 4 entradas (A B C D) tal como esta en el grafico asignadas al PIC ( RB0 RB1 RB2 RB3) respectivamente tienen que estar de la siguiente manera (A B C D — RB3 RB2 RB1 RB0), solo asi logre que funcionara, quedo de lujo, felicitaciones a Neoteo.

      • #17 Hola Elperu: a mi me pasó lo mismo, revisé el programa y me costó
        compilarlo, además se me calienta el 7805, por supuesto chequé los
        cables que señalaste, pero aún no funciona bien.

        Serías tan amable de enviarme , tu información y aportes a mi correo??
        llevo ya muchos días invertidos.

        atte.

  8. Me gusto esta pagina,excelente, soy principiante en este apasionante mundo de la electónica y nesecito armar un display de tres digitos que se active a traves de un teclado. Podrias mostrarme como hacerlo?
    Desde ya muchas gracias

  9. Excelente presentación del tema y muy clara, soy neófito en esto y sin embargo lo entiendo me gustaría saber la versión del lenguaje de programación usado y el compilador usado, para experimentarlo.
    Te felicito por tu trabajo.

  10. Hola Mario: muy clarito, muchas gracias he afirmado varios conceptos, solo que me gustaria hacerlo funcionar. Armé el circuito en proto-board, pero tengo diferencias en el basic. Yo uso MCS y PBP. No tengo la instrucción Delay, así que usé "PAUSE", tambien tengo dudas con la instrucción (variable+% numero digital)no se si está funcionando.
    Tengo los display en cero, pero no hace nada más: el 7805 se calienta muy rápido, (consumo excesivo???)No hay corto directo, tengo +5V, entro con 12 y/o 9 Vcc de entrada. Te puedo enviar el programa como lo hice, a lo mejor me señalas los errores???
    atte. Un abrazo.

  11. No me salio lo que necesitaba.. que e los tipos de 4511.. nose que tanto se hacen los inteligentes si no nos ayudan en nada.. Gracias!!!.. 🙂

  12. Excelente guía, agradezco por esta infamación tan completa que has suministrado sobre este tema, me gustaría ver mas guías sobre este fascinante mundo de la electrónica y mas especialmente sobre PIC.

  13. Uffffffff… Mario, es la primera vez que ingreso y me parece que este aporte que vos hacés es uno de esos que valen 10 puntos. Por que es bien explicado, sencillo y encarretador. Esta información es tan completa y tan fácil de entender que dan ganas de seguir investigando. Mejor dicho: Mas claro no canta un gallo y al que quiera mas…que le piquen caña.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

IBEX: Primer mapa fronterizo del Sistema Solar

Street View Trike: La bicicleta de Google