Erstellen Sie eine Debug-Anzeige für Mikrocontroller: 6 Schritte

Erstellen Sie eine Debug-Anzeige für Mikrocontroller: 6 Schritte

Inhaltsverzeichnis:

Anonim

Dieses Display ist sehr praktisch, wenn Sie mit der ADC-Funktion von Mikrocontrollern arbeiten.

Es werden nur zwei Stifte zur Steuerung des Displays benötigt (drei, wenn Sie auch die Verriegelung steuern möchten). Mit zwei sieben Segmenten kann bis zu 0xFF als Hex angezeigt werden. Das ist der gesamte 8-Bit-Bereich, was die am häufigsten verwendete variable Breite für kleine uCs ist.

Ich habe es erstellt, weil die endgültige Anwendung keine Anzeige hat und ich wollte wissen, was passiert, bevor ich es fertiggestellt habe.

Sie benötigen zwei 74HC959-Schieberegister, zwei Siebensegmentanzeigen und 14 (16) Widerstände. Sie benötigen 16, wenn Sie die Punkte verwenden möchten, die nicht in der Software implementiert sind. Die Verwendung der Punkte würde jedoch die anzeigbaren Werte auf 10 Bit oder 0-1027 erweitern. Ich überlasse es Ihnen, dies herauszufinden.

Zubehör:

Schritt 1: Das Schema

Wir verwenden zwei 74HC595-Schieberegister, um die sieben Segmentanzeigen miteinander zu verbinden. Unabhängig davon, ob Sie 7-Segmente mit gemeinsamer Anode oder gemeinsamer Kathode verwenden, müssen Sie die Schaltung anpassen. Ich habe gewöhnliche Kathoden verwendet. Was bedeutet, dass jedes Segment eine grüne LED ist und die Kathoden aller LEDs miteinander verbunden sind. (Pins 3 und 8 der 7-Segment-Anzeige)

Die Schieberegister funktionieren folgendermaßen:

Bei jedem Anlegen eines Impulses am Shift-Eingang wird der aktuelle Status des seriellen Eingangs im Speicher des 74HC595 verschoben. Jedes Mal, wenn ein Impuls am Latch-Eingang eintrifft, wird der Zustand des internen Speichers verwendet, um die Ausgänge anzusteuern.

Nach 8 Schaltzyklen wird der erste Eingang wieder an Pin 9 herausgeschoben und kann als Eingang für einen anderen 74HC595 verwendet werden. Dies wird auch als Daisy Chain bezeichnet.

Der 74HC595 kann insgesamt bis zu 70 mA ansteuern, daher müssen wir die Widerstände so einstellen, dass der Strom durch jedes LED-Segment unter 9 mA bleibt, was bei 5 V und den verwendeten Displays etwa 470 Ohm entspricht.

Schritt 2: Das Schieberegister 75HC595

Ein Blick auf das Bild zeigt Ihnen, welche Pins Sie verbinden müssen.

Die Pins werden ab der Markierung auf dem IC im Uhrzeigersinn gezählt, wenn Sie von oben darauf blicken.

Verbinden Sie Pin 1 - 7 und Pin 15 mit den Pins des 7-Segmentes.

Pin 8 und 13 müssen mit Masse verbunden sein (GND oder Minuspol der Batterie)

Pin 9 ist mit Pin 14 des nächsten IC verbunden.

Pin 10 und Pin 16 müssen mit der Versorgungsspannung verbunden sein (VCC oder Pluspol der Batterie)

Pin 11, 12 und 14 sind die Schnittstelle, die vom Mikrocontroller angesteuert werden soll. Verbinden Sie diese für eine externe Schnittstelle mit dem dreipoligen Pinheader.

Schritt 3: Bauen Sie das Display auf

Obwohl es möglich gewesen wäre, eine kundenspezifische Leiterplatte zu ätzen, habe ich beschlossen, das Ganze mit dünnem Kupferdraht auf Steckbrett aufzubauen.

Dieser Kupferdraht ist beschichtet, die Beschichtung könnte jedoch mit etwas geschmolzenem Zinn eingebrannt werden. Es ist sehr einfach, Verbindungen herzustellen. Zinn einfach ein Ende, löte es auf den Stift und strecke es dann auf den anderen Stift und verbrenne die Isolierung dort, wo du es löten möchtest. Dann löten Sie es auf den Stift und schneiden Sie den Rest. Ein 30-W-Lötkolben wie dieser von Craftsman ist mehr als genug für diesen Job.

Ich habe kleine 1206 SMD-Widerstände verwendet, da diese gut unter die sieben Segmentanzeigen passen.

Aber immerhin musst du das Board selbst zusammenstellen und du kannst natürlich auch jeden Widerstand nehmen, den du magst.

Schritt 4: Ermitteln Sie die Reihenfolge der Segmente

Schließlich müssen wir die Funktionen schreiben, um etwas Sinnvolles anzuzeigen.

Das Hauptproblem besteht nun darin, die richtige Segment - Steuersequenz zu finden. Versuchen Sie zunächst, eine einzelne 1 durch das gesamte Schieberegister zu schieben.

Legen Sie einen High-Pegel an den seriellen Eingang an und treiben Sie die Verschiebung einmalig an. Jetzt den Riegel einmal betätigen und sehen, welche Segmente aufleuchten.

Wenn Sie dann die Shift- und Latch-Taste erneut drücken, leuchtet das nächste Segment auf und so weiter.

Schließlich haben Sie die Reihenfolge aller Segmente und können diese in Binärzahlen übertragen.

Schritt 5: Schreiben Sie den Code

Ich wollte das Display mit meinen AVR-Mikrocontrollern verwenden. Also habe ich eine *.h-Datei geschrieben, die in jedes Projekt eingefügt werden kann.

Wenn Sie die Karte anders verdrahtet haben, müssen Sie möglicherweise das segmentcontrol -Array anpassen.

Um es zu verwenden, müssen Sie die PIN-Definitionen in der Datei debug.h (erste 12 Zeilen) anpassen.

In der Hauptanwendung müssen Sie die folgenden Zeilen hinzufügen:

#include "debug.h"

initdebug (); // Dies initialisiert die in debug.h angegebenen Ausgabeports

Dann können Sie jede 8-Bit-Variable anzeigen, indem Sie einfach die Debug-Funktion damit aufrufen. Sagen wir, die Variable heißt Zähler, dann wird der aktuelle Wert des Zählers angezeigt durch:

Debug (Zähler);

Hinweise:

  • Fügen Sie nach dem Aufruf von debug () eine gewisse Verzögerungszeit hinzu, um Zeit zum Lesen des Werts zu haben.
  • Wenn Sie Shift und Latch miteinander verbunden haben, definieren Sie einfach die beiden Ports für denselben Pin. Jedes Mal, wenn die Verschiebung ausgelöst wird, wird auch der aktuelle Zustand aufgehoben, dh die Anzeige flackert, während die Schieberegister geladen werden. Wenn Sie dies im Vergleich zu der Zeit, in der Sie das Display eingeschaltet lassen, schnell tun, ist es in Ordnung.
  • Um einen 16-Bit-Wert anzuzeigen, teilen Sie ihn entweder durch 256 und zeigen das Ergebnis an oder trennen Sie das High-Byte und das Low-Byte und zeigen Sie sie nacheinander mit einer kleinen Bremse dazwischen an.

Schritt 6: Testen Sie es

Um das Display zu testen, ist es ideal, den in dieser Anleitung veröffentlichten attiny2313-Steckbrettadapter zu verwenden:

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

Das Programm des eingebetteten Videos zählt nur von 0 bis 0xFF und wieder zurück.

Das Video: