ebps.de.vu > Schaltungen > AVR > 8-Bit-Anzeige

8-Bit-Anzeige

Beschreibung

Diese Schaltung dient dazu, ein Binärwort mit (bis zu) 8 Bit auf Siebensegmentanzeigen darzustellen. Ändert sich das Binärwort, wird die Anzeige sofort aktualisiert. Sollen weniger als 8 Bit angezeigt werden, können die ungenutzten Eingänge einfach mit Masse verbunden werden. Mit einem Taster kann zwischen sechs verschiedenen Anzeigemodi umgeschaltet werden:

  1. dezimal, ohne Vorzeichen (0 bis 255) (U = unsigned)
  2. dezimal, mit Vorzeichen (-128 bis 127) (S = signed)
  3. hexadezimal (H = hex)
  4. dezimal, ohne Vorzeichen, Eingänge invertiert (U I = unsigned inverted)
  5. dezimal, mit Vorzeichen, Eingänge invertiert (S I = signed inverted)
  6. hexadezimal, Eingänge invertiert (H I = hex inverted)

Die Einstellung wird im EEPROM gespeichert und wird beim Einschalten wieder eingestellt, dabei wird kurz der gewählte Modus angezeigt. Auch nach einem Druck auf den Taster wird der nun gewählte Modus kurz angezeigt. In den Hexadezimal-Anzeigemodi wird dem Wert ein kleines h vorangestellt, damit eine Hexadezimalzahl ohne Buchstaben von einer Dezimalzahl unterschieden werden kann.

Für die Eingänge sind die internen Pullup-Widerstände des Controllers aktiviert, deshalb wird im Standard-Modus (dezimal ohne Vorzeichen, nicht invertiert) bei offenen Eingängen der Wert 255 angezeigt (alle Eingänge high).

Schaltung

Die Schaltung basiert auf einem ATTiny2313-Microcontroller. Da der Controller nicht genug Portpins hat, wurde ein Trick verwendet, um die drei Anzeigen mit nur zwei Auswahl-Ausgängen ansteuern zu können: in der Anodenleitung der ersten Anzeige liegt eine Diode, die die Spannung für diese Anzeige um ca. 0,7 V reduziert. Ist einer der beiden Transistoren für die anderen Anzeigen durchgeschaltet, fällt dort nur eine Spannung von ca. 0,2 V ab. Der Strom fliesst nun (fast) ausschliesslich durch diese Anzeige, da die LED in der mittleren oder rechten Anzeige schon zu leiten beginnt, bevor die (aufgrund der Diode um [0,7 − 0,2] V höhere) Flussspannung der linken Anzeige erreicht wird. Sind jedoch beide anderen Anzeigen abgeschaltet, so kann der Strom nur durch die linke Anzeige fliessen, so dass nun diese aufleuchtet. Der Nachteil dieser Methode ist, dass die linke Anzeige aufgrund des Spannungsabfalls an der Diode etwas schwächer leuchtet. Je nach verwendeter Anzeige kann dieser Effekt mehr oder weniger stark zu sehen sein. Ich habe eine dreistellige Anzeige von Pollin verwendet, die intern schon für Multiplexing-Betrieb verdrahtet ist.

Software

Auch in der Software musste ich tricksen, um den RESET-Eingang für den Taster verwenden zu können. Da der ATTiny2313 einen Hardwarefehler hat, welcher verhindert, dass er nach dem Abschalten des RESET-Pins (um diesen als normalen I/O-Pin verwenden zu können) erneut programmiert werden kann, kam diese Option nicht in Frage, zumal das Abschalten des RESET-Pins sonst einen Parallel-Programmer für ein erneutes Programmieren erfordert und somit den Nachbau erschwert hätte. Stattdessen habe ich mir die Möglichkeit der Abfrage des Reset-Grundes zunutze gemacht. Auf diese Weise kann die Software nach einem Reset unterscheiden, ob die Schaltung eingeschaltet wurde (Power-on Reset) oder ob der Taster am RESET-Pin gedrückt wurde (External Reset). Da der eingestellte Modus ohnehin im EEPROM gespeichert wird, ist es kein Problem, wenn bei jedem Umschalten ein Reset erfolgt, da anschliessend einfach der bisherige Modus aus dem EEPROM gelesen, um eins erhöht und wieder ins EEPROM zurückgeschrieben werden kann. Nach einem Power-on Reset wird natürlich nur der alte Wert gelesen und nicht erhöht.

Fotos

[Foto]
800 | 1280
Die Schaltung, noch ohne Display.
[Foto]
800 | 1280
Fertige Schaltung mit Display über dem Rest der Schaltung. Hier wird eine Dezimalzahl ohne Vorzeichen angezeigt (Eingangswort: 10010100).
[Foto]
800 | 1280
Anzeige des gleichen Eingangsworts als vorzeichenbehaftete Dezimalzahl.
[Foto]
800 | 1280
Anzeige des gleichen Eingangsworts als Hexadezimalzahl.

Siehe auch