Forum: Mikrocontroller und Digitale Elektronik SN74LS164 an AVR


von Alan (Gast)


Lesenswert?

Um eine 7Segmentanzeige pinsparend anzusteuern will ich einen SN74LS164 
verwenden. Das Display mit gemeinsamer Kathode ist an Q0-Q7 
angeschlossen, MR hängt in der Luft; Eingänge A&B sind verbunden und 
hängen an PC4 des AVR; CP (Clock) ist mit PC5 verbunden.

Das C Programm dazu:
1
#include <avr/io.h>
2
#define F_CPU 4000000
3
#include <util/delay.h>
4
5
int main (void) {
6
  DDRD |= (1<<PC5) | (1<<PC4); //PC4&PC5 als Ausgänge
7
  PORTC |= (1<<PC4); //Data auf high
8
  PORTC |= (1<<PC5); //Clock auf high
9
  _delay_ms(10);     //10 ms warten
10
  PORTC &= ~(1<<PC5);//Clock auf low
11
  while (1);
12
}

von Alan (Gast)


Lesenswert?

PS: Das Problem: Das Segment A bleibt aus, obwohl ein Bit auf Q0 
geschoben wird.

von Peter D. (peda)


Lesenswert?

Du mußt schon mindestens 8 Bits rausschieben, ist ja ein 8Bit-SRG.


Peter

von Alan (Gast)


Lesenswert?

Also acht mal Clock low->high? Oder wie?

von Jupp (Gast)


Lesenswert?

So sieht's aus.

von Alan (Gast)


Lesenswert?

1
#include <avr/io.h>
2
#define F_CPU 4000000
3
#include <util/delay.h>
4
5
int i;
6
int main (void) {
7
  DDRD |= (1<<PC5) | (1<<PC4);
8
  PORTC |= (1<<PC4);
9
  i = 0;
10
  while(i < 8) {
11
    PORTC |= (1<<PC5);
12
    _delay_ms(10);
13
    PORTC &= ~(1<<PC5);
14
    i++;
15
  }
16
  while (1);
17
}

Damit gehts immer noch nicht. :(

von Christian Erker (Gast)


Lesenswert?

Leg erstmal den Reset-Pin auf definiertes Potential..

Gruß,
Christian

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.