Contador con 74HC595

Generalmente un contador se hace con decodificadores, sin embargo aveces es necesario controlar varios display de 7 segmentos, como por ejemplo en un marcador deportivo, cronometro, reloj, contadores y muchas otras aplicaciones, mientras mas displays aumenta la cantidad de decodificadores ademas se necesita de varios puertos de un microcontrolador.

En esta entrada nueva comentare sobre una forma de controlar mas de 100 displays con solo 4 lineas de comunicación utilizando un circuito integrado 74HC595 muy comercial ademas de un bajo precio. como pueden observar en la imagen solo es necesario un microcontrolador de 8 bits.

El código esta escrito en XC8 no es muy complejo, solo necesitamos ver la hoja de datos del integrado 74hc595, y también podemos encontrar bastante información en la nube de este integrado.




El programa esta realizado para un pic 16f628A, la frecuencia de reloj es modificable por el que tengas presente. Lo que hago en estas lineas de código es declarar las variables y pines del microcontrolador que se van utilizar para el control del integrado 74hc595. y ademas declaramos dos funciones que a continuación se muestran sus rutinas.

La primera función, init_Reg74hc595(), realiza las inicialisación de los puertos, y la siguiente función send_reg74hc595(), lo que hace básicamente es  desgranar los datos almacenados NUM_DISPLAY[] y va enviándolo uno a uno por el PIN_DAT con su respectivo pulso de reloj.



La tercera función,  numero_a_bcd(); esta rutina se encarga de convertir un integer a código BCD para su posterior envió.


y finalmente el programa principal, lo único que hace es enviar la variable cont mediante las funciones anteriormente descritas cada 100 mile segundos la variable cont se va incrementado.

aquí tienes un vídeo de la simulación en proteus.

https://youtu.be/KYDplRiCBjQ

Aquí puedes descargarlo su simulación y respectivo código desarrollado en MPLAB 



2 comentarios:

  1. Hola, no puedo descargarme el código ya que solicita automáticamente una clave.
    Sería tan amable de facilitarla?
    Un saludo!

    ResponderEliminar