- Materiali richiesti
- Schema elettrico e collegamento
- Programmazione STM32 per LCD utilizzando Arduino
- Caricamento del programma su STM32F103C8T6
Per qualsiasi progetto di microcontrollore, l'interfacciamento di un'unità display con esso renderebbe il progetto molto più semplice e attraente per l'utente con cui interagire. L'unità di visualizzazione più comunemente utilizzata per i microcontrollori sono i display alfanumerici 16 × 2. Questi tipi di display non sono solo utili per mostrare all'utente informazioni vitali, ma possono anche fungere da strumento di debug durante la fase di sviluppo iniziale del progetto. Quindi, in questo tutorial impareremo come interfacciare un display LCD 16 × 2 con la scheda di sviluppo STM32F103C8T6 STM32 e programmarlo utilizzando l'IDE di Arduino. Per le persone che hanno familiarità con Arduino questo tutorial sarà solo una passeggiata poiché entrambi sono molto simili. Inoltre, per saperne di più su STM32 Blue Pill Board segui il nostro tutorial introduttivo.
Materiali richiesti
- Scheda di sviluppo della pillola blu STM32
- Display LCD 16 × 2
- Programmatore FTDI
- Collegamento dei cavi
- LCD
Breve introduzione al display LCD a matrice di punti 16 × 2
Come detto in precedenza, Energia IDE fornisce una bellissima libreria che rende l'interfacciamento un gioco da ragazzi e quindi non è obbligatorio sapere nulla del modulo display. Ma non sarebbe interessante mostrare cosa stiamo usando !!
Il nome 16 × 2 implica che il display abbia 16 colonne e 2 righe, che insieme (16 * 2) formano 32 caselle. Una singola scatola sarebbe simile a questa nella foto qui sotto
Una singola casella ha 40 pixel (punti) con un ordine di matrice di 5 righe e 8 colonne, questi 40 pixel insieme formano un carattere. Allo stesso modo, 32 caratteri possono essere visualizzati utilizzando tutte le caselle. Ora diamo un'occhiata ai pinout.
Il display LCD ha un totale di 16 pin, come mostrato sopra, possono essere classificati in quattro gruppi come segue
Pin sorgente (1, 2 e 3): questi pin forniscono l'alimentazione e il livello di contrasto per il display
Pin di controllo (4, 5 e 6): questi pin impostano / controllano i registri nell'IC di interfacciamento LCD (ulteriori informazioni possono essere trovate nel link sotto)
Pin dati / comando (da 7 a 14): questi pin forniscono i dati di quali informazioni devono essere visualizzate sull'LCD.
Pin LED (15 e 16): questi pin vengono utilizzati per illuminare la retroilluminazione dell'LCD, se necessario (opzionale).
Di tutti questi 16 pin, solo 10 pin devono essere utilizzati obbligatori per il corretto funzionamento del display LCD se si desidera saperne di più su questi display LCD, passare a questo articolo LCD 16x2.
Schema elettrico e collegamento
Di seguito è mostrato lo schema del circuito per interfacciare un LCD a matrice di punti 16 * 2 con la scheda STM32F103C8T6 STM32 Blue Pill. È realizzato utilizzando il software Fritzing.
Come puoi vedere la connessione completa viene effettuata su una breadboard. Abbiamo bisogno di una scheda FTDI per programmare il microcontrollore STM32. Così simile al nostro precedente tutorial, abbiamo cablato la scheda FTDI a STM32, il Vcc e il pin di terra del programmatore FDTI sono collegati rispettivamente al pin 5V e al pin di terra dell'STM32. Viene utilizzato per alimentare la scheda STM32 e il display LCD poiché entrambi possono accettare can + 5V. I pin Rx e Tx della scheda FTDI sono collegati ai pin A9 e A10 dell'STM32 in modo da poter programmare la scheda direttamente senza il boot loader.
Successivamente l'LCD deve essere collegato alla scheda STM32. Useremo l' LCD in modalità 4 bit, quindi dobbiamo collegare i 4 pin dei bit di dati (da DB4 a DB7) ei due pin di controllo (RS ed EN) alla scheda STM32 come mostrato nel circuito di interfaccia LCD STM32F103C8T6 diagramma sopra. Inoltre, la tabella seguente ti aiuterà a effettuare la connessione.
N. pin LCD |
Nome pin LCD |
Nome pin STM32 |
1 |
Terra (Gnd) |
Terra (G) |
2 |
VCC |
5V |
3 |
VEE |
Terra (G) |
4 |
Seleziona registro (RS) |
PB11 |
5 |
Lettura / scrittura (RW) |
Terra (G) |
6 |
Abilita (EN) |
PB10 |
7 |
Bit di dati 0 (DB0) |
Nessuna connessione (NC) |
8 |
Bit di dati 1 (DB1) |
Nessuna connessione (NC) |
9 |
Bit di dati 2 (DB2) |
Nessuna connessione (NC) |
10 |
Bit di dati 3 (DB3) |
Nessuna connessione (NC) |
11 |
Bit di dati 4 (DB4) |
PB0 |
12 |
Bit di dati 5 (DB5) |
PB1 |
13 |
Bit di dati 6 (DB6) |
PC13 |
14 |
Bit di dati 7 (DB7) |
PC14 |
15 |
LED positivo |
5V |
16 |
LED negativo |
Terra (G) |
Una volta terminate le connessioni, possiamo aprire l'IDE di Arduino e iniziare a programmarlo.
Programmazione STM32 per LCD utilizzando Arduino
Come detto in questo tutorial useremo l' IDE di Arduino per programmare il nostro microcontrollore STM32. Ma l'IDE Arduino per impostazione predefinita non avrà la scheda STM32 installata, quindi dobbiamo scaricare un pacchetto e preparare l'IDE Arduino per lo stesso. Questo è esattamente quello che abbiamo fatto nel nostro tutorial precedente per iniziare con STM32F103C8T6 utilizzando l'IDE di Arduino. Quindi, se non hai installato i pacchetti richiesti, torna a questo tutorial e seguilo prima di continuare qui.
Una volta installata la scheda STM32 nell'IDE di Arduino, possiamo iniziare la programmazione. Il programma è molto simile a quello di una scheda Arduino, l'unica cosa che cambierà sono i nomi dei pin poiché le notazioni sono diverse per STM32 e Arduino. Il programma completo è fornito alla fine di questa pagina, ma per spiegare il programma l'ho suddiviso in piccoli frammenti significativi come mostrato di seguito.
Un notevole vantaggio dell'utilizzo di Arduino per programmare i nostri microcontrollori è che Arduino ha librerie pronte per quasi tutti i sensori e attuatori famosi. Quindi qui iniziamo il nostro programma includendo la libreria LCD che rende la programmazione molto più semplice.
#includere
Nella riga successiva dobbiamo specificare a quali pin GPIO dell'STM32 abbiamo collegato il controllo del display LCD e le linee dati. Per fare questo dobbiamo controllare il nostro hardware, per comodità puoi anche fare riferimento alla tabella data in alto che elenca i nomi dei pin dell'LCD contro il pin GPIO di STM32. Dopo aver menzionato i pin, possiamo inizializzare l'LCD utilizzando la funzione LiquidCrystal . Chiamiamo anche il nostro LCD " lcd " come mostrato di seguito.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // menzionare i nomi dei pin a con LCD è collegato a LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Inizializza l'LCD
Successivamente entriamo nella funzione di configurazione . Per prima cosa abbiamo menzionato il tipo di LCD che stiamo utilizzando. Poiché è un LCD 16 * 2, utilizziamo la riga lcd.begin (16,2). Il codice all'interno della funzione di configurazione void viene eseguito solo una volta. Quindi lo usiamo per visualizzare un testo introduttivo che appare sullo schermo per 2 secondi e poi viene cancellato. Per menzionare la posizione in cui deve apparire il testo usiamo la funzione lcd.setcursor e per stampare il testo usiamo la funzione lcd.print . Ad esempio lcd.setCursor (0,0) imposterà il cursore sulla prima riga e prima colonna dove stampiamo " Interfacciamento LCD " e la funzione lcd.setCursor (0,1) sposta il cursore sulla seconda riga della prima colonna dove stampiamo la riga “ CircuitDigest ”.
void setup () {lcd.begin (16, 2); // Stiamo usando un LCD 16 * 2 lcd.setCursor (0, 0); // Nella prima riga prima colonna lcd.print ("Interfacing LCD"); // Stampa questo lcd.setCursor (0, 1); // Alla seconda riga della prima colonna lcd.print ("- CircuitDigest"); // Stampa questo ritardo (2000); // aspetta due secondi lcd.clear (); // Cancella lo schermo}
Dopo aver visualizzato il testo di introduzione, teniamo il programma per 2 secondi creando un ritardo in modo che l'utente possa leggere il messaggio di introduzione. Questo ritardo viene creato dal ritardo di linea (2000) dove 2000 è il valore di ritardo in millesimi di secondo. Dopo il ritardo, cancelliamo il display LCD utilizzando la funzione lcd.clear () che cancella il display rimuovendo tutto il testo sul display LCD.
Infine all'interno del ciclo vuoto, noi mostriamo “STM32 -Blue pillola” sulla prima linea e il valore di secondi sulla seconda linea. Il valore di second può essere ottenuto dalla funzione millis () . Il millis () è un timer che aumenta dal momento in cui l'MCU è alimentato. Il valore è in milli secondi, quindi lo dividiamo per 1000 prima di visualizzarlo sul nostro LCD.
void loop () { lcd.setCursor (0, 0); // Alla prima riga, prima colonna lcd.print ("STM32 -Blue Pill"); // Stampa questo lcd.setCursor (0, 1); // Alla seconda riga della prima colonna lcd.print (millis () / 1000); // Stampa il valore dei secondi }
Caricamento del programma su STM32F103C8T6
Come discusso nel paragrafo precedente, dovresti essere in grado di notare l'output non appena il codice viene caricato. Ma questo programma non funzionerà la prossima volta che si accende la scheda, poiché la scheda è ancora in modalità di programmazione. Quindi, una volta caricato il programma, il jumper all'avvio 0 dovrebbe essere riportato a 0 posizioni come mostrato di seguito. Inoltre ora poiché il programma è già caricato sulla scheda STM32 non abbiamo bisogno della scheda FTDI e l'intero set-up può essere alimentato dalla porta micro-USB della scheda STM32 come mostrato di seguito.
Questo è solo un semplice progetto di interfacciamento per aiutare a utilizzare il display LCD con la scheda STM32, ma è inoltre possibile utilizzarlo per creare progetti interessanti. Spero che tu abbia capito il tutorial e imparato qualcosa di utile da esso. Se hai riscontrato problemi nel farlo funzionare, utilizza la sezione commenti per pubblicare il problema o utilizza i forum per altre domande tecniche. Il funzionamento completo del display LCD con STM32 può anche essere trovato come un video riportato di seguito.