Indicateur à 4 chiffres Connexion Arduino. Indicateur à sept segments. Sortie vers des indicateurs de nombres fractionnaires, format flottant

Il existe des paramètres pour lesquels il serait plus pratique de fournir des informations objectives plutôt qu’une simple indication. Par exemple, la température de l’air extérieur ou l’heure du réveil. Oui, tout cela pourrait être fait avec des ampoules ou des LED lumineuses. Un degré – une LED ou une ampoule allumée, etc. Mais en comptant ces lucioles, eh bien non ! Mais comme on dit, le plus des solutions simples- le plus fiable. Par conséquent, sans réfléchir longtemps, les développeurs ont pris de simples bandes LED et les ont disposées dans le bon ordre.

Au début du XXe siècle avec l'avènement les tubes à vide les premiers indicateurs de décharge de gaz sont apparus

A l'aide de tels indicateurs, il a été possible de déduire informations numériques en chiffres arabes. Auparavant, c'était sur de telles lampes que diverses indications étaient faites pour les appareils et autres appareils électroniques. Actuellement, les éléments à décharge de gaz ne sont presque jamais utilisés nulle part. Mais le rétro est toujours à la mode, c'est pourquoi de nombreux radioamateurs collectionnent de magnifiques montres avec indicateurs de décharge de gaz pour eux-mêmes et leurs proches.


L’inconvénient des lampes à décharge est qu’elles consomment beaucoup d’électricité. On peut discuter de la durabilité. Dans notre université, nous utilisons encore des fréquencemètres dans nos laboratoires. indicateurs de décharge de gaz.

Indicateurs à sept segments

Avec l’avènement des LED, la situation a radicalement changé pour le mieux. Les LED elles-mêmes consomment petit courant. Si vous les placez dans la bonne position, vous pouvez afficher absolument n'importe quelle information. Afin de mettre en valeur tous les chiffres arabes, seules sept bandes lumineuses LED suffisent - des segments, disposés d'une certaine manière :

À presque tous ces indicateurs à sept segments, un huitième segment est également ajouté - un point, de sorte qu'il soit possible d'afficher la valeur entière et fractionnaire de n'importe quel paramètre.

En théorie, nous obtenons un indicateur à huit segments, mais à l'ancienne, on l'appelle aussi un indicateur à sept segments.

Quel est le résultat? Chaque bande de l'indicateur à sept segments est éclairée par une LED ou un groupe de LED. De ce fait, en mettant en évidence certains segments, on peut afficher des chiffres de 0 à 9, ainsi que des lettres et des symboles.

Types et désignation sur le schéma

Il existe des indicateurs à sept segments à un chiffre, à deux chiffres, à trois chiffres et à quatre chiffres. Je n'ai jamais vu plus de quatre catégories.

Dans les diagrammes, l'indicateur à sept segments ressemble à ceci :

En effet, en plus des bornes principales, chaque indicateur à sept segments possède également une borne commune avec une anode commune (OA) ou une cathode commune (OC).

Le circuit interne d'un indicateur à sept segments avec une anode commune ressemblera à ceci :


et avec une cathode commune comme celle-ci :


Si nous avons un indicateur à sept segments avec une anode commune (OA), alors dans le circuit, nous devons fournir une alimentation « plus » à cette broche, et s'il s'agit d'une cathode commune (OC), alors « moins » ou masse.

Comment vérifier un indicateur à sept segments

Nous avons les indicateurs suivants :


Afin de vérifier un indicateur moderne à sept segments, nous n'avons besoin que d'un multimètre doté d'une fonction de test de diodes. Pour commencer, nous recherchons une conclusion générale - cela peut être soit OA, soit OK. Ici seulement au hasard. Eh bien, nous vérifions ensuite les performances des segments restants de l'indicateur selon les diagrammes ci-dessus.

Comme vous pouvez le voir sur la photo ci-dessous, le segment en cours de test s'allume. Nous vérifions les autres segments de la même manière. Si tous les segments sont allumés, alors un tel indicateur est intact et peut être utilisé dans vos développements.


Parfois, la tension du multimètre n'est pas suffisante pour tester un segment. Par conséquent, nous prenons une alimentation et la réglons sur 5 Volts. Pour limiter le courant traversant le segment, nous vérifions une résistance de 1 à 2 kilo-Ohm.


De la même manière, nous vérifions l'indicateur du récepteur chinois


Dans les circuits, des indicateurs à sept segments sont connectés à des résistances à chaque broche

Dans notre monde moderne les indicateurs à sept segments sont remplacés par des indicateurs à cristaux liquides capables d'afficher absolument n'importe quelle information

mais pour les utiliser, vous avez besoin de certaines compétences dans la conception de circuits de tels appareils. Par conséquent, les indicateurs à sept segments sont encore utilisés aujourd’hui en raison de leur faible coût et de leur facilité d’utilisation.

Les indicateurs LED à sept segments sont très populaires parmi les dispositifs d'affichage de valeurs numériques et sont utilisés sur les panneaux avant des fours à micro-ondes, machines à laver, horloges numériques, compteurs, minuteries, etc. Par rapport aux indicateurs LCD, les segments d'indicateur LED brillent brillamment et sont visibles sur une longue distance et sous un grand angle de vision. Pour connecter un indicateur 4 bits à sept segments à un microcontrôleur, au moins 12 lignes d'E/S seront nécessaires. Par conséquent, il est presque impossible d'utiliser ces indicateurs avec des microcontrôleurs dotés d'un petit nombre de broches, par exemple des séries de la société. Bien sûr, vous pouvez utiliser différentes méthodes multiplexage (dont une description peut être trouvée sur le site Web dans la section « Schémas »), mais même dans ce cas, il existe certaines limites pour chaque méthode, et elles utilisent souvent des algorithmes logiciels complexes.

Nous examinerons la méthode de connexion d'un indicateur via l'interface SPI, qui ne nécessitera que 3 lignes d'E/S du microcontrôleur. Dans le même temps, le contrôle de tous les segments indicateurs restera.

Pour connecter un indicateur 4 bits à un microcontrôleur via le bus SPI, une puce de pilote spécialisée produite par l'entreprise est utilisée. Le microcircuit est capable de piloter huit indicateurs à sept segments avec une cathode commune et comprend un décodeur BCD, des pilotes de segment, un circuit de multiplexage et une RAM statique pour stocker les valeurs numériques.

Le courant traversant les segments indicateurs est réglé à l’aide d’une seule résistance externe. De plus, la puce prend en charge le contrôle de la luminosité de l'indicateur (16 niveaux de luminosité) à l'aide du PWM intégré.

Le circuit discuté dans l'article est un circuit de module d'affichage avec une interface SPI qui peut être utilisé dans les conceptions de radioamateur. Et nous ne sommes plus intéressés par le circuit lui-même, mais par le travail avec le microcircuit via l'interface SPI. L'alimentation du module +5 V est fournie à la broche Vcc, lignes de signalisation MOSI, CLK et CS sont conçus pour la communication entre un appareil maître (microcontrôleur) et un appareil esclave (puce MAX7219).

Le microcircuit est utilisé dans une connexion standard ; les seuls composants externes nécessaires sont une résistance qui fixe le courant à travers les segments, une diode de protection pour l'alimentation et un condensateur de filtrage pour l'alimentation.

Les données sont transférées vers la puce par paquets de 16 bits (deux octets), qui sont placés dans le registre à décalage de 16 bits intégré à chaque front montant du signal CLK. Nous désignons un paquet de 16 bits par D0-D15, où les bits D0-D7 contiennent des données, D8-D11 contiennent l'adresse du registre, les bits D12-D15 n'ont aucune signification. Le bit D15 est le bit de poids fort et est le premier bit reçu. Bien que la puce soit capable de contrôler huit indicateurs, nous envisagerons de travailler avec seulement quatre. Ils sont contrôlés par les sorties DIG0 - DIG3, situées en séquence de droite à gauche, les adresses 4 bits (D8-D11) qui leur correspondent sont 0x01, 0x02, 0x03 et 0x04 (format hexadécimal). Le registre de chiffres est implémenté à l'aide de RAM sur puce avec une organisation 8x8 et est directement adressable afin que chaque chiffre individuel sur l'écran puisse être mis à jour à tout moment. Le tableau suivant montre les chiffres adressables et les registres de contrôle de la puce MAX7219.

Registre

Adresse

Valeur HEX

Pas d'opération

Mode de décodage

Nombre d'indicateurs

Fermer

Test d'indicateur

Registres de contrôle

La puce MAX1792 dispose de 5 registres de contrôle : mode de décodage (Decode-Mode), contrôle de la luminosité des indicateurs (Intensité), registre du nombre d'indicateurs connectés (Scan Limit), contrôle marche/arrêt (Shutdown), mode test (Display Test).

Allumer et éteindre la puce

Lorsque l'alimentation est appliquée à la puce, tous les registres sont réinitialisés et elle passe en mode d'arrêt. Dans ce mode, l'affichage est éteint. Pour passer en mode de fonctionnement normal, le bit D0 du registre d'arrêt (adresse 0Сh) doit être activé. Ce bit peut être effacé à tout moment pour forcer le pilote à s'éteindre, laissant le contenu de tous les registres inchangé. Ce mode peut être utilisé pour économiser de l'énergie ou en mode alarme par clignotement du voyant (activation et désactivation séquentielles du mode Arrêt).

Le microcircuit passe en mode Arrêt en transmettant séquentiellement l'adresse (0Сh) et les données (00h), et en transférant 0Ch (adresse) puis 01h (données) revient au fonctionnement normal.

Mode de décodage

A l'aide du registre de sélection du mode de décodage (adresse 09h), vous pouvez utiliser le décodage du code BCD B (caractères d'affichage 0-9, E, H, L, P, -) ou sans décodage pour chaque chiffre. Chaque bit du registre correspond à un chiffre, la définition d'un chiffre logique correspond à l'activation du décodeur pour ce bit, la mise à 0 signifie que le décodeur est désactivé. Si un décodeur BCD est utilisé, alors seul le quart de données le plus bas dans les registres de chiffres (D3-D0) est pris en compte, les bits D4-D6 sont ignorés, le bit D7 ne dépend pas du décodeur BCD et est responsable de l'activation le point décimal sur l'indicateur si D7 = 1. Par exemple, lorsque les octets 02h et 05h sont envoyés en séquence, l'indicateur DIG1 (deuxième chiffre en partant de la droite) affichera le chiffre 5. De même, lors de l'envoi de 01h et 89h, l'indicateur DIG0 affichera le chiffre 9 avec la virgule décimale incluse. . Le tableau ci-dessous montre liste complète caractères affichés lors de l'utilisation du décodeur BCD de la puce.

Symbole

Données dans les registres

Segments activés = 1

Vide

*Le point décimal est réglé par le bit D7=1

Lorsque le décodeur BCD est hors service, les bits de données D7-D0 correspondent aux lignes de segment (A-G et DP) de l'indicateur.

Contrôle de la luminosité des indicateurs

La puce vous permet de contrôler par programme la luminosité des indicateurs à l'aide du PWM intégré. La sortie PWM est contrôlée par le quartet de poids faible (D3-D0) du registre d'intensité (adresse 0Ah), qui vous permet de définir l'un des 16 niveaux de luminosité. Lorsque tous les bits d’un quartet sont mis à 1, la luminosité maximale de l’indicateur est sélectionnée.

Nombre d'indicateurs connectés

Le registre Scan-Limit (adresse 0Bh) fixe la valeur du nombre de bits desservis par le microcircuit (1 ... 8). Pour notre version 4 bits, la valeur 03h doit être écrite dans le registre.

Test d'indicateur

Le registre responsable de ce mode est situé à l'adresse 0Fh. En définissant le bit D0 dans le registre, l'utilisateur active tous les segments indicateurs, tandis que le contenu des registres de contrôle et de données ne change pas. Pour désactiver le mode Display-Test, le bit D0 doit être 0.

Interface avec microcontrôleur

Le module indicateur peut être connecté à n'importe quel microcontrôleur doté de trois lignes d'E/S libres. Si le microcontrôleur dispose d'un module matériel SPI intégré, le module indicateur peut être connecté en tant que périphérique esclave sur le bus. Dans ce cas, les lignes de signal SPI SDO (sortie de données série), SCLK (horloge série) et SS (sélection d'esclave) du microcontrôleur peuvent être directement connectées aux broches MOSI, CLK et CS de la puce MAX7219 (module), le Le signal CS est actif bas.

Si le microcontrôleur ne dispose pas de SPI matériel, l'interface peut être organisée en logiciel. La communication avec le MAX7219 commence par tirer et maintenir la ligne CS basse, puis envoyer 16 bits de données séquentiellement (MSB en premier) sur la ligne MOSI sur le front montant du signal CLK. Une fois la transmission terminée, la ligne CS redevient haute.

Dans la section téléchargements, les utilisateurs peuvent télécharger le texte source du programme de test et le fichier HEX du firmware, qui implémente un compteur 4 bits conventionnel avec affichage des valeurs sur un module indicateur avec une interface SPI. Le microcontrôleur utilisé est une interface implémentée par logiciel, les lignes de signal CS, MOSI et CLK du module indicateur sont connectées respectivement aux ports GP0, GP1 et GP2. Le compilateur mikroC est utilisé pour Microcontrôleurs PIC(microElektronika

Pour commenter les documents du site et recevoir accès totalà notre forum dont vous avez besoin registre .


Schéma de connexion pour un indicateur à un chiffre et sept segments
Schéma de connexion pour un indicateur à sept segments à plusieurs chiffres

Dispositif d'affichage d'informations numériques. Il s’agit de la mise en œuvre la plus simple d’un indicateur pouvant afficher des chiffres arabes. Des indicateurs multisegments et matriciels plus complexes sont utilisés pour afficher les lettres.

Comme son nom l'indique, il se compose de sept éléments d'affichage (segments) qui s'allument et s'éteignent séparément. En les incluant dans différentes combinaisons, ils peuvent être utilisés pour créer des images simplifiées de chiffres arabes.
Les segments sont désignés par les lettres A à G ; huitième segment - point décimal (point décimal, DP), conçu pour afficher des nombres fractionnaires.
Parfois, des lettres sont affichées sur l'indicateur à sept segments.

Ils viennent dans une variété de couleurs, généralement blanc, rouge, vert, jaune et bleu. De plus, ils peuvent être de tailles différentes.

De plus, l'indicateur LED peut être à un chiffre (comme dans la figure ci-dessus) ou à plusieurs chiffres. Fondamentalement, des indicateurs LED à un, deux, trois et quatre chiffres sont utilisés dans la pratique :

En plus de dix chiffres, des indicateurs à sept segments sont capables d'afficher des lettres. Mais peu de lettres ont une représentation intuitive à sept segments.
En latin : majuscule A, B, C, E, F, G, H, I, J, L, N, O, P, S, U, Y, Z, minuscule a, b, c, d, e, g , h, je, n, o, q, r, t, u.
En cyrillique : A, B, V, G, g, E, i, N, O, o, P, p, R, S, s, U, Ch, Y (deux chiffres), b, E/Z.
Par conséquent, les indicateurs à sept segments ne sont utilisés que pour afficher des messages simples.

Au total, l'indicateur LED à sept segments peut afficher 128 caractères :

Un indicateur LED typique comporte neuf fils : l'un va aux cathodes de tous les segments et les huit autres vont à l'anode de chaque segment. Ce schéma est appelé "circuit cathodique commun", il existe aussi des schémas avec anode commune(alors c'est l'inverse). Souvent, non pas une, mais deux bornes communes sont réalisées à différentes extrémités de la base - cela simplifie le câblage sans augmenter les dimensions. Il en existe aussi des soi-disant « universels », mais personnellement, je n'en ai pas rencontré. De plus, il existe des indicateurs avec un registre à décalage intégré, ce qui réduit considérablement le nombre de broches de port du microcontrôleur impliquées, mais ils sont beaucoup plus chers et sont rarement utilisés dans la pratique. Et comme l'immensité ne peut être appréhendée, nous ne considérerons pas de tels indicateurs pour l'instant (mais il existe aussi des indicateurs avec un nombre beaucoup plus important de segments, matriciels).

Indicateurs LED à plusieurs chiffres fonctionnent souvent sur un principe dynamique : les sorties des segments du même nom de tous les chiffres sont reliées entre elles. Pour afficher des informations sur un tel indicateur, le microcircuit de contrôle doit fournir cycliquement du courant aux bornes communes de tous les chiffres, tandis que le courant est fourni aux bornes du segment selon qu'un segment donné est allumé dans un chiffre donné.

Connexion d'un indicateur à un chiffre à sept segments à un microcontrôleur

Le diagramme ci-dessous montre comment un indicateur à sept segments à un chiffre est connecté au microcontrôleur.
Il convient de tenir compte du fait que si l'indicateur avec CATHODE COMMUNE, alors sa sortie commune est connectée à "Terre", et les segments sont enflammés par l'alimentation unité logiqueà la sortie du port.
Si l'indicateur est ANODE COMMUNE, puis il est alimenté sur son fil commun "plus" tension, et les segments sont allumés en commutant la sortie du port à l'état zéro logique.

L'indication dans un indicateur LED à un chiffre est réalisée en appliquant un code binaire aux broches du port du microcontrôleur du chiffre correspondant du niveau logique correspondant (pour les indicateurs avec OK - les logiques, pour les indicateurs avec OA - les zéros logiques).

Résistances de limitation de courant peut être présent ou non dans le diagramme. Tout dépend de la tension d'alimentation fournie à l'indicateur et caractéristiques techniques indicateurs. Si, par exemple, la tension fournie aux segments est de 5 volts et qu'ils sont conçus pour une tension de fonctionnement de 2 volts, alors des résistances de limitation de courant doivent être installées (pour limiter le courant qui les traverse pour une tension d'alimentation accrue et ne pas brûler non seulement l'indicateur, mais aussi le port du microcontrôleur).
Il est très simple de calculer la valeur des résistances de limitation de courant, en utilisant la formule de grand-père Ohm.
Par exemple, les caractéristiques de l'indicateur sont les suivantes (extraites de la fiche technique) :
— tension de fonctionnement — 2 volts
— courant de fonctionnement — 10 mA (=0,01 A)
— tension d'alimentation 5 volts
Formule de calcul :
R= U/I (toutes les valeurs de cette formule doivent être en Ohms, Volts et Ampères)
R= (tension d'alimentation - tension de fonctionnement)/courant de fonctionnement
R= (5-2)/0,01 = 300 ohms

Schéma de connexion pour un indicateur LED à sept segments à plusieurs chiffres Fondamentalement, la même chose que lors de la connexion d'un indicateur à un chiffre. La seule chose est que des transistors de contrôle sont ajoutés dans les cathodes (anodes) des indicateurs :

Ce n'est pas représenté sur le schéma, mais entre les bases des transistors et les broches du port du microcontrôleur, il faut inclure des résistances dont la résistance dépend du type de transistor (les valeurs des résistances sont calculées, mais vous pouvez également essayer d'utiliser des résistances d'une valeur nominale de 5 à 10 kOhm).

L'indication par décharges s'effectue de manière dynamique :
— le code binaire du chiffre correspondant est mis aux sorties du port PB pour le 1er chiffre, puis le niveau logique est appliqué au transistor de commande du premier chiffre
— le code binaire du chiffre correspondant est mis aux sorties du port PB pour le 2ème chiffre, puis le niveau logique est appliqué au transistor de commande du deuxième chiffre
— le code binaire du chiffre correspondant est mis aux sorties du port PB pour le 3ème chiffre, puis le niveau logique est appliqué au transistor de commande du troisième chiffre
- donc en cercle
Dans ce cas, il faut prendre en compte :
— pour les indicateurs avec D'ACCORD la structure du transistor de commande est utilisée NPN(contrôlé par unité logique)
- pour indicateur avec OA- structure du transistor PNP(contrôlé par zéro logique)

Depuis l'avènement de l'ingénierie radio et de l'électronique Retour L'appareil électronique et la personne étaient accompagnés de divers voyants lumineux, boutons, interrupteurs à bascule, cloches (signal micro-ondes prêt - ding !). Certains appareils électroniques fournissent un minimum d’informations, car il serait inutile d’en fournir davantage. Par exemple, une LED allumée sur votre chargeur de téléphone chinois indique que le chargeur est branché et qu'il est alimenté. Mais il existe aussi des paramètres pour lesquels il serait plus pratique de fournir des informations objectives. Par exemple, la température de l’air extérieur ou l’heure du réveil. Oui, tout cela pourrait également être réalisé avec des ampoules ou des LED lumineuses. Un degré - une diode ou une ampoule allumée. Combien il y a de degrés, tant d'indicateurs sont allumés. Compter ces lucioles est peut-être une chose courante, mais encore une fois, combien de ces lumières seront nécessaires pour afficher la température avec une précision au dixième de degré ? Et de manière générale, quelle surface occuperont ces LED et ampoules sur un appareil électronique ?

Les appareils d'affichage pratiques à sept segments doivent disposer d'au moins huit bornes de connexion externes ; sept d'entre eux donnent accès à des segments photovoltaïques individuels et le huitième fournit une connexion commune à tous les segments. Dans le premier cas, le dispositif est connu sous le nom d’affichage à anode commune à sept segments ; dans ce dernier cas, le dispositif est connu sous le nom d'affichage à cathode commune à sept segments.

Pour piloter un affichage d'anode commune, le pilote doit avoir une sortie active-basse, dans laquelle chaque lecteur de segment est normalement haut mais passe au niveau bas pour allumer le segment. Pour piloter un affichage à cathode commune, le pilote doit avoir une sortie active active.

Et au début du XXe siècle, avec l'avènement des tubes électroniques, apparaissent les premiers indicateurs à décharge de gaz.

Avec l'aide de tels indicateurs, il était possible d'afficher des informations numériques en chiffres arabes. Auparavant, ces lampes étaient utilisées pour réaliser diverses indications pour les instruments et autres appareils électroniques. Actuellement, les éléments à décharge de gaz ne sont presque jamais utilisés nulle part. Mais le rétro est toujours à la mode, c'est pourquoi de nombreux radioamateurs collectionnent de magnifiques montres à décharge de gaz pour eux-mêmes et leurs proches.

L’explication complète de ceci est un peu plus compliquée, comme suit. Lorsque la tension est nulle, le segment est effectivement invisible. Cependant, lorsque la tension d'entrée est significativement positive ou négative, le segment devient effectivement visible, mais si la tension de commande est maintenue pendant plus de quelques centaines de millisecondes, le segment peut devenir visible en permanence et n'avoir aucune autre signification.

Dans ces conditions, le segment est désactivé. Le segment est donc inclus dans ces conditions. Cette forme d'entraînement est communément connue sous le nom de système « d'entraînement en pont » doublant la tension. La séquence d'actions du programme est la suivante. Le système en cascade simple décrit précédemment souffre d'un défaut sérieux dans la mesure où l'affichage devient flou pendant la période de comptage réelle, devenant stable et lisible uniquement lorsque chaque comptage est terminé et que la porte d'entrée est fermée. Ce type d'affichage "flou et lu" est très gênant à regarder.

Inconvénients des lampes à décharge : elles mangent beaucoup. On peut discuter de la durabilité. Dans notre université, nous utilisons encore des fréquencemètres sur les déchargeurs de gaz dans les salles de laboratoire.

Avec l’avènement des LED, la situation a radicalement changé. Les LED elles-mêmes consomment une petite quantité de courant. Si vous les placez dans la bonne position, vous pouvez afficher absolument n'importe quelle information. Pour mettre en valeur tous les chiffres arabes, il suffisait d'un petit quelque chose Sept (d'où le nom indicateur à sept segments) bandes LED lumineuses disposées d'une certaine manière :

La figure 13 montre un circuit compteur de fréquence amélioré qui utilise le verrouillage de l'affichage pour surmonter le défaut ci-dessus. Ce schéma fonctionne comme suit. En même temps, la porte d'entrée s'ouvre et les compteurs commencent à additionner les impulsions du signal d'entrée. Ce compteur continue pendant exactement une seconde et pendant cette période, les verrous à quatre bits empêchent la sortie du compteur d'atteindre les pilotes d'affichage ; l'affichage reste stable pendant cette période.

Après quelques secondes, la séquence est répétée à nouveau, les compteurs redémarrant puis comptant les impulsions de fréquence d'entrée pendant une seconde, pendant laquelle l'écran donne une lecture continue du comptage précédent, etc.

Presque tous ces indicateurs à sept segments ajoutent également un huitième segment - un point, de sorte qu'il soit possible d'afficher la valeur entière et fractionnaire de n'importe quel paramètre.

Ainsi, le circuit de la figure 13 produit un affichage stable qui se met à jour une fois par seconde ; en pratique, la période de comptage réelle de celui-ci et du diagramme de la figure 12 peut être définie comme étant une décennie avec des secondes multiples ou partielles, à condition que l'affichage de sortie soit mis à l'échelle en conséquence.

Notez qu'un fréquencemètre à trois chiffres peut indiquer des fréquences maximales de 999 Hz lors de l'utilisation d'une base de temps d'une seconde, de 99 kHz lors de l'utilisation d'une base de temps de 100 ms, de 9 kHz lors de l'utilisation d'une base de temps de 10 ms et de 999 kHz lors de l'utilisation d'une base de temps de 10 ms. Base de temps de 1 ms.

En théorie, il s'avère qu'il s'agit d'un indicateur à huit segments, mais à l'ancienne, on l'appelle aussi à sept segments, et il n'y a pas d'erreur là-dedans.

En bref, un indicateur à sept segments est constitué de LED situées les unes par rapport aux autres dans un certain ordre et enfermées dans un seul boîtier.

Cette méthode peut être comprise à l'aide des figures 14 et 15. Ces commutateurs sont connectés ensemble et assurent l'action réelle du multiplexeur et doivent être considérés comme des commutateurs électroniques à grande vitesse qui sont commutés de manière répétée via les positions 1, 2 et la séquence d'opérations de le circuit est le suivant. Supposons d'abord que l'interrupteur soit en position.

Quelques instants plus tard, l'interrupteur passe en position 3, ce qui fait que l'écran 3 affiche un chiffre après quelques minutes, tout le cycle recommence à se répéter et ainsi de suite, en ajoutant l'infini. En pratique, environ 50 de ces cycles se produisent chaque seconde, de sorte que l'œil ne voit pas les écrans s'allumer et s'éteindre séparément, mais les perçoit comme un affichage apparemment stable qui affiche le nombre 327, ou un autre nombre dicté par le segment de données.

Si l'on considère le schéma d'un seul indicateur à sept segments, il ressemble à ceci :

Comme nous le voyons, l'indicateur à sept segments peut être soit avec anode commune (CA), donc avec cathode commune (OC). En gros, si nous avons un sept segments avec une anode commune (OA), alors dans le circuit nous devrions accrocher un « plus » sur cette broche, et si avec une cathode commune (OC), alors un « moins » ou une masse . À quelle broche nous appliquons la tension, cette LED s'allumera. Montrons tout cela dans la pratique.

Dans les multiplexeurs pratiques, le courant d'affichage de crête est assez élevé pour garantir une luminosité d'affichage suffisante. En figue. La figure 15 montre un exemple d'un procédé de multiplexage amélioré appliqué à un fréquencemètre à trois chiffres. Cette méthode présente deux avantages principaux.

Si ces bornes sont actives haut, elles auront les caractéristiques suivantes. Figue. 18 et 19. La figure 18 montre la technique de suppression d'ondulation utilisée pour fournir une suppression des zéros non significatifs sur un affichage à quatre chiffres qui indique la quantité.

Nous avons en stock les indicateurs LED suivants :

Comme nous pouvons le constater, les appareils à sept segments peuvent être à un ou plusieurs bits, c'est-à-dire deux, trois ou quatre appareils à sept segments dans un seul boîtier. Afin de vérifier un appareil moderne à sept segments, nous n'avons besoin que d'un multimètre doté d'une fonction de test de diodes. Nous recherchons une conclusion générale - elle peut être soit OA, soit OK - au hasard, puis nous examinons les performances de tous les segments de l'indicateur. Nous vérifions le sept-segment de trois bits :

Ainsi, l'écran affiche. Fondamentalement, ils sont faciles à utiliser, allumez-les et ils s'allument. Ils peuvent être ennuyeux car ils ont une sorte de polarité, ce qui signifie qu'ils ne fonctionneront que si vous les connectez correctement. Si vous annulez la tension positive et négative, elles ne s'allumeront pas du tout.

Aussi ennuyeux que cela puisse paraître, c'est aussi très utile. L'autre fil est la cathode. La cathode est reliée à la terre. En gros, cela se résumera à cela. Pour la cathode commune, vous appliquez du courant aux broches que vous souhaitez allumer. Multiplexage. Il existe même des contrôleurs d'affichage pour cela si vous ne voulez pas vous soucier de changer de logiciel.

Oups, un segment a pris feu, nous vérifions donc les autres segments de la même manière.

Parfois, la tension sur le dessin animé n'est pas suffisante pour vérifier les segments indicateurs. Par conséquent, nous prenons l'alimentation, la réglons sur 5 volts, attachons une résistance de 1 à 2 kiloOhm à une borne de l'alimentation et commençons à vérifier l'unité à sept segments.

Commande d'affichage à 7 segments

Ainsi, lorsque vous avez une anode commune à 4 chiffres et 7 segments multiplexés. Tout d’abord, nous devons savoir de quel type d’affichage nous disposons, car il existe deux formes possibles : une cathode commune et une anode commune. Choses dont vous aurez besoin pour ce tutoriel. À gauche : une vue graphique d'un affichage à 7 segments montrant une disposition générale du câblage interne et des emplacements des broches.

À ce stade, faites attention à la sortie initiale, car vous en aurez besoin plus tard lors du chargement du programme. Si l'affichage était une cathode ordinaire, nous l'annulerions. Au bas de l'article se trouve une photo des circuits qui équipent mon prototype de carte. Nous fournissons également une bibliothèque pour contrôler plusieurs écrans.

Pourquoi avons-nous besoin d’une résistance ? Lorsqu'une tension est appliquée à la LED, elle commence à consommer fortement du courant lorsqu'elle est allumée. Par conséquent, à ce moment-là, il peut s'éteindre. Pour limiter le courant, une résistance est connectée en série avec la LED. Vous pouvez en savoir plus dans cet article.

Comptage hexadécimal sur un affichage à 7 segments

L’inconvénient est qu’ils sont gourmands en ressources. Cet affichage particulier comporte quatre chiffres et deux affichages à deux points. Cependant, l'appareil fournit également contrôle numérique luminosité de l'écran via un modulateur large bande interne. Dans de tels cas, la sortie peut être effectuée sur plusieurs écrans à 7 segments.

Cela permet d'économiser des contacts sur le boîtier puis sur la commande. En conséquence, on parle d'affichages à anode commune ou à cathode commune. Il est préférable d'extraire la sortie qui correspond à un segment ou à un point décimal de la feuille de données pour l'afficher. Un écran à 7 segments conçu pour les 10-20 mA habituels s’allumera toujours, quoique faiblement. Mais cela ne nécessite pas d'attribuer des contacts. La répartition suivante de ce segment est basée sur.

De la même manière, nous vérifions le segment à quatre chiffres et sept d'une radio chinoise

Je pense que cela ne devrait pas poser de difficultés particulières. Dans les circuits, des circuits à sept segments sont connectés à des résistances à chaque broche. Cela est également dû au fait que les LED, lorsqu'une tension leur est appliquée, consomment frénétiquement du courant et s'éteignent.

Si un objectif différent est utilisé, cela est en principe possible, mais doit être pris en compte lors de la programmation. La conversion de chiffres individuels en un modèle de sortie spécifique peut être effectuée à l'aide de quelque chose appelé. Tous les autres segments doivent être sombres. Si cette case est cochée pour tous les chiffres, le tableau suivant est donné.

DANS programme d'essai les nombres de 0 à 9 sont affichés séquentiellement sur un affichage à 7 segments. Le numéro de sortie est stocké dans un compteur de registre et incrémenté de 1 au cours du cycle. Si le registre atteint une valeur de 10, il est réinitialisé à 0. Une fois levé, une boucle d'attente se produit qui garantit qu'un certain temps s'est écoulé dans la version suivante. Normalement, vous ne feriez pas de cycles d'attente aussi longs, mais il ne s'agit pas d'attendre, il s'agit de contrôler un affichage à 7 segments. Utiliser une minuterie pour cela demande trop d’efforts.

Dans notre monde moderne, les appareils à sept segments sont déjà remplacés par des indicateurs LCD capables d'afficher des informations complètement différentes.

mais pour les utiliser, vous avez besoin de certaines compétences dans la conception de circuits de tels appareils. Jusqu'à présent, il n'y a rien de plus simple ou de moins cher que les indicateurs LED à sept segments.

Le problème réel, et donc la partie intéressante de cet article, se produit directement après la boucle d'étiquette. Veuillez noter que la valeur du compteur doit être doublée. Ceci est directement lié au fait que la mémoire flash fonctionne par mots et non par octets. Le deuxième exemple sur cette page le fait différemment. Il montre comment, via une autre entrée de table, la génération d'octets de remplissage peut être empêchée par l'assembleur. Il est également intéressant que le calcul nécessite un registre contenant la valeur 0.

Par conséquent, cette constante doit d'abord être chargée dans un registre et ce n'est qu'ensuite que l'addition peut être effectuée à l'aide de ce registre. Ce qui est intéressant, c'est que ce fait se retrouve dans de nombreux programmes et que les constantes dans la grande majorité des cas sont la constante 0. Par conséquent, de nombreux programmeurs réservent un registre dès le début pour cela et l'appellent le registre zéro.

Dans cet article, nous parlerons de l'affichage numérique.
Les indicateurs LED à sept segments sont conçus pour afficher des chiffres arabes de 0 à 9 (Fig. 1).

Ces indicateurs sont à un chiffre, qui n'affichent qu'un seul chiffre, mais il peut y avoir plusieurs groupes à sept segments combinés en un seul logement (à plusieurs chiffres). Dans ce cas, les nombres sont séparés par un point décimal (Fig. 2)

Malheureusement, il y a un problème car l'affichage nécessite huit ports – quatre publicités nécessiteraient 32 ports. Mais il existe plusieurs manières. Les registres à décalage sont déjà décrits dans un autre tutoriel. Cela faciliterait la création des 32 lignes de sortie requises avec seulement trois broches. Le principe de contrôle n'est pas différent du pilotage d'un seul affichage à 7 segments, seule la façon dont les « broches de sortie » approchent leurs valeurs est différente et est déterminée par l'utilisation de registres à décalage. Sur ce moment cependant, une autre option de contrôle doit être affichée.



Fig.2.

L'indicateur est appelé à sept segments car le symbole affiché est constitué de sept segments distincts. À l'intérieur du boîtier d'un tel indicateur se trouvent des LED, chacune éclairant son propre segment.
Il est problématique d'afficher des lettres et autres symboles sur de tels indicateurs, c'est pourquoi des indicateurs à 16 segments sont utilisés à ces fins.

Nous reviendrons sur le multiplexage ci-dessous. Le multiplexage signifie que les quatre écrans ne sont pas allumés en même temps, mais un seul à la fois. un bref délais. Si le changement entre les affichages se produit plus rapidement que ce que nous pouvons percevoir, les quatre lumières semblent fonctionner simultanément, même si une seule est allumée pendant une courte période de temps. De cette façon, quatre écrans peuvent partager des segments de segment individuels, et tout ce qui est nécessaire est 4 lignes de contrôle supplémentaires pour les 4 écrans avec lesquels l'écran est activé.

Un aspect de ce type de contrôle est la fréquence de multiplexage, c'est-à-dire le cycle complet de transition d'un affichage à un autre. Il doit être suffisamment haut pour empêcher l'affichage de scintiller. L'œil humain est lent, dans un cinéma à 24 images par seconde, avec le téléviseur pour être sûr que les images fixes sont également calmes, chaque segment doit être contrôlé à au moins 100 Hz, donc il se connecte au moins toutes les 10 ms. Cependant, dans des cas exceptionnels, même 100 Hz peuvent encore scintiller, par exemple lorsque l'écran se déplace rapidement ou en cas d'interférences avec des sources de lumière artificielle fonctionnant avec du courant alternatif.

Les indicateurs LED sont de deux types.
Dans le premier d'entre eux, toutes les cathodes, c'est-à-dire les bornes négatives de toutes les LED sont combinées ensemble et une borne correspondante leur est attribuée sur le boîtier.
Les bornes restantes de l'indicateur sont connectées à l'anode de chaque LED (Fig. 3, a). Ce circuit est appelé « circuit à cathode commune ».
Il existe également des indicateurs dans lesquels les LED de chaque segment sont connectées selon un circuit avec une anode commune (Fig. 3, b).



Figure 3.

Chaque segment est désigné par une lettre correspondante. La figure 4 montre leur emplacement.

Figure 4.

À titre d'exemple, considérons un indicateur à deux chiffres et sept segments GND-5622As-21 rouge. D'ailleurs, il existe d'autres couleurs, selon le modèle.
À l'aide d'une batterie de trois volts, vous pouvez activer des segments, et si vous combinez un groupe de broches en un groupe et que vous les alimentez, vous pouvez même afficher des nombres. Mais cette méthode n'est pas pratique, c'est pourquoi des registres à décalage et des décodeurs sont utilisés pour contrôler les indicateurs à sept segments. De plus, les broches indicatrices sont souvent connectées directement aux sorties du microcontrôleur, mais uniquement lorsque des indicateurs à faible consommation de courant sont utilisés. La figure 5 montre un fragment d'un circuit utilisant le PIC16F876A.



Figure 5.

Pour contrôler l'indicateur à sept segments, le décodeur K176ID2 est souvent utilisé.
Cette puce est capable de convertir un code binaire composé de zéros et de uns en chiffres décimaux de 0 à 9.

Pour comprendre comment tout cela fonctionne, vous devez assembler un circuit simple (Fig. 6). Le décodeur K176ID2 est logé dans un boîtier DIP16. Il dispose de 7 broches de sortie (broches 9 à 15), chacune dédiée à un segment spécifique. Le contrôle des points n'est pas fourni ici. Le microcircuit dispose également de 4 entrées (broches 2 à 5) pour fournir du code binaire. Les 16ème et 8ème broches sont respectivement alimentées en alimentation positive et négative. Les trois conclusions restantes sont auxiliaires, j'en parlerai un peu plus tard.



Fig.6.

DD1-K176ID2
R1 - R4 (10 - 100 kOhms)
HG1-GND-5622As-21

Il y a 4 interrupteurs à bascule dans le circuit (tous les boutons sont possibles), lorsque vous appuyez dessus, un logique est fourni aux entrées du décodeur depuis l'alimentation plus. À propos, le microcircuit lui-même est alimenté par une tension de 3 à 15 Volts. Dans cet exemple, l'ensemble du circuit est alimenté par une alimentation de 9 volts.

Il y a également 4 résistances dans le circuit. Ce sont ce qu'on appelle des résistances de rappel. Ils sont nécessaires pour garantir que l'entrée logique est faible lorsqu'il n'y a pas de signal. Sans eux, les lectures de l'indicateur peuvent ne pas s'afficher correctement. Il est recommandé d'utiliser le mêmerésistance de 10 kOhm à 100 kOhm.

Dans le schéma, les broches 2 et 7 de l'indicateur HG1 ne sont pas connectées. Si vous connectez la broche DP à l'alimentation moins, le point décimal s'allumera. Et si vous appliquez un moins à la sortie Dig.2, alors le deuxième groupe de segments s'allumera également (affichera le même symbole).

Les entrées du décodeur sont conçues de telle manière que pour afficher les chiffres 1, 2, 4 et 8 sur l'indicateur, il suffit d'appuyer sur un bouton (le layout comporte des interrupteurs à bascule correspondant aux entrées D0, D1, D2 et D3). S'il n'y a pas de signal, le chiffre zéro s'affiche. Lorsqu'un signal est appliqué à l'entrée D0, le chiffre 1 est affiché. Et ainsi de suite. Pour afficher d'autres numéros, vous devez appuyer sur une combinaison d'interrupteurs à bascule. Le tableau 1 nous dira sur lesquels nous devons appuyer.


Tableau 1.

Pour afficher le chiffre "3", vous devez en appliquer un logique aux entrées D0 et D1. Si vous appliquez un signal à D0 et D2, le chiffre « 5 » s'affichera(Fig.6).



Fig.6.

Voici un tableau étendu dans lequel nous voyons non seulement le chiffre attendu, mais également les segments (a - g) qui composeront ce chiffre.



Tableau 2.

Les 1ère, 6ème et 7ème broches du microcircuit sont auxiliaires (respectivement S, M, K).

Dans le schéma (Fig. 6), la 6ème broche «M» est mise à la terre (au moins de l'alimentation) et il y a une tension positive à la sortie du microcircuit pour travailler avec un indicateur à cathode commune. Si un indicateur avec une anode commune est utilisé, celui-ci doit être appliqué à la 6ème broche.

Si un un logique est appliqué à la 7ème broche « K », alors le signe indicateur s'éteint, le zéro permet l'indication. Dans le diagramme cette conclusion mis à la terre (à l'alimentation moins).

Une unité logique (plus alimentation) est fournie à la première sortie du décodeur, ce qui permet d'afficher le code converti sur l'indicateur. Mais si vous appliquez un zéro logique à cette broche (S), les entrées cesseront de recevoir un signal et le signe actuellement affiché se figera sur l'indicateur.

Une chose intéressante à noter est que nous savons que l'interrupteur à bascule D0 active le chiffre « 1 » et que l'interrupteur à bascule D1 active le chiffre « 2 ». Si vous appuyez sur les deux interrupteurs à bascule, le chiffre 3 s'affichera (1+2=3). Et dans d'autres cas, l'indicateur affiche la somme des nombres qui composent cette combinaison. Nous arrivons à la conclusion que les entrées du décodeur sont disposées de manière réfléchie et présentent des combinaisons très logiques.

Vous pouvez également regarder la vidéo de cet article.

Connectons un indicateur LED à sept segments à la carte Arduino et apprenons à le contrôler à l'aide de la bibliothèque Led4Digits.h.

La leçon précédente a décrit en détail les microcontrôleurs. Connectons un tel indicateur à la carte Arduino.

Le schéma de connexion de l'indicateur à la carte Arduino ressemble à ceci.

Je l'ai assemblé sur un circuit imprimé.

Pour gérer les indicateurs, j'ai écrit la librairie Led4Digits.h :

Et payez.

La bibliothèque permet de gérer des indicateurs à sept segments :

  • jusqu'à quatre chiffres ;
  • avec toutes les variantes de polarités des impulsions de commande (toutes) ;
  • travaille dans un processus parallèle ;
  • permet d'afficher sur l'indicateur :
    • segments de chaque catégorie ;
    • le chiffre de chaque chiffre ;
    • entier 0 ... 9999 ;
  • pour afficher un entier, le nombre de chiffres peut être spécifié ;
  • Il existe un mode pour supprimer les chiffres non significatifs.

Vous pouvez télécharger la bibliothèque Led4Digits.h à partir de ce lien :

Et payez. Seulement 40 roubles. par mois pour accéder à toutes les ressources du site !

Comment installer est écrit en .

Je ne fournirai pas les textes sources. Vous pouvez les rechercher dans les fichiers de la bibliothèque. Comme toujours, les commentaires sont nombreux. Je vais décrire en détail, avec des exemples, comment utiliser la bibliothèque.

Bibliothèque de contrôle LED pour Arduino Led4Digits.

Voici la description du cours. Je n'ai fourni que des méthodes et propriétés publiques.

classe Led4Digits (
publique:
chiffre d'octet ; // codes de contrôle de segments binaires
void regen(); // régénération, la méthode doit être appelée régulièrement
void tetradToSegCod (octet dig, octet tétrad); // conversion de tétrade en codes de segment
impression booléenne (valeur entière non signée, octet digitNum, octet vide) ; // sortie entière



} ;

Constructeur.

Led4Digits (octet typeLed, octet digitPin0, octet digitPin1, octet digitPin2, octet digitPin3,
octet segPinA, octet segPinB, octet segPinC, octet segPinD,
octet segPinE, octet segPinF, octet segPinG, octet segPinH);

tapezLed Définit les polarités des impulsions de contrôle pour les signaux de sélection de bits et de segments. Prend en charge tous les schémas de connexion ().

tapezLed Sélection de catégorie Sélection des segments Type de circuit
0 -_- -_- Anode commune avec touches de sélection de décharge
1 _-_ -_- Anode commune
2 -_- _-_ Cathode commune
3 _-_ _-_ Cathode commune avec touches de sélection de décharge

chiffrePin0...chiffrePin3– sorties pour la sélection des chiffres. Si digitPin = 255, alors le chiffre est désactivé. Cela vous permet de connecter des indicateurs avec moins de chiffres. digitPin0 – chiffre inférieur (droit).

segPinA...segPinH– sorties de contrôle de segment.

Par exemple,

signifie : indicateur type 1 ; sorties de décharge 5,4,3,2 ; sorties des segments 6,7,8,9,10,11,12,13.

Méthode void regen()

La méthode doit être appelée régulièrement dans un processus parallèle. Il régénère l'image sur les indicateurs. Le temps de cycle de régénération est égal à la période d'appel de la méthode multipliée par le nombre de bits.

Par exemple,

// gestionnaire d'interruption 2 ms
void timerInterrupt() (
disp.regen(); // régénération de l'indicateur
}

Tableau de chiffres d'octets

Contient l'état des segments. Le chiffre est le bit le moins significatif, le bit le moins significatif du chiffre est le segment « A » du bit le moins significatif. Un bit à l'état 1 signifie que le segment est allumé.

Par exemple,

chiffre = B0000101 ;

signifie que dans le deuxième chiffre, les segments « A » et « C » sont allumés.

Un exemple de programme qui éclaire séquentiellement tous les segments de chaque chiffre.

// segments en cours d'exécution
#inclure
#inclure

//
Affichage Led4Digits (1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
minuterie d'interruption 2 ms
MsTimer2 :: start (); // autorisation d'interruption
}

boucle vide() (
pour (int je = 0; je< 32; i++) {
si (i == 0) disp.digit= 1 ;
sinon si (i == 8) disp.digit= 1;
sinon si (i == 16) disp.digit= 1;
sinon si (i == 24) disp.digit= 1;
autre(
disp.digit = disp.chiffre<< 1;
disp.digit = disp.chiffre<< 1;
disp.digit = disp.chiffre<< 1;
disp.digit = disp.chiffre<< 1;
}
retard (250);
}
}

//gestionnaire d'interruption 2 ms
void timerInterrupt() (
disp.regen(); // régénération de l'indicateur
}

Dans le tableau de chiffres, 1 est décalé et les indicateurs l'affichent.

Méthode void tetradToSegCod (byte dig, byte tetrad)

La méthode vous permet d'afficher les chiffres et les lettres du code hexadécimal en chiffres individuels. A des arguments :

  • creuser – chiffre numéro 0 ... 3 ;
  • tétrade – code de caractère décimal. Le code 0 affichera le chiffre « 0 », le code 1 - le chiffre « 1 », le code 14 - la lettre « E ».

Par exemple,

tétrade(2, 7);

affichera le chiffre « 7 » dans le troisième chiffre.

Un exemple de programme qui change tour à tour les caractères de chaque chiffre.

// les chiffres un par un
#inclure
#inclure

// indicateur type 1 ; sorties de décharge 5,4,3,2 ; sorties de segments 6,7,8,9,10,11,12,13
Affichage Led4Digits (1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // minuterie d'interruption 2 ms
MsTimer2 :: start (); // autorisation d'interruption
}

boucle vide() (
pour (int je = 0; je< 64; i++) {
disp.tetradToSegCod(i>>4, i);
retard (250);
}
}

// gestionnaire d'interruption 2 ms
void timerInterrupt() (
disp.regen(); // régénération de l'indicateur
}

Méthode d'impression booléenne (valeur entière non signée, octet digitNum, octet vide)

La méthode affiche un entier sur les indicateurs. Il convertit le nombre binaire en BCD pour chaque chiffre. A des arguments :

  • valeur – le nombre affiché sur l’indicateur.
  • digitNum – nombre de chiffres pour le numéro. Il ne faut pas confondre cela avec le nombre de chiffres indicateurs. Vous souhaiterez peut-être afficher un nombre sur 2 chiffres et afficher des caractères sur les deux autres à l'aide de chiffres.
  • vide – signe de suppression de chiffres insignifiants. blank=0 signifie que le nombre doit être affiché avec tous des zéros. Le chiffre « 7 » ressemblera à « 0007 ». Si le blanc est différent de 0, les zéros non significatifs seront supprimés.

Si la valeur numérique dépasse le nombre autorisé pour le nombre de chiffres sélectionné (digitNum), alors la fonction affichera « --- » sur l'indicateur et retournera faux.

Un exemple de programme de sortie de nombres.

// numéro de sortie
#inclure
#inclure

// indicateur type 1 ; sorties de décharge 5,4,3,2 ; sorties de segments 6,7,8,9,10,11,12,13
Affichage Led4Digits (1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // minuterie d'interruption 2 ms
MsTimer2 :: start (); // autorisation d'interruption
}

boucle vide() (
pour (int je = 0; je< 12000; i++) {
disp.print(i, 4, 1);
retard (50);
}
}

// gestionnaire d'interruption 2 ms
void timerInterrupt() (
disp.regen(); // régénération de l'indicateur
}

Les deux dernières méthodes ne modifient pas l’état du segment « H » – ​​le point décimal. Pour changer l'état d'un point, vous pouvez utiliser les commandes :

chiffre |= 0x80 ; // allumer le point décimal
chiffre &= 0x7f; // éteindre le point décimal

Sortie vers des indicateurs de nombres négatifs (int).

Les nombres négatifs peuvent être générés comme suit :

  • Vérifiez le signe du numéro.
  • Si le nombre est négatif, imprimez un signe moins sur le chiffre le plus significatif et changez le signe du nombre en positif dans la fonction print().
  • Si le nombre est positif, désactivez le bit de signe et imprimez le nombre à l'aide de la fonction print().

Voici un programme qui démontre cette méthode. Il génère des nombres de -999 à 999.

// afficher des nombres négatifs
#inclure
#inclure

// indicateur type 1 ; sorties de décharge 5,4,3,2 ; sorties de segments 6,7,8,9,10,11,12,13
Affichage Led4Digits (1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // minuterie d'interruption 2 ms
MsTimer2 :: start (); // autorisation d'interruption
}

boucle vide() (

pour (int je = -999; je< 1000; i++) {

si je< 0) {
// le nombre est négatif
disp.digit = B01000000 ; // signe -
disp.print(i * -1, 3, 1);
}
autre(
disp.digit = B00000000 ; // efface le signe
disp.print(i, 3, 1);
}

retard (50);
}
}

// gestionnaire d'interruption 2 ms
void timerInterrupt() (
disp.regen(); // régénération de l'indicateur
}

Sortie vers des indicateurs de nombres fractionnaires, format flottant.

Il existe de nombreuses façons d'afficher des nombres à virgule flottante (floats) à l'aide des fonctions standard du langage C. Il s'agit tout d'abord de la fonction sprint(). Cela fonctionne très lentement, nécessite des conversions supplémentaires des codes de caractères en codes décimaux binaires, vous devez extraire un point d'une chaîne. Mêmes problèmes avec d'autres fonctions.

J'utilise une méthode différente pour afficher les valeurs des variables flottantes sur les indicateurs. La méthode est simple, fiable, rapide. Se réduit aux opérations suivantes :

  • Le nombre à virgule flottante est multiplié par 10 à la puissance correspondant au nombre de décimales requis. Si vous devez afficher 1 décimale sur les indicateurs, multipliez par 10, si 2, puis multipliez par 100, 3 décimales par 1000.
  • Ensuite, le nombre à virgule flottante est explicitement converti en entier (int) et affiché sur les indicateurs à l'aide de la fonction print().
  • Un point est placé dans le chiffre requis.

Par exemple, les lignes suivantes afficheront une variable flottante avec deux décimales vers les LED à sept segments.

flottant x = 2,12345 ;

disp.digit |= 0x80; //

On multiplie le nombre par 100, et en plaçant un point dans le troisième chiffre, on divise le résultat par 100.

Voici un programme qui affiche des nombres à virgule flottante de 0,00 à 99,99 sur les indicateurs.

// sortie à virgule flottante
#inclure
#inclure

// indicateur type 1 ; sorties de décharge 5,4,3,2 ; sorties de segments 6,7,8,9,10,11,12,13
Affichage Led4Digits (1, 5,4,3,2, 6,7,8,9,10,11,12,13);

void setup() (
MsTimer2::set(2, timerInterrupt); // minuterie d'interruption 2 ms
MsTimer2 :: start (); // autorisation d'interruption
}

boucle vide() (
flotter x = 0 ;

pour (int je = 0; je< 10000; i++) {
x += 0,01 ;

disp.print((int)(x * 100.), 4, 1);
disp.digit |= 0x80; // allume le point du troisième niveau

retard (50);
}
}

//gestionnaire d'interruption 2 ms
void timerInterrupt() (
disp.regen(); // régénération de l'indicateur
}

Comme vous pouvez le constater, la bibliothèque Led4Digits.h simplifie grandement le travail avec des indicateurs à diodes électroluminescentes (LED) à sept segments connectés à la carte Arduino. Je n'ai pas trouvé d'analogue d'une telle bibliothèque.

Il existe des bibliothèques pour travailler avec des écrans LED via un registre à décalage. Quelqu'un m'a écrit qu'il avait trouvé une bibliothèque qui fonctionne avec un écran LED directement connecté à la carte Arduino. Mais lors de son utilisation, les chiffres indicateurs brillent de manière inégale et clignotent.

Contrairement à ses analogues, la bibliothèque Led4Digits.h :

  • Fonctionne comme un processus parallèle. Dans la boucle principale, le programme charge les données dans certaines variables, qui sont automatiquement affichées à l'écran. La sortie d'informations et la régénération de l'indicateur se produisent lors d'une interruption de minuterie, invisible pour le programme principal.
  • Les chiffres affichés brillent uniformément, sans clignoter. Cette propriété est assurée par le fait que la régénération s'effectue selon un cycle strictement défini par une interruption temporisée.
  • La bibliothèque a un code compact, s'exécute rapidement et charge peu le contrôleur.

Dans la prochaine leçon, nous connecterons simultanément un indicateur LED et une matrice de boutons à la carte Arduino. Écrivons une bibliothèque pour une telle conception.

Catégorie: . Vous pouvez le mettre en signet.


Haut