Il display è una parte molto importante di qualsiasi applicazione di sistema integrato in quanto aiuta gli utenti a conoscere lo stato del sistema e mostra anche l'output o qualsiasi messaggio di avviso generato dal sistema. Esistono molti tipi di display utilizzati nell'elettronica come display a 7 segmenti, display LCD, display touchscreen TFT, display a LED ecc.
Abbiamo già interfacciato LCD 16x2 con ARM7-LPC2148 nel nostro precedente tutorial. Oggi in questo tutorial interfacciamo un display a 7 segmenti con ARM7-LPC2148. Prima di entrare nei dettagli, vedremo come controllare il modulo a 7 segmenti per visualizzare un numero qualsiasi di caratteri.
Display a 7 segmenti
I display a 7 segmenti sono tra le unità di visualizzazione più semplici per visualizzare numeri e caratteri. Viene generalmente utilizzato per visualizzare i numeri e ha un'illuminazione più brillante e una costruzione più semplice rispetto al display a matrice di punti. E a causa dell'illuminazione più brillante, l'uscita può essere visualizzata da una distanza maggiore rispetto all'LCD. Come mostrato nell'immagine sopra di un display a 7 segmenti, è composto da 8 LED, ogni LED utilizzato per illuminare un segmento dell'unità e l'8 ° LED utilizzato per illuminare DOT nel display a 7 segmenti. 8thLED viene utilizzato quando vengono utilizzati due o più moduli a 7 segmenti, ad esempio per visualizzare (0.1). Un singolo modulo viene utilizzato per visualizzare una singola cifra o carattere. Per visualizzare più di una cifra o carattere, vengono utilizzati più 7 segmenti.
Pin del display a 7 segmenti
Ci sono 10 pin, in cui 8 pin sono utilizzati per riferirsi a a, b, c, d, e, f, ge h / dp, i due pin centrali sono anodo / catodo comune di tutti i LED. Questi comuni anodo / catodo sono cortocircuitati internamente, quindi è necessario collegare solo un pin COM
A seconda della connessione, classifichiamo 7 segmenti in due tipi:
Catodo comune
In questo tutti i terminali negativi (catodo) di tutti gli 8 LED sono collegati tra loro (vedi diagramma sotto), denominati COM. E tutti i terminali positivi vengono lasciati soli o collegati ai pin del microcontrollore. Se usiamo il microcontrollore impostiamo la logica HIGH per illuminare il particolare e impostiamo LOW per spegnere il LED.
Anodo comune
In questo sono collegati tra loro tutti i terminali positivi (Anodi) di tutti gli 8 LED, denominati COM. E tutte le termiche negative vengono lasciate sole o collegate ai pin del microcontrollore. Se usiamo il microcontrollore impostiamo la logica LOW per illuminare il particolare e impostiamo la logica High per spegnere il LED.
Quindi, a seconda del valore del pin, un particolare segmento o linea di 7 segmenti può essere attivato o disattivato per visualizzare il numero o l'alfabeto desiderato. Ad esempio per visualizzare la cifra 0 dobbiamo impostare i pin ABCDEF come HIGH e solo G come LOW. Poiché i LED ABCDEF sono accesi e G è spento, questo forma la cifra 0 nel modulo a 7 segmenti. (Questo è per il catodo comune, per l'anodo comune è l'opposto).
La tabella seguente mostra i valori HEX e la cifra corrispondente in base ai pin LPC2148 per la configurazione del catodo comune.
Digit |
Valori HEX per LPC2148 |
UN |
B |
C |
D |
E |
F |
G |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
IMPORTANTE: Nella tabella sopra ho fornito i valori HEX in base ai pin che ho usato in LPC2148, controlla lo schema del circuito sottostante. Puoi usare tutti i pin che desideri ma modificare i valori esadecimali in base a ciò.
Per ulteriori informazioni sul display a 7 segmenti, fare clic sul collegamento. Controlla anche le interfacce del display a 7 segmenti con altri microcontrollori:
- Display a 7 segmenti che si interfaccia con Raspberry Pi
- Display a 7 segmenti che si interfaccia con il microcontrollore PIC
- Display a 7 segmenti che si interfaccia con Arduino
- Display a 7 segmenti che si interfaccia con il microcontrollore 8051
- 0-99 Contatore utilizzando il microcontrollore AVR
Materiali richiesti
Hardware
- ARM7-LPC2148
- Modulo display a sette segmenti (cifra singola)
- Breadboard
- Collegamento dei cavi
Software
- Keil uVision5
- Flash Magic
Schema elettrico
Per l'interfacciamento a 7 segmenti con LPC2148, non è necessario alcun componente esterno come mostrato nello schema del circuito seguente:
La tabella seguente mostra le connessioni del circuito tra il modulo a 7 segmenti e LPC2148
Perni del modulo a sette segmenti |
Pin LPC2148 |
UN |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
Comune |
GND |
Programmazione ARM7 LPC2148
Abbiamo imparato a programmare ARM7-LPC2148 usando Keil nel nostro precedente tutorial. Usiamo lo stesso Keil uVision 5 qui per scrivere il codice e creare il file hex, quindi caricare il file hex su LPC2148 utilizzando lo strumento Flash Magic. Stiamo utilizzando un cavo USB per alimentare e caricare il codice su LPC2148
Il codice completo con la spiegazione del video è fornito alla fine di questo tutorial. Qui stiamo spiegando alcune parti importanti del codice.
Per prima cosa dobbiamo includere il file di intestazione per il microcontrollore della serie LPC214x
#includere
Quindi imposta i pin come output
IO0DIR = IO0DIR-0xffffffff
Questo imposta i pin P0.0 su P0.31 come output ma useremo solo i pin (P0.0, P0.1, P0.4, P0.5, P0.6, P0.7 e P0.8).
Quindi impostare determinati pin su LOGICA ALTA o BASSA in base alla cifra numerica da visualizzare. Qui verranno visualizzati i valori da (0 a 9). Useremo un array che consiste di valori HEX per i valori da 0 a 9.
unsigned int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
I valori verranno visualizzati continuamente man mano che il codice è stato inserito nel ciclo while
mentre (1) { for (i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; // imposta il ritardo HIGH dei pin corrispondenti (9000); // Richiama la funzione di ritardo IO0CLR = IO0CLR-a; // Imposta i pin corrispondenti LOW } }
Qui IOSET e IOCLR vengono utilizzati per impostare i pin HIGH e LOW rispettivamente. Poiché abbiamo usato i pin PORT0, abbiamo IO0SET e IO0CLR .
Il ciclo For viene utilizzato per aumentare la i in ogni iterazione e ogni volta che aumenta i , il segmento 7 incrementa anche la cifra visualizzata su di esso.
la funzione di ritardo viene utilizzata per generare il tempo di ritardo tra SET e CLR
void delay (int k) // Funzione per fare delay { int i, j; per (i = 0; i
Di seguito sono riportati il codice completo e la descrizione del video funzionante. Controlla anche tutti i progetti relativi al display a 7 segmenti qui.