[ Accueil ] [ CONTACT ] [ PLAN du Site ] [ RCNV ] [ Publications ] [ Chantiers Bateaux ] [ Technique Modélisme ] [ Electronique ] [ Radios Vintage ] [ Multi-Switch ] [ Vrac ] [ Astuces ] [ Liens ] [ Base ] [ Compteur ]
 

        ... rgl

 

Gestion des Afficheurs

7 segments LED

(c) Rg.LEGAT

 

 

SOMMAIRE:

01 -  Introduction - Présentation - Généralités

02 - TM1637
              - Protocole de transmission
              - Table des caractères
              - Programme de démo (Affichage Pulsin digits) 

            

03 - MC14489 
              - Protocole de transmission
              - Table des caractères
              -  

04 - x

 

 

      Introduction - Présentation - Généralités

J'avais déjà présenté les afficheurs série LED/OLED 2x16 ou 4x2 caractères particulièrement pratiques et efficaces pour l'affichage de paramètres multiples et complexes. (>>ici)

Mais parfois, un afficheur plus simple, et surtout bien moins cher, est largement suffisant pour afficher une valeur de tension, de fréquence, de température ou simplement l'heure.

Dans ce cas, les bons "vieux" afficheurs LED à 7 segments ont encore toute leur place dans nos réalisations !

Pour une gestion facilitée de ces afficheurs, il existe des circuits dédiés permettant de les piloter en mode série, faisant ainsi économiser de précieux ports de nos MCU.

 

     TM1637 

Pour un ou deux €uros, on trouve sur le Web des modules compacts comprenant 4 digits pilotés par un TM1637.
Ces afficheurs LED, particulièrement lumineux, sont proposés en diverses couleurs d'affichage: blanc, rouge, bleu, vert ou jaune.

Et le TM1637 peut même être configuré pour gérer le niveau de luminosité des afficheurs !

 

Les modules TM1637 + display se trouvent avec deux types d'afficheurs différents: Affichage "Horaire" ou "Datas".

L'afficheur horaire dispose de deux points centraux associé au Digit2, tandis que l'afficheur data perment de gérer 4 points lumineux indépendants, associés à chaque digit.

  
                               Display "Hours"  1x 2dots                                                                    Display "Data"  4x 1dot


Notez que si vous décidez de réaliser vous-même votre PCB avec un TM1637, celui-ci est capable de gérer jusqu'à 6 afficheurs LED.

Le TM1637 est un driver d'affichage pour 6 digits utilisé notamment dans le domaine des electroménagers.

Il se commande par des poussoirs qu'il gère en matrice, ou par instructions issues d'un µC.

Pour notre part nous nous en tiendrons au contrôle par Picaxe  sans se soucier de la matrice clavier.

 

 Protocole série

Le pilotage série du TM1637 nécessite deux ports de commande et s'apparente à un protocole i2c mais sans adressage du composant.

Nous aurons ainsi besoin d'un signal d'horloge (CLK) et d'une liaison Data In/Out (DIO).

  

La trame de commande commence par une "balise" START.

Il s'agit d'une combinaison d'états logiques à présenter sur les ports CLK et DIO.
Elle sera écrite dans une routine spécifique puisque les instructions relatives au vrai protocole i2C ne sont pas ici applicables.

Suit alors une ou plusieurs COMMANDES de configuration du TM1637 (type d'adressage, définition de l'adresse de départ, luminosité)
Nous allons voir tout cela en détail dans un instant..

Le TM1637 est alors prêt à recevoir les DATAS propres à chaque digit, en ce y compris la gestion des points décimaux de chacun des 4 afficheurs.

Enfin, la trame se termine par une "balise" STOP".

Chaque Octet transmis doit faire l'objet d'un ACKnowledged (ACK) pour être validé par l'afficheur.

 

 1. Balise START

   CLK=1 : DIO = 1 : DIO = 0

 

 2. COMMANDES

Il y a trois commandes distinctes.

Les commandes sont utilisées pour définir le mode d'affichage et l'état du pilote de la LED.

Le premier octet entré par DIO sur le front descendant du CLK agit comme une commande.

Les octets B7 et B6 les plus élevés après le décodage sont utilisés pour distinguer les différentes commandes que nous allons détailler ci-après.

Lorsque la commande STOP est envoyée pendant la commande ou le transfert de données, la communication série est initialisée et la commande ou le transfert de données devient invalide (la commande ou les données transférées auparavant restent effectives.)

Cette commande permet de définir le mode d'écriture et la lecture des données. (affichage, scan clavier, …)

01 et 11 ne sont pas autorisés à être définis pour les bits B1 et B0.

La valeur par défaut est $40 qui conditionne le mode "auto-incrémentation" de l'adressage des 4 modules LED.
Etant la valeur "par défaut" cette commande peut être négligée.

 Cette commande permet de définir le degré de luminosité des afficheurs,  jusqu'à leur extinction. 

 

Cette commande permet de définir l'adresse du registre d'affichage.

Si l'adresse est définie comme C6h ou supérieure, les données seront ignorées jusqu'à ce qu'une adresse valide soit définie.

A la mise sous tension, l'adresse par défaut est C0h.

 Elle devra cependant être reprécisée pour chaque envoi d'une nouvelle salve.

 

3. DATAS 

Les données d'affichage à transmettre consistent ici à définir quels segments de l'afficheur doivent être allumés.
On ne transmet donc pas la valeur à afficher mais bien l'état des segments actifs de chaque Digit.

Cette particularité permet de créer une multitude de caractères par combinaison des 7 segments LED.

Avec nos MCU, nous devrons alors définir une table des caractères nécessaires à nos applications.
On pourra ensuite y faire appel de différentes manières: Lookup, Readtable, Read, ...

L'idéal est de loger la table dans l'Eeprom du MCU.

 

Table des caractères courants

 

 L'avantage de cette codification qui définit quel segment doit être allumé permet d'obtenir une table de caractères très complète.

Table de caractères particuliers

 

 

 4. Balise STOP

   CLK=0 : DIO = 0 : CLK=1 : DIO=1

   Procédure d'envoi

Etant en mode série "pseudo i2c", les commandes propres au protocole i2c ne pourront pas être utilisées.

On optera donc pour la commande Shiftout.

A noter cependant que tous les Picaxes n'autorisent pas la commande Shiftout !
C'est le cas notamment du petit 08M2.

Dans ce cas, une routine spécifique devra être écrite pour gérer les états successifs de CLK et DIO.

Le manuel Picaxe détaille cette procédure.

Vous trouverez cependant cette astuce simplifiée dans le programme édité ci-dessous.

 

 Programme de demo

Vous trouverez une application complète à la page relative au Testeur de récepteur de Radio-Commande.

 

Il affiche la valeur des impulsions reçues variant de 0,8 à 2,2 msec sur 4 afficheurs LED à 7 segments.

 

 

     MC14489 

Le MC14489 est un pilote permettant de contrôler des diodes LED, des afficheurs à 7 segments ou diverses combinaisons des deux.
Les LED sont câblées avec des cathodes communes.
Le MC14489 dispose de 5 canaux de multiplexage.
La communication avec un MCU est établie via un port série synchrone.
Le MC14489 dispose de la rétention des données ainsi que des circuits de décodage et de balayage, ce qui réduit la surcharge du processeur.
Une seule résistance de réglage du courant est le seul composant auxiliaire requis.
Un seul appareil peut piloter l'un des éléments suivants: un affichage à 5 chiffres plus les décimales, un affichage à 4-1 / 2 chiffres plus les décimales et le signe, ou 25 LED.
Le décodeur sur puce produit des chiffres au format 7 segments de 0 à 9, des caractères hexadécimaux de A à F, plus 15 lettres et symboles spéciaux.

     

Nous allons nous intéresser à la gestion de 5 afficheurs LED à 7 segments plus point décimal.

 

Protocole série

 Les données sont envoyées en séries successives et sont composées de 1 byte, représentant le registre de configuration, suivi de 6 nibbles définissant les display datas..


1. Registre de configuration 

Toute la subtilité du MC14489 réside dans son registre de configuration.

 

  b0: Display ON = 1, OFF = 0

  b1 à b5 : Type de caractère à afficher sur les 5 afficheurs: Normal = 0, Special = 0 (voir Table des caratères ci-dessous)

  b6: =1 si il y a un caractère spécial dans les Banks 1 à 3

  b7: =1 si il y a un caractère spécial dans les Banks 4 à 5

 

2. Registre d'affichage 

   D23: règle le degré de luminosité des afficheurs (2 niveaux possibles)

   D22 à D20: spécifie où doit se trouver un point décimal (définition sur 3 bits)

   D19 à D16: code caractère du Bank5 

   D15 à D12: code caractère du Bank4

   D11 à D8: code caractère du Bank3 

   D7 à D4: code caractère du Bank2 

   D3 à D0: code caractère du Bank1 

 

3. Table des caractères 

 
                                

 Exemples :

  

 

 

 http://extremetracking.com/open?login=rglalpmn

 
[ Electronique ]
Copyright © Roger LEGAT - 2008 - Tous Droits réservés - (Thds V2)