dezimal to 7 Segment Funktion Problem

OP #2622240
Lesenswert?

Hallo zusammen,
ich habe folgendes Problem.
Ich hab mir für meine 7 Segment Anzeige eine Funktion mit if-ANweisungen 
geschrieben, mit der ich mein eine Dezimalezahl in den Wert umwandeln 
kann den ich für meine 7-Segment-Anzeige braucht.
Das funktioniert auch wunderbar mit allen Zahlen, außer mit der 0.
Kann mir da jemand helfen.

1
int ausgabebin, ausgabe7seg;      //deklaration der Variablen ausgabebin und ausgabe7seg
2

3
void bin2seg(void);            //deklaration bin2seg
4

5
void bin2seg(void)            //definiert bin2seg Funktion
6
{
7
  if (ausgabebin == 0x0)
8
    {
9
      ausgabe7seg = SEG7_0;
10
    }
11
  if (ausgabebin == 0x1)
12
    {
13
      ausgabe7seg = SEG7_1;
14
    }
15
  if (ausgabebin == 0x2)
16
    {
17
      ausgabe7seg = SEG7_2;
18
    }
19
  if (ausgabebin == 0x3)
20
    {
21
      ausgabe7seg = SEG7_3;
22
    }
23
  if (ausgabebin == 0x4)
24
    {
25
      ausgabe7seg = SEG7_4;
26
    }  
27
  if (ausgabebin == 0x5)
28
    {
29
      ausgabe7seg = SEG7_5;
30
    }  
31
  if (ausgabebin == 0x6)
32
    {
33
      ausgabe7seg = SEG7_6;
34
    }
35
  if (ausgabebin == 0x7)
36
    {
37
      ausgabe7seg = SEG7_7;
38
    }
39
  if (ausgabebin == 0x8)
40
    {
41
      ausgabe7seg = SEG7_8;
42
    }
43
  if (ausgabebin == 0x9)
44
    {
45
      ausgabe7seg = SEG7_9;
46
    }
47
}
48

49
//Ich schreibe dann den Dezimalenwert in "ausgabebin" und nach dem Ausführen der Funktion hab ich dann den passenden Wert in "ausgabe7bin"
#2622256
Lesenswert?

Dass Funktionen Parameter und Rückgabewerte haben, weißt du schon?
uint8_t bin2seg(uint8_t bin) wäre eine sinnvolle Deklaration.

Jonas Enderlin schrieb:
> Das funktioniert auch wunderbar mit allen Zahlen, außer mit der 0.
Was heißt hier 'funktioniert nicht' genau?

So oder so solltest du den Ansatz überdenken. Ich denke mal, wir 
befinden uns auf einem AVR.
Mach' ein array im Programmspeicher.
1
const PROGMEM uint8_t  segs[] = {SEG7_0, SEG7_1, .... ,SEG7_9};

dann reduziert sich deine bin2seg-Funktion auf;
1
uint8_t bin2seg(uint8_t bin) {
2
 return pgm_read_byte(&segs[bin]);
3
}

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