LED-Siebensegmentanzeige

Oskar01

Mitglied
24. März 2008
267
0
16
Köln
Sprachen
  1. Assembler
Hallo,
möchte hier kurz einen Zwischenbericht über die Fortschritte im Projekt "Siebensegmentanzeige" geben.

Bei der direkten Programmierung von Siebensegment-Anzeige-Bit-Code und Multiplexing bot sich die Lösung über Mehrfachverzweigung in der Umwandlung von Register-Werten auf Siebensegmentansteuerungs-Werte zwar an, wird aber zu umfangreich.

Hatte mir gedacht, warum das Rad neu erfinden, also zurückgegriffen auf altbekannte TTL-Technik mit SN74LS247-BCD-zu-Siebensegmentdecoder und 4-D-Latch SN74LS75.

Da ich testweise eine Stelle zum Laufen gebracht habe, wollte ich auch antesten, ob abwechselnd Sekunden-Einer und -Zehner auf nur einer Anzeigeeinheit zur Darstellung gebracht werden können, und damit auch gleichzeitig die Funktion der Latch-Enable-Bits zu überprüfen ist.

Das allerseits bekannte Uhren-Programm wird dahingehend geändert, daß nunmehr die 8-Bit-Zählregister für Sekunden, Minuten, etc. gesplittet werden auf Sekunden-Einer, Sekunden-Zehner, etc. Damit entfällt auch die Programmierung einer Routine zur Erzielung eines reinen, also unkomprimierten BCD-Codes, da von vorne herein der Wert 9 nicht überschritten wird. Es wird also nur von Null bis 10 gezählt in den Einer-Stellen, bzw. nur von Null bis 6 in den Zehner-Stellen.

Man benötigt beim Multiplexing einmal fast eine volle Portbreite zur Ausgabe des Siebensegment-Ansteuercodes (7 Bit), womit beispielsweise über Widerstände direkt die Kathoden einer Anzeigebatterie in der Art eines Busses gesteuert werden, und darüber hinaus weitere Portbits - nunmehr eines weiteren, anderen Ausgabeports - zur Ansteuerung der einzelnen Anzeigeeinheiten mittels Transistoren in den jeweiligen Anodenleitungen.

Hier, beim gezeigten Programm, können also über nur einen einzigen 8-Bit-Ausgabeport beide Funktionen vereinigt werden. Zumindest sind 4 Stellen ohne weiteres so ansteuerbar.
Auf die Anzeige der Sekunden könnte man zur Not auch verzichten, bzw. die Anzeige softwaremäßig nochmals mit Hilfe einer Extra-Ausgabe-Unterroutine zwischen Stunden-Minuten- und Minuten-Sekunden-Variante umschaltbar gestalten.
Die Portbits, die sonst zur Steuerung der gemeinsamen "Anoden" der unterschiedlichen Stellen reserviert worden wären, könnten hierbei für die evtl. dazukommenden Latch-Enable-Bits benutzt werden. Diese Programmvariante würde da ansetzen.

Sollen maximal 15 Stellen angesteuert werden, könnte noch ein Adresscodier/decodier-IC zu Hilfe genommen werden, ohne die Portbreite von 8-Bit zu überschreiten.

Dazu werden in Ausgaberoutinen jeweils die oberen 4 Bits ausgeblendet mit ANDI, und entweder der Port maskiert mit ORI für das jeweilige Enable-Bit, bzw. mit SBI und CBI das entsprechende Latch-Enable-Anzeige-Bit gezielt getoggelt.

Die Probleme bei der parallellaufenden seriellen Ausgabe über U(S)ART werden so gelöst, daß nur noch der ASCII-Wert in einer Extra-Senderoutine addiert wird, bei der reinen Ausgabe von Zeichen und Textbestandteilen wird eine andere Senderoutine ohne Addition verwendet.
Die Sache vereinfacht sich gegenüber einer Ausgaberoutine für LCDs dadurch, daß die Umwandlung in Dezimal- bzw. Hexadezimalschreibweise völlig entfallen kann.


Zu den Besonderheiten der Ripple-Blanking-Input/Outputs des SN74LS247 kann gesagt werden, daß hier Pin 3 und 5 auf "High" gelegt wurden. Pin 4 bleibt offen. Das ist insoweit von Belang, da ein Eingang auch je nach Beschaltung der anderen "Steuerbits" zum Ausgang werden kann, wobei bei fehlerhafter Beschaltung Datenkollision entstehen könnte, was zu vermeiden ist.

Dann ist ein gravierender Fehler im Schaltbild des 74LS75 zu bemerken, wo Pin 1 nunmehr als Q0Quer und Pin 8 als Q3Quer definiert werden muß, was als Q0 und Q3 angegeben wurde.

Also: A = Pin 16 ; B = Pin 15 ; C = Pin 10 ; D = Pin 9.

Hier noch der dazugehörige Programmcode als Dateianhang.

Viel Spaß,

Gruß von Oskar01


P.S.: Werde jetzt noch die übrigen Stellen verlöten und dann eventuell mich nochmals melden.
Probleme mit der Spannungsversorgung dürfte es nicht geben, da genügend Entkopplung zur Board-Versorgung gegeben ist. Der SN74LS247 kann sogar separat bis 15 Volt Extra-Spannung die LEDs der Siebensegmentanzeige steuern. Eine separate Spannungsversorgung empfiehlt sich schon deswegen, weil jetzt, ohne Multiplexing der Stromverbrauch selbstverständlich steigt.

Es gibt noch eine kleine Unklarheit bezüglich des Fan-In, also der Anzahl, wieviele Eingänge parallelgeschaltet werden können beim SN74LS75. Das Fan-In ist mit 0,5 im Datenblatt angegeben. Wenn es nicht klappen sollte, müßte ich noch jeweils vor die Dateneingänge ein Und-Gatter schalten, deswegen ist das Layout auch noch nicht fertig. Bei den Latch-Enable-Eingängen ist das Fan-In mit 2 und bei den Q-Ausgängen, bzw. QQuer-Ausgängen ein Fan-Out mit 10 angegeben. Das ist so auch typisch TTL-Standard. Werden mal sehen....
 

Anhänge

  • SsegTest_29.asm
    8 KB · Aufrufe: 21

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)