Forum: Mikrocontroller und Digitale Elektronik Ungewöhnliche 2 Digit 7 Segment Anzeige


von Sebastion W. (Gast)


Lesenswert?

Hallo, ich habe eine 2 Digit 7 Segment Anzeige und wollte testen, ob 
diese Funktioniert. Dazu habe ich ganz schnell einen Code, geschrieben:
1
#ifndef F_CPU
2
#define F_CPU 16e6
3
#endif
4
5
#include <util/delay.h>
6
#include <avr/io.h>
7
8
#define ZERO  0b00111111    // ; 0: a, b, c, d, e, f
9
#define ONE   0b00000110    // ; 1: b, c
10
#define TWO   0b01011011    // ; 2: a, b, d, e, g
11
#define THREE 0b01001111    // ; 3: a, b, c, d, g
12
#define FOUR  0b01100110    // ; 4: b, c, f, g
13
#define FIVE  0b01101101    // ; 5: a, c, d, f, g
14
#define SIX   0b01111101    // ; 6: a, c, d, e, f, g
15
#define SEVEN 0b00000111    // ; 7: a, b, c
16
#define EIGHT 0b01111111    // ; 8: a, b, c, d, e, f, g
17
#define NINE  0b01101111    // ; 9: a, b, c, d, f, g
18
#define ZIFFER1 PB1
19
#define ZIFFER2 PB0
20
21
int main(){
22
23
  char data[10] = {ZERO,ONE,TWO,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE};
24
   
25
  //PORTD als Ausgang konfigurieren
26
  DDRD  = 0xFF;
27
28
  //ZIFFERN Pins als Ausgang
29
  DDRB = (1<<ZIFFER1) + (1<<ZIFFER2);
30
  
31
    while(1){
32
    
33
    //Es soll "61" dargestellt werden
34
35
    PORTD  =  data[6];
36
    PORTB |=  (1<<ZIFFER1);
37
38
    _delay_ms(5);
39
40
    PORTB |=  (0<<ZIFFER1);
41
    PORTD  =  data[1];
42
    PORTB |=  (1<<ZIFFER2);
43
44
    _delay_ms(5);
45
46
    PORTB |= (0<<ZIFFER2);
47
    
48
    }
49
}

Doch mit diesem Code kann ich die Ziffern nichtmehr ausschalten. Wo 
liegt das Problem?

Lg, septex

von Pete K. (pete77)


Lesenswert?

Kannst Du 5ms Wechsel mit dem Auge detektieren?

von Wolfgang (Gast)


Lesenswert?

Wie willst du mit "|=" irgendetwas ausschalten können.

Kann natürlich auch an deiner Schaltung liegen ;-)

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Sebastion W. schrieb:
> PORTB |=  (0<<ZIFFER1);

Diese Zeile tut - nichts (VerODERn mit null macht nun mal nichts). Wenn 
du die Leitung ausschalten möchtest, ist ein
1
PORTB &= ~(1 << ZIFFER1);
zielführender.

von Sebastion W. (Gast)


Lesenswert?

omg bin ich dumm. Haha. naja danke für den Hinweis :D

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.