Controlar display de 7 segmentos con shift register

Ya vimos lo que es y como se controla un shift register, ahora veremos una de las tantas utilidades que tiene. Aquí se explicará como utilizar un shift register para controlar un display de 7 segmentos.

Para el que todavía no lo conozca, un display de 7 segmentos es un panel conformado por 7 LED que comparten entre si sus ánodos o cátodos según si sean de ánodo o cátodo común respectivamente.

A un display de ánodo común deberemos aplicar tensión positiva al pin compartido y GND a cada uno de los pines correspondientes a los segmentos que se quieran iluminar, para un display de cátodo común deberemos invertir la polaridad. La mayoría de displais poseen también un octavo segmento que normalmente es un punto o dos.

Hasta aquí una pequeña introducción para conocer un poco su funcionamiento, ahora bien, vimos que un shift register serial-paralelo “memoriza” el estado (0 o 1) de un pin (entrada) y va rotando esos valores por cada pulso de reloj para representar la secuencia completa, cuando se activa el pin Load, en unos pines asignados que tiene el integrado a tal fin.

Si a cada pin de salida (Q0-Q7) del integrado le conectamos un segmento del display, como en la figura 1, logramos encender y apagar dichos segmentos independientes unos de los otros. La principal utilidad es representar un número del 0 al 9 o una letra de la A a la F.

La ventaja de usar el shift register es que sólo necesitaremos 3 pines del microcontrolador: Clock (Amarillo), Data out (Verde) y Load (Rojo).


Figura 1. Conexión de un display de 7 segmentos a un shift register.

Si en lugar de emplear un solo integrado usamos dos (Figura 2), podremos multiplexar los datos. Utilizando el segundo integrado para seleccionar el display que deseamos encender en determinado momento, aumentaremos el numero de displais de 1 a 8 con un integrado mas.

8 display de 7 segmentos conectados a 2 shift register
Figura 2. Conexión de 8 display de 7 segmentos a 2 shift register.

Si encendemos un display, lo apagamos y luego encendemos otro, y hacemos todo esto de manera muy rápida el cerebro humano lo interpreta como si en realidad todos los display permanecieran encendidos al mismo tiempo. Jugando con esto podemos ahorrarnos muchísimos pines de nuestro PIC, por ejemplo si quisiéramos hacer un reloj que indique la hora, los minutos y los segundos, y conectáramos cada segmento a cada pin de un microcontrolador necesitaríamos uno con 42 pines solo para los displais.

Sin shift register también se puede multiplexar, pero aun así utilizaríamos demasiados pines, 7 para los segmentos y 1 para cada display, para diseñar el mismo reloj del ejemplo anterior necesitaríamos un total de 13 pines contra los 4 que se necesitan implementando los registros de desplazamiento.

Para usar los dos integrados, se conectan siguiendo el diagrama de la figura 2, el segmento A de todos los displais con la Q0 del primer integrado, los segmentos B con el Q1, los C con Q2… y así sucesivamente. La salida Q0 del segundo integrado se conecta al común del primer display, el pin Q1 al segundo, el Q2 al tercero… así hasta un máximo de 8 displais.

Para controlarlo enviaremos los bits que conforman el caracter del primer display al primer integrado y el bit correspondiente a dicho display en 0, a cada pulso de reloj, cuando hayamos enviado todos los bits se manda el pulso Load y es cuando aparece el caracter en el primer display, luego se repite la operación pero con el bit del segundo display en 0, de esa forma, y si los displais son de cátodo común, encenderán de a uno. A una alta frecuencia esto crea la ilusión de estar todos encendidos.

Utilizando dos shift registers y 4 pines del microcontrolador tendremos capacidad para controlar 8 displais, y si utilizáramos un integrado y un pin del microcontrolador más, aumentaríamos la cantidad de displais a 16.

19 comentarios:

  1. Esta re bueno tu blog, con temas muy interesantes.

    Visita mi blog http://lomascodiciadodelplaneta.blogspot.com

    ResponderEliminar
  2. Anónimo20/1/10

    Genial dispatch and this enter helped me alot in my college assignement. Thanks you seeking your information.

    ResponderEliminar
  3. Hola estoy usando la configuracion esta para manejar 10 displays,cuando solo uso 4 todo funciona, pero cuando uso 5 los digitos se ven mal.
    cual puede ser el problema?

    ResponderEliminar
  4. Puede que tengas problemas con la multiplexación, si quieres puedes descartar algún problema en el circuito probando a bajar la frecuencia, digamos a 1 display/segundo o 1/2 segundo y comprobar que todos los displays enciandan correctamente, luego usa la velocidad definitiva.

    Recuerda que para una correcta visualización la frecuencia de refresco de cada display debe ser al menos de 25 veces por segundo, si es mas mucho mejor, a mas display mas alta la frecuencia de refresco general.

    saludos.

    ResponderEliminar
  5. Anónimo21/7/10

    Hola, esto me sirve para conectar un teclado (BCD) y entrar un numero de 8 digitos?

    ResponderEliminar
  6. En un principio no, pero con algunas modificaciones es posible de todos modos lo estoy contestando por mail.

    saludos.

    ResponderEliminar
  7. Anónimo20/9/10

    EXCELENTE Y SUPER UTIL LA INFO!!! SALUDOS Y POR FAVOR QUE SIGA ASI.

    ResponderEliminar
  8. buenas noches:
    por error borre los numeritos del velocimetro de mi carro, se veian muy opacos, asi que quise limpiarlos con un trapo y liquido limpiador, al pasar el trapo, se vieron muy bien, pero cuando se secaron quedaron casi borrados, eso me hizo desarrollar un mini circuito para poner el velocimetro digital, el problema es que con el sol, el display casi no se ve, asi que quisiera usar un display LCD que tome prestado de una calculadora dañada, pero creo que se usa una señal ac o alta frecuencia o algo asi, porque si se pone voltaje constante, se daña el display (eso me dijeron), tendra alguien algun circuito por ahi???
    por favor algun tip a ofsalcido@gmail.com
    gracias por adelantado

    ResponderEliminar
  9. Buenas:
    Lo que tu mencionas es un VFD (Vacuum Florescent Display) Display de vacío fluorescente.
    Usa un filamento con AC de unos 3.3V, unos +12V en la grilla a seleccionar (el equivalente al display seleccionado en este proyecto) y +12V en el segmento a iluminar. Estos valores dependen de cada modelo.
    Los 3.3 VAC lo puedes generar con un regulador de voltaje de CC y un puente H que invierta la polaridad a una frecuencia de unos 50Hz.
    Tengo el proyecto armado hace unos meses y cuando tenga algo de tiempo publicaré una entrada sobre el tema.

    Saludos.

    ResponderEliminar
  10. perdona, no me explique bien, es un display LCD, de una calculadora moderna, si gustas te envio una foto o diganme como añadirla aqui, pero te juro que es un display LCD
    en mis tiempos, tambien me gustaba jugar con VFD, pero se acababan las pilas muy rapido, ahora que estoy mas grande, casado y con hijos, tengo que buscar algo mas "economico".

    ResponderEliminar
  11. Pásame una foto al mail picblog@hotmail.com

    Saludos.

    ResponderEliminar
  12. Anónimo5/8/11

    Hola, tu publicación es excelente, pero en mi caso necesito que me resuelvas una duda; necesito conectar 16 displays al mismo tiempo, se trata de un contador que registra eventos a milésimas de segundo, ¿como puedo conectarlos todos al mismo tiempo?, te agradecere demasiado tu respuesta. y por ultimo ¿cuanto cuesta un 74hc595 en pesos mexicanos?

    gracias

    este es mi correo.

    raleimuz@hotmail.com

    ResponderEliminar
  13. Buenas, lo puedes hacer con 3 74HC595 de dos maneras diferentes.

    La primera: usas 2 shift register (SR) para seleccionar el display a iluminar. Para eso debes conectar la salida Q7' de un SR al DS del otro y compartes los Load y los Shift.

    La segunda y mejor en cuanto a velocidad de refresco (habría 2 display encendidos al mismo tiempo): conectas los coomunes de los displays de 2 en 2 (el display 1 con el 9, el 2 con el 10... el 8 con el 16) y utilizas 2 SR para el numero que deseas mostrar en cada uno de los dos displays encendidos. Compartes los Shift y los Load y usas dos DS diferentes.

    Un shift register aquí en España cuesta unos 0,30€, según donde lo encuentres no puede costar más de US$0,50

    Para concatenar los SR puedes ver la entrada: http://picrobot.blogspot.com/2008/11/shift-register-que-son-y-como-se-usan.html

    Saludos.

    ResponderEliminar
  14. Anónimo22/4/12

    se puede utilizar ese diseño sin necesidad de recurrir a un pic

    ResponderEliminar
  15. Mauro12/8/13

    te mande un mail con un adjunto! aguardo tus comentarios... gracias

    ResponderEliminar
  16. si el display es catodo comun, es necesario poner una resistencia para cada pata de los segmentos? o sirve poner una resistencia en el catodo comun para todos los segmentos? para no gastar muchas resistencias jejejeje.....

    ResponderEliminar
  17. Anónimo9/3/14

    skrew_bas, sí puedes poner una sola resistencia, pero la iluminacion va a variar, mientras más segmentos se enciendan, van a ser más débiles y al reves. Así es que no sería práctico.

    ResponderEliminar
  18. Como puedo usarlo para que muestre l apalabra hola y se mueva atraves de los 8 leds y como va conectado al pic

    ResponderEliminar
  19. tendria el hex o el asm del pic usado si es asi y la conexion al pic. yo estoy usando para un contador eo 16f628a, lo tengo pero con 4 hc595 y 4 displays de 7 segmentos pero quiero usar un display de 7 segemntos pero de 12 pines.
    gracias

    ResponderEliminar

Tal vez le interese: