In questa sessione progetteremo un display LED 8x8 con matrice LED 8x8 e microcontrollore ATmega8, che può mostrare alfabeti o nomi. Di seguito è mostrata una tipica matrice di led 8x8:
Una matrice LED 8x8 contiene 64 LED (diodi emettitori di luce) disposti a forma di matrice, da cui il nome matrice LED. Queste matrici possono essere realizzate collegando 64 LED; tuttavia questo processo richiede tempo. Ora un giorno sono disponibili in forme compatte come mostrato in figura. Questi moduli compatti sono disponibili in diverse dimensioni e molti colori. Si possono scegliere per comodità.
Il costo del modulo è uguale al costo di 64 LED, quindi per un hobbista è più facile lavorare su questo. La configurazione del PIN del modulo è quella mostrata in figura. I PIN dovrebbero essere il numero esattamente come mostrato nell'immagine per evitare errori. Discuteremo la configurazione del circuito interno del modulo in dettaglio nella descrizione.
Componenti
Hardware: ATMEGA8, alimentatore (5v), AVR-ISP PROGRAMMER, condensatore da 100 uF (collegato all'alimentatore), resistenza da 1KΩ (8 pezzi).
Software: Atmel studio 6.1, progisp o flash magic.
Schema elettrico e funzionamento
I collegamenti che vengono effettuati tra ATMEGA8 e il modulo matrice LED sono mostrati nella figura sottostante.
PORTD, PIN0 ------------------ PIN13 del modulo LED
PORTD, PIN1 ------------------ PIN03 del modulo LED
PORTD, PIN2 ------------------ PIN04 del modulo LED
PORTD, PIN3 ------------------ PIN10 del modulo LED
PORTD, PIN4 ------------------ PIN06 del modulo LED
PORTD, PIN5 ------------------ PIN11 del modulo LED
PORTD, PIN6 ------------------ PIN15 del modulo LED
PORTD, PIN7 ------------------ PIN16 del modulo LED
PORTB, PIN0 ------------------ PIN09 del modulo LED
PORTB, PIN1 ------------------ PIN14 del modulo LED
PORTB, PIN2 ------------------ PIN08 del modulo LED
PORTB, PIN3 ------------------ PIN12 del modulo LED
PORTC, PIN0 ------------------ PIN01 del modulo LED
PORTC, PIN1 ------------------ PIN07 del modulo LED
PORTC, PIN2 ------------------ PIN02 del modulo LED
PORTC, PIN3 ------------------ PIN05 del modulo LED
Lo schema elettrico del display a matrice di LED 8x8 è mostrato nella figura sottostante.
Ci sono 64 LED disposti in una forma a matrice. Quindi abbiamo 8 colonne e 8 righe come mostrato in figura. Su quelle righe e colonne, tutti i terminali positivi in una riga vengono riuniti. Per ogni riga, c'è un terminale positivo comune per tutti gli 8 LED in quella riga. È mostrato nella figura sottostante,
Quindi per 8 righe abbiamo 8 terminali positivi comuni, considera la prima riga. Come si vede dalla figura, i LED da D1 a D8 hanno un terminale positivo comune e sono portati fuori dal MODULO LED come PIN9.
Va visto che tutti i comuni positivi delle file non vengono portati fuori dal MODULO LED in modo ordinato. C'è molta irregolarità sui terminali comuni in ogni caso. Si dovrebbe tenerlo a mente durante il collegamento del terminale.
Diciamo che se vogliamo che uno o tutti i LED nella prima RIGA della matrice siano accesi, allora dovremmo alimentare il PIN9 del MODULO MATRICE LED e non il PIN0.
Supponiamo che se vogliamo che uno o tutti i LED nella terza RIGA della matrice siano accesi, allora dovremmo alimentare il PIN8 del MODULO MATRICE LED e non il PIN2.
Quindi ogni volta che vogliamo che uno o tutti i LED in una RIGA siano accesi, il pin corrispondente del MODULO LED venga alimentato.
Non è ancora finita, lasciando il potere ROWS non si ottiene nulla. Dobbiamo mettere a terra l'altra estremità. Ne discuteremo di seguito.
Ora per questo esempio ignoriamo le righe positive comuni e ci concentriamo sulle colonne negative comuni.
Quindi in quel modulo tutti i terminali negativi della prima colonna sono riuniti al PIN13. Questo è mostrato nella figura sottostante.
Anche qui c'è un'irregolarità nel PIN OUTAGE del modulo. Il negativo comune dei LED della prima colonna è evidenziato al PIN13. Il negativo comune dei LED della seconda colonna è evidenziato al PIN3.
Si dovrebbe prestare attenzione ai pin durante il collegamento. Ora se uno o tutti i LED nella prima colonna devono essere messi a terra, il PIN13 del MODULO MATRICE deve essere messo a terra. In questo modo va tutto alle altre sette colonne negative comuni. Quando entrambi i casi sono messi insieme, ci imbattiamo in un circuito come mostrato di seguito,
Il circuito sopra è lo schema interno completo del MODULO LED. Diciamo che se vogliamo accendere il LED D10 nella matrice, dobbiamo alimentare il PIN14 del modulo e mettere a terra il PIN3 sul modulo. Con questo il D10 si accenderà. Questo è mostrato nella figura sotto. Questo dovrebbe essere il primo controllo per MATRIX per sapere tutto in ordine.
Diciamo che se vogliamo attivare D1, dobbiamo alimentare il PIN9 di matrice e mettere a terra il PIN13. Con quel LED D1 si illuminerà. La direzione corrente per questo caso è mostrata nella figura sottostante.
Ora per la parte difficile, considera che vogliamo attivare sia D1 che D10 alla volta. Quindi alimentiamo sia PIN9, PIN14 e mettiamo a terra entrambi PIN13, PIN3. Con ciò avremo D2 e D9 ON insieme a D1 e D10. È perché condividono terminali comuni. Quindi, se vogliamo accendere i LED lungo la diagonale, saremo costretti ad accendere tutti i LED lungo il percorso. Questo è mostrato nella figura sottostante.
Quindi per eliminare questo problema accenderemo solo un led alla volta. Diciamo at = 0m SEC, il LED D1 è acceso. A t = 1m SEC, il LED D1 è spento e il LED D2 è acceso. Sempre a t = 2 m SEC, il LED D2 si spegne e il LED D1 si accende. Questo va avanti.
Il trucco è che l'occhio umano non può acquisire una frequenza superiore a 30 HZ. Cioè se un LED si accende e si spegne continuamente a una velocità di 30 Hz o più. L'occhio vede il LED sempre acceso. Tuttavia, questo non è il caso. Il LED si accenderà e spegnerà costantemente. Questa tecnica è chiamata multiplexing.
Usando il multiplexing, gireremo solo una riga alla volta e ci sarà un ciclo continuo intorno alle 8 righe. Questo visualizzato come una matrice completamente attivata ad occhio nudo.
Ora diciamo di voler visualizzare "A" sulla matrice.
Come detto accenderemo una riga in un istante, A t = 0m SEC, PIN09 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 1m SEC, PIN14 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 2m SEC, PIN08 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 3m SEC, PIN12 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 4m SEC, PIN01 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sono a massa (gli altri pin COLUMN sono ALTI in questo momento)
A t = 5m SEC, PIN07 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN4, PIN10, PIN6, PIN11, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 6m SEC, PIN02 è impostato ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A t = 7m SEC, PIN05 è impostato su ALTO (gli altri pin ROW sono BASSI in questo momento) in questo momento, PIN13, PIN3, PIN15, PIN16 sono collegati a terra (gli altri pin COLUMN sono ALTI in questo momento)
A questa velocità, il display mostrerà continuamente il carattere "A". È mostrato in figura.
Ecco come vengono visualizzati tutti i caratteri sul display. Dopo aver collegato il circuito in modo corretto, come mostrato nello schema del circuito. Possiamo dare direttamente al controller le istruzioni per eseguire il multiplexing in modo ordinato per la visualizzazione del nome.