← Retour au blogDécodeurs numériques

Décodeur BCD vers 7 segments : des nombres à l'affichage

Associez un chiffre BCD de 4 bits aux sept segments d'un afficheur numérique grâce à une table de vérité, à la minimisation par carte de Karnaugh et au célèbre circuit 74LS47.

DennyDenny
11 min de lecture
Chalkboard feature illustration for “Décodeur BCD vers 7 segments : des nombres à l'affichage”

En bref : un décodeur BCD vers 7 segments reçoit un chiffre décimal codé binaire sur 4 bits (0–9) et allume la combinaison correcte de segments a–g sur un afficheur numérique. L’association est définie par une table de vérité à 10 lignes ; l’expression booléenne de chaque segment est dérivée de cette table et minimisée par cartes de Karnaugh, puis implémentée dans un circuit comme le 74LS47 (anode commune) ou le 74LS48 (cathode commune).

L’afficheur sept segments est le périphérique de sortie le plus reconnaissable de l’électronique numérique : horloges, micro-ondes, calculatrices, tableaux de score et anciennes pompes à essence l’utilisent. Derrière chaque chiffre affiché se trouve un petit circuit combinatoire qui transforme un nombre de 4 bits en un motif de 7 bits indiquant quelles LED allumer. Ce circuit est le décodeur BCD vers 7 segments, l’une des applications pratiques les plus claires de l’algèbre booléenne et des cartes de Karnaugh.

Cet article définit le BCD, établit la convention de nommage des segments, construit la table de vérité, déduit l’équation booléenne de chaque segment, compare les câblages à anode commune et à cathode commune, puis présente les circuits 74LS47/74LS48 qui réalisent l’ensemble. Les modèles du simulateur cités à la fin permettent d’en câbler un à la main.

Qu’est-ce que le BCD ?

Le BCD (Binary-Coded Decimal, décimal codé binaire) est un codage qui utilise 4 bits pour représenter chaque chiffre décimal de 0 à 9. Contrairement au binaire direct, le BCD gaspille les codes 1010 à 1111 (10–15 en décimal) : ils ne sont tout simplement pas utilisés.

Chiffre décimalBCD (4 bits)A B C D
000000 0 0 0
100010 0 0 1
200100 0 1 0
300110 0 1 1
401000 1 0 0
501010 1 0 1
601100 1 1 0
701110 1 1 1
810001 0 0 0
910011 0 0 1
10–151010–1111inutilisés (« don’t care »)

La convention de cet article est la suivante : A est le bit de poids fort et D le bit de poids faible. Certains manuels utilisent l’ordre inverse ; les équations sont identiques après renommage.

Pourquoi utiliser le BCD plutôt que le binaire direct ? Les chiffres décimaux correspondent directement aux afficheurs orientés chiffres et une quantité décimale à échelle fixe peut conserver exactement ses chiffres sans conversion de fraction binaire. L’arithmétique n’est exacte que tant que le résultat mathématique tient dans le nombre de chiffres et l’échelle choisis ; la division et les autres résultats non terminants nécessitent encore une règle d’arrondi.

La comparaison de stockage doit préciser son dénominateur. Le BCD consomme 4 bits par chiffre décimal, alors que l’information de dix symboles vaut log⁡210≈3.322\log_2 10\approx3.322 bits. Environ 16,9 % de l’espace de codes théorique de chaque quartet BCD est inutilisé ; inversement, 4 bits représentent environ 20,4 % de plus que log⁡210\log_2 10. Pour une plage entière bornée donnée, comparez les largeurs binaires et BCD réelles plutôt que d’appliquer aveuglément un pourcentage unique.

Les six codes inutilisés — 1010 à 1111 — peuvent devenir des entrées indifférentes lors de la minimisation des équations de segments, mais seulement si le système garantit que leur affichage est sans importance. Si un code invalide peut apparaître pendant une réinitialisation, une transition de bus ou une panne, attribuez-lui plutôt un motif blanc ou d’erreur explicite. Une entrée indifférente est une permission de conception, pas l’affirmation que le matériel ne présentera jamais cette entrée.

Les sept segments

Un afficheur 7 segments standard possède sept LED disposées comme un 8, généralement nommées a à g :

   ┌─── a ───┐
   │         │
   f         b
   │         │
   ├─── g ───┤
   │         │
   e         c
   │         │
   └─── d ───┘
  • a est la barre horizontale supérieure.
  • b est la barre verticale supérieure droite.
  • c est la barre verticale inférieure droite.
  • d est la barre horizontale inférieure.
  • e est la barre verticale inférieure gauche.
  • f est la barre verticale supérieure gauche.
  • g est la barre horizontale centrale.

Chaque chiffre décimal allume un sous-ensemble précis :

ChiffreSegments allumés
0a, b, c, d, e, f
1b, c
2a, b, d, e, g
3a, b, c, d, g
4b, c, f, g
5a, c, d, f, g
6a, c, d, e, f, g
7a, b, c
8a, b, c, d, e, f, g
9a, b, c, d, f, g

Le composant SEVEN_SEGMENT_DISPLAY de DigiSim reçoit sept entrées dans cet ordre exact ; DIGIT_DISPLAY est une abstraction de plus haut niveau qui reçoit directement l’entrée BCD de 4 bits et réalise le décodage en interne.

La table de vérité complète

En combinant le codage BCD et l’association aux segments, on obtient une table de 16 lignes (10 valides + 6 indifférentes) et 7 colonnes de segments :

ABCDchiffreabcdefg
000001111110
000110110000
001021101101
001131111001
010040110011
010151011011
011061011111
011171110000
100081111111
100191111011
1010—×××××××
1011—×××××××
1100—×××××××
1101—×××××××
1110—×××××××
1111—×××××××

La table suppose des commandes logiques de segment actives à l’état haut : 1 signifie « demander l’allumage ». Un pilote à cathode commune peut souvent utiliser cette polarité, tandis qu’un pilote à anode commune emploie généralement des sorties actives à l’état bas. Les étages physiques diffèrent aussi par le sens du courant, la chute de tension et la structure de sortie ; la différence ne se résume pas à un inverseur dans le schéma.

Déduire les équations des segments

Chaque colonne de segments ci-dessus est une fonction booléenne de quatre entrées. Avec six lignes indifférentes, la minimisation par carte de Karnaugh donne des expressions bien plus courtes qu’une forme somme de produits naïve. La technique est celle de la méthode somme de produits avec réduction par carte de Karnaugh.

Segment a

Le segment a est allumé pour les chiffres 0, 2, 3, 5, 6, 7, 8 et 9, et éteint pour 1 et 4. En traitant optimalement les entrées indifférentes, la minimisation par carte de Karnaugh donne :

a=A+C+B⋅D+B‾⋅D‾a = A + C + B \cdot D + \overline{B} \cdot \overline{D}

(Ici, B‾\overline{B} signifie NON B ; certains ouvrages l’écrivent B′B'.) Le terme B‾⋅D‾\overline{B} \cdot \overline{D} — B et D sont tous deux nuls — couvre efficacement les cas 0 et 2 ; B⋅DB \cdot D — tous deux à 1 — couvre 3, 5, 7 et 9 ; AA seul couvre 8 et 9 (ainsi que les entrées indifférentes 10–15) ; CC seul couvre 2, 3, 6 et 7.

Cette expression utilise une porte ET par terme produit et une réduction OU. Le nombre exact de cellules ou de transistors dépend de la famille logique, de la disponibilité des signaux complémentaires et du mappage de synthèse.

Segment b

Le segment b est allumé pour 0, 1, 2, 3, 4, 7, 8 et 9, et éteint pour 5 et 6. La carte de Karnaugh donne :

b=B‾+C‾⋅D‾+C⋅Db = \overline{B} + \overline{C} \cdot \overline{D} + C \cdot D

Segment c

Le segment c est allumé pour 0, 1, 3, 4, 5, 6, 7, 8 et 9, et éteint uniquement pour 2. La carte donne :

c=B+C‾+Dc = B + \overline{C} + D

C’est le plus simple de tous : seulement trois termes, car il n’y a qu’une ligne de sortie nulle et les entrées indifférentes remplissent le reste de la carte.

Segment d

Le segment d est allumé pour 0, 2, 3, 5, 6, 8 et 9, et éteint pour 1, 4 et 7. La carte donne :

d=B‾⋅D‾+C⋅D‾+B⋅C‾⋅D+B‾⋅C+Ad = \overline{B} \cdot \overline{D} + C \cdot \overline{D} + B \cdot \overline{C} \cdot D + \overline{B} \cdot C + A

Segment e

Le segment e est allumé pour 0, 2, 6 et 8, et éteint pour 1, 3, 4, 5, 7 et 9. La carte donne :

e=B‾⋅D‾+C⋅D‾e = \overline{B} \cdot \overline{D} + C \cdot \overline{D}

Les deux termes partagent D‾\overline{D} — de manière équivalente e=D‾(B‾+C)e=\overline{D}(\overline{B}+C). Les chiffres pairs sont nécessaires pour e avec cette convention d’entrée, mais pas suffisants : le chiffre 4 a D=0D=0 alors que e reste éteint. La forme factorisée peut employer un OU suivi d’un ET, avec les inversions nécessaires.

Segment f

Le segment f est allumé pour 0, 4, 5, 6, 8 et 9, et éteint pour 1, 2, 3 et 7. La carte donne :

f=A+B⋅C‾+C‾⋅D‾+B⋅D‾f = A + B \cdot \overline{C} + \overline{C} \cdot \overline{D} + B \cdot \overline{D}

Segment g

Le segment g — la barre centrale — est allumé pour 2, 3, 4, 5, 6, 8 et 9, et éteint pour 0, 1 et 7. La carte donne :

g=A+B⋅C‾+C⋅D‾+B‾⋅Cg = A + B \cdot \overline{C} + C \cdot \overline{D} + \overline{B} \cdot C

Ces expressions constituent une minimisation valide avec les hypothèses actives à l’état haut et indifférentes indiquées. Des formes minimales équivalentes peuvent être différentes, et le réseau interne d’un décodeur commercial ne correspond pas nécessairement à cette somme de produits scolaire.

Anode commune ou cathode commune

L’afficheur 7 segments existe avec deux câblages physiques. Ils diffèrent par le côté de chaque LED relié à une broche commune unique.

Cathode commune

Les sept cathodes (bornes négatives) des LED sont reliées à une broche commune connectée à la masse. Chaque anode est commandée séparément. Pour allumer un segment, placez son anode à l’état haut.

  • Sortie du pilote : active à l’état haut — 1 allume le segment.
  • Interprétation de la table : correspond directement à la table ci-dessus.
  • Circuit associé : 74LS48 — sorties actives à l’état haut.

Anode commune

Les sept anodes sont reliées à une broche commune connectée à V_CC. Chaque cathode est commandée séparément. Pour allumer un segment, tirez sa cathode à l’état bas.

  • Sortie du pilote : active à l’état bas — 0 allume le segment.
  • Interprétation de la table : inversez chaque colonne de sortie.
  • Circuit associé : 74LS47 — sorties actives à l’état bas (collecteur ouvert).

Au niveau booléen, changer de polarité revient à inverser la sortie. En matériel, choisissez un pilote capable de fournir ou d’absorber le courant demandé et placez un élément de limitation de courant dans chaque chemin de segment allumé. Ne reliez jamais une LED à une source de tension sans limitation.

Les 74LS47 et 74LS48

Les 74LS47 et 74LS48 sont des fonctions TTL de décodage/pilotage BCD vers sept segments. Ce sont des références utiles, mais choisissez et câblez un circuit réellement disponible à partir de sa fiche technique, plutôt que de traiter ces noms comme des composants interchangeables différant uniquement par leur polarité.

CircuitPolarité de sortieType d’afficheur
74LS47Active à l’état bas (collecteur ouvert)Anode commune
74LS48Active à l’état haut (avec résistances de rappel internes)Cathode commune

La notation classique de ces circuits nomme généralement A l’entrée BCD de poids faible et D celle de poids fort. Cet article a choisi A comme bit de poids fort et D comme bit de poids faible dans ses équations. Renommez les variables avant de recopier une équation dans une conception au niveau des broches du 74LS47/48.

Les deux circuits comportent aussi trois entrées auxiliaires utiles :

  • LT (Lamp Test) : tirée à l’état bas, elle force les sept sorties à 1 quelle que soit l’entrée BCD. Elle sert à vérifier que toutes les LED fonctionnent.
  • RBI (Ripple Blanking Input) : tirée à l’état bas avec l’entrée BCD 0000, elle éteint l’afficheur au lieu de montrer 0. Elle supprime les zéros de tête dans les afficheurs à plusieurs chiffres — 00073 devient 73.
  • BI/RBO (Blanking Input / Ripple Blanking Output) : broche à double fonction qui permet de forcer l’extinction et de chaîner l’extinction par propagation. Son comportement dépend des autres entrées de commande ; suivez la table fonctionnelle du circuit au lieu de la considérer comme une broche logique bidirectionnelle ordinaire.

Ces trois broches permettent ensemble de chaîner plusieurs paires décodeur/afficheur dans un affichage numérique à plusieurs chiffres où les zéros de tête disparaissent automatiquement.

Le comportement des entrées BCD invalides (1010–1111) est défini par le circuit et produit des motifs de segments non décimaux propres à chaque composant — utile comme signal de débogage, mais non portable.

Applications réelles

Le décodage BCD vers sept segments est courant dans les appareils dotés d’un affichage numérique :

  • Horloges numériques — des compteurs ou des chiffres horaires stockés alimentent la génération combinatoire des segments, souvent via un pilote multiplexé. Les secondes et les minutes exigent un modulo 60, généralement décomposé en chiffres d’unités et de dizaines.
  • Calculatrices et compteurs — plusieurs chiffres peuvent partager la commande des segments par multiplexage. Le contrôleur sélectionne tour à tour un chiffre et son motif de segments. Fréquence de rafraîchissement, courant de crête, rapport cyclique, luminosité et images fantômes doivent être conçus ensemble.
  • Voltmètres et fréquencemètres à plusieurs chiffres — un compteur alimente un registre codé BCD, le registre alimente le décodeur, et le décodeur allume les segments.
  • Tableaux de score et compteurs kilométriques — même technique de multiplexage, souvent avec des matrices de LED plus lumineuses.

Construisez-le dans DigiSim

Ouvrez le composant DECODER pour voir le bloc décodeur général. Pour le cas spécifique BCD vers 7 segments, placez un DIGIT_DISPLAY — qui intègre la conversion — ou construisez le décodeur à la main et reliez ses sept sorties à un SEVEN_SEGMENT_DISPLAY.

Reliez quatre interrupteurs d’entrée comme A, B, C, D (du bit de poids fort au bit de poids faible). Implémentez d’abord le segment a avec l’équation ci-dessus :

  1. Deux portes ET : une pour B⋅DB \cdot D, l’autre pour B‾⋅D‾\overline{B} \cdot \overline{D}.
  2. Un OU à 4 entrées combinant AA, CC et les deux sorties des portes ET.

Faites défiler les codes BCD 0–9 avec les interrupteurs et vérifiez que le segment a s’allume dans les bons cas. Ajoutez ensuite les segments b à g en suivant les équations précédentes.

Enfin, testez les codes 10–15. S’ils ont été traités comme indifférents, notez les motifs réels et vérifiez que la logique amont les empêche dès que l’afficheur est visible. Pour une conception qui signale les défauts, remplacez les indifférents par un glyphe blanc ou d’erreur défini, puis minimisez à nouveau.

Le prochain article de la série combinatoire — BCD : les fondamentaux du décimal codé binaire — traite de l’addition BCD, de la correction par ajout de 6 lorsqu’un chiffre est invalide ou qu’une retenue décimale apparaît, et du stockage BCD compact ou non compact. Consultez-le avec Décodeurs et encodeurs : piloter un afficheur 7 segments pour comprendre comment quelques entrées binaires sélectionnent un motif d’affichage parmi de nombreux autres.

Référence

Transformez l’idée en un circuit fonctionnel.