Commander 4 chiffres 7segment LED de l'Affichage à l'aide de registre à décalage 74HC595

Je vais avoir des problèmes en essayant d'utiliser deux 595 registres à décalage pour la sortie des numéros à 4 chiffres 7seg d'affichage.

J'ai obtenu au point d'afficher correctement les numéros, mais je suis maintenant la question que la sortie est de clignotant de certains déchets entre les chiffres affichés. Comment puis-je éviter cela?

Je suis sûr que le problème est que comme je suis à l'aide d'octets à envoyer à l'registres il est de verrouillage entre les octets en cours d'affichage.

Voici mon code

int latchPin = 5;
int clockPin = 6;
int dataPin = 4;

int i = 0;

int waitTime = 500;

//digits from the right
byte colDig[4] = 
{
    B00001000, //digit 1
    B00000100, //digit 2
    B00000010, //digit 3
    B00000001, //digit 4
};

const byte digit[10] =      //seven segment digits in bits
{
    B11000000, //0
    B11111001, //1
    B10100100, //2
    B10110000, //3
    B10011001, //4
    B10010010, //5
    B10000010, //6
    B11111000, //7
    B10000000, //8
    B10011000, //9
};
void setup()
{
    pinMode(latchPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
}

void loop()
{
    //step through each digit then increment 
    //the counter by one, until nine
    for(int j = 0;j<9;j++){
        updateShiftRegister(0, j);
        delay(waitTime);
        updateShiftRegister(1, j);
        delay(waitTime);
        updateShiftRegister(2, j);
        delay(waitTime);
        updateShiftRegister(3, j);
        delay(waitTime);
    }
}

void updateShiftRegister(int col, int num)
{
    digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, MSBFIRST, colDig[col]);
    shiftOut(dataPin, clockPin, MSBFIRST, digit[num]);
    digitalWrite(latchPin, HIGH);
}
  • Pouvez-vous montrer à votre schéma de câblage ?
InformationsquelleAutor JamesD | 2014-09-14