- Reikalingos medžiagos
- Grandinės schema ir jungtis
- STM32 programavimas LCD naudojant „Arduino“
- Programos įkėlimas į STM32F103C8T6
Bet kokio mikrovaldiklio projekto atveju sąveikaujant ekrano įrenginį, projektas būtų daug lengvesnis ir patrauklesnis vartotojui bendrauti. Mikrokontroleriams dažniausiai naudojamas 16 × 2 raidžių skaitmeninis ekranas. Tokio tipo ekranai yra ne tik naudingi norint pateikti vartotojui svarbią informaciją, bet ir gali būti derinimo priemonė pradiniame projekto kūrimo etape. Taigi, šioje pamokoje sužinosime, kaip galime susieti 16 × 2 skystųjų kristalų ekraną su „STM32F103C8T6 STM32 Development“ plokšte ir jį užprogramuoti naudodami „Arduino IDE“. Žmonėms, kurie yra susipažinę su „Arduino“, ši pamoka bus tik torto pasivaikščiojimas, nes jie abu yra labai panašūs. Norėdami sužinoti daugiau apie „STM32 Blue Pill Board“, vadovaukitės mūsų darbo pradžios pamoka.
Reikalingos medžiagos
- STM32 „Blue Pill Development Board“
- 16 × 2 LCD ekranas
- FTDI programuotojas
- Laidų sujungimas
- LCD ekranas
Trumpas įvadas į 16 × 2 taškų matricos LCD ekraną
Kaip minėta anksčiau, „Energia IDE“ siūlo gražią biblioteką, kuri suteikia sąsają pyrago gabalėliui, todėl nėra nieko žinoti apie ekrano modulį. Bet argi nebūtų įdomu parodyti, ką mes naudojame !!
Pavadinimas 16 × 2 reiškia, kad ekrane yra 16 stulpelių ir 2 eilutės, kurios kartu (16 * 2) sudaro 32 langelius. Žemiau esančiame paveikslėlyje viena dėžutė atrodys maždaug taip
Viename langelyje yra 40 taškų (taškų), kurių matricos tvarka yra 5 eilutės ir 8 stulpeliai. Šie 40 taškų kartu sudaro vieną simbolį. Panašiai, naudojant visus langelius, gali būti rodomi 32 simboliai. Dabar galime pažvelgti į pinouts.
Skystųjų kristalų ekranas turi 16 kontaktų, kaip parodyta aukščiau, juos galima suskirstyti į keturias grupes, kaip nurodyta toliau
Šaltiniai kaiščiai (1, 2 ir 3): šie kaiščiai suteikia ekrano galios ir kontrasto lygį
Valdymo kaiščiai (4, 5 ir 6): Šie kaiščiai nustato / valdo registrus LCD sąsajos IC (daugiau tai galite rasti žemiau esančioje nuorodoje)
Duomenų / komandų kaiščiai (nuo 7 iki 14): šie kaiščiai pateikia duomenis, kokia informacija turėtų būti rodoma LCD.
LED smeigtukai (15 ir 16): Šie kaiščiai naudojami LCD ekrano apšvietimui, jei reikia (nebūtina).
Iš visų šių 16 smeigtukų, norint tinkamai veikti skystųjų kristalų ekrane, privaloma naudoti tik 10 smeigtukų, jei norite sužinoti daugiau apie šiuos LCD ekranus, pereikite prie šio 16x2 skystųjų kristalų ekrano.
Grandinės schema ir jungtis
16 * 2 taškų matricos skystųjų kristalų sąsajos su STM32F103C8T6 STM32 „Blue Pill“ plokšte schema parodyta žemiau. Jis pagamintas naudojant „Fritzing“ programinę įrangą.
Kaip matote, visas ryšys atliekamas per duonos lentą. Norėdami programuoti STM32 mikrovaldiklį, mums reikia FTDI plokštės. Taigi, panašiai kaip ir ankstesnėje mūsų mokymo programoje, mes prijungėme FTDI plokštę prie STM32, FDTI programuotojo Vcc ir įžeminimo kaištis yra prijungti prie atitinkamai STM32 5 V kaiščio ir įžeminto kaiščio. Tai naudojama maitinti STM32 plokštę ir skystųjų kristalų ekraną, nes abu gali priimti gali + 5V. FTDI plokštės kaiščiai Rx ir Tx yra prijungti prie STM32 A9 ir A10 kaiščių, kad plokštę galėtume programuoti tiesiogiai be įkrovos krautuvo.
Tada LCD ekranas turi būti prijungtas prie STM32 plokštės. Skystųjų kristalų ekraną naudosime 4 bitų režimu, todėl 4 duomenų bitų kaiščius (DB4 - DB7) ir du valdymo kaiščius (RS ir EN) turime prijungti prie STM32 plokštės, kaip parodyta STM32F103C8T6 LCD sąsajos grandinėje. schema aukščiau. Toliau pateikiama lentelė padės jums užmegzti ryšį.
LCD kaiščio Nr. |
LCD smeigtuko pavadinimas |
STM32 kaiščio pavadinimas |
1 |
Žemė (Gnd) |
Žemė (G) |
2 |
VCC |
5V |
3 |
VEE |
Žemė (G) |
4 |
„Register Select“ (RS) |
PB11 |
5 |
Skaityti / rašyti (RW) |
Žemė (G) |
6 |
Įgalinti (EN) |
PB10 |
7 |
0 duomenų bitas (DB0) |
Nėra ryšio (NC) |
8 |
1 duomenų bitas (DB1) |
Nėra ryšio (NC) |
9 |
2 duomenų bitas (DB2) |
Nėra ryšio (NC) |
10 |
3 duomenų bitas (DB3) |
Nėra ryšio (NC) |
11 |
4 duomenų bitas (DB4) |
PB0 |
12 |
5 duomenų bitas (DB5) |
PB1 |
13 |
6 duomenų bitas (DB6) |
PC13 |
14 |
7 duomenų bitas (DB7) |
PC14 |
15 |
LED teigiamas |
5V |
16 |
LED neigiamas |
Žemė (G) |
Atlikę ryšius, galime atidaryti „Arduino IDE“ ir pradėti jį programuoti.
STM32 programavimas LCD naudojant „Arduino“
Kaip sakoma šioje pamokoje, mes naudosime „ Arduino IDE“ programuodami savo STM32 mikrovaldiklį. Tačiau pagal numatytuosius nustatymus „Arduino IDE“ nebus įdiegta STM32 plokštė, todėl turime atsisiųsti paketą ir paruošti „Arduino IDE“. Tai yra tai, ką mes padarėme ankstesnėje mokymo programoje, pradėdami naudoti STM32F103C8T6 naudodami „Arduino IDE“. Taigi, jei dar neįdiegėte reikiamų paketų, grįžkite į šią mokymo programą ir vykdykite ją prieš tęsdami čia.
Įdiegę „STM32 Board“ į „Arduino IDE“, galime pradėti programuoti. Programa yra labai panaši į „Arduino“ plokštės, vienintelis dalykas, kuris pasikeis, yra smeigtukų pavadinimai, nes STM32 ir Arduino žymėjimai skiriasi. Visa programa pateikiama šio puslapio pabaigoje, tačiau norėdamas paaiškinti programą, aš ją padalinau į mažus reikšmingus fragmentus, kaip parodyta žemiau.
Vienas pastebimas „Arduino“ naudojimo pranašumas programuojant mūsų mikrovaldiklius yra tai, kad „Arduino“ turi parengtas bibliotekas beveik visiems garsiems jutikliams ir pavaroms. Taigi čia mes pradedame savo programą įtraukdami LCD biblioteką, kuri labai palengvina programavimą.
# įtraukti
Kitoje eilutėje turime nurodyti, prie kurių STM32 GPIO kaiščių prijungėme LCD ekrano valdymo ir duomenų linijas. Norėdami tai padaryti, turime patikrinti savo aparatinę įrangą, kad galėtumėte lengviau žiūrėti į viršuje pateiktą lentelę, kurioje pateikiami LCD kontaktų pavadinimai su STM32 GPIO kaiščiu. Paminėdami kaiščius, galime inicijuoti LCD ekraną naudodami „ LiquidCrystal“ funkciją. Mes taip pat vadiname savo LCD kaip „ LCD “, kaip parodyta žemiau.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // paminėti kaiščių pavadinimus su LCD yra prijungtas prie „ LiquidCrystal lcd“ (rs, en, d4, d5, d6, d7); // Inicializuokite LCD
Toliau žengiame į sąrankos funkciją. Pirmiausia mes paminėjome, kokio tipo LCD mes naudojame. Kadangi tai yra 16 * 2 skystųjų kristalų ekranas, naudojame liniją lcd.begin (16,2). Kodas tuščios sąrankos funkcijos viduje vykdomas tik vieną kartą. Taigi mes naudojame jį rodyti įvadinį tekstą, kuris ekrane pasirodys 2 sekundes, o tada bus išvalytas. Norėdami paminėti vietą, kurioje turi pasirodyti tekstas, naudojame funkciją lcd.setcursor , o tekstui spausdinti - funkciją lcd.print . Pavyzdžiui, lcd.setCursor (0,0) nustatys žymeklį pirmoje eilutėje ir pirmame stulpelyje, kuriame spausdiname „ Interfacing LCD “ ir funkciją lcd.setCursor (0,1) perkelia žymeklį į antros eilutės pirmąjį stulpelį, kuriame atspausdiname eilutę „ CircuitDigest “.
void setup () {lcd.begin (16, 2); // Mes naudojame 16 * 2 skystųjų kristalų ekraną lcd.setCursor (0, 0); // Pirmoje eilutėje pirmas stulpelis lcd.print ("Interfacing LCD"); // Spausdinti šį lcd.setCursor (0, 1); // Antroje eilutėje pirmasis stulpelis lcd.print ("- CircuitDigest"); // Spausdinti šį delsimą (2000); // laukti dviejų sekcijų lcd.clear (); // Išvalyti ekraną}
Parodę intro tekstą, mes palaikome programą 2 sekundes, sukurdami uždelsimą, kad vartotojas galėtų perskaityti intro pranešimą. Šį vėlavimą sukuria linijos vėlavimas (2000 m.), Kai 2000 yra vėlavimo vertė per milim. Sekundžių. Po uždelsimo išvalome skystųjų kristalų ekraną naudodami funkciją „ lcd.clear ()“, kuri išvalo skystųjų kristalų ekraną pašalindama visą tekstą iš skystųjų kristalų.
Galiausiai tuštumos kilpos viduje pirmoje eilutėje rodome „STM32 –Blue Pill“, o antroje - sekundžių vertę. Sekundės reikšmę galima gauti iš funkcijos milis () . „ Millis“ () yra laikmatis, kuris didėja iškart nuo to laiko, kai įjungiamas MCU. Vertė yra mili sekundžių forma, todėl prieš rodydami ją savo LCD, ją padalijame iš 1000.
void loop () { lcd.setCursor (0, 0); // Pirmoje eilutėje pirmas stulpelis lcd.print ("STM32 -Blue Pill"); // Spausdinti šį lcd.setCursor (0, 1); // Antroje eilutėje pirmasis stulpelis lcd.print (milis () / 1000); // Atspausdinti sekundžių vertę }
Programos įkėlimas į STM32F103C8T6
Kaip aptarta ankstesnėje pastraipoje, turėtumėte sugebėti pastebėti išvestį, kai tik kodas bus įkeltas. Bet ši programa neveiks kitą kartą, kai įjungsite plokštę, nes plokštė vis dar yra programavimo režime. Taigi įkėlus programą, 0 įkrovos šuolininkas turėtų būti pakeistas atgal į 0 pozicijas, kaip parodyta žemiau. Taip pat dabar, kadangi programa jau įkelta į STM32 plokštę, mums jau nereikia FTDI plokštės, o visa sąranka gali būti maitinama per STM32 plokštės mikro-USB prievadą, kaip parodyta žemiau.
Tai tik paprastas sąsajos projektas, padedantis naudoti LCD ekraną su STM32 plokšte, tačiau toliau galite tai naudoti kurdami šaunius projektus. Tikiuosi, kad supratote pamoką ir iš jos sužinojote ką nors naudingo. Jei susidūrėte su kokia nors problema, kad ji veiktų, naudokite komentarų skiltį, kad paskelbtumėte problemą, arba naudokite forumus kitiems techniniams klausimams. Visą skystųjų kristalų ekrano veikimą su STM32 taip pat galima rasti kaip vaizdo įrašą, pateiktą žemiau.