mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik sieben-Segment über Shiftregister


Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo forum,

ich möchte 7-segment elemente jeweils über ein 8-bit shiftregister 
ansteuern. meine frage: kann man die beiden intelligent miteinander 
verschalten um am ASCII (oder BCD) code nicht mehr zu viel änderns zu 
müssen (am besten natürlich ganichts) und trotzdem die richtigen 
segmente leuchten?

thx, pumpkin

Autor: Stefan Gemmel (steg13)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich mir die Warheitstabelle des CMOS4055 ansehe würde ich sagen:
das kann nicht gehen.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

naja, 7-Segmentdecoder in Hardware enthalten eigentlich etliche 
Gatterverknüpfungen und die Wahrheitstabellen sehen auch nicht so 
sonderlich systematisch aus.

Wenn Du das geschickt mit Drahtbrücken erstzen kannst... ;)

Sind doch letztlich nur ein paar Byte im µC, um das zu erschlagen.
Tabelle mit den gewünschten Darstellungen im Flash, ASCII-Wert - 0x30 
zum Tabellenanfang dazu und Du hast den Code zumindest bei Ziffern.
Bei Multiplex lege ich die schon codierten Zechen für alle Stellen im 
Ram ab und schicke die nur im Kreis mit dem Stellenwert raus.

Jenach Stellenzahl spart ein MAX7219.
Ansonsten an das Schieberegister einen 7-Segmentdekoder an 4Bits ran und 
einen 1 aus 8 Dekoder an die nächsten 3 Bit und die Dezimalpunkte an das 
letzte Bit. Reicht dann für 8 Stellen im Multiplex, bedingt aber eben 
etliches IC-Zeug...

Gruß aus Berlin
Michael

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
eben, genau dieses IC zeuch wollte ich mir sparen. hab gerade auch mal n 
bissl gefummelt und mir den code angeschaut. ein system habe ich nicht 
ausmachen können. werd ich dann wohl leider per code machen müssen, 
leider ist die zeit auf dem uC extrem knapp...aber war mutt dat mutt.

trotzdem danke

pumpkin

Autor: holm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist nicht dramatisch.
Ich habe so ein Pollin 14 Segment (oder 16?) Display auf diese Weise
angesteuert, halt den Chraktergenerator im Flash, dafür gibt es eh
keinen fertigen Decoder. Die Anoden und die Gitter der Röhre werden
aus einem einzigen langen Schieberegister befeuert, das an der USI hängt
und mit 4Mhz Takt aktualisiert.

Für ein LED Display ist das nicht anders, die Treiberei muß halt anders 
aussehen, das Prinzip ist das Selbe.

Gruß,

Holm

Autor: Ralf Kellerbauer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ASCII bzw. unsere Schreibweise von Zahlen und Buchstaben unterscheidet 
sich deutlich vom 7-Segment Design. Da bleibt nur die Tabelle im Flash 
übrig, was bei 0-9 und einigen Sonderzeichen kaum Aufwand bedeutet.

Sind nur wenige Stellen und seltener Update der Anzeige nötig kann man 
per xx164 mit 2 Leitungen (Takt und Data) arbeiten.
Bei häufigen Update der Anzeige leuchten auch die anderen 'off' Digits 
nach, dann ist ein Schieberegister mit Latch nötig.

Multiplex bei einem eh schon gut ausgelastetem uC erscheint mir knifflig 
bzgl. sichtbaren Flackern der Anzeige.

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich werde es per daisychain angeordneten shiftregistern (latched) und 
switch-case machen. ich denke das ist die eleganteste methode.

pumpkin

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> switch-case machen. ich denke das ist die eleganteste methode.

Das denke ich nicht.
Die eleganteste Methode ist mit Sicherheit eine Lookup Tabelle.
Mit der Zahl als Index in die Tabelle gehen und damit
das Byte abgreifen, dass zur Anzeige muss. Ist in C
ein 1-Zeiler + eine kleine Tabelle.

Autor: Stefan Wimmer (wswbln)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
...Du kannst Dir evtl. hier ein paar Anregungen holen: 
http://elm-chan.org/docs/avr/avrisp.html

Das angehängte Bildchen zeigt meine Implementierung mit 6 St. 
7-Segmentanzeigen. Wird von meinen Kollegen und mir immer gerne für's 
Debugging genommen :-)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ralf Kellerbauer wrote:

> Multiplex bei einem eh schon gut ausgelastetem uC erscheint mir knifflig
> bzgl. sichtbaren Flackern der Anzeige.


Flackern tuts nur, wenn Du die Timerinterruptzeit zu lang wählst.
Ich nehme so 200Hz..1000Hz * Digitzahl.

Auch bei "guter Auslastung" ist es oft keine Problem die Anzeige einfach 
im Timerinterrupt mit reinzupappen.

Ich nehme immer einen Timerinterupt fürs Multiplexen, Tastenentprellen 
und Uhrzeit (RTC), Scheduler (Timeouts) usw. zusammen.


Peter

Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie oft die anzeige bei mir aktuallisiert wird ist eigentlich sekundär 
(ist nur eine frequenzanzeige). wichtig ist die zeitkritische 
interruptroutine die sehr knapp bemessen ist.
das mit dem lookup ist auch ne gute alternative. danke für die tips 
jungs!

pumpkin

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl heinz Buchegger wrote:

> Die eleganteste Methode ist mit Sicherheit eine Lookup Tabelle.
> Mit der Zahl als Index in die Tabelle gehen und damit
> das Byte abgreifen, dass zur Anzeige muss. Ist in C
> ein 1-Zeiler + eine kleine Tabelle.

Jau aber ganz genau.

Umkodierungen macht man immer nur über ne Tabelle, alles andere ist 
Quatsch.

Selbst die ollen PICs haben ja sogar schon nen Tabellenlesebefehl 
(RETLW), wenn auch etwas durch die Brust ins Auge (extra Pageberechnung 
erforderlich).


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.