Créer un affichage de débogage pour les microcontrôleurs: 6 étapes

Créer un affichage de débogage pour les microcontrôleurs: 6 étapes

Table des matières:

Anonim

Cet affichage est très pratique si vous utilisez la fonction ADC des microcontrôleurs.

Il suffit de deux broches pour contrôler l’affichage (trois si vous souhaitez également contrôler le verrouillage). Avec deux sept segments, il peut afficher jusqu'à 0xFF au format hexadécimal. C’est toute la gamme 8 bits, quelle est la largeur variable la plus utilisée pour les petits UC.

Je l'ai construite parce que l'application finale n'a pas d'écran et je voulais savoir ce qui se passait avant de l'avoir terminée.

Vous avez besoin de deux registres à décalage 74HC959, de deux afficheurs à sept segments et de 14 (16) résistances. Vous avez besoin de 16 si vous souhaitez utiliser les points, qui ne sont pas implémentés dans le logiciel. Mais l'utilisation des points étendrait les valeurs affichables à 10 bits ou 0 à 1027. Je vous laisse le soin de comprendre cela.

Provisions:

Étape 1: le schéma

Nous utilisons deux registres à décalage 74HC595 pour interfacer les affichages à sept segments. Que vous utilisiez l'anode commune ou la cathode commune 7 segments, vous devez ajuster le circuit. J'ai utilisé des cathodes communes. Ce qui signifie que chaque segment est une LED verte et que les cathodes de toutes les LED sont connectées ensemble. (Broches 3 et 8 de l’affichage 7 segments)

Les registres à décalage fonctionnent de cette façon:

Chaque fois que vous appliquez une impulsion à l'entrée de décalage, l'état actuel de la broche d'entrée série est décalé dans la mémoire du 74HC595. Chaque fois qu'une impulsion sur l'entrée de verrouillage arrive, l'état de la mémoire interne est utilisé pour piloter les sorties.

Après 8 cycles de décalage, la première entrée est à nouveau décalée sur la broche 9 et peut être utilisée comme entrée pour un autre 74HC595. Ceci s'appelle également une guirlande.

Le 74HC595 peut atteindre 70 mA au total. Nous devons donc ajuster les résistances de manière à ce que le courant dans chaque segment de LED reste inférieur à 9 mA, ce qui correspond à environ 470 Ohm pour 5 V et les écrans utilisés.

Étape 2: Le registre à décalage 75HC595

Un regard sur la photo vous indique les broches que vous devez connecter.

Les broches sont comptées dans le sens anti-horaire à partir de la marque sur le circuit intégré si vous la regardez par le haut.

Reliez les broches 1 - 7 et 15 aux broches du segment 7.

Les broches 8 et 13 doivent être reliées à la terre (GND ou borne négative de la batterie)

La broche 9 est connectée à la broche 14 du prochain IC.

Les broches 10 et 16 doivent être connectées à la tension d'alimentation (VCC ou borne positive de la batterie)

Les broches 11, 12 et 14 sont l’interface à piloter par le microcontrôleur, connectez-les à l’en-tête à trois broches pour l’interfaçage externe.

Étape 3: Construire l'écran

Bien qu'il aurait été possible de graver un circuit imprimé personnalisé, j'ai choisi de le construire entièrement sur une planche à pain avec un fil de cuivre mince.

Ce fil de cuivre est recouvert, mais le revêtement pourrait être brûlé avec un peu d'étain en fusion. Il est très facile de faire des liens avec elle. Juste une extrémité, souder à la broche, puis étirer à l'autre broche et graver l'isolement où vous voulez le souder. Puis souder à la broche et couper le reste. Un fer à souder de 30 watts comme celui-ci de Craftsman est amplement suffisant pour le travail.

J'ai utilisé de petites résistances SMD 1206, car celles-ci se glissent bien sous les écrans à sept segments.

Mais après tout, vous devez composer le tableau par vous-même et vous pouvez bien sûr également prendre toute résistance que vous préférez.

Étape 4: Trouver l'ordre des segments

Enfin, nous devons écrire les fonctions pour afficher quelque chose de significatif.

Le problème principal est maintenant de trouver le bon segment - séquence de contrôle. Au début, essayez de pousser un seul 1 dans tout le registre à décalage.

Appliquez une entrée haute à l'entrée série et impulez le décalage une fois. Maintenant, appuyez une fois sur le verrou et voyez quels segments s’allument.

Si vous appuyez ensuite à nouveau sur le bouton Shift and Latch, le segment suivant s’allumera, etc.

Enfin, vous avez l'ordre de tous les segments et vous pouvez les transférer en nombres binaires.

Étape 5: écrivez le code

Je voulais utiliser l'écran avec mes microcontrôleurs AVR. J'ai donc écrit un fichier *.h qui pourrait être inclus dans n'importe quel projet.

Si vous avez câblé le tableau différemment, vous devrez peut-être ajuster le tableau segmentcontrol.

Pour l'utiliser, vous devez ajuster les définitions de broches dans le fichier debug.h (12 premières lignes).

Dans l'application principale, vous devez ajouter les lignes suivantes:

#include "debug.h"

initdebug (); // Ceci initialise les ports de sortie spécifiés dans debug.h

Ensuite, vous pouvez afficher n’importe quelle variable 8 bits en appelant simplement la fonction de débogage avec elle. disons que la variable est appelée compteur, alors la valeur actuelle du compteur est affichée par:

débogage (compteur);

Astuces:

  • Ajoutez du temps après l'appel de debug () pour avoir le temps de lire la valeur.
  • Lorsque vous avez connecté Shift et Latch ensemble, définissez simplement les deux ports pour la même broche. Chaque fois que le décalage est déclenché, il verrouille également l'état actuel, ce qui signifie que l'affichage scintille pendant le chargement des registres à décalage. Si vous faites cela rapidement par rapport au temps que vous laissez l'écran reste, c'est o.k.
  • Pour afficher une valeur de 16 bits, divisez-la par 256 et affichez le résultat ou séparez l'octet de poids fort et l'octet de poids faible et affichez-les l'un après l'autre avec un petit frein entre les deux.

Étape 6: Testez-le

Pour tester l’affichage, il semble idéal d’utiliser l’adaptateur pour carte d’attaque attiny2313 que j’ai publié dans cet instructable:

www.instructables.com/id/Make-a-breadboard-adapter-for-your-AVR-microcontroller

Le programme de la vidéo intégrée ne compte que de 0 à 0xFF et vice versa.

La vidéo: