Allegria ! l'horloger fou est de retour !!

Le titre est délibérément provocateur parce qu'il aurait été:

AFFICHAGE I A MATRICE: HW SW TECHNIQUE ET UTILISATION

En effet, ce que je vais décrire sont l'affichage à matrice de points 8×8 (7×5 8×5) cherchant à comprendre les méthodes à la fois matériel et logiciel pour leur utilisation. Pour cela, je produit quelques prototypes (étaient ces état de l'art) horloges numériques qui utilisent seulement ces matrices. Il précise que les caractéristiques HW sont presque identiques (il change juste la broche) à la fois ANODE COMMUNE que Cathode commune. Donc, avant d'entrer précisément dans’ basant sur une vidéo pour montrer certains de ces prototypes.

NB: pour afficher des vidéos: sort cliquez sul lien: ouvre une boîte de dialogue vous demandant si vous souhaitez ouvrir ou enregistrer le fichier. Les vidéos peuvent être vues avec Windows Media Player ou similaire pour les fichiers wmv.

Mini Binary Clock

Cette vidéo montre comment une simple matrice 8×8 Vous pouvez afficher une horloge “RAIL”. Si elle avait pensé il y a le temps dans l'esprit au lieu de celui déjà présenté dans un autre article de la mine !

L'horloge en cascade

Dans cette vidéo, les valeurs d'horloge individuelles sont point affiché par le point: la séquence montre la formation de valeurs à partir de la gauche avec les dizaines d'heures, puis de suivre à la minute. Le second balayage est affiché par une troisième LED / pixel depuis le côté gauche sur l'afficheur.

L'horloge de glissement

personnages grands qui composent les heures, les minutes et les secondes pour faire défiler de droite à gauche indéfiniment. Compte tenu du temps nécessaire pour la formation du caractère, vous perdez environ 2/3 secondes entre le plein et l'affichage ultérieur.

mots d'horloge

Dans cette dernière vidéo d'une montre “en mots”. Dans ce cas, ne pas utiliser un écran à matrice de points, mais un dispositif particulier: la DL2416T. Il est un écran “intelligent” composé 4 chiffres avec plusieurs segments qui permet d'afficher les numéros, lettres et certains caractères spéciaux. ce dispositif, maintenant obsolète, Il est maintenant disponible dans les versions mises à jour, mais malheureusement tout à fait “cher”. Ceux qui sont en ma possession découlent de la cannibalisation de certains Matricielles les années 80/90. Comme vous pouvez le voir sur la vidéo, c'est le seul prototype terminé (pcb à la fois l'écran et la partie “principale” avec micro Arduino_Nano et l'électronique de commande).

CARACTERISTIQUES D'AFFICHAGE MATRIX

Sur Internet, il y a beaucoup d'images et des exemples sur l'utilisation de ces matrices: Ils peuvent être une aide à leur utilisation spécifique appronfondire. Cependant, de nombreux exemples sont superficiels et, à mon avis, non exhaustive. Donc ce que je vais décrire est que le résultat d'études et d'expériences personnelles. Toute référence est purement fortuite.

Dans la figure ci-dessous, on peut voir: l'écran 8×8, le module qui abrite à la fois l'écran de son dispositif de commande (MAX7219), la mise en page logique attribué et géré par croquis, et enfin l'affectation des broches de la matrice sur le module. L’ logé sur l'orientation du module d'affichage comporte une seule position (8 droite et la broche 8 à gauche) dans lequel si elle est placée à l'envers de toute évidence, il ne s'allume pas correctement. A partir de la quatrième figure, vous pouvez vérifier l'affectation de l'axe d'affichage avec ceux du contrôleur (MAX7219), On peut donc en déduire que les cathodes (Je vais appeler “CHIFFRE“) et quelles sont les anodes (Je vais appeler “SEGMENTS“). L'écran en question est CATHODE COMMUNE.

La raison pour laquelle j'ai appelé les cathodes “CHIFFRE” et anodes “SEGMENTS” Il vient de la façon dont il est géré à partir du matériel ou du logiciel, l'affichage et le contrôleur associé. Ces écrans peuvent être comparés à l'écran 7 segments + 1 définie comme “UNE”, “B”, “C”, “ré”, “E”, “F”, “g”, “DP” (virgule ou huitième segment). chaque colonne 8 LED / pixel de la matrice (voir la troisième figure) Il peut être un affichage 7+1 segments et ensuite un tableau peut être comparé à une chaîne de 8 affichage segmenté. Pour activer une seule LED / pixel est suffisante pour appliquer la broche “cathode” de la colonne à la masse et la broche “ANODO” le seul segment à une valeur logique “1” (+5V chute par R). E’ clair que, afin de former un caractère ou un chiffre est nécessaire pour activer la led / pixel selon un format prédéterminé en même temps (La persistance del'immagine à l'oeil): ou utiliser un multiplexage. Il n'a pas de sens pour vous connecter des chiffres et des segments (8+8 épingle) les sorties d'un microcontrôleur (avec des résistances évidemment tombent) et des complications inutiles programmatiques.

Dans mes projets, je toujours l'habitude de penser que le “Principe” de “registre à décalage” car avec seulement 3 la broche apte à entraîner une chaîne de 8 matrices connectés en cascade les uns aux autres ou 8 un affichage 7 segments. Avec une limitation (Ensuite, nous verrons que ce n'est pas) : seuls les modules “Cathode commune”. cette puce (faibles coûts si un module avec tant de l'écran est une valeur 1,5 une 5 euro) est le MAX7219. Les principales caractéristiques:

  • 3 PIN pour la conduite (CHARGE / CLOCK / DATA_IN).
  • multiplexage intégré.
  • prévue Dimmable.
  • Pin DATA_OUT pour connecter un autre affichage.
  • Il gère indifféremment aussi bien à l'affichage de segment que les matrices.
  • 7 registres pour les commandes d'exploitation et 8 par i chiffres.
  • Limitation de la luminosité, même de l'extérieur avec coupe.

COMMENT UTILISER ET PROGRAMME DE LA PUCE MAX7219

En utilisant cette puce dès maintenant pour tous les projets impliquant la gestion de l'affichage est une matrice ou un tableau LED segmenté aussi pour RGB. A propos de LED RGB peu que je publie la “ÉTOILE DE NOËL” bien qu'il ne soit pas la saison !. Nous approfondissons ensuite avec la puce et épinglez les différents registres:

DG0 / DG7 entraîner les cathodes de l'affichage, SEG_A / SEG_DP Voler les anodes de l'affichage. Per i afficher une matrice DG0 / DG7 Ils font référence aux colonnes tandis que SEG_A / DP Ils se réfèrent aux LED individuelles / colonne pIXEX. L’ Répartition sectorielle / LED et sa valeur binaire doit être configuré dans le registre “LES DONNÉES” sachant que le bit “DP” vallée 128 (0x80). la broche DE Il est relatif à des données d'entrée , goupille Charge / Cs sélectionner la puce, goupille CLK fournit l'horloge et enfin la broche DOUT Il est ce qui permet la connexion en cascade d'une autre puce pour un maximum de 8. dernière broche “ISET “pour régler la valeur de la luminosité en connectant un R 10K (un un trimmer) le pôle positif.

Voyons voir les enregistrements:

Utilisation et signification des registres individuels:

  • inscription 0: mis à “0x00” Il ne sert qu'à afficher dans les chaînes. (0VVER aucune opération pour l'affichage spécifique).
  • journaux 1/8: Ce sont les registres qui traitent des segments individuels pour l'allumage des segments individuels (voir Format registre de données).
  • inscription 9: Decode_Mode: Il a besoin de puce pour voir s'il est utilisé le code BCD ou aucun.
  • inscription 10: Modification de la luminosité. valeur 0 une 15. Avec une valeur de zéro ne sera pas descendre de l'écran, mais sa luminosité minimale. Vous pouvez faire des effets lumineux qui porte ce registre de 0 une 15 d'une manière progressive et cadencées.
  • inscription 11: limite de balayage: En effet, il doit indiquer le nombre de chiffres scannés: une table sur la fiche technique indique les valeurs à assigner.
  • inscription 12: mode de fonctionnement (Fermer). Alternant la valeur de ce registre (la 0x00 un 0x01) Vous obtenu par la mise sous tension ou désactiver l'affichage (sans perdre aucune valeur actuelle). Il peut aider à créer le clignotement d'effet en alternance les deux valeurs mesurées façon.
  • inscription 13/14: aucun.
  • inscription 15: Test de l'appareil: vous obtenez l'éclairage de toutes les LED connectées.

Fondamentalement, pour exécuter une commande spécifique, s'il vous plaît envoyer à la puce 2 octet: l'adresse de registre et la valeur qui doit assumer en fonction de la même commande: par exemple démarrer normalement vous devez envoyer la séquence: “0C00“.

 

LE LOGICIEL DE GESTION

Voici la partie la plus intéressante: comment gérer ces écrans. Sur le net, De toute évidence, vous trouverez de nombreux exemples et les bibliothèques et au début, j'avais téléchargé quelques-unes de ces bibliothèques: ledcontrol e LEDCONTROLMS et utilisé pour les premiers essais . Je ne suis pas satisfait, mais sont valables pesonalmente pourquoi j'ai développé mon avantage une “sui generis Bibliothèque” capable de gérer à la fois écran cathodique ANODO domune. je définissais “sui generis” parce qu'il n'a pas été écrit sur les lignes, mais est en fait un fichier (.ino) qui contient toutes les fonctions nécessaires et mises en œuvre pour les deux matrices pour 7 segments. E’ il suffit d'inclure ce fichier dans l'esquisse, puis faire les appels. (Je me réserve le droit de convertir ce fichier dans une véritable bibliothèque). Comme les mots de cet article concerne les matrices, nous voyons comment ils peuvent être gérés.

Tout d'abord, vous devez définir le nombre de matrices doivent être traitées: un ou plusieurs. Si un seul tableau, il n'y a pas de problèmes particuliers, quand il s'agit connetterne plus d'un doit être adopté ou un pcb ou faire des branchements volants. Nous voyons ce chiffre:

La première matrice est connectée à la micro avec la broche classique CHARGE / DIN / CLOCK: donc s'il est le seul besoin de rien. A partir de la deuxième connexions et suivantes LOAD / CLK sont reliés entre eux, mais le second réseau (ou le troisième et ainsi de suite) son DE Il est relié à DOUT de la matrice précédente. E’ tâche du logiciel cible correctement matrices. (Rappelez-vous le registre “zéro” ?) . L'utilisation de ce petit module facilite les connexions:

Les entrées sont ceux observés avant et la broche de sortie sont CCV, GND, CHARGE, CLK, DOUT. Pour le prototype d'horloge de glissement ou en cascade, je 4 afficher en logé dans ce pcb:

 

A gauche de la broche principale d'entrée, en bas à droite de la broche de sortie pour connecter toutes les autres matrices. L'espace de chaque module est délimité par des rectangles en rouge. Ne manquez pas la broche VCC et GND.

Nous avoir dit que nous faisons les premiers pas de gestion. Les premières opérations à effectuer dans “installer” de tous les croquis sont: (désormais pour “DISPOSITIF” identifier la puce et “AFFICHER” les chiffres uniques ou des colonnes de la matrice). Toutes ces opérations doivent être effectuées pour chaque “dispositif” présent. Il convient de noter que lorsque le système est, dans la plupart des cas, vous aurez un auto-test de la puce qui allume toutes les LED pour lesquelles il peut être une bonne idée de réaliser ces opérations avant tout autre, sinon vous aurez la persistance des LED allumé.

  • Affectation des broches de la puce micro comme sortie.
  • Faire l'arrêt pour initialiser la puce.
  • Réglez la luminosité.
  • Réglez le codage.
  • Réglez le mode test.
  • Réglez le “Limite de balayage”.

Toutes ces opérations sont gérées par une fonction dans ma bibliothèque définie comme “Led_MX_Init” qui fixe les broches, effectue une initialisation et affecte le procédé “CATHODE” la “ANODO” commun. Pour plus de commodité pour le débogage de cette bibliothèque J'ai aussi ajouté (par drapeau dans init) la possibilité de visualiser la sortie série les valeurs à transmettre aux dossiers. Pour le développement de la bibliothèque, je mis en œuvre une esquisse, en série, mettre en place un dialogue à travers un menu qui permet l'exécution de toutes les fonctions de la bibliothèque pour les deux matrices pour l'affichage 7 segments.

J'avais précisé que la puce ne peut gérer l'affichage CATHODE COMMUNE: vrai dans une certaine mesure, parce que vous pouvez également utiliser les ANODE communes mais les mesures suivantes:

  • Un HW niveau: inverser les signaux DG0 / DG7 interposant un HEX INVERTER (74LS04). De cette façon ANODES arrive à la valeur logique correcte.
  • A livello SW: activer le drapeau “ACMODE” fonction INIT dans la bibliothèque. En présence de ces fonctions d'activation qui gèrent les leds / pixel inverser la valeur passée à travers la’ fonction spéciale (Led_Value = ~ Led_Value;).
  • A l'état de’ artothèque utilise cette fonction uniquement pour l'affichage 7 segments.

Laissez-nous maintenant spécifiquement pour chacun des premiers prototypes de l'horloge décrit les méthodes et astuces utilisées dans le développement du même. En ce qui concerne les montres, il est clair que nous avons besoin d'un RTC à partir de laquelle lire l'heure et la date. Il n'y a pas de spécifications particulières: vous pouvez utiliser DS1307 la Ds3231 ou PCF8583 (modèle vetusto). Les seules différences sont la lecture des registres et de décodage. Soit dit en passant, je n'ai pas utilisé la bibliothèque pour la gestion de ces RTC: J'accède directement à vous inscrire avec les fonctions de bibliothèque “câble“.

L'horloge binaire: Ceci est le plus simple de tous les autres. L'esquisse gère un dispositif (matrice 8×8) et après l'initialisation de l'appareil et vérifier le bon fonctionnement de RTC, exécute une boucle dans la fonction “boucle” la lecture des registres des valeurs de temps RTC, minutes,secondes,jour, mois. Étant donné que ces valeurs sont formées “BCD” (les heures 12 Ils sont en binaire 0001 0010) aucun décodage n'est pas nécessaire pour leur visualisation. Remontons: Je dis que la matrice peut être vue comme un ensemble de 8 affichage dans lequel chaque colonne représente le 8 segments (7+1) dont le codage est affecté dans le registre 1 pour la colonne 1, 2 pour la colonne 2 (et ainsi de suite pour les autres colonnes) concernant le codage imposé par la puce (voir la figure “enregistrer des données“). Donc, l'astuce est: pour chaque colonne de sélection, puis la valeur est téléchargée “célèbres 12 heures” Ils sont attribués comme suit:

Et ainsi de suite pour toutes les autres colonnes. Et le masque couvre les bits dont l'affichage n'est pas nécessaire. Il est alors de contrôler la colonne de copeaux par colonne (de 1 un 8 mais si seulement le spécifique 1, 2, 4, 5, e 7) et cela fournit la fonction bibliothèque “LEDMTX_Setcolumn” qui fournissent le numéro d'appareil, le numéro de la colonne et sa valeur.

L'horloge de glissement: Ceci est plus complexe que la précédente, mais pas compliqué et il est seule raison de’ algorithme qui détermine le glissement des valeurs. Il convient dans ce contexte un autre fichier (Led_Tabel.ino) qui est sous la forme de tableaux, quelles sont les configurations binaires qui doivent assumer les colonnes individuelles pour la représentation d'un caractère numérique (neuf à zéro) pour les deux matrices pour l'affichage 7 segments. Maintenant, si ces écrans la configuration est déterminée et sans ambiguïté, pour des matrices ayant une grille de 8 disponible×8 LED / pixel devient libre choix du développeur de configurer les différents numéros comme plaît le plus.

Voici un exemple: pour l'affichage du nombre zéro segmentée a la configuration suivante: 0111 1110. Tout point décimal (segment “DP“) Il peut être inséré conduisant à “1” il bit 8 ou en activant le drapeau dans la fonction appropriée. Ainsi, un octet pour chaque numéro et la fonction qui effectue l'affichage pointée par le réseau en fonction du nombre. (zéro extrémité du premier octet de la matrice, la seconde, et ainsi de suite).

Différents est le système pour les tableaux: En fait, pour le même nombre qu'il faut bien 8 configurations, à savoir un octet pour chaque colonne. Le même numéro zéro est défini comme suit: “0,60,98,82,74,70,60,0“. Les valeurs sont exprimées en décimal et la configuration est un choix personnel. Il en résulte que la fonction qui indique le nombre doit pointer vers le premier octet de chaque série * 8 (“0” * “8” = “0” et pointant vers le premier octet; “1” * “8” = 8 et pointant vers le premier octet qui configure le premier). Puis colonne / colonne permet la visualisation. La figure ci-dessous un exemple de la façon dont elles peuvent être composées de caractères dans la grille 8×8.

Cela dit, nous voyons ce qui est l'algorithme mis au point par moi, pour afficher les valeurs d'une horloge en faisant glisser de la droite vers la colonne de gauche de la colonne. Coulissant est sur 4 des dispositifs pour un total de 4*8 = 32 colonne: Vous créez ensuite un tableau de 32 colonne. Je laisse de côté la première partie de la configuration (RTC, init 7219 etc.) puis dans le cycle “boucle” vous faites:

  • La lecture des registres RTC
  • Décodage des heures valeurs, minutes et secondes afin d'obtenir les valeurs individuelles des dizaines et des unités. Ces valeurs sont utilisées pour vous indiquer le début de la table des caractères des groupes individuels 8 octet.
  • A partir de la valeur des dizaines d'heures d'une routine extrait l'octet par octet relatif de la configuration de la table et les inserts en position 32 tableau la valeur extraite une à la fois. Commencez à ce point le tableau balayage de la position “zéro” affiche le contenu de la première colonne du premier dispositif vers la gauche et se poursuit pendant 32 positions (Les appareils sont 4 connecté en série). Une fois que cette analyse est qu'il se déplace vers la gauche d'une position tout au long du tableau, et le cycle recommence avec l'octet suivant de configuration. Lorsque le cycle est terminé 8 octets, il continue avec les unités d'heures jusqu'à ce que’ de la seconde unité avec le même système. On obtient ainsi l'effet de glissement. Mais entre les lectures de l'autre’ RTC et son affichage complet sont perdus 2/3 secondes par cycle.

A ce stade, est dans un aspect toujours pas pris en compte dans la gestion de l'affichage. Comme je l'ai dit les appareils sont 4 connecté en série. Puis aussi de diriger l'ensemble du dispositif (du premier au dernier) sachant que chaque commande est constituée de 2 octet (Adresse / valeur) Nous devons envoyer un ensemble d'octets égal au nombre de l'appareil sur lequel les valeurs cibles et les commandes:

Ou si l'appareil est la quatrième séquence est la suivante: “0000 0000 0000 xxxx“. (Si le dispositif a été la première séquence serait: “xxxx“)

Colombe: “0000” Il est le code de NULL FONCTIONNEMENT, “xxxx” est la commande à envoyer à la quatrième dispositif (première à droite). Mais la sérialisation du quatrième groupe d'octets (dans la pratique la dernière). La puce reçoit le premier 4 mais depuis octets dans le cycle reçoit également après zéro, glisser les différents octets d'un dispositif. Pour tout cela, il offre une fonction spécifique en lecture d'une table (préparé pour 8 dispositif) je 4 valeurs de départ de toute évidence de la dernière. E’ Mais la même fonction qui détermine en fonction du nombre de périphériques pour envoyer plusieurs octets.

Désolé, mais il est plus facile à faire que de dire. J'espère avoir été clair, mais MISE EN GARDE tout est relatif à la position du premier dispositif auquel est attribué le numéro 1.

L'horloge en cascade: Ici, nous sommes plus complexes, du point de vue de la mise en œuvre, ces persentati jusqu'à présent. Je vous avoue que j'ai eu quelques problèmes dans la construction de l'algorithme droit pour obtenir l'effet que vous avez vu dans le film. Skipping également ici les opérations standard qui sont exécutées dans “installer” pour aller directement à la méthode d'invention. Puis le cycle “boucle” Vous commencez à lire les valeurs RTC, les convertir en des dizaines d'heures et minutes, unités d'heures et minutes. Les secondes sont affichées en clignotant dans le troisième dispositif de gauche, DEl “DP” de la première colonne sur la base de la valeur du bit “1” secondes. Du film peut être considéré comme initialement toutes les matrices sont définies avec les valeurs, mère, chaque matrice ne change que si la valeur qui devrait afficher les modifications par rapport à la précédente. Si chaque valeur lue par le CCF (des dizaines d'heures ou minutes, unités d'heures ou minutes) changement, puis la mise à niveau de son écran est activé. Ainsi, chaque 60 secondes (“environ” parce que l'affichage complet d'une matrice occupe un peu de temps) Il met à jour les minutes ou les heures, etc.. Pour obtenir l'effet “chute d'eau” des LED individuelles de chaque colonne que vous avez à prendre de la table (ont été produites trois, vous pouvez donc changer la source de données) le seul octet (premier au huitième) et il commence à clignoter la première LED (bit 1) par 15 Mme, puis continuer avec la seconde, mais faire de sorte que ladite LED précédente reste allumée (selon la configuration du caractère). Le zéro octet est ignoré. Le cycle se répète jusqu'à la fin des huit octets. Lorsque ce cycle est passé au caractère suivant jusqu'à la fin. je 15 ms retard entre un flash et l'autre est un compromis entre la vitesse de l'effet désiré et de l'exécution. De toute évidence, le clignotement des secondes ne sera pas précise surtout si elles changent en même temps l'heure et la minute.(la 23.59 une 00.00).

Il est difficile de décrire ce mécanisme, moi-même, même après avoir produit et modifié par l'ajout de paramètres variables, Je peux à peine ricomprenderlo (!!!). Si vous êtes un débutant dans la programmation, les routines sont suffisamment commentées pour être compris.

L'horloge parlante: Et voici la’ dernier (espérant en attendant de ne pas vous ennuyer ont). Je voulais aussi mentionner afin de faire une comparaison entre les différents modules d'affichage: dans ce cas, retiré du tiroir du vieux trucs, mais encore pleinement fonctionnel, il est le DL2416T un affichage particulier aujourd'hui remplacé par DLR2416. Malheureusement, ce dernier est cher.

La différence entre les deux modèles, nous pouvons le voir avec ce chiffre:

La première consiste à 4 affichage segmenté (14 si je ne l'ai pas mal compté) tandis que la seconde est une matrice 7×5. Les caractéristiques d'affichage de ces, compatible à la fois comme fonctions des broches, Ils peuvent être résumés comme:

  • 4 chiffres individuellement adressable (“00”, “01”, “10”, “11”).
  • Dispositif adressable individuellement (deux broches de sélection)
  • effaçable individuellement.
  • Jeu de caractères spéciaux, alphanumérique et numérique.
  • Gestion automatique multiplexage.
  • nourriture 5 un 6V max.
  • Gestion du curseur
  • D'autres caractéristiques dans la fiche technique de chaque.

Dans la figure ci-dessous valable pour les deux modèles, la broche de connexion:

nous vérifions: 2 broche de sélection (CE1 / 2), 2 broches pour la gestion du curseur (CUS,QUEUE), deux broches pour la sélection de chiffres (A0 / A1), épingle CLR annulation, épingle BL pour l'arrêt sans perte de valeurs (utile pour le blincaggio), 7 épingle (D0 / D6) et ENTRÉE DE DONNÉES, Enfin, la broche NOUS pour l'écriture de la valeur. Une transition HIGH-LOW-HIGH permet l'écriture de ce qui est prévu. expérimenté valeur optimale: 5nous.

alors la complexité de la connexion à deux écrans (comme dans le prototype), Je devais produire un pcb comme celui-ci:

J'ai conçu un circuit en tant que ledit circuit imprimé sert uniquement le logement des deux écrans par des broches de connexion en parallèle D0 / D6 et amener à se connecter à “principale” i épingle A0 / A1, NOUS, CL1, CL2, BL1, BL2. Je frapperai CUS e QUEUE dans ce contexte, ils ne sont pas utilisés et sont réglés sur des valeurs par défaut (niveau logique “0” e “1”). Une note particulière concerne la broche CL1 / 2 e BL1 / 2: selon la fiche technique pour l'annulation d'un affichage ou son abblencamento nous sommes indépendants de la sélection du même écran: ne peut pas être (mais il est un choix) connecté en parallèle si vous voulez supprimer ou désactiver l'affichage unique. Ce que je pensais plus tard dans le logiciel. Ici, à la place du pcb sur la carte principale du micro Arduino_Nano et les deux 74HC595.

 

Passons alors au cœur du prototype.

Il est clair que, étant donné le nombre de connexions (6 par i INPUT DATA) e 9 pour les commandes, Ils courraient toutes broches ARDUINO (Un ou Nano pour être les Mega quittent etc.), donc nous avons besoin d'une approche différente comme on peut le voir dans ce schéma:

Dans le tableau, nous pouvons voir 2 74HC595 (registre à décalage) où dans le premier qu'ils sont définis dans les sorties de broches D0 / D6 par rapport à l'entrée de données de l'afficheur tandis que dans le second la broche de commande sont définies: Lorsque / A1, CL1 / 2, BL1 / 2, CE1 / 2. Les deux puces sont connectés en cascade et selon les règles du registre à décalage (recevoir des données en série pour les transmettre en parallèle). signal QH qui se connecte à entrée de données la seconde.

Le régime est lié à la première version en ce sens qu'il est pas strictement nécessaire de séparer les signaux OE, LE, CLK car il faut que le signal est individuellement OE qui commande la sortie Support / Q7 (sinon ils sont en haute impédance). E’ mais mon choix la séparation des signaux. le signal M (réinitialisation maître) Il sert à réinitialiser la puce. La tige de commande est connectée à la broche Arduino; le signal “NOUS” Il est indépendant du reste et est attribuée à un autre micro broches.

En ce qui concerne les puces 7219 Vous pouvez être défini “intelligent” car en plus de la fonction de registre à décalage, besoin de commandes pour l'activation des fonctions, je 74hc595 Je suis “stupide” parce qu'ils se limitent à recevoir les bits série et si ceux-ci sont > 8 transmettre des bits successifs à la puce suivante, et ainsi de suite. Profitant de ce système, l'algorithme pour commander l'affichage individuellement, peuvent consister en:

  • Envoyer à une puce de la 8 bits relatifs à la configuration de caractère (8 bit zéro semper).
  • Envoyer à la prochaine puce du bit de commande pour sélectionner la configuration d'affichage et chiffres; opérations, ces, effectuée en séquence.
  • Stabiliser les signaux permettant la’ OE les deux puces.
  • commutation du signal “NOUS” pour l'écriture réelle sur l'écran.

E’ clair que d'avoir à écrire sur 8 chiffre (2 affichage par 4 chiffre) sigole les lettres qui composent le texte intégral (comme vous avez pu voir le film) nécessaire pour déterminer la séquence précise de commandes et le caractère à envoyer . À cet égard, je l'ai construit le tableau suivant.

En lisant ce tableau ?. exemple: vous voulez charger l'affichage “1” chiffre “0” avec un caractère: alors vous êtes envoyé à la première puce et la valeur du caractère en fonction de la puce de valeur décimale “62“. La sortie de bit de mise en page (Q0 / Q7) Il correspond aux signaux A1 / A0, BL2, CL2, CE2, BL1, CL1, CE1 que je suis au niveau logique “1” (non-exploitation) ou un niveau logique “0” d'exploitation. Ne pas tromper les chiffres indiqués dans le tableau comme je l'ai utilisé pour calculer correctement la valeur quand ils sont zéro ou un. Une autre chose à garder à l'esprit est que selon la façon dont les puces ont été connectés aux signaux, puis à afficher, on ne dit pas que la première puce doit nécessairement être l'un pour les données ou que pour les signaux.

Encore un peu de patience: De plus, nous terminons ce prototype avec son logiciel. Comme vous le savez aussi dans ce cas, il s'agit de gérer une horloge. L'esquisse est pas complexe, mais il peut être brièvement décrit comme suit:

  • activation de Solita’ RTC avec les contrôles de présence habituelle et l'efficacité qu'en l'absence du système.
  • Configuration de la broche connectée à la puce 74HC595.
  • Dans la boucle “boucle” lecture des valeurs RTC, transcoder de la même et la préparation d'une chaîne se compose des mots “SONT LES HEURES ” les valeurs de temps (des dizaines et des unités) entrecoupées avec un point, puis “LA ” valeur du jour, transcoder du mois et transcoder de la semaine. Donc, à la fin de la chaîne contiendra:
  • SONT LES HEURES DE xx.xx xx mai vendredi —-> exemple. Les espaces entre un mot et un autre sont obtenus avec le caractère “00” binaire qui ne produit rien visible.
  • Après avoir construit la chaîne, en fonction de sa longueur réelle est insérée dans une matrice d 8 position d'octet 8, le premier caractère de la chaîne.
  • Il effectue une boucle 8 cycles d'envoyer les valeurs du tableau à 8 Digit dei (un ensemble de commandes spécifiques à afficher et de chiffres et data_value).
  • Elle maintient la matrice de décalage 8 octets de droite à gauche.
  • Il répète le cycle.

On obtient ainsi, l'effet de glissement qui la vitesse programmée de 250ms peut être considérée comme optimale pour la visualisation.

 

CONCLUSION:

Je reconnais que cet article est assez long et probablement je décris les choses et risapute évidentes. Mais de mon point de vue de voir les moyens et les choix de mise en œuvre, Ils peuvent toujours être une bonne source d'information, notamment pour ceux qui sont débutants ou tout simplement un amateur comme moi.

Si j'ai écrit quelques inexactitudes, s'il vous plaît excuse pas.

Merci pour votre attention.

GVSOFT mai 2018

PS: si vous êtes intéressé par la documentation et croquis connexes écrire à gvsoft75@hotmail.com.

 

 

 

 

2 réponses
  1. theremino
    theremino dit :

    Je voyais les choses, ou dans l'une des horloges folles précédentes il y avait une explication de la façon de décoder le signal DCF77?
    J'ai essayé le produit mais ne peut pas trouver.

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire