- Materiale necesare
- Diagrama circuitului și conexiunea
- Programarea STM32 pentru LCD folosind Arduino
- Încărcarea programului pe STM32F103C8T6
Pentru orice proiect de microcontroler, interfațarea unei unități de afișare cu acesta ar face proiectul mult mai ușor și atrăgător pentru utilizator să interacționeze. Cea mai utilizată unitate de afișare pentru microcontrolere este afișajele numerice alfa 16 × 2. Aceste tipuri de afișaje nu sunt utile numai pentru a afișa utilizatorilor informații vitale, dar pot acționa și ca instrument de depanare în etapa inițială de dezvoltare a proiectului. Deci, în acest tutorial vom afla cum putem interfața un afișaj LCD de 16 × 2 cu placa de dezvoltare STM32F103C8T6 STM32 și să-l programăm utilizând Arduino IDE. Pentru cei care sunt familiarizați cu Arduino, acest tutorial va fi doar o plimbare de tort, deoarece ambii sunt foarte asemănători. De asemenea, pentru a afla mai multe despre STM32 Blue Pill Board, urmați tutorialul nostru de început.
Materiale necesare
- STM32 Blue Pill Development Board
- Afisaj LCD 16 × 2
- Programator FTDI
- Conectarea firelor
- LCD
Introducere succintă la afișajul LCD cu matrice de 16 × 2 puncte
După cum am spus mai devreme, Energia IDE oferă o frumoasă bibliotecă care face interfața o bucată de tort și, prin urmare, nu este obligatoriu să știți nimic despre modulul de afișare. Dar, nu ar fi interesant să arătăm ce folosim !!
Numele 16 × 2 implică faptul că afișajul are 16 coloane și 2 rânduri, care împreună (16 * 2) formează 32 de cutii. O singură cutie ar arăta cam așa în imaginea de mai jos
O singură casetă are 40 de pixeli (puncte) cu o ordine matricială de 5 rânduri și 8 coloane, acești 40 de pixeli formând împreună un caracter. În mod similar, 32 de caractere pot fi afișate folosind toate casetele. Acum să aruncăm o privire asupra pinout-urilor.
Ecranul LCD are un total de 16 pini, așa cum se arată mai sus, acestea pot fi clasificate în patru grupuri, după cum urmează
Pinii sursă (1, 2 și 3): acei pin furnizează nivelul de putere și contrast pentru afișaj
Pini de control (4, 5 și 6): acești pini setează / controlează registrele din IC-ul de interfață LCD (mai multe acestea pot fi găsite în linkul de mai jos)
Date / pini de comandă (de la 7 la 14): acești pini furnizează datele despre informațiile care trebuie afișate pe ecranul LCD.
Pinii LED (15 și 16): acești pin sunt utilizați pentru a aprinde lumina de fundal a LCD-ului, dacă este necesar (opțional).
Dintre acești 16 pini, doar 10 pini trebuie utilizați obligatoriu pentru funcționarea corectă a ecranului LCD, dacă doriți să aflați mai multe despre aceste afișaje LCD, treceți la acest articol LCD de 16x2.
Diagrama circuitului și conexiunea
Schema circuitului pentru interfața LCD cu matrice de 16 * 2 puncte cu placa STM32F103C8T6 STM32 Blue Pill este prezentată mai jos. Este realizat folosind software-ul Fritzing.
După cum puteți vedea, conexiunea completă se face printr-o pană de calcul. Avem nevoie de o placă FTDI pentru a programa microcontrolerul STM32. Așa de asemănător cu tutorialul nostru anterior, am conectat placa FTDI la STM32, pinul Vcc și pinul de masă al programatorului FDTI sunt conectați la pinul 5V și respectiv pinul de masă al STM32. Aceasta este utilizată pentru alimentarea plăcii STM32 și a LCD-ului, deoarece ambele pot accepta can + 5V. Pinul Rx și Tx al plăcii FTDI este conectat la pinul A9 și A10 al STM32, astfel încât să putem programa placa direct fără încărcătorul de încărcare.
Apoi LCD-ul trebuie să fie conectat la placa STM32. Vom folosi LCD-ul în modul 4 biți, deci trebuie să conectăm cei 4 pini de biți de date (DB4 la DB7) și cei doi pini de control (RS și EN) la placa STM32 așa cum se arată în circuitul de interfață LCD STM32F103C8T6 diagrama de mai sus. În continuare, tabelul de mai jos vă va ajuta în stabilirea conexiunii.
Pin LCD Nr. |
Numele pinului LCD |
Numele pinului STM32 |
1 |
Teren (Gnd) |
Teren (G) |
2 |
VCC |
5V |
3 |
VEE |
Teren (G) |
4 |
Selectare înregistrare (RS) |
PB11 |
5 |
Citire / Scriere (RW) |
Teren (G) |
6 |
Activați (EN) |
PB10 |
7 |
Bit de date 0 (DB0) |
Fără conexiune (NC) |
8 |
Bit de date 1 (DB1) |
Fără conexiune (NC) |
9 |
Bit de date 2 (DB2) |
Fără conexiune (NC) |
10 |
Bit de date 3 (DB3) |
Fără conexiune (NC) |
11 |
Bit de date 4 (DB4) |
PB0 |
12 |
Bit de date 5 (DB5) |
PB1 |
13 |
Bit de date 6 (DB6) |
PC13 |
14 |
Bit de date 7 (DB7) |
PC14 |
15 |
LED pozitiv |
5V |
16 |
LED negativ |
Teren (G) |
Odată ce conexiunile sunt terminate, putem deschide Arduino IDE și putem începe programarea acestuia.
Programarea STM32 pentru LCD folosind Arduino
După cum am spus în acest tutorial, vom folosi Arduino IDE pentru a programa microcontrolerul nostru STM32. Dar, Arduino IDE în mod implicit nu va avea placa STM32 instalată, prin urmare trebuie să descărcăm un pachet și să pregătim ID-ul Arduino pentru același lucru. Este exact ceea ce am făcut în tutorialul nostru anterior, începând cu STM32F103C8T6 folosind Arduino IDE. Deci, dacă nu ați instalat pachetele necesare reveniți la acest tutorial și urmați-l înainte de a continua aici.
Odată ce placa STM32 este instalată în Arduino IDE, putem începe programarea. Programul este foarte asemănător cu cel al unei plăci Arduino, singurul lucru care se va schimba sunt numele pinilor, deoarece notațiile sunt diferite pentru STM32 și Arduino. Programul complet este dat la sfârșitul acestei pagini, dar pentru a explica programul, l-am împărțit în mici fragmente semnificative, așa cum se arată mai jos.
Un avantaj vizibil al utilizării Arduino pentru programarea microcontrolerelor noastre este că Arduino are biblioteci gata pentru aproape fiecare senzor și actuator celebru. Așadar, aici începem programul prin includerea bibliotecii LCD, ceea ce face programarea mult mai ușoară.
#include
În următoarea linie trebuie să specificăm la ce pini GPIO ai STM32 am conectat liniile de control și date ale afișajului LCD. Pentru a face acest lucru, trebuie să verificăm hardware-ul nostru, pentru ușurință, puteți consulta și tabelul dat în partea de sus, care listează numele pinilor LCD cu pinul GPIO al STM32. După menționarea pinilor, putem inițializa LCD-ul folosind funcția LiquidCrystal . De asemenea, denumim LCD-ul nostru „ lcd ” așa cum se arată mai jos.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // menționați numele pinilor cu LCD este conectat la LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Inițializați ecranul LCD
Apoi intrăm în funcția de configurare . Mai întâi aici menționăm ce tip de ecran LCD folosim. Deoarece este un LCD de 16 * 2 folosim linia lcd.begin (16,2). Codul din funcția de configurare nulă este executat o singură dată. Așa că îl folosim pentru a afișa un text introductiv care apare pe ecran timp de 2 secunde și apoi este șters. Pentru a menționa poziția în care textul trebuie să apară, folosim funcția lcd.setcursor și pentru a tipări textul folosim funcția lcd.print . De exemplu lcd.setCursor (0,0) va seta cursorul la primul rând și la prima coloană unde imprimăm „ Interfacing LCD ” și funcția lcd.setCursor (0,1) mută cursorul pe al doilea rând prima coloană unde imprimăm linia „ CircuitDigest ”.
void setup () {lcd.begin (16, 2); // Folosim un LCD * 16 * 2 lcd.setCursor (0, 0); // La primul rând prima coloană lcd.print ("Interfacing LCD"); // Imprimați acest lcd.setCursor (0, 1); // La rândul secundar prima coloană lcd.print ("- CircuitDigest"); // Tipărește această întârziere (2000); // așteptați două secunde lcd.clear (); // Ștergeți ecranul}
După afișarea textului introductiv, ținem programul timp de 2 secunde, creând o întârziere, astfel încât utilizatorul să poată citi mesajul introductiv. Această întârziere este creată de întârzierea liniei (2000) unde 2000 este valoarea întârzierii în mii de secunde. După întârziere, ștergem ecranul LCD folosind funcția lcd.clear () care șterge ecranul LCD, eliminând tot textul de pe ecranul LCD.
În cele din urmă în interiorul bucla vid, vom afișa „STM32 -Blue pilula“ de pe prima linie și valoarea secunde pe a doua linie. Valoarea secundei poate fi obținută din funcția millis () . The Millis () este un cronometru care devine incrementarea chiar din momentul în care MCU este alimentat. Valoarea este sub formă de mili secunde, așa că o împărțim la 1000 înainte de a o afișa pe ecranul nostru LCD.
bucla void () { lcd.setCursor (0, 0); // La primul rând prima coloană lcd.print („STM32 -Blue Pill”); // Imprimați acest lcd.setCursor (0, 1); // La rândul secundar prima coloană lcd.print (milis () / 1000); // Imprimați valoarea secounds }
Încărcarea programului pe STM32F103C8T6
După cum sa discutat în paragraful de mai sus, ar trebui să puteți observa rezultatul imediat ce codul este încărcat. Dar acest program nu va funcționa data viitoare când porniți placa, deoarece placa este încă în modul de programare. Deci, odată ce programul este încărcat, jumper-ul la boot 0 ar trebui schimbat înapoi la 0 poziții, așa cum se arată mai jos. De asemenea, acum, deoarece programul este încărcat deja pe placa STM32, nu avem nevoie de placa FTDI, iar întreaga configurare poate fi alimentată de portul micro-USB al plăcii STM32, precum se arată mai jos.
Acesta este doar un proiect simplu de interfață pentru a ajuta la utilizarea afișajului LCD cu placa STM32, dar mai departe puteți utiliza acest lucru pentru a construi proiecte interesante. Sper că ai înțeles tutorialul și ai învățat ceva util din acesta. Dacă v-ați confruntat cu vreo problemă când ați funcționat, vă rugăm să folosiți secțiunea de comentarii pentru a posta problema sau să folosiți forumurile pentru alte întrebări tehnice. Funcționarea completă a ecranului LCD cu STM32 poate fi găsită și ca un videoclip prezentat mai jos.