mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ansteuern von einer 3digit 7 segment Anzeige mit dem Atmega8


Autor: Markus Brosch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Erstmal super Dank an die Macher dieses Forums und des Tutorials.

Ich habe folgendes Problem! Ich habe eine AD Umsetzung mit dem Atmega8
durchgefuehrt(Assembler) und das hat auch gut geklappt. Jetzt wuerde
ich gerne diesen 10bit Wert dezimal auf einem 3digit 7 Segment Display
ausgeben. Ein LCD sollte es bei mir nicht sein, da die Ziffern sehr
gross werden sollten und das bei einem LCD Display zu teuer wird.

Ich wuerde mich ueber eure Hilfe sehr sehr freuen , da ich  noch
ziemlich neu in de Materie bin.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wo ist jetzt dein Problem? DIe Hardware? Die Software? Oder gar beides?

Autor: Thomas Burkhardt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

suche im Forum nach "Schachuhr", bei diesem Projekt kannst du das
Prinzip der Ansteuerung "abkupfern" :)

Die Idee ist, die gemeinsame Anode bzw. Kathode der Segmentanzeige über
einen Transistor anzusteuern. So kann man die einzelnen Segmente
zeitlich nacheinander mit den selben Pins ansteuern ->
Multiplexverfahren.

Es gibt aber natürlich auch andere Möglichkeiten...

Autor: Markus Brosch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Problem ist eigentlich beides!
Hast du vielleicht irgendwelche Ideen?

Autor: m@u (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mit einem Kollegen ein ähnliches Projekt durchgezogen. Wir
hatten noch drei Schieberegister rumliegen (74HC595). Sie sind
kaskadiert und erhalten einen 24Bit-Wurm mit den parallel auszugebenden
Zahlen. Die Register missbrauchen wir auch gleich als Treiber für die
Anzeigen. Der Vorteil an dieser Konstruktion ist, dass sie durch
Hinzufügen weiterer Anzeigen fast beliebig erweiterbar ist. Die
Schieberegister lassen eine Ansteuerung mit bis zu 100MHz, wodurch man
nicht einmal gross auf Timings achtgeben muss. Der eindeutige Nachteil
ist, dass man wieder drei ICs mehr in der Schaltung hat. Ein grosser
Vorteil ist, dass sich wegen dem Tristate-Ausgang mit dem Output Enable
relativ einfach eine PWM realisieren lässt um Strom zu sparen.

Autor: thomas_p. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab das gleiche mit Schieberegistern vom Typ 74HCT4094 gemacht, ging
auch.

Autor: Markus Brosch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie habt ihr das den angesteuert? Versteh nicht so recht.Waere super
wenn Ihr bei der 10bit gewandelten Zahl im Mikrocontroller anfangen
koenntet und vielleicht eine Zeichnung oder so uploaded. Waere euch
echt dankbar.

Autor: crazy horse (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hier eine 4fach-Anzeige, Multiplex.
Aber wenn du sagst: "grosse Ziffern" - wie gross? Kann sein, dass du
dann gar nicht mehr mit 5V arbeiten kannst, dann benötigst du auf jeden
Fall Treiberbausteine.

Autor: Markus Brosch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super Crazy horse! Danke Hast du auch noch den Code ueber zum ansteuern?
Lieg ich da jetzt total falsch oder kann ich theoretisch nur Zahlen bis
256 darstellen wegen 8 bit Eingang? Sorry aber kenn mich echt noch
nicht so gut damit aus!

Autor: Thomas Müller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist nicht böse gemeint, aber du solltest wirklich ein bisschen mehr
Eigeninitiative zeigen.
Wie kommst du plötzlich auf 8-Bit-Eingänge?

IMHO ist es nicht nötig, für crazy horses Schaltung die passende
Software zu posten. Die ist nämlich wirklich nicht sehr kompliziert,
wenn du verstanden hast wie die Schaltung funktioniert.
Wenn du das noch nicht hast (und danach sieht es aus), hilft dir
fertiger Code auch nicht weiter.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe ich schon, gebe ich dir aber nicht. Ist erstens in C und zweitens
willst du was lernen.
Aber das Prinzip erkläre ich dir gerne:
Eigentllich besteht das Ganze aus 3 Abschnitten:
-Umrechnung der Dualzahl in einzelne Dezimalstellen
-Umkodierung dieser Dezimalstellen in Siebensegmentcode (das macht man
am einfachsten mit einer Tabelle)
-Ausgeben der einzelnen Stellen.

zu 1: du dividierst die Dualzahl durch 10, das Ergebnis merken, den
Rest speichern.
Ergebnis nochmal durch 10, Rest ergibt die Zehner, Ergebnis die
Hunderter.
Dividierroutinen: Atmel asm200.
Jetzt hast du 3 oder 4 Bytes vorliegen, je nachdem ob du mit 3 oder
4stelliger Anzeige arbeiten willst, im Bereich von 0-9.
Jetzt brauchst du eine Tabelle von 10 Bytes, am besten im Flash ablegen
mit dem zu jeder gehörenden Siebensegmentcode. Da lädst einen Zeiger mit
der Anfangsadresse der Tabelle und holst dir den passenden
Siebensegmentcode und speicherst diesen in einem Register (oder auch in
dem, wo das Ergebnis der Dezimaldivision stand.
Damit ist die Berechnung fertig. Fehlt noch die Ausgabe:
Timer programmieren, der z.B. alle 1ms auslöst. Beim ersten Mal das
Bitmuster für die Hunderter-Stelle ausgibt, anschliessend den
Anodentreiber für die Hunderter-Stelle aktiviert. Beim nächsten Mal
sind dann die Zehner dran, dann die Einer. Danach von vorn.

Autor: Meglios Kraisis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank Crazy Horse werde mich damit beschaeftigen und wenn ich es
nicht packen sollte meld ich mich nochmal bei dir wenn das OK ist.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das schaffst du schon, wenn du das Prinzip verstanden hast. Der Rest ist
einfach.

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So ganz einfach ist die Ansteuerung der Segmente nicht. Die Gefahr das
Geisterbilder entstehen, flackern, Helligkeit, Dimmung,
Vornullenunterdrückung usw. sollte man nicht unterschätzen (wenn man
was g'scheits machen will)


SG Josef

Autor: Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch eine Parametrierung wäre interessant, das setzen der Dezimalpunkte
ist nicht ganz ohne und das Blinken einzelner Segmente
ist auch nicht ganz konfliktfrei. Dazu kommt eine Datensicherung bei
Stromausfall und ein Poweroff. Sollte der MC stehen, können durch die
kleinen Segmentvorwiderstände ev.Leds oder Ports abbrennen.
Das ist nur ein kleiner Auszug aus Vorgaben, wenn du was für die
Industrie machst. Also mach's gleich g'scheit. Oder fragt Matthias,
der weiß alles ;-)

SG Josef

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.