4 Siebensegmentanzeigen multiplexen

OP #2395460
Lesenswert?

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.
Gast #2395487
Lesenswert?

>  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 ?
Gast #2395510
Lesenswert?

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)".
Gast #2395553
Lesenswert?

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.
OP #2395559
Lesenswert?

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))
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.