Nota

Ciao, benvenuto nella Community di SunFounder per appassionati di Raspberry Pi, Arduino e ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.

  • Impara e Condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Accedi in anteprima agli annunci dei nuovi prodotti e alle anticipazioni.

  • Sconti Speciali: Godi di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e Giveaway Festivi: Partecipa a giveaway e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!

74HC595

Panoramica

Generalmente, ci sono due modi per pilotare un display a 7 segmenti. Un modo è collegare i suoi 8 pin direttamente a otto porte sulla scheda Uno, come abbiamo fatto in precedenza. Oppure puoi collegare il 74HC595 a tre porte della scheda UNO e poi il display a 7 segmenti al 74HC595. In questo esperimento utilizzeremo quest’ultimo metodo. In questo modo possiamo risparmiare cinque porte - considerando le porte limitate della scheda Uno, questo è molto importante. Ora iniziamo!

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

È sicuramente conveniente acquistare un kit completo, ecco il link:

Nome

ELEMENTI IN QUESTO KIT

LINK

Elite Explorer Kit

300+

Elite Explorer Kit

Puoi anche acquistarli separatamente dai link seguenti.

INTRODUZIONE DEI COMPONENTI

LINK PER L’ACQUISTO

Arduino Uno R4 WiFi

-

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistenza

ACQUISTA

Display a 7 Segmenti

ACQUISTA

74HC595

ACQUISTA

Cablaggio

../_images/29-74hc595_bb.png

Schema Elettrico

Nell’esperimento MR (pin10) è collegato a 5V (Livello HIGH) e OE (pin 1) a GND (Livello LOW). Pertanto, i dati vengono immessi sul fronte di salita di SHcp e entrano nel registro di memoria attraverso il fronte di salita. Usiamo la funzione shiftout() per inviare un dato a 8 bit al registro a scorrimento tramite DS. Sul fronte di salita di SHcp, i dati nel registro a scorrimento si spostano successivamente di un bit alla volta, cioè i dati in Q1 si spostano in Q2, e così via. Sul fronte di salita di STcp, i dati nel registro a scorrimento si spostano nel registro di memoria. Tutti i dati verranno trasferiti nel registro di memoria dopo 8 volte. Successivamente, i dati nel registro di memoria vengono inviati al bus (Q0-Q7). Quindi i 16 caratteri vengono visualizzati a turno nel display a 7 segmenti.

../_images/29_74hc595_schematic.png

Codice

Nota

  • Puoi aprire il file 29-74hc595.ino nel percorso elite-explorer-kit-main\basic_project\29-74hc595 direttamente.

  • Oppure copia questo codice nell’IDE di Arduino.

Dopo aver caricato il codice sulla scheda Uno, dovresti vedere il display a 7 segmenti visualizzare da 0 a 9 e da A a F.

Analisi del Codice

Impostare gli elementi dell’array

int datArray[16] = {252, 96, 218, 242, 102, 182, 190, 224, 254, 246, 238, 62, 156, 122, 158, 142};

Questo array memorizza i dati dei 16 caratteri da 0 a F. 252 rappresenta 0, che puoi calcolare da solo. Per visualizzare 0, il segmento g (quello centrale) del display a 7 segmenti deve essere a livello basso (spento).

Poiché il segmento g è collegato a Q1 del 74HC595, impostare sia Q1 che DP (il punto) a livello basso e lasciare gli altri pin a livello alto. Pertanto, i valori di Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0 sono 1 1 1 1 1 1 0 0.

Converti i numeri binari in decimali: 1x27+1x26+1x25+1x24+1x23+1x22+0x21+1x20=252.

Quindi questo è il valore per il numero 0 da visualizzare. Puoi calcolare altri caratteri in modo simile.

Visualizzare 0-F nel display a 7 segmenti

for(int num = 0; num < 16; num++)

{

  digitalWrite(STcp,LOW); //porta ST_CP a livello basso e mantienilo basso per tutto il tempo in cui stai trasmettendo

  shiftOut(DS,SHcp,MSBFIRST,datArray[num]);

  //riporta il pin di latch alto per segnalare al chip che non deve più ascoltare

  digitalWrite(STcp,HIGH); //porta ST_CP a livello alto per salvare i dati

  delay(1000); //attendi un secondo

}

Imposta STcp a livello basso prima e poi a livello alto. Genererà un impulso di salita di STcp.

shiftOut() viene utilizzato per inviare un byte di dati un bit alla volta, il che significa inviare un byte di dati in dataArray[num] al registro a scorrimento con il pin DS. MSBFIRST significa muoversi dai bit più alti.

Dopo digitalWrite(STcp,HIGH), STcp sarà sul fronte di salita. In questo momento, i dati nel registro a scorrimento verranno spostati nel registro di memoria.

Un byte di dati verrà trasferito nel registro di memoria dopo 8 volte. Successivamente, i dati del registro di memoria vengono inviati al bus (Q0-Q7). Vedrai un carattere visualizzato sul display a 7 segmenti. Quindi attendi 1000ms. Dopo quella linea, torna a for(). Il ciclo si ripete fino a quando tutti i caratteri vengono visualizzati uno per uno nel display a 7 segmenti dopo 16 volte.