Exemple de code pour un unique afficheur 7 segments avec un décodeur BCD vers 7 segments CD4511

par skywodd | | Langue : C++ | Licence : GPLv3

Description :

Exemple de code pour un unique afficheur 7 segments avec un décodeur BCD vers 7 segments CD4511.

Code source :

Voir le code source brut | Télécharger cd4511_demo.ino | Télécharger cd4511_demo.ino.zip

/**
 * Exemple de code pour un unique afficheur 7 segments avec un décodeur BCD vers 7 segments CD4511.
 */

/* Broches du CD4511 et du point décimal de l'afficheur */
const byte PIN_CD4511_A1 = 2;
const byte PIN_CD4511_A2 = 3;
const byte PIN_CD4511_A3 = 4;
const byte PIN_CD4511_A4 = 5;
const byte PIN_SEGMENT_DP = 6;


/** Fonction setup() */
void setup() {
  
  /* Toutes les broches en sorties */
  pinMode(PIN_CD4511_A1, OUTPUT);
  digitalWrite(PIN_CD4511_A1, LOW);
  pinMode(PIN_CD4511_A2, OUTPUT);
  digitalWrite(PIN_CD4511_A2, LOW);
  pinMode(PIN_CD4511_A3, OUTPUT);
  digitalWrite(PIN_CD4511_A3, LOW);
  pinMode(PIN_CD4511_A4, OUTPUT);
  digitalWrite(PIN_CD4511_A4, LOW);
  pinMode(PIN_SEGMENT_DP, OUTPUT);
  digitalWrite(PIN_SEGMENT_DP, LOW);
}


/** Fonction loop() */
void loop() {
  static byte chiffre = 0;
  static byte etat_dp = 0;

  /* Affiche le chiffre */
  affiche_chiffre_7seg(chiffre, etat_dp);

  /* Incrémente le chiffre de 0 à 9 */
  if (++chiffre == 10) {
    chiffre = 0;
  }

  /* Fait clignoter le point décimal (inverse l'état à chaque fois) */
  etat_dp = !etat_dp;

  /* Délai pour la démo */
  delay(1000);
}

/** Fonction permettant d'afficher un chiffre sur un afficheur 7 segments */
void affiche_chiffre_7seg(byte chiffre, byte dp) {

  /* Simple sécurité */
  if (chiffre > 9)
    return; // Accepte uniquement des valeurs de 0 à 9.

  /* Affichage */
  digitalWrite(PIN_CD4511_A1, bitRead(chiffre, 0));
  digitalWrite(PIN_CD4511_A2, bitRead(chiffre, 1));
  digitalWrite(PIN_CD4511_A3, bitRead(chiffre, 2));
  digitalWrite(PIN_CD4511_A4, bitRead(chiffre, 3));
  digitalWrite(PIN_SEGMENT_DP, dp);
}