Hallo Leute, ich bin ein Anfänger in Mikrocontrollerprogrammierung und lese mir gerade die AVR-Tutorial & AVR-GCC-Tutorial durch. Vorher habe ich mit den "Schicki-Micki" Sprachen (so wie Ihr es wahrscheinlich nennen würdet) C# und Java aktiv programmiert. Damit ich erstmal ein Einstiegshilfe habe, habe ich mir ein Lernpaket mit ein Programmierboard und sämtlichen Bauteilen besorgt. Nun zu meinen eigentlichen Problem. Es geht um ein 7 Segment Anzeige, welches ich ansteuern will. Meine Frage hierzu ist, wie gehe ich am besten vor? In meinem Studium damals hatten wir in EWB solche 7 Segment Anzeigen benutzt gehabt. Ich erinnere mich auch, dass wir ein BCD-Decoder benutzt hatten, sprich 4-Bit Zahl rein kommen vom Decoder aus die 7 Segmente (abcdefg), die angesteuert werden raus. Eben habe ich im Internet ein BCD-Decoder als Bauteil gefunden aber weiß nur nicht ob es sich um das gleiche handelt, was man damals in den Schaltungen gesehen hat (ja leider ist ein Studium mit sehr viel Theorie verbunden und man wird im Praxis eher ins kalte Wasser geschmissen). Bei meinem "Projekt" handelt es sich um insgesamt 6 7-Segmentanzeigen, welche angesteuert werden müssen. Anhand weitere Recherchen, fande ich leider keine Mikrocontroller die mehr Ein-/Ausgänge hatten als 23. Geht man davon aus, dass jedes einzelne 7 Segment anzeige ein Decoder vorgeschalten bekommt, bräuchte man 6*4 = 24 Ausgänge. Muss es dadurch nun über 2 Controller gesteuert werden? Wenn ich 2 Mikrocontroller habe, dann bräuchte ich ja nicht extra die Decoder besorgen oder? Man könnte doch theoretisch auch direkt die 7 Segmente mit den Ausgängen von dem Mikrocontroller aus ansteuern, da ich ja durch 2 Controller insgesamt 46 Ein und Ausgänge hätte und nur 42 ( 7 * 6) davon bräuchte. Da diese 6 Zahlen im Zusammenhang stehen, müssen die 2 Controller ja dann nun auch von einem Hauptcontroller die Werte bekommen? Wie macht man das mit den 23 - 21 (für die Segmente) = 2 übrig gebliebenen Kontakte? Könnte man so vorgehen: Nennen wir die 2 übrigen "Eingänge" A und B. Könnte man ein Impuls an B geben,so dass der Controller jetzt weisst, dass ein Input kommt und die Zahlen dann in 5 ms Takt durch A einlesen? Sprich Hauptcontroller schickt jeweils 5 ms an den Port A vom Controller = 0V - 5V - 5V - 5V (0111) und schaltet somit die LED's vom ersten Segmentanzeige die Ports a, b und c an damit die Zahl 7 erscheint? Beenden würde ich den Input erneut durch ein weiteres Impuls vom Eingang B, wenn alle 3 Anzeigen ihre Werte bekommen haben. Das was ich hier erzähle, könnte völlig schwachsinnig, uneffizient und in der Form unrealisierbar sein. Entschuldige mich im Voraus. Wo ich die Beiträge im Forum durchforstet habe bekam ich zu lesen, dass ein AVR-ISP-MK2 (Es ist doch ein USB-Schnittstelle oder?) die beste Anschaffung sei, was ich machen würde um in Mikrocontroller Programmierung ein langzeitig gute Schnittstelle zu besitzen. Allerdings war dieses Artikel aus 2011. Hierzu wäre zu Fragen ob es mittlerweile eine bessere Schnittstelle gibt, welches Ihr mir empfehlen würdet oder ob ich mir den AVR-ISP-MK2 kaufen soll... Fragen über Fragen, ich hoffe einige der Spezialisten hier wären bereit einen blutigen Anfänger wie mir zu helfen. Liebe Grüße :)
Hallo, das Wesentliche steht hier: http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige oder dort ganz in der Nähe. Mit Multiplexing kann man etliche 7-S Anzeigen quasi gleichzeitig ansteuern. Gruß
@Sercan Samet Savran (disaster35) Nomen est Omen? >Es geht um ein 7 Segment Anzeige, welches ich ansteuern will. Meine Da bist du nicht der Erste. >Frage hierzu ist, wie gehe ich am besten vor? In meinem Studium damals Überlegt ;-) >hatten wir in EWB solche 7 Segment Anzeigen benutzt gehabt. Ich erinnere >mich auch, dass wir ein BCD-Decoder benutzt hatten, sprich 4-Bit Zahl >rein kommen vom Decoder aus die 7 Segmente (abcdefg), die angesteuert >werden raus. Das ist der klassiche Ansatz aus den 70er Jahren. >Bei meinem "Projekt" handelt es sich um insgesamt 6 7-Segmentanzeigen, >welche angesteuert werden müssen. Anhand weitere Recherchen, fande ich >leider keine Mikrocontroller die mehr Ein-/Ausgänge hatten als 23. Das wage ich zu bezweifen ;-) Dennoch macht man sowas heute anders. Nämlich mit einem kleinen Mikrocontroller, welche die Anzeige als LED-Matrix ansteuert. Dazu noch ein paar Schieberegister und man braucht kaum mehr als eine handvoll IOs. >Geht >man davon aus, dass jedes einzelne 7 Segment anzeige ein Decoder >vorgeschalten bekommt, bräuchte man 6*4 = 24 Ausgänge. Sieht so aus. Aber das macht heute keiner mehr so. >Muss es dadurch >nun über 2 Controller gesteuert werden? NEIN! >Das was ich hier erzähle, könnte völlig schwachsinnig, uneffizient und >in der Form unrealisierbar sein. Entschuldige mich im Voraus. In der Tat ;-) >Wo ich die Beiträge im Forum durchforstet habe bekam ich zu lesen, dass >ein AVR-ISP-MK2 (Es ist doch ein USB-Schnittstelle oder?) die beste >Anschaffung sei, was ich machen würde um in Mikrocontroller >Programmierung ein langzeitig gute Schnittstelle zu besitzen. Das ist ein Programmieradapter. Dazu braucht man noch den eigentlichen Controller. Nimm lieber einen Arduino, da ist alles schon drauf, Programmieradapter + eigentliche Mikrocontroller.
Für Anfänger sind LED-Treiber-ICs gut geeignet, z.B. MM5450, MAX7221. Die lassen sich bequem über SPI ansteuern.
Es ist echt schön zu sehen wie aktiv die Mitglieder hier sind. Ich habe meinen eigenen Beitrag überflogen ob ich da irgendwas vergessen hatte und schon waren da die Antworten :) Ich bedanke mich bei euch allen :) @Bussard Danke. Ich lese es mir mal durch und falls ich nicht weiterkommen sollte melde ich mich nochmals :) > Hallo, > > das Wesentliche steht hier: > http://www.mikrocontroller.net/articles/AVR-Tutori... > oder dort ganz in der Nähe. > Mit Multiplexing kann man etliche 7-S Anzeigen quasi gleichzeitig > ansteuern. > > Gruß
Wenn du Controller meinst, darf ich davon ausgehen? Dass du den Mikrocontroller meinst ? Ich wollte das eigentlich selbst löten :D > Das ist ein Programmieradapter. Dazu braucht man noch den eigentlichen > Controller. > Nimm lieber einen Arduino, da ist alles schon drauf, Programmieradapter > + eigentliche Mikrocontroller.
Schieberegister wurden schon angesprochen. Sogenannte Portexpander sind ebenfalls einen Blick darauf wert.
Gerald B. schrieb: > Schieberegister wurden schon angesprochen. Hier eine praktische Ausführung: http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#led1
Also, ich habe mir das mit dem Multiplexing angeschaut und für mich hört sich das erstmal nach einer super Sache an. Ich muss dabei alle 6 7-Segmentanzeigen an den gleichen Ausgängen anschließen. Sprich ich bräuchte dann 7 Ausgänge + 6 Steuerausgänge um die Segmentanzeigen an und auszuschalten. Leider konnte ich mit den Assembler-Code nicht mehr viel anfangen, da es so viel zurückliegt, wo man es im Studium gemacht hat. Im Lernpaket waren alle Anleitungen in C programmiert. Also es ist soweit richtig : 7 Ausgänge für allen abcdefg-Ports der Anzeigen und 6 Steuerausgänge, worüber ich die 7-Segmenanzeigen nacheinander an und abschalte? Sprich ich bräuchte 13 Ausgänge ? :)
Sercan S. schrieb: > Sprich ich bräuchte 13 Ausgänge ? :) Wie schon radio Eriwan sagte, im Prinzip ja. Allerdings haben die sogenannten 7-Segment-Anzeigen 8 Segmente, es kommt der Digitalpunkt dazu, und den sollte man immer mit vorsehen, der wird auch oft gebraucht. Also 8 Segment-Treiber und 6 Digit-Treiber. Georg
Sercan, bist du zufällig der Typ, der neulich vor mir an der Conrad Bauteiletheke stand? Der hat auch einen Haufen 7-Segment-Anzeigen gekauft und was von BCD gefaselt.
Ich war tatsächlich vor einer Woche in Conrad. Aber habe keine 7-Segment-Anzeigen gekauft. Also ich war es nicht. Wahrscheinlich war das ein Student dessen Hirn mit veralteten Techniken zugestopft wird, sowie es bei mir einmal war... :D > Sercan, bist du zufällig der Typ, der neulich vor mir an der Conrad > Bauteiletheke stand? Der hat auch einen Haufen 7-Segment-Anzeigen > gekauft und was von BCD gefaselt.
Schau mal: http://www.ebay.de/itm/MAX7219-LED-Dot-matrix-8-Digit-Digital-Display-Control-Module-for-Arduino/272279959978 3 Anschlüsse + 2 für die Spannung
:
Bearbeitet durch User
Peter D. schrieb: > Die lassen sich bequem über SPI ansteuern. Nein, da der Lerneffekt bezüglich der eigentlichen Aufgabe ausbleibt, ist das nicht zu empfehlen. Gerald B. schrieb: > Schieberegister wurden schon angesprochen. Sogenannte Portexpander > sind > ebenfalls einen Blick darauf wert. Kann ich nicht empfehlen, die I2C Expander wie PCF8574 sind deutlich langsamer als die üblichen Schieberegister 74595 oder 4094. Führt bei mehreren Expandern, zwischen denen umgeschaltet werden muss, sehr schnell zu Ghosting. @ TO: Kaufe dir ein paar 74HC595 Schieberegister und versuche erstmal damit eine Siebensegmentanzeige anzusteuern. Läuft das, nimmst du ein weiteres Schieberegister und 6 Transistoren, um zwischen den 6 Anzeigen zu multiplexen. Mein Tipp.
Hi Habe selber auch einige dieser Teile in Benutzung: Crazy H. schrieb: > Schau mal: > http://www.ebay.de/itm/MAX7219-LED-Dot-matrix-8-Digit-Digital-Display-Control-Module-for-Arduino/272279959978 > > 3 Anschlüsse + 2 für die Spannung Allerdings nicht an einem Arduino - ich hoffe, die Anzeige verzeiht mir, daß ich mit einem normalem AVR dran rum bastel. Timing übrigens recht unkritisch, auch stört's den ATtiny beim Umprogrammieren nicht, daß das Display an PB0-2 hängt (was aber allerhand Müll auf's Display zaubert). Netter Nebeneffekt: Der µC kann pennen, wenn die Anzeige abgefrühstückt ist - wie bei einem LCD, da hat der sendende µC ja auch NIX mit der eigentlichen Anzeige zu tun. Auch wenn ich kein Freund vom Aduino bin - man muß ja nicht immer ALLES selber machen. MfG
Wieso muß man da nen Arduino haben? Datenblatt des MAX7219 lesen und selber programmieren. Ich bin auch kein Arduino-Jünger. ..... ok erst jetzt vollständig kapiert :oD
:
Bearbeitet durch User
Robin S. schrieb: > Nein, da der Lerneffekt bezüglich der eigentlichen Aufgabe ausbleibt, > ist das nicht zu empfehlen. Kommt drauf an, wie gut man in Schaltungstechnik ist. Für Anfänger ist es nicht gerade leicht, gleichzeitig an 2 Baustellen zu arbeiten. Man muß ja keine fertige Lib nehmen, sondern kann auch selber nach Datenblatt programmieren.
Sercan S. schrieb: > Ich war tatsächlich vor einer Woche in Conrad. Aber [...] ich war es nicht. Hätte wie Faust auf Auge gepasst. Ne Hand voll 7-Segs. und erzählt seiner Schnalle, die dabei war was von BCD. > Wahrscheinlich war > das ein Student dessen Hirn mit veralteten Techniken zugestopft wird, > sowie es bei mir einmal war... :D Von der Fratze her war er auch eher C#/Java-Nerd. Musste sich den Lötkolben auch erst dazu kaufen :)
Robin S. schrieb: > Kann ich nicht empfehlen, die I2C Expander wie PCF8574 sind deutlich > langsamer als die üblichen Schieberegister 74595 oder 4094. Führt bei > mehreren Expandern, zwischen denen umgeschaltet werden muss, sehr > schnell zu Ghosting. Kommt immer drauf an, was man machen will. Setze mal ein Display nen halben Meter oder weiter vom µC ab. Mit I2C funktioniert das recht problemlos, bei SPI, ohne Treiber und dann vielleicht noch mit mehreren parallelliegenden Takteingängen mehrerer Schieberregister, da kann die Luft schon mal dünn werden ;-)
... so, ich hab mal meinen Code von STM8 und STM32 auf AVR portiert. Im Anhang ein Softwaremodul für 7-Segmentanzeigen, die über zwei 74HC595 Schieberegister getrieben werden. Die Schieberegister werden gemultiplext. So können an die kaskadierten Schieberegister max. acht 7-Segmentanzeigen angeschlossen werden. Mittels eines #defines kann ausgewählt werden, ob die angeschlossenen Anzeigen gemeinsame Kathode oder Anode besitzen. Vllt. mach ich auch noch mal irgendwann einen Schaltplan dazu... Wers brauchen kann (außer dem Threadersteller): Bedient Euch ! (und ja, ich hab das absichtlich aus meiner Bibliothek herausgerissen und nicht in ein externes File gemacht, damit auch jeder damit umgehen kann). Der Code sollte ausreichend dokumentiert sein. Viel Spaß Ralph
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.