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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.