- Material som krävs
- Kretsschema och anslutning
- Programmering av STM32 för LCD med Arduino
- Ladda upp programmet till STM32F103C8T6
För alla mikroprojektprojekt skulle gränssnitt mellan en bildskärmsenhet och det göra projektet mycket lättare och tilltalande för användaren att interagera med. Den vanligaste displayenheten för mikrokontroller är de 16 × 2 alfanumeriska skärmarna. Dessa typer av skärmar är inte bara användbara för att visa viktig information för användaren utan kan också fungera som ett felsökningsverktyg under projektets inledande utvecklingsstadium. Så i den här handledningen lär vi oss hur vi kan gränssnitt en 16 × 2 LCD-skärm med STM32F103C8T6 STM32 utvecklingskort och programmera den med Arduino IDE. För människor som är bekanta med Arduino kommer denna handledning bara att vara en tårta, eftersom de båda är mycket lika. Också för att lära dig mer om STM32 Blue Pill Board följer vår starthandledning.
Material som krävs
- STM32 Blue Pill Development Board
- 16 × 2 LCD-skärm
- FTDI programmerare
- Anslutande ledningar
- LCD
Kort introduktion till 16 × 2 LCD-display för punktmatris
Som tidigare nämnts erbjuder Energia IDE ett vackert bibliotek som gör gränssnittet till en bit kaka och det är därför inte obligatoriskt att veta någonting om displaymodulen. Men skulle det inte vara intressant att visa vad vi använder !!
Namnet 16 × 2 innebär att skärmen har 16 kolumner och 2 rader, som tillsammans (16 * 2) bildar 32 rutor. En enda ruta skulle se ut så här på bilden nedan
En enda ruta har 40 pixlar (punkter) med en matrisordning på 5 rader och 8 kolumner, dessa 40 pixlar bildar tillsammans ett tecken. På samma sätt kan 32 tecken visas med alla rutor. Låt oss nu titta på pinouts.
LCD-skärmen har totalt 16 stift, som visas ovan, de kan kategoriseras i fyra grupper enligt följande
Källstift (1, 2 och 3): Dessa stift ger ström och kontrastnivå för skärmen
Kontrollstift (4, 5 och 6): Dessa stift sätter / kontrollerar register i LCD-gränssnitts-IC (mer hittar du i länken nedan)
Data / Command Pins (7 till 14): Dessa pins ger information om vilken information som ska visas på LCD-skärmen.
LED-stift (15 och 16): Dessa stift används för att lysa bakgrundsbelysningen på LCD vid behov (tillval).
Av alla dessa 16 stift ska endast 10 stift användas obligatoriskt för att LCD-skärmen ska fungera korrekt om du vill veta mer om dessa LCD-skärmar hoppa till denna 16x2 LCD-artikel.
Kretsschema och anslutning
Kretsschemat för gränssnitt 16 * 2 Punktmatris LCD med STM32F103C8T6 STM32 Blue Pill-kort visas nedan. Den är gjord med Fritzing-programvaran.
Som du kan se görs den fullständiga anslutningen över en brädbräda. Vi behöver ett FTDI-kort för att programmera STM32 Microcontroller. Så som vår tidigare handledning har vi anslutit FTDI-kortet till STM32, VCD och jordstift på FDTI-programmeraren är anslutna till 5V-stift respektive jordstift på STM32. Detta används för att driva STM32-kortet och LCD-skärmen eftersom båda kan acceptera kan + 5V. RT- och Tx-stiftet på FTDI-kortet är anslutet till A9- och A10-stiftet på STM32 så att vi kan programmera kortet direkt utan startladdaren.
Därefter måste LCD-skärmen anslutas till STM32-kortet. Vi kommer att använda LCD-skärmen i 4-bitars läge, så vi måste ansluta de fyra databitstift (DB4 till DB7) och de två kontrollstift (RS och EN) till STM32-kortet som visas i STM32F103C8T6 LCD- gränssnittskrets ovanstående diagram. Vidare hjälper tabellen nedan dig att skapa anslutningen.
LCD-stift nr. |
LCD-stiftnamn |
STM32 Pin-namn |
1 |
Mark (GND) |
Mark (G) |
2 |
VCC |
5V |
3 |
VEE |
Mark (G) |
4 |
Registrera Välj (RS) |
PB11 |
5 |
Läs / skriv (RW) |
Mark (G) |
6 |
Aktivera (EN) |
PB10 |
7 |
Databit 0 (DB0) |
Ingen anslutning (NC) |
8 |
Databit 1 (DB1) |
Ingen anslutning (NC) |
9 |
Databit 2 (DB2) |
Ingen anslutning (NC) |
10 |
Databit 3 (DB3) |
Ingen anslutning (NC) |
11 |
Databit 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 |
Mark (G) |
När anslutningarna är klar kan vi öppna Arduino IDE och börja programmera den.
Programmering av STM32 för LCD med Arduino
Som sagt i denna handledning kommer vi att använda Arduino IDE för att programmera vår STM32 Microcontroller. Men Arduino IDE har som standard inte STM32-kortet installerat, därför måste vi ladda ner ett paket och förbereda Arduino IDE för detsamma. Det här är precis vad vi gjorde i vår tidigare handledning för att komma igång med STM32F103C8T6 med Arduino IDE. Så om du inte har installerat krävs de nödvändiga paketen till den här självstudien och följer den innan du fortsätter här.
När STM32-kortet är installerat i Arduino IDE kan vi börja programmera. Programmet är mycket likt det för ett Arduino-kort, det enda som kommer att ändras är pin-namnen eftersom notationerna skiljer sig åt för STM32 och Arduino. Hela programmet ges i slutet av denna sida, men för att förklara programmet har jag delat upp det i små meningsfulla utdrag som visas nedan.
En märkbar fördel med att använda Arduino för att programmera våra mikrokontroller är att Arduino har färdiga bibliotek för nästan alla kända sensorer och ställdon. Så här börjar vi vårt program med att inkludera LCD-biblioteket vilket gör programmeringen mycket enklare.
#omfatta
I nästa rad måste vi ange vilka GPIO-stift på STM32 vi har anslutit LCD- skärmkontrollen och datalinjerna. För att göra detta måste vi kontrollera vår hårdvara, för enkelhetens skull kan du också hänvisa till tabellen överst som visar stiftnamnen på LCD mot GPIO-stift på STM32. Efter att ha nämnt stiften kan vi initialisera LCD-skärmen med LiquidCrystal- funktionen. Vi kallar också vår LCD-skärm som ” LCD ” som visas nedan.
konst int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // nämna stiftnamnen till med LCD är ansluten till LiquidCrystal lcd (rs, en, d4, d5, d6, d7); // Initiera LCD-skärmen
Därefter går vi in i installationsfunktionen . Här har vi först nämnt vilken typ av LCD vi använder. Eftersom det är en 16 * 2 LCD använder vi linjen lcd.begin (16,2). Koden inuti tomrumsinställningsfunktionen körs bara en gång. Så vi använder den för att visa en introtext som kommer på skärmen i 2 sekunder och sedan rensas. För att nämna positionen där texten måste visas använder vi funktionen lcd.setcursor och för att skriva ut texten använder vi funktionen lcd.print . Till exempel lcd.setCursor (0,0) ställer in markören vid första raden och första kolumnen där vi skriver ut " Interfacing LCD " och funktionen lcd.setCursor (0,1) flyttar markören till andra raden första kolumnen där vi skriver ut raden “ CircuitDigest ”.
ogiltig installation () {lcd.begin (16, 2); // Vi använder en 16 * 2 LCD lcd.setCursor (0, 0); // Vid första raden första kolumnen lcd.print ("Interfacing LCD"); // Skriv ut denna lcd.setCursor (0, 1); // At secound row first column lcd.print ("- CircuitDigest"); // Skriv ut denna fördröjning (2000); // vänta på två sekunder lcd.clear (); // Rensa skärmen}
Efter att ha visat introtexten håller vi programmet i 2 sekunder genom att skapa en fördröjning så att användaren kan läsa introduktionsmeddelandet. Denna fördröjning skapas av linjefördröjningen (2000) där 2000 är fördröjningsvärdet i mill sekunder. Efter förseningen rensar vi LCD-skärmen med lcd.clear () -funktionen som rensar LCD-skärmen genom att ta bort all text på LCD-skärmen.
Slutligen inne i tomrummet visar vi “STM32 –Blå piller” på den första raden och värdet på sekunder på den andra raden. Värdet av sekund kan erhållas från millis () -funktionen. De millis () är en timer som får uppräkning redan från den tidpunkt då MCU drivs. Värdet är i form av millisekunder så vi delar det med 1000 innan vi visar det på vår LCD-skärm.
ogiltig slinga () { lcd.setCursor (0, 0); // Vid första raden första kolumnen lcd.print ("STM32-Blue Pill"); // Skriv ut denna lcd.setCursor (0, 1); // Vid sekundär rad första kolumn lcd.print (millis () / 1000); // Skriv ut värdet av sekunder }
Ladda upp programmet till STM32F103C8T6
Som diskuterats i ovanstående avsnitt bör du kunna märka utdata så snart koden laddas upp. Men det här programmet fungerar inte nästa gång du slår på kortet, eftersom kortet fortfarande är i programmeringsläge. Så när programmet har laddats upp ska bygeln på start 0 bytas tillbaka till 0 positioner som visas nedan. Nu eftersom programmet redan laddas upp till STM32-kortet behöver vi inte FTDI-kortet och hela installationen kan drivas av mikro-USB-porten på STM32-kortet så som visas nedan.
Detta är bara ett enkelt gränssnittsprojekt för att använda LCD-skärmen med STM32-kortet, men vidare kan du använda detta för att bygga häftiga projekt. Hoppas att du förstod handledningen och lärt dig något användbart av den. Om du hade problem med att få det att fungera, använd kommentarsektionen för att lägga upp problemet eller använd forumen för andra tekniska frågor. Den kompletta bearbetningen av LCD-skärm med STM32 kan också hittas som en video nedan.