mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 4 Segment-Anzeigen ansteuern


Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag,

ich bin blutiger Anfänger was den Bereich Mikrocontroller betrifft und
möchte mich nun in das Thema einarbeiten...

Als "Ziel" habe ich mir die Ansteuerung von vier 7-Segment-Anzeigen
gesteckt, die ich zum Beispiel als Vorwärtszähler von 0 bis 9999
verwenden möchte. Ist dies mit einem einfachen Mikrocontroller, wie
etwa  dem AT90S2323 überhaupt möglich? Ich kann es mir fast schon nicht
vorstellen...

Wo kann ich im Netz vielleicht sogar schon eine realisierte
Segment-Anzeigen-Ansteuerung finden?

Danke schon mal...

Autor: avusgalaxy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi.. Gib mal in der Suche Multiplexen ein... Das ist das Zauberwort


Gruß Avus

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven,

meine erste Frage wäre: LED oder LCD?

Andreas

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
LED - soll ja schließlich schön leuchten!!!

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven,

dann such mal - wie Avus schon geschrieben hat - nach "Multiplexen".
Meistenst gibt es genau dazu auch schon App-Notes beim Hersteller des
Controllers (ist bei den von mir verwendeten so).

Als weitere Möglichkeit kannst du auch einen Treiberbaustein nehmen
(z.B. ICM7211AM). Der hat eine relativ einfache Schnittstelle zum µC.

Andreas

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oops, der ICM7211AM ist natürlich für LCD's. Es gibt aber auch passende
Bausteine für LED's

Andreas

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Marko B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für diesen Fall und speziell für einen Anfänger wäre ein SAA1064 wohl
die einfachste Lösung.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ich hätte da noch
http://web2.callisto.twam.info/images/elek_dreh_schalt.png zu bieten.

Matthias

Autor: Marko B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias: das ist die übliche Variante. Mit dem SAA1064 spart man sich
halt den ULN2803, die Widerstände und zwei Transistoren, die
Ansteuerung ist statisch, die Helligkeit ist elektronisch einstellbar
... einziger Nachteil: Reichelt hat nur die DIL-Version.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

ist mit 2,50 auch nicht gerade günstig spart aber Pins am µC. Aber ein
DIP24 ist für mich eigentlich nie eine Alternative. Besagtes Gehäuse
ist nämlich fast größer als der ganze Drehzahlmesser ;-)

Matthias

Autor: Christoph Wagner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab schon eine Anzeige mit 8 Siebensegmentanzeigen und dem AT90S2313
gebaut. Das funktioniert alles prächtig. PB habe ich über einen
Treiberbaustein (74HC541 oder so ähnlich - 8bit Leitungstreiber) und 50
Ohm-Widerstände direkt an die Segmenteingänge aller Anzeigen geschaltet
(parallel). PD0-2 gehen an A,B und C des CMOS-IC 4028 (Hex zu
Dezimal-Decoder). Dabei sind ungenutzte Eingänge UNBEDINGT auf Masse zu
schalten (Betrifft Eingang D). Jeder Ausgang dieses Decoders geht über
einen Transistorverstärker an die Gemeinsame Elektrode der Anzeige (Je
nach dem, ob gemeinsame Kathode oder gemeinsame Anode- bei mir : Anode,
aber Kathode ist IMHO besser, weil man dort bessere Ausleuchtung mit
gleichen Transistoren erreicht).
Gleichzeitig kannst du auch noch 8 Taster dranhängen, indem du jeweils
eine Diode von einem der 4028-er Ausgänge an einen Taster schließt, und
das "andere Ende des Tasters" zusammen mit den "anderen Enden der
anderen Tastern" an PD3 verbindest. Diesen Pin kannst du dann als
Eingang nehmen, aber du solltest ihn mit einem Widerstand (10KOhm)
gegen Masse verbinden, sonst fängt er an zu schwingen und kann dir den
Letzten Nerv bei der Fehlersuche rauben (Ich weiß wovon ich Rede ;).
Softwaretechnisch lässt du den Timer0 mit 1000Hz durchlaufen. In einem
Interrupt schaltest du einen anderen 4028-er Ausgang durch (nächste
Anzeigestelle) und fütterst PB mit dem Anzeigeinhalt für diese Stelle.
Im nächsten Interrupt fragst du PB3 ab, und holst den Tastenstatus für
den parallel selektierten Taster ab. Sozusagen wechselst du zwischen
Anzeigeupdate und Tasterabfrage. Damit ist gewährleistet, dass ein
Stabiles Signal am Tastereingang anliegt, wenn es abgefragt wird. Damit
läuft innerhalb von 16 Interrupts die Anzeige einmal komplett durch, und
die Taster werden auch einmal komplett abgefragt. Das alles kannst du so
realisieren, dass du zwei Tastenregister hast, die aktualisiert werden.
Im das Eine schreibst setzt du immer das aktuelle Bit (für jeden Taster
eins), und in das andere schreibst du das Bit, das du eben überschreibst
(vorher retten). Damit kann man veränderung (steigende, fallende Flanke
= Taster drücken und loslassen) ermitteln. Den Anzeigeinhalt kannst du
bequem in den RAM schreiben, von wo er im Interrupt dann entsprechend
ausgelesen wird. Das ganze braucht macimal 100 Instruktionen, womit du
noch 900 übrig hast. (viiiel Platz)
Durch die Hohe (relativ) Timerfrequenz passiert das ca. 64 mal pro
Sekunde, und du nimmst das Multiplexen der Anzeige als eine durchgehend
leuchtende Anzeige wahr. Allerdings leuchtet die Anzeige nur ein Achtel
so hell, als wenn sie im Dauerbetrieb wäre. Daher sind die Widerstände
mit 50 Ohm so dimensioniert, dass sie in den kurzen Pulsen 100mA (bei
5V) durch die LEDs schicken. Du musst unbedingt die Transistoren groß
genug wählen, dass sie einen Strom von 800mA (alle Segmente) vertragen,
sonst kann es sin, dass die Anzeige je nach Inhalt unterschiedlich hell
leuchtet (und das wollen wir doch nicht ;-) ).
Im Endeffekt hast du dann noch PD4-6 für eigene Zwecke frei. Als Quarz
hab ich einen 8MHz mit 18p Kondensatoren gegen Masse genommen. Für
Uhrenanwendungen kannst du ebenfalls den Timer0 verwenden (exakter 1ms
Takt).
Zusammenfassend :
An den (fast) kleinsten Chip der AT90S-Serie mit 15 I/Os ist
angeschlossen : Eine 8-stellige LED-Anzeige, 8 Taster und 3 Ausgänge.
Wenn man das nicht Multiplexen würde bräuchte man einen µC mit 64+8+3 =
75! IOs. Die wären nicht nur Teuer, sondern wesentlich schlechter zu
löten. Als Spannungsversorgung kannst du mit einem 7805 (Schaltplan
gibts wie Sand am Meer) aus 6-35V Eingangsspannung exakte 5V
Produzieren. Achtung: Das Ding wird Sau-warm (ich betrieb die unkekühlt
mit 13,5V Eingang - Da wird das Teil schon locker 80°C heiß !

Ich hätte dir auch gern einen Schaltplan gepostet, doch leider ist der
nur auf Papier aufgekritzelt, da Target nicht alle Bauteile zur
gleichen Zeile zulässt (100-Pin-Grenze).

Autor: Sven Scholz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, für die zahlreichen Anregungen!

Christoph Wagner, einen Scanner hast du nicht zufällig, damit ich das
mal Schwarz auf Weiß sehen kann? Mein Vorstellungsvermögen ist nämlich
ziemlich begrenzt...

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.