Daten splitten für 7 Segment

Gast #4064157
Lesenswert?

Hallo Leute,

vielleicht hat einer ne Idee, die besser ist als meine...

Ich hab daten in nem Int.
Diese will ich so aufsplitten, dass ichs an 7 Segment Anzeigen anzeigen 
kann.

zB.
1
int a = 1234;
2
char ausgabe[4];
3

4
// Irgendwie umwandeln fuer das Char

das Ergebnis soll dann sein:
ausgabe[0] ist 4
...
ausgabe[3] ist 1

hat jemand eine Idee wie ich das geil machen kann?
Mir fällt eign nur ein mit Modulo zu arbeiten.

Also zB.
1
ausgabe[0] = a%10;

Danke!
Gast #4064222
Lesenswert?

Hallo,

danke schonmal für die Antwort.
Mal abgesehen davon, dass ich nicht ganz verstehe wie du das mit der 
Umsetzung meinst ist das nicht notwendig.

Ich steuere über SPI einen Led Treiber an, der die Segmente ansteuert.

Dafür habe ich mir gedacht, dass ich die einzelnen Zahlen/Buchstaben 
(ist nämlich eign ne 14 Segmentanzeige, nur zur Einfachheit hier 7) mit 
#define in der richtigen Bitfolge definiere und dann mit ner Prüfung
1
switch ausgabe[i]
2
case '1': data=0b00101100; break;
3
//usw...

an den Treiber weitergebe...

Leider fällt mir auch hier nichts eleganteres ein...
#4064241
Lesenswert?

Segmenter schrieb:
> Hallo,
>
> danke schonmal für die Antwort.
> Mal abgesehen davon, dass ich nicht ganz verstehe wie du das mit der
> Umsetzung meinst ist das nicht notwendig.
>
> Ich steuere über SPI einen Led Treiber an, der die Segmente ansteuert.
>
> Dafür habe ich mir gedacht, dass ich die einzelnen Zahlen/Buchstaben
> (ist nämlich eign ne 14 Segmentanzeige, nur zur Einfachheit hier 7) mit
> #define in der richtigen Bitfolge definiere und dann mit ner Prüfung
> switch ausgabe[i]
> case '1': data=0b00101100; break;
> //usw...

Also ob das bei 14 Segmenten lohnt kann ich nicht sagen, aber wenn man 
das "klassisch" (mit multiplexing) dann lagert man in dem Array direkt 
die Segmente ein und muss die nicht bei jedem Zyklus neu berechnen.
#4064853
Lesenswert?

Segmenter schrieb:

> Leider fällt mir auch hier nichts eleganteres ein...
1
uint8_t Muster[10] = { .. ,           // 0
2
                       0b00101100,    // 1
3
                       ..,            // 2
4
                       .....
5
                       ..             // 9
6
                     }

und dann eben (Anleihe an PeDa)
1
int a = 1234;
2
char ausgabe[4];
3

4
for( uint8_t i = 0; i < sizeof(ausgabe); i++ ){
5
  ausgabe[i] = Muster[ a % 10 ];
6
  a /= 10;
7
}

Ausgabe enthält dann schon das jeweilige Muster, dass du an deinen 
Treiber geben musst.
Gast #4066049
Lesenswert?

Thomas Holmes schrieb:
> Ich  würde rein interessehalber gerne mal wissen wozu das ganze
> dann am
> Ende dienen soll. Offensichtlich ist das allen anderen klar...

Das steht doch oben: es sollen 14-Segment-Anzeigen mit 7-Segmenten 
angesteuert werden. Zudem soll das Programm auch geil sein und dient 
ggf. als Rechtschreibübung für den TO.
Daß die ganze Geschichte ein uralter Hut ist, ist dabei unerheblich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren