Hallo, ich bin noch ein Anfänger und brauche ein wenig Hilfe. Ich möchte 4 Siebensegmentanzeigen über eine Decoder an einem Port des Avr128 multiplexen. Das ansteuern ohne multiplexen über mehr pins ist ja keine große Kunst. Kann mir in C jemand ein verständliches beispiel geben wie ich das am sinnvollsten anstzellen so das ich später über eine variable auch noch die Anzeige ändern kann? Die Schaltung ist nicht das problem ich habe mir es so vorgestellt das ich über die ersten 4 Bit die Zahlen steuer und über Bit 5-8 die Transitoren fürs ein und aus schalten der 4 Anzeigen. Das größte problem liegt darin wie steuer ich am einfachsten nur die 4 Bits an die ich brauche ohne die anderen zu beeinflussen. Da ich das ganze 2 mal brauche könnte ich auch die ansteuerung der Anzeigen und der Spannungssteuerung über 2 getrennte Ports machen da hab ich aber soweit ich das sehe das selbe problem weil ich die 2x4 Anzeigen ja getrennt steuern will. Wäre nett wenn ein paar gute Antworten und Vorschläge kommen am besten auch Beispiel in C die ich auf mein vorhaben dann anpassen kann.
:
Verschoben durch Moderator
Matthias R. schrieb: > Ich möchte 4 Siebensegmentanzeigen multiplexen. > Da ich das ganze 2 mal brauche... ...brauchst Du das Ganze trotzdem nicht 2 mal posten. Gruss Harald
Ja das stimmt aber da ich neu bin wusste ich nicht wohin ich es am besten schreib. Hab einen auch wieder rausgenommen ;-) Sry Ne antwort mit nen bissle Hilfe wär nur schönen :D
Matthias R. schrieb: > Ja das stimmt aber da ich neu bin wusste ich nicht wohin ich es am > besten schreib. Jedenfalls nicht in die Codesammlung. "Forum: Codesammlung Wenn ihr eigene Programme oder Anleitungen geschrieben habt könnt ihr sie hier posten. Fragen werden gelöscht!" Peter
> am besten auch Beispiel in C // PORTB initialisiert für LEDs int wert; // darzustellende Zahl int digit=0; // aktuelle Stelle int ten[]={1,10,100,1000}; while(1) { PORTB=((wert/ten[digit])%10)|(16<<digit); digit=(digit+1)&3; ... was anderes sinnvolles tun _delay_ms(10); } irgendwelche Fragen ?
Hmm Fragen ist gut. Wie gesagt ich bin Anfänger das was in der Endlosschleife steht ist für mich fast alles nur Bahnhof nen paar Ängerfanger kommentare wären da gut.
Das Prinzip findest Du hier: AVR-Tutorial: 7-Segment-Anzeige Wenn Du nun statt dem direkten Ansteuern der Segmente unbedingt einen Decoder verwenden willst, dann kannst Du das natürlich auch tun. Programmieren musst Du es schon selbst. So etwas zählt zu den Grundlagen. Wenn Du dazu noch nicht in der Lage bist, arbeite Dich langsam dort hin. Lese dir den Artikel durch und stelle danach ggf. konkrete Fragen, aber bitte nichts mehr nach dem Motto "Hab das und das vor, brauche den Code dafür (denn ich bin faul)".
Ja ich will ja auch kein feritgen Code und beschäftigt und gesucht habe ich auch schon viel nur in dem AVR-Tutorial: 7-Segment-Anzeige ist alles in Assembler beschrieben. Die Grund funktion verstehe ich ja auch nur mein Problem liegt wie gesagt in dem beschreiben von nur 4 Bits ohne die anderen zu ändern.
Matthias R. schrieb: > Die Grund funktion verstehe ich ja auch nur > mein Problem liegt wie gesagt in dem beschreiben von nur 4 Bits ohne die > anderen zu ändern. Du meinst das Setzen von einzelnen Bits bzw. Pins eines Ports? Dann solltest Du dich mal mit dem Thema Bitmanipulation auseinandersetzen. Das funktioniert mittels UND-Verknüpfung.
Hmm ja das stimmt wohl werd ich mir nochmals angucken ob ichs versteh :D kann mir jemand zu diesen zeilen etwas mehr erläutern? #define W_CS(x) {CS=0x00;CS|=_BV(x);} // Steuerport Reset,Display über Transistor auswählen. #define W_DISP(x) (DISP |= _BV(x)) // Segment einschalten #define zahl1 (W_DISP(1))
Peter Dannegger schrieb: > Matthias R. schrieb: >> Ja das stimmt aber da ich neu bin wusste ich nicht wohin ich es am >> besten schreib. > > Jedenfalls nicht in die Codesammlung. Da es ja mittlerweile noch einen weiteren Thread dazu gibt, schieb' ich den hier nach "gesperrt".