- Nødvendig materiale
- Kretsdiagram og tilkobling
- Programmering STM32 for LCD ved bruk av Arduino
- Laster opp programmet til STM32F103C8T6
For ethvert mikrokontrollerprosjekt, vil grensesnitt mellom en skjermenhet og det gjøre prosjektet mye enklere og tiltalende for brukeren å samhandle med. Den mest brukte skjermenheten for mikrokontrollere er 16 × 2 Alpha numeriske skjermer. Disse typer skjermer er ikke bare nyttige for å vise viktig informasjon til brukeren, men kan også fungere som et feilsøkingsverktøy i løpet av den første utviklingsfasen av prosjektet. Så i denne opplæringen lærer vi hvordan vi kan grensesnitt en 16 × 2 LCD-skjerm med STM32F103C8T6 STM32 Development board og programmere den ved hjelp av Arduino IDE. For folk som er kjent med Arduino, vil denne opplæringen bare være en kakevandring, siden de begge er veldig like. For å lære mer om STM32 Blue Pill Board, følg veiledningen for å komme i gang.
Nødvendig materiale
- STM32 Blue Pill Development Board
- 16 × 2 LCD-skjerm
- FTDI programmerer
- Koble ledninger
- LCD
Kort introduksjon til 16 × 2 Punktmatrise LCD-skjerm
Som tidligere fortalt gir Energia IDE et vakkert bibliotek som gjør grensesnittet til et stykke kake, og det er derfor ikke obligatorisk å vite noe om skjermmodulen. Men ville det ikke vært interessant å vise hva vi bruker !!
Navnet 16 × 2 innebærer at skjermen har 16 kolonner og 2 rader, som til sammen (16 * 2) danner 32 bokser. En enkelt boks vil se ut som dette på bildet nedenfor
En enkelt boks har 40 piksler (prikker) med en matriserekkefølge på 5 rader og 8 kolonner, disse 40 pikslene danner til sammen ett tegn. Tilsvarende kan 32 tegn vises ved hjelp av alle boksene. La oss ta en titt på pinouts.
LCD-skjermen har totalt 16 pins, som vist ovenfor, de kan kategoriseres i fire grupper som følger
Kildepinner (1, 2 og 3): Disse pinnene gir strøm og kontrastnivå for skjermen
Kontrollpinner (4, 5 og 6): Disse pinnene setter / kontrollerer registerene i LCD-grensesnitt-ICen (mer finner du i lenken nedenfor)
Data / kommandopinner (7 til 14): Disse pinnene gir data om hvilken informasjon som skal vises på LCD-skjermen.
LED-pinner (15 og 16): Disse pinnene brukes til å lyse bakgrunnsbelysningen på LCD-skjermen om nødvendig (valgfritt).
Av alle disse 16 pinnene er det bare 10 pinner som skal brukes obligatorisk for korrekt bruk av LCD-skjermen hvis du vil vite mer om disse LCD-skjermene, hopp til denne 16x2 LCD-artikkelen.
Kretsdiagram og tilkobling
Kretsskjemaet for grensesnitt 16 * 2 Punktmatrise LCD med STM32F103C8T6 STM32 Blue Pill Board er vist nedenfor. Den er laget med Fritzing-programvaren.
Som du ser, er den komplette forbindelsen laget over et brødbrett. Vi trenger et FTDI-kort for å programmere STM32 Microcontroller. Så lik vår forrige opplæring, har vi koblet FTDI-kortet til STM32, Vcc og jordpinnen til FDTI-programmereren er koblet til henholdsvis 5V-pinnen og jordpinnen på STM32. Dette brukes til å drive STM32-kortet og LCD-skjermen, siden begge kan akseptere + 5V. Rx- og Tx-pinnen på FTDI-kortet er koblet til A9- og A10-pinnen på STM32 slik at vi kan programmere kortet direkte uten bagasjelaster.
Deretter må LCD-skjermen kobles til STM32-kortet. Vi skal bruke LCD-skjermen i 4-biters modus, så vi må koble de 4 databitpinnene (DB4 til DB7) og de to kontrollpinnene (RS og EN) til STM32-kortet som vist i STM32F103C8T6 LCD- grensesnittkretsen diagrammet ovenfor. Videre vil tabellen nedenfor hjelpe deg med å opprette forbindelsen.
LCD-pinne nr. |
LCD-pinnens navn |
STM32 Pin-navn |
1 |
Bakken (GND) |
Bakken (G) |
2 |
VCC |
5V |
3 |
VEE |
Bakken (G) |
4 |
Registrer Velg (RS) |
PB11 |
5 |
Les / skriv (RW) |
Bakken (G) |
6 |
Aktiver (EN) |
PB10 |
7 |
Databit 0 (DB0) |
Ingen tilkobling (NC) |
8 |
Databit 1 (DB1) |
Ingen tilkobling (NC) |
9 |
Databit 2 (DB2) |
Ingen tilkobling (NC) |
10 |
Databit 3 (DB3) |
Ingen tilkobling (NC) |
11 |
Data Bit 4 (DB4) |
PB0 |
12 |
Databit 5 (DB5) |
PB1 |
1. 3 |
Databit 6 (DB6) |
PC13 |
14 |
Databit 7 (DB7) |
PC14 |
15 |
LED-positiv |
5V |
16 |
LED negativ |
Bakken (G) |
Når tilkoblingene er gjort, kan vi åpne Arduino IDE og begynne å programmere den.
Programmering STM32 for LCD ved bruk av Arduino
Som fortalt i denne opplæringen, bruker vi Arduino IDE til å programmere STM32 Microcontroller. Men, Arduino IDE vil som standard ikke ha STM32-kortet installert, derfor må vi laste ned en pakke og forberede Arduino IDE for det samme. Dette er nøyaktig hva vi gjorde i vår forrige opplæring for å komme i gang med STM32F103C8T6 ved hjelp av Arduino IDE. Så hvis du ikke har installert de nødvendige pakkene, fall tilbake til denne veiledningen og følg den før du fortsetter her.
Når STM32-kortet er installert i Arduino IDE, kan vi begynne å programmere. Programmet er veldig likt det til et Arduino-kort, det eneste som vil endres er pin-navnene siden notasjonene er forskjellige for STM32 og Arduino. Hele programmet er gitt på slutten av denne siden, men for å forklare programmet har jeg delt det i små meningsfulle utdrag som vist nedenfor.
En merkbar fordel med å bruke Arduino til å programmere våre mikrokontrollere er at Arduino har ferdige biblioteker for nesten alle berømte sensorer og aktuatorer. Så her starter vi programmet vårt med å inkludere LCD-biblioteket som gjør programmeringen mye enklere.
#inkludere
I neste linje må vi spesifisere hvilke GPIO-pinner på STM32 vi har koblet LCD- skjermkontrollen og datalinjene. For å gjøre dette må vi sjekke maskinvaren vår. For enkelhets skyld kan du også henvise til tabellen gitt øverst, som viser lisensnavn på LCD mot GPIO-pin på STM32. Etter å ha nevnt pinnene kan vi initialisere LCD-skjermen ved hjelp av LiquidCrystal- funksjonen. Vi kaller også LCD-skjermen vår som “ LCD ” som vist nedenfor.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // nevn pinnavnene til med LCD er koblet til LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Initialiser LCD-skjermen
Deretter går vi inn i oppsettfunksjonen . Her har vi først nevnt hvilken type LCD vi bruker. Siden det er en 16 * 2 LCD bruker vi linjen lcd.begin (16,2). Koden i funksjonen for ugyldig oppsett blir bare utført en gang. Så vi bruker den til å vise en introtekst som kommer på skjermen i 2 sekunder og deretter blir ryddet. For å nevne posisjonen der teksten må vises bruker vi funksjonen lcd.setcursor og for å skrive ut teksten bruker vi funksjonen lcd.print . For eksempel vil lcd.setCursor (0,0) sette markøren på første rad og første kolonne der vi skriver ut " Interfacing LCD " og funksjonen lcd.setCursor (0,1) flytter markøren til andre rad første kolonne hvor vi skriver ut linjen " CircuitDigest ".
ugyldig oppsett () {lcd.begin (16, 2); // Vi bruker en 16 * 2 LCD lcd.setCursor (0, 0); // På første rad første kolonne lcd.print ("Interfacing LCD"); // Skriv ut denne lcd.setCursor (0, 1); // At secound row first column lcd.print ("- CircuitDigest"); // Skriv ut denne forsinkelsen (2000); // vent på to sekunder lcd.clear (); // Tøm skjermen}
Etter å ha vist introteksten holder vi programmet i 2 sekunder ved å lage en forsinkelse slik at brukeren kan lese intro-meldingen. Denne forsinkelsen opprettes av linjeforsinkelsen (2000) der 2000 er forsinkelsesverdien i mill sekunder. Etter forsinkelsen tømmer vi LCD-skjermen ved hjelp av lcd.clear () -funksjonen som tømmer LCD-skjermen ved å fjerne all teksten på LCD-skjermen.
Til slutt inne i tomrummet viser vi “STM32 –Blue Pill” på første linje og verdien på sekunder på den andre linjen. Verdien av sekund kan fås fra millis () -funksjonen. De millisekund () er en tidtaker som får inkrementering rett fra tid MCU-er drevet. Verdien er i form av milli sekunder, så vi deler den med 1000 før vi viser den på LCD-skjermen.
ugyldig sløyfe () { lcd.setCursor (0, 0); // På første rad første kolonne lcd.print ("STM32-Blue Pill"); // Skriv ut denne lcd.setCursor (0, 1); // På sekund rad første kolonne lcd.print (millis () / 1000); // Skriv ut verdien av sekunder }
Laster opp programmet til STM32F103C8T6
Som diskutert i avsnittet ovenfor, bør du kunne legge merke til utdataene så snart koden er lastet opp. Men dette programmet fungerer ikke neste gang du slår på kortet, siden kortet fremdeles er i programmeringsmodus. Så når programmet er lastet opp, bør genseren på oppstart 0 endres tilbake til 0 posisjoner som vist nedenfor. Nå som programmet allerede er lastet opp til STM32-kortet, trenger vi ikke FTDI-kortet, og hele oppsettet kan drives av mikro-USB-porten på STM32-kortet, som vist nedenfor.
Dette er bare et enkelt grensesnittprosjekt for å bruke LCD-skjermen med STM32-kort, men videre kan du bruke dette til å bygge kule prosjekter. Håper du forsto opplæringen og lærte noe nyttig av den. Hvis du hadde problemer med å få det til å fungere, kan du bruke kommentarseksjonen til å legge ut problemet eller bruke forumene til andre tekniske spørsmål. Den komplette arbeider av LCD-skjerm med STM32 kan også bli funnet som en video gitt nedenfor.