- Nødvendige materialer
- Kredsløbsdiagram og forbindelse
- Programmering STM32 til LCD ved hjælp af Arduino
- Uploade programmet til STM32F103C8T6
For ethvert mikrokontrollerprojekt ville det, når man forbinder en displayenhed med det, gøre projektet meget lettere og tiltalende for brugeren at interagere med. Den mest anvendte displayenhed til mikrocontrollere er de 16 × 2 alfanumeriske skærme. Disse typer skærme er ikke kun nyttige til at vise vigtig information for brugeren, men kan også fungere som et fejlfindingsværktøj under projektets indledende udviklingsfase. Så i denne vejledning lærer vi, hvordan vi kan interface en 16 × 2 LCD-skærm med STM32F103C8T6 STM32 Udviklingskort og programmere det ved hjælp af Arduino IDE. For folk, der er fortrolige med Arduino, vil denne tutorial bare være en kagevandring, da de begge er meget ens. Også for at lære mere om STM32 Blue Pill Board følg vores startvejledning.
Nødvendige materialer
- STM32 Blue Pill Development Board
- 16 × 2 LCD-skærm
- FTDI programmør
- Tilslutning af ledninger
- LCD
Kort introduktion til 16 × 2 Punktmatrix LCD-display
Som tidligere fortalt giver Energia IDE et smukt bibliotek, der gør grænsefladen et stykke kage, og det er derfor ikke obligatorisk at vide noget om displaymodulet. Men ville det ikke være interessant at vise, hvad vi bruger !!
Navnet 16 × 2 indebærer, at skærmen har 16 kolonner og 2 rækker, som tilsammen (16 * 2) danner 32 felter. En enkelt kasse ville se sådan ud på billedet nedenfor
En enkelt boks har 40 pixels (prikker) med en matrixrækkefølge på 5 rækker og 8 kolonner, disse 40 pixels danner tilsammen et tegn. Tilsvarende kan 32 tegn vises ved hjælp af alle felterne. Lad os nu se på pinouts.
LCD'et har i alt 16 pins, som vist ovenfor, de kan kategoriseres i fire grupper som følger
Kildestifter (1, 2 og 3): Disse stifter kilder skærmens effekt- og kontrastniveau
Kontrolstifter (4, 5 og 6): Disse stifter indstiller / styrer registre i LCD-interface IC (mere kan findes i linket nedenfor)
Data / Command Pins (7 til 14): Disse pins giver data om, hvilke oplysninger der skal vises på LCD'et.
LED-ben (15 og 16): Disse ben bruges til at tænde LCD-baggrundsbelysningen, hvis det er nødvendigt (valgfrit).
Ud af alle disse 16 ben skal kun 10 ben bruges obligatorisk til korrekt funktion af LCD'et, hvis du vil vide mere om dette LCD-display, spring til denne 16x2 LCD-artikel.
Kredsløbsdiagram og forbindelse
Kredsløbsdiagrammet til grænsefladen 16 * 2 Punktmatrix LCD med STM32F103C8T6 STM32 Blue Pill Board er vist nedenfor. Det er lavet ved hjælp af Fritzing-softwaren.
Som du kan se, oprettes den komplette forbindelse over et brødbræt. Vi har brug for et FTDI-kort til at programmere STM32 Microcontroller. På samme måde som vores tidligere tutorial har vi tilsluttet FTDI-kortet til STM32, Vcc og jordstiften på FDTI-programmøren er tilsluttet henholdsvis 5V-stiften og jordstiften på STM32. Dette bruges til at drive STM32-kortet og LCD'et, da begge kan acceptere kan + 5V. Rx- og Tx-stiften på FTDI-kortet er forbundet til A9- og A10-stiften på STM32, så vi kan programmere kortet direkte uden boot loader.
Derefter skal LCD-skærmen sluttes til STM32-kortet. Vi skal bruge LCD'et i 4-bit-tilstand, så vi er nødt til at forbinde de 4 databit-ben (DB4 til DB7) og de to kontrolben (RS og EN) til STM32-kortet som vist i STM32F103C8T6 LCD- interface-kredsløb ovenstående diagram. Yderligere vil nedenstående tabel hjælpe dig med at oprette forbindelsen.
LCD-stift nr. |
LCD-pin-navn |
STM32 Pin-navn |
1 |
Jord (GND) |
Jord (G) |
2 |
VCC |
5V |
3 |
VEE |
Jord (G) |
4 |
Registrer Vælg (RS) |
PB11 |
5 |
Læs / skriv (RW) |
Jord (G) |
6 |
Aktivér (EN) |
PB10 |
7 |
Databit 0 (DB0) |
Ingen forbindelse (NC) |
8 |
Databit 1 (DB1) |
Ingen forbindelse (NC) |
9 |
Databit 2 (DB2) |
Ingen forbindelse (NC) |
10 |
Databit 3 (DB3) |
Ingen forbindelse (NC) |
11 |
Data Bit 4 (DB4) |
PB0 |
12 |
Databit 5 (DB5) |
PB1 |
13 |
Databit 6 (DB6) |
PC13 |
14 |
Databit 7 (DB7) |
PC14 |
15 |
LED Positiv |
5V |
16 |
LED negativ |
Jord (G) |
Når forbindelserne er færdige, kan vi åbne Arduino IDE og begynde at programmere den.
Programmering STM32 til LCD ved hjælp af Arduino
Som fortalt i denne vejledning bruger vi Arduino IDE til at programmere vores STM32 Microcontroller. Men Arduino IDE har som standard ikke STM32-kortet installeret, derfor skal vi downloade en pakke og forberede Arduino IDE til det samme. Dette er præcis, hvad vi gjorde i vores tidligere vejledning, der kom i gang med STM32F103C8T6 ved hjælp af Arduino IDE. Så hvis du ikke har installeret, skal de krævede pakker falde tilbage til denne vejledning og følge den, før du fortsætter her.
Når STM32-kortet er installeret i Arduino IDE, kan vi starte programmeringen. Programmet ligner meget på et Arduino-kort, det eneste der vil ændre sig er pinnavne, da notationerne er forskellige for STM32 og Arduino. Det komplette program findes i slutningen af denne side, men for at forklare programmet har jeg delt det i små meningsfulde uddrag som vist nedenfor.
En mærkbar fordel ved at bruge Arduino til programmering af vores mikrocontrollere er, at Arduino har færdige biblioteker til næsten alle berømte sensorer og aktuatorer. Så her starter vi vores program med at inkludere LCD-biblioteket, hvilket gør programmeringen meget lettere.
#omfatte
I den næste linje skal vi specificere, hvilke GPIO-ben på STM32 vi har tilsluttet LCD- skærmkontrol og datalinjer. For at gøre dette er vi nødt til at kontrollere vores hardware, for nemheds skyld kan du også henvise til tabellen øverst, der viser pinnavne på LCD mod GPIO pin på STM32. Efter at have nævnt stifterne kan vi initialisere LCD'et ved hjælp af LiquidCrystal- funktionen. Vi navngiver også vores LCD-skærm som “ LCD ” som vist nedenfor.
konst int rs = PB11, da = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // nævne pinnavne til med LCD er forbundet til LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Initialiser LCD'et
Dernæst træder vi ind i installationsfunktionen . Her først har vi nævnt, hvilken type LCD vi bruger. Da det er et 16 * 2 LCD, bruger vi linjen lcd.begin (16,2). Koden inde i tomrumsopsætningsfunktionen udføres kun en gang. Så vi bruger den til at vise en introtekst, der kommer på skærmen i 2 sekunder og derefter bliver ryddet. For at nævne den position, hvor teksten skal vises, bruger vi funktionen lcd.setcursor og til at udskrive teksten bruger vi lcd.print- funktionen. For eksempel vil lcd.setCursor (0,0) indstille markøren i første række og første kolonne, hvor vi udskriver “ Interfacing LCD ” og funktionen lcd.setCursor (0,1) flytter markøren til anden række første kolonne, hvor vi udskriver linjen " CircuitDigest ".
ugyldig opsætning () {lcd.begin (16, 2); // Vi bruger en 16 * 2 LCD lcd.setCursor (0, 0); // I første række første kolonne lcd.print ("Interfacing LCD"); // Udskriv denne lcd.setCursor (0, 1); // Ved sekundet række første kolonne lcd.print ("- CircuitDigest"); // Udskriv denne forsinkelse (2000); // vent på to sekunder lcd.clear (); // Ryd skærmen}
Efter at have vist introteksten holder vi programmet i 2 sekunder ved at oprette en forsinkelse, så brugeren kan læse introbeskeden. Denne forsinkelse oprettes af linjeforsinkelsen (2000), hvor 2000 er forsinkelsesværdien i mill. Sekunder. Efter forsinkelsen rydder vi LCD'et ved hjælp af lcd.clear () -funktionen, som rydder LCD'et ved at fjerne al teksten på LCD'et.
Endelig inde i hulrummet viser vi “STM32 –Blå pille” på den første linje og værdien af sekunder på den anden linje. Værdien af sekund kan opnås fra millis () -funktionen. De Millis () er en timer, der får forøge lige fra det tidspunkt, hvor MCU er drevet. Værdien er i form af milli sekunder, så vi deler den med 1000, inden vi viser den på vores LCD.
ugyldig sløjfe () { lcd.setCursor (0, 0); // Ved første række første kolonne lcd.print ("STM32-Blue Pill"); // Udskriv denne lcd.setCursor (0, 1); // Ved sekundær række første kolonne lcd.print (millis () / 1000); // Udskriv værdien af sekunder }
Uploade programmet til STM32F103C8T6
Som diskuteret i ovenstående afsnit skal du være i stand til at bemærke output, så snart koden er uploadet. Men dette program fungerer ikke næste gang du tænder tavlen, da tavlen stadig er i programmeringstilstand. Så når programmet er uploadet, skal jumperen på boot 0 ændres tilbage til 0 positioner som vist nedenfor. Også nu, da programmet allerede er uploadet til STM32-kortet, har vi ikke brug for FTDI-kortet, og hele opsætningen kan drives af mikro-USB-porten på STM32-kortet som vist nedenfor.
Dette er bare et simpelt interface-projekt, der hjælper med at bruge LCD-skærmen med STM32-kortet, men yderligere kan du bruge dette til at opbygge seje projekter. Håber du forstod vejledningen og lærte noget nyttigt af den. Hvis du har haft problemer med at få det til at fungere, skal du bruge kommentarsektionen til at sende problemet eller bruge fora til andre tekniske spørgsmål. Den komplette bearbejdning af LCD-skærm med STM32 kan også findes som en video angivet nedenfor.