Forum: Mikrocontroller und Digitale Elektronik Mindestens 4 x 7-Segmentanzeigen an einen ATmega8


von Sepp -. (sepp_o)


Lesenswert?

Salve

Da die Anzeige im Dunkeln von weitem gut erkennbar sein soll, habe ich
an 7-Segmentanzeigen gedacht.

Gibt es eine elegantere Möglichkeit die Anzeigen anzusteuern als über
4x 8Bit-DeMux(74LS138)?

Da würde ich da 8 Ausgänge benötigen.

4 für Enable
1 für Daten
3 für die Steuerleitungen

Klar, ich könnte 2x16 Bit DeMux verwenden, es würde mich aber
interessieren ob es noch eine andere, elegantere Möglichkeit giebt, an
die ich noch nicht gedacht habe.

mfg Sepp

von Gregor (Gast)


Lesenswert?

Hallo,
ich habe gerade eine 2x 7-Segment-Anzeige(7SA) so realisiert:
- 4 Ausgänge für den BCD Code
- die BCD-Zahl(en) direkt auf den BCD-zu-7segment-Decoder
- über Steuerleitungen & Transistor die 7SA eingeschaltet
- je nachdem, welche 7SA gerade aktiv ist, den entsprechenden
  BCD angelegt
- zu beachten wäre, dass die Helligkeit entsprechend des
  Tastverhältnisses abnimmt. Allerdings haben LEDs ja auch eine
  gute Impulsbelastbarkeit. Also evtl. weniger Vorwiderstand nehmen.
- bei vier 7SA bräuchtest du also 4 Leitungen für BCD-Code
  und 2 Leitungen zur Adressierung der 7SA
- evtl gibts ja auch die Möglichkeit den BCD zu serialisieren
  (ext. Schieberegister) (braucht aber immernoch 2 leitungen für
  data+clock; könnte man evtl high/low unterscheidung machen wie beim
  DCF77-Signal)

von cazy horse (Gast)


Lesenswert?

-MAX7219
-Schieberegister

von Peter Dannegger (Gast)


Angehängte Dateien:

Lesenswert?

Der 74LS138 ist total ungeeignet.

Nimm einen Timerinterrupt, der die 4 Digits nacheinander multiplext.
Anbei die Schaltung.


Peter

von Lai (Gast)


Lesenswert?

Mein Senf:

7 Segment X 8 für den ISP - Port

Unter:
Attaching an LED display
http://elm-chan.org/docs/avr/avrisp.html
http://elm-chan.org/docs/avr/ispled1.png

von Mike (Gast)


Lesenswert?

Hallo,

IMHO muesste sich ein SAA 1064 fuer sowas bestens eignen.
Ansteuerung ueber I2C Bus.

Gruss

von Mark H. (haemi)


Lesenswert?

Salve,

den Spaß mit dem Zeitmultiplex würde ich mir sparen. Da muß ich immer
an die Kaffeeautomaten bei uns an der Uni denken. Wie kann man ein
Display nur so langsam multiplexen... da fehlt eindeutig das
Epilepsie-Warnschild. ;)

7-Segmentanzeigen (und auch sonst alles unidirektionale, langsame,
portfressende) betreibe ich persönlich gern über 74HC595. Ist simpel
über SPI angesteuert, und der µC muß sich nur bei Änderungen drum
kümmern.

Mark

von cazy horse (Gast)


Lesenswert?

naja - ein Negativ-Beispiel kann ja nicht gleich eine Technik
unbrauchbar machen, die millionenfach bestens funktioniert. Multiplex
ist eine schöne port/platz/strom/layoutsparende Sache, die, richtig
gemacht, nur Vorteile hat.

von Mark H. (haemi)


Lesenswert?

Wenn man den Mux in Software macht, fielen mir zumindest die paar
dauerhaft benötigten Ressourcen als "Nachteil" ein. Ein 595 ist
zeitunkritisch bei Bedarf bedienbar. Ansonsten hast Du natürlich
Recht... wenn man es, wie Du schon sagst, richtig macht. :)

Ich wollte mit dem Beispiel auch zeigen, daß einige Probleme, die hier
oft von Hobbyisten besprochen werden, scheinbar selbst in kommerziellen
Produkten nicht ganz bis zu Ende gedacht worden sind. Aber diesen Effekt
kennen wir ja spätestens seit Open Source. ;)

Mark

von unbekannt (Gast)


Lesenswert?

Der oben schon erwähnte SAA1064 macht das Multipexing auch alleine.

von Alexander _. (bastlwastl)


Lesenswert?

Mahzeit

Danke für eure Tipps.

Ich werde gleich mal die Ausschlatplatienen durchstöbern und dem
Elektronikladen einen Besuch abstatten.

mfg Sepp

von Peter Dannegger (Gast)


Lesenswert?

"Ich wollte mit dem Beispiel auch zeigen, daß einige Probleme, die
hier
oft von Hobbyisten besprochen werden, scheinbar selbst in
kommerziellen
Produkten nicht ganz bis zu Ende gedacht worden sind."


Das stimmt. Manche Hobbyprogrammierer bauen bessere Programme als
professionelle Programmierer.

Usability, Ergonomie, intuitive Bedienung, Fehlertoleranz usw. scheinen
für viele Profis noch absolute Fremdwörter zu sein.


Ich nehme immer etwa 200Hz Multiplexfrequenz, d.h. bei 4 Digits also
800Hz Interruptrate.


Peter

von Sepp -. (sepp_o)


Lesenswert?

Ich werd's so machen dass ich einfach mit einem Schieberegister die
einzelnen Segmente durchadressiere und die Daten einfach über den
BCD-Dekoder mache.

Denn diese Bauteile habe ich zu Hause rumleigen.
Die Bausteine die den I2C Port verwenden habe ich nicht in meiner
Grabbelkiste und würden sicher einiges kosten.

Solange die Pin's noch reichen werde ich die Sparsame Variante
verwenden.

mfg Sepp

von Michael von Gersdorff (Gast)


Lesenswert?

Hallo Sepp
Schau dir mal das Datenblatt des mm5451 an. Der kann 35 Segmente (also
5 Anzeigen ohne Dezimalpunkte) treiben und hat eine Möglichkeit der
Helligkeitsregelung. Die Daten werden seriell eingelesen.
Michael

von Hannes L. (hannes)


Lesenswert?

> Ich werd's so machen dass ich einfach mit einem Schieberegister die
> einzelnen Segmente durchadressiere und die Daten einfach über den
> BCD-Dekoder mache.

Hmmm... Diese Lösung stufe ich nicht als "einfach" ein.
Denn Schieberegister und Decoder komplizieren die Platine.
Warum 3 Chips einsetzen, wo einer reicht? Dabei achte ich jetzt weniger
auf die Kosten der Schaltkreise sondern auf die Kompliziertheit der
Platine. Sinn des Einsatzes von MCs ist es ja, "IC-gräber" zu
vermeiden.

"Einfach" hingegen ist die Multiplexlösung. Sie benötigt nur den AVR,
ein paar Widerstände, einige Transistoren und etwas Software.

An einem AT90S1200 hatte ich eine dreistellige 7-Segment-Anzeige und
eine 12-er Tastaturmatrix angeschlossen und das Ergebnis über zwei
weitere Ausgänge seriell herausgeschoben.
Die 3 Anoden der Anzeige bekamen je einen PNP-Transistor in
Emitterschaltung, die Kathoden (Segmente) lagen über Widerstände an den
AVR-Ports.
Die Zeilen der Tastaturmatrix (4x3) lag über 4 Dioden mit an den
Segment-Ports und die Spalten bekamen 3 separate Ausgänge.

Die Tastenabfrage war Teil des Multiplexings.

Das ASM-Programm war garnicht mal so kompliziert. Aus heutiger Sicht
ist es etwas (arg) umständlich geschrieben, aber damals stand ich auch
noch nicht unter dem Einfluss dieses genialen Forums...

...

von Peter Dannegger (Gast)


Lesenswert?

@...HanneS... Lux

"Einfach" hingegen ist die Multiplexlösung.


Da stimme ich voll und ganz zu.
Wer einmal gemultiplext hat, der macht nichts anderes mehr.
Die erzielten Einsparungen und Vereinfachungen beim Layout sind schon
extrem.

Und nen ATTiny2313 extra dafür abzustellen ist gar keine schlechte
Idee, wenn der Hauptprozessor Pins sparen muß.


Da ich Analogeingänge benötigte, habe ich es mit dem ATTiny26 gemacht.


Ich gebe zu, es gibt für Anfänger gewisse Hemmnisse, in die
Interruptprogrammierung einzusteigen.
Man muß nur einmal die quasi Gleichzeitigkeit von Main und Interrupt
verstehen und das Interrupts kurz sein müssen.


Peter

von Jadeclaw (Gast)


Lesenswert?

Wenn ich mir so die Preise ansehe, die z.B. Elektro-nix für
AVR-Controller verlangt, ist es naheliegend, Controller als Ersatz für
nahezu jegliche Speziallogik zu verwenden.
@ M. von Gersdorff: Der MM5451 ist zwar ganz nett, hat aber einen
entscheidenden Nachteil, oder gleich derer zwei:
1.) Alle Segmente ein: 4*7*10mA = 280mA. Eine geplexte Anzeige braucht
nur ein Viertel davon.
2.) Der IC ist deutlich schwerer erhältlich als z.B. ein ATTiny2313,
der so ein Multiplex-Display mit Links erledigt. Ohne externe Logik.
Und billiger ist so ein ATTiny auch noch.
Man darf sowas nur eben nicht beim grossen C kaufen.

Gruss
Jadeclaw.

von Olaf K. (Gast)


Lesenswert?

Einen Nachteil des Multiplex-LED-Displays sollte man noch bedenken: Es
kann wegen der ständig ein- und ausgeschalteten LED-Ströme
EMV-Störungen verursachen, was z.B. bei Audio- oder Meßgeräten mitunter
zu nervigen Problemen führt. Das läßt sich zwar durch gutes EMV-Design
vermeiden oder notfalls auch durch Softwaremaßnahmen reduzieren (z.B.
nicht alle Segmente einer Stelle gleichzeitig schalten), aber ein
statisches Display (Schieberegister) vermeidet solche Probleme von
vornherein.

MfG Olaf

von Sepp -. (sepp_o)


Lesenswert?

Danke für eure Hilfe

@HanneS
Hab ich dich da richtig verstanden?
Du verwendest diverse Pins abwechselnd als Eingänge und als Ausgänge.

Wie schützt du den MC davor dass er den Pin auf ausgang geschalten hat,
aber ein Signal angelegt(Schalter gedrückt) wird?

Wenn du mir erklährst währe dass wirklich toll.

@Jadeclaw
Der gleich gedanke ist mir auch schon gekommen.

Die meißten Elektronik-Versandhandel führen den MM5451 gar nicht und
beim Laden um's Eck bekomme ich 3 bis 4 Mikrokontroller für das Geld.

@Alle
Für diese Anwendung werde ich bei der Schieberegister+BCD-Dekoder
Variante bleiben, da ich diese Schaltung warscheinlich nur einmal baue
und dann nie mehr anrühre.

Aber die Idee mit den Mikrokontrollern ist nicht mal so schlecht für
Basteleien und Versuchsaufbauten.

Ich werde mir mit kleinen Mikrocontrollern auf Modul-Platienen diverse
spezial I/O's bauen und dann später je nach Anforderung über den IIC
Bus verbinden.

Das hat nebenbei den Vorteil dass ich die Daten in SRam-Cluster
speichern kann.
(Es wird sicher nicht der Gesamte SRam benötigt.)

mfg Sepp

von basti (Gast)


Lesenswert?

Die überlegung hatte ich auch schon mit dem EMV... Wenn man PLatinen
anfertigen lässt, ist es kein problem n schieberegister auf die
unterseite zu machen, und auf der oberseite die 7 segment anzeige.
Platztechnisch dürfte das kein problem darstellen. auch die ansteuerung
ist relativ simple - Die bytes die ausgegeben werden dürften fast gleich
sein...

von Hannes L. (hannes)


Lesenswert?

> Wie schützt du den MC davor dass er den Pin auf ausgang geschalten
> hat, aber ein Signal angelegt(Schalter gedrückt) wird?

Durch Dioden zwischen den Tastern und den Portpins...

Ist eine Stelle des Displays aktiv, dann ist der Port Ausgang. L an den
Segmenten lässt das Segment leuchten. Gleichzeitig ist dann einer der 3
Stellentreiber-Ausgänge aktiv (bei mir L-aktiv, da ich PNP-Transistoren
nutze). Die drei Spaltentreiber (normale Ausgänge) der Tastaturmatrix
sind währenddessen auf H-Pegel (hochohmig ginge auch). Drückt man eine
Taste, so sperrt die Diode zwischen Taster und Segmentausgang und es
passiert nix weiter.

Während der Tastaturabfrage sind die LED-Stellentreiber deaktiviert
(H), worauf kein Strom durch die Segmente fließen kann.
Nun werden die Segment-Ports als Eingang mit Pullup geschaltet.
Dann wird jeweils ein Tasten-Spaltentreiber auf L gelegt und der Port
eingelesen. Die Diode der gedrückten Taste wird leitend und gibt den
L-Pegel an den Port.

...

von Sepp -. (sepp_o)


Lesenswert?

Könntest du mir bitte eine kurze Scizze machen.

Das währe echt toll.

Denn so richtig verstanden habe ich das jetzt nicht.

mfg Sepp

von Rahul (Gast)


Lesenswert?

AVR242-Application Note lässt grüssen...

http://www.atmel.com/dyn/resources/prod_documents/DOC1231.PDF

von Hannes L. (hannes)


Lesenswert?

So geht's natürlich auch. Ist sogar noch sparsamer als meine damalige
Lösung.

Da hatte ich noch garnicht reingeschaut...

Danke...

...

von Sepp -. (sepp_o)


Lesenswert?

Ich wusste gar nicht dass Atmel Beispiele hat.

Ich werd mal schaun ob ich das Beispiel das Rahul verlinkt hat an meine
Anforderungen anpassen kann.
(Bidirektionale Komunikation zwischen PC und MC über Parralellport mit
möglichs geringem Portverbrauch am MC.)


Ich hab mir die Adresse mal genauer angeschaut und bin auf interessante
Beispiele gestoßen.

Z.B. das Ansprechen einer PC-Tastatur mit nur 2 Pins.
http://www.atmel.com/dyn/resources/prod_documents/DOC1235.PDF

Kennt eventuell eine Linksammlung zu den Aplication Notes damit man
sich nicht mit dem Google abqwählen muß?

mfg Sepp

von Hannes L. (hannes)


Lesenswert?

Startseite www.atmel.com

Dann interaktiv durchstöbern.
Also AVR, Dokumentationen, Appnotes...

Dann findest du eine HTML-Seite, auf der alle derzeit verfügbaren
Appnotes aufgelistet sind und zum Download angeboten werden.

Mundgerechter geht es eigentlich nicht, oder?

...

von Sepp -. (sepp_o)


Lesenswert?

Vielen vielen Dank.

Ich hatte einige Zeit auf der Atmel-Seite rumgesucht aber nicht's
brauchbares gefunden.

Dank deiner Hilfe hab ich's entlich gefunden.

Ich habe schon langsam den Verdacht dass mich die Computer nicht leiden
können.

mfg Sepp

von Hannes L. (hannes)


Lesenswert?

Naja, Google bietet mir auch meist das an, was ich gerade nicht haben
will. Und ich habe den Eindruck, dass das immer schlimmer wird.

...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.