twitter
facebook
instagram
linkedin
youtube

Edited by Antonio Costantini

D

2320116e5f8a60ee49f26130eb8a9cd2ef12fd54

Gestione display a sette segmenti

04/10/2023 17:45

Antonio Costantini

Elettronica, sistemi, logiche programmabili, display,

Gestione display a sette segmenti

(Per la classe IV)

F. Tamigi

| Un'esercitazione Tinkercad sulla gestione di un display a sette segmenti con Arduino.



Aiutandosi con i commenti all’interno del codice, modificare il comportamento del circuito come segue:



1) modificare il periodo di scansione del ciclo di multiplexing, attualmente pari a 5 millisecondi, in un valore molto più elevato (per esempio, 200 millisecondi) in modo che la scansione del display sia chiaramente osservabile. Simulare il circuito premendo il  relativo pulsante per verificare che il comportamento del circuito sia quello previsto;



2) sulla base della precedente osservazione spiegare come funziona il multiplexing e su quale principio è basato;



3) arrestare la simulazione, riportare la durata di scansione al valore originario e modificare il codice affinché venga mostrato il messaggio CIAO. Spiegare con opportuni commenti le modifiche apportate. Simulare ancora e quindi effettuare uno screenshot del circuito e uno del codice modificato;



4) interrompere la simulazione e ripetere tutto quanto svolto al punto precedente, questa volta mostrando sul display il numero 37514. Catturare anche in questo caso gli screenshot.



NB: Se non disponete di un account su Tinkercad, registratevi gratis e fate il vostro lavoro da zero, senza copiare il mio file.




Ecco il codice per Arduino:




// cifre da mostrare



const byte figures[5][7] = {{0, 1, 1, 0, 1, 1, 1},



            {1, 0, 0, 1, 1, 1, 1},



            {0, 0, 0, 1, 1, 1, 0},



            {0, 0, 0, 1, 1, 1, 0},



            {1, 1, 1, 1, 1, 1, 0}};




void setup() {



  for (byte pin = 2; pin     pinMode(pin, OUTPUT);



    digitalWrite(pin, LOW);



    // imposta tutti i pin da 2 a 13 come uscite



    // e li pone a livello basso



  }



}




void loop()



{



  for (byte A = 2; A   // scorre i pin degli anodi comuni (da 2 a 6)



  // che corrispono alle cifre da 1 a 5



    for (byte K = 7; K     // scorre i pin dei catodi (da 7 a 13)



    // che corrispono ai segmenti da 'a' a 'g'



      digitalWrite(K, !figures[A - 2][K - 7]);



      // accende o spegne i segmenti a valore invertito



      // in quanto il pilotaggio dei catodi è negato



    digitalWrite(A, HIGH);



    // accende la cifra ponendo alto l'anodo comune



    delay(5);



    // attende il periodo di multiplexing



    digitalWrite(A, LOW);



    // spegne la cifra



  }



}




I collegamenti all'LCD



bd936315-aaa8-463d-b0b4-fb37699662cf-1134845460.png

Informativa LegaleInformativa sulla PrivacyInformativa sui Cookie