Schéma de câblage

Malgré l'utilisation d'un bus de type SPI, la communication est unidirectionnelle (maître vers esclave uniquement). Le pilotage d'un MAX7219/MAX7221 ne nécessite donc que trois signaux :

  • DIN : entrée de données série ;
  • LOAD (/CS) : entrée de validation des données ;
  • CLK : entrée d'horloge.

À noter que les afficheurs 7 segments doivent impérativement être à cathode commune tels que les Liteon LTS-547AHR, Kingbright SC04-11EWA ou Vishay TDSR1360.

MAX7219 / MAX7221 - Typical Application Circuit

Configuration du bus SPI

Le bus SPI doit être configuré en mode 0 (polarité et phase de l'horloge à 0 au repos) comme indiqué par le diagramme des timings ci-dessous :

MAX7219 / MAX7221 - Timing Diagram

Pilotage du ciruit

Format des données

La communication avec le MAX7219/MAX7221 se fait à l'aide de données série 16 bits. Les 8 bits de poids fort identifient l'adresse du registre visé tandis que les 8 bits de poids faible indiquent la valeur à affecter au registre.

MAX7219 / MAX7221 - Serial Data Format

Registres

Le pilotage du MAX7219/MAX7221 se fait en écrivant des valeurs dans différents registres, chacun ayant un rôle bien déterminé.

MAX7219 / MAX7221 - Register Address Map

Allumage / extinction

Le MAX7219/MAX7221 peut être allumé ou éteint via le registre Shutdown.

MAX7219 / MAX7221 - Shutdown Register Format

Mode de décodage

Le MAX7219/MAX7221 propose deux modes de fonctionnement, avec ou sans décodage des valeurs. Le mode de décodage est configurable digit par digit via le registre Decode Mode.

MAX7219 / MAX7221 - Decode Mode Register Examples

Avec décodage

Avec décodage des valeurs, le MAX7219/MAX7221 affiche des caractères prédéfinis selon le tableau ci-dessous.

MAX7219 / MAX7221 - Code B Font

Sans décodage

Sans décodage, chaque bit correspond à un segment. Si le bit est à 0, le segment correspondant est éteint. Si le bit est à 1, le segment correspondant est allumé. Les correspondances bit / segment sont détaillées dans le tableau ci-dessous.

MAX7219 / MAX7221 - Segment Lines

Avec ou sans décodage ?

Si on souhaite afficher un caractère de la liste des caractères prédéfinis ci-dessus, il est plus simple de recourir au mode avec décodage. Par contre si on souhaite afficher un caractère non défini dans cette liste, le mode sans décodage s'impose.

Par exemple, si on souhaite afficher le caractère 2 sur le digit 0, il est nécessaire d'allumer les segments A, B, D, E et G :

MAX7219 / MAX7221 - Segment Lines ON

En utilisant le mode avec décodage, affecter une valeur à un digit est on ne peut plus naturel : pour afficher le caractère 2 sur le digit 0, on écrit la valeur 2 dans le registre Digit 0.

Si malgré tout on préfère utiliser le mode sans décodage, afficher le caractère 2 sur le digit 0 revient à allumer les segments A, B, D, E et G en écrivant la valeur 0b01101101 dans le registre Digit 0, chaque bit à 1 correspondant à un segment allumé. Il faut admettre que c'est beaucoup moins naturel...

Intensité lumineuse

L'intensité lumineuse des segments ou LEDs est ajustable via le registre Intensity. Si le premier niveau est à peine lisible en intérieur avec éclairage naturel, le dernier l'est bien plus sans pour autant éblouir. À chacun d'affiner ce paramètre en fonction de ses conditions d'utilisation et contraintes de consommation électrique.

MAX7219 / MAX7221 - Intensity Register Format

Nombre de digits

Le nombre de digits pilotés par le MAX7219/MAX7221 est configurable via le registre Scan Limit, de 0 à 8 digits.

MAX7219 / MAX7221 - Scan Limit Register Format

Test de l'affichage

Le MAX7219/MAX7221 offre un mode de test permettant d'allumer tous les segments ou toutes les LEDs via le registre Display Test. Ce mode permet à la fois de tester le fonctionnement du MAX7219 et celui de l'affichage.

MAX7219 / MAX7221 - Display Test Register Format

Utilisation typique

Une utilisation typique d'un MAX7219/MAX7221 pourrait consister à afficher les caractères 0 à 7 respectivement sur les digits 0 à 7, le tout en réglant la luminosité au maximum et en activant le décodage sur tous les digits.

MAX7219 / MAX7221 - Exemple

La procédure est la suivante :

  1. Réglage du nombre de digits mis en œuvre :
    Scan Limit (0x0B) = 0x07.
  2. Réglage de la luminosité :
    Intensity (0x0A) = 0x0F.
  3. Activation du décodage :
    Decode Mode (0x09) = 0xFF.
  4. Écriture des valeurs des digits 0 à 7 :
    Digit 0 (0x01) = 0x00, [...], Digit 7 (0x08) = 0x07.
  5. Allumage de l'affichage :
    Shutdown (0x0C)= 0x01.

En avant les projets !

En espérant que cette découverte des contrôleurs d'affichage MAX7219 et MAX7221 ait donné envie de les exploiter, quelques exemples d'utilisation suivront : pilotage d'un MAX7219 à l'aide du Bus Pirate, d'Arduino, etc...

Sujets relatifs