Atmega328 e 4Digit 7 Segment ghost lampeggiano!

Sep 13 2020

Ho collegato 4 LED 7Seg (CC) con transistor NPN sul catodo di ogni cifra. Sto usando il registro a scorrimento 74HC595 collegato nel circuito in un modo abbastanza comune. Il codice che sto eseguendo è il codice di scansione di base per 7seg. Il problema è che vedo i numeri scansionati anche su altre cifre LED. In allegato l'immagine. Li chiamo "fantasmi". Il circuito che sto usando ha un Atmega328 con un Osc interno da 8MHz. Le resistenze sui segmenti sono da 220 Ohm e 4 BC547 sui catodi delle cifre con resistenze da 1kOhm sulla base.

di seguito il codice:

void loop () {
 
      cathode_high (); // oscura lo schermo
  
      break_number (numero);
      
      display_number ();
     ritardo (1);

    
}

void break_number (int num) {// separa il numero di input in 4 singole cifre

  prima cifra = num / 1000;
  cifre [0] = prima cifra;  

  int first_left = num - (first_digit * 1000);
  cifra_seconda = prima_sinistra / 100; 
  cifre [1] = second_digit;
  int second_left = first_left - (second_digit * 100); 
  terza_diga = seconda_sinistra / 10; 
  cifre [2] = terza_digit; 
  quarta_diga = seconda_sinistra - (terza_diga * 10);
  cifre [3] = quarta cifra;
  
  
}

void display_number () {// scanning
   
  cathode_high (); 
  digitalWrite (latch, LOW); 
  shiftOut (data, clk, LSBFIRST, numbers [digits [count]]); 
  digitalWrite (CAS [count], HIGH); 
  digitalWrite (latch, HIGH); 
  count ++; 
  if (count == 4) {
    count = 0;
  }
}

void cathode_high () {// disattiva tutte e 4 le cifre
  digitalWrite (CA_1, LOW);
  digitalWrite (CA_2, LOW);
  digitalWrite (CA_3, LOW);
  digitalWrite (CA_4, LOW);
}

Qualsiasi aiuto sarebbe molto apprezzato. Grazie in anticipo!

Risposte

4 Gerben Sep 13 2020 at 20:37

Si modificano i catodi (cifre) prima di inserire i nuovi dati. Quindi per un secondo sputo i dati per le cifre precedenti vengono visualizzati sulla cifra corrente.

Scambio digitalWrite(CAS[count], HIGH);e digitalWrite(latch, HIGH);dovrebbe risolverlo.