- Szükséges anyagok
- Áramkör és csatlakozás
- Az STM32 programozása az LCD-hez Arduino használatával
- A program feltöltése az STM32F103C8T6 fájlba
Bármely mikrovezérlő projekt esetében a megjelenítő egység összekapcsolása a projektet sokkal könnyebbé és vonzóbbá tenné a felhasználó számára. A mikrovezérlők számára a leggyakrabban használt kijelzőegység a 16 × 2 alfa numerikus kijelző. Az ilyen típusú kijelzők nemcsak a létfontosságú információk megjelenítéséhez hasznosak a felhasználó számára, hanem a projekt kezdeti fejlesztési szakaszában hibakereső eszközként is működhetnek. Tehát ebben az oktatóanyagban megtudhatjuk, hogyan lehet összekapcsolni egy 16 × 2-es LCD-kijelzőt az STM32F103C8T6 STM32 Fejlesztő táblával és programozni az Arduino IDE segítségével. Azoknak az embereknek, akik ismerik az Arduino-t, ez a bemutató csak torta séta lesz, mivel mindkettő nagyon hasonló. Ha többet szeretne megtudni az STM32 Blue Pill Board-ról, kövesse az első lépések oktatóanyagunkat.
Szükséges anyagok
- STM32 Blue Pill Development Board
- 16 × 2 LCD kijelző
- FTDI programozó
- Vezetékek csatlakoztatása
- LCD
Rövid bemutatás a 16 × 2 Dot mátrixú LCD kijelzőről
Amint azt korábban elmondtuk, az Energia IDE egy gyönyörű könyvtárat kínál, amely az összekötő darabot torta darabjává teszi, ezért nem kötelező semmit sem tudni a kijelző modulról. De nem lenne érdekes bemutatni, hogy mit használunk !!
A 16 × 2 név azt jelenti, hogy a kijelzőn 16 oszlop és 2 sor van, amelyek együtt (16 * 2) 32 mezőt alkotnak. Egyetlen doboz valami ilyesmit mutatna az alábbi képen
Egyetlen dobozban 40 pixel (pont) van, 5 mátrix sorrendben és 8 oszlopban, ezek a 40 pixel együtt egy karaktert alkot. Hasonlóképpen 32 karakter jeleníthető meg az összes mezőben. Most vessünk egy pillantást a pinoutokra.
Az LCD-n összesen 16 érintkezõ van, amint a fent látható, négy csoportba sorolhatók, például az alábbiak szerint
Forráscsapok (1., 2. és 3.): Ezek a csapok adják meg a kijelző teljesítményét és kontrasztját
Vezérlőcsapok (4, 5 és 6): Ezek a csapok beállítják / vezérlik a regisztereket az LCD interfész IC-ben (további információ az alábbi linken található)
Adat / Parancs csapok (7–14): Ezek a csapok adják meg az adatokat arról, hogy milyen információkat kell megjeleníteni az LCD-n.
LED csapok (15 és 16): Ezeket a csapokat az LCD háttérvilágításának megvilágítására használják, ha szükséges (opcionális).
Ebből a 16 érintkezőből csak 10 tűt kell kötelezően használni az LCD megfelelő működéséhez, ha többet szeretne megtudni ezekről az LCD kijelzőkről. Ugrás erre a 16x2 LCD cikkre.
Áramkör és csatlakozás
A kapcsolási rajz a 16 * 2 pontmátrixos LCD és az STM32F103C8T6 STM32 kék tabletta táblához való illesztéséhez az alábbiakban látható. A Fritzing szoftver segítségével készül.
Amint láthatja, a teljes kapcsolat kenyérlapon történik. Szükségünk van egy FTDI kártyára az STM32 mikrokontroller programozásához. Tehát hasonlóan a korábbi oktatóanyaghoz, az FTDI kártyát az STM32-hez csatlakoztattuk, az FDTI programozó Vcc és földelt csapja az STM32 5 V-os és földelt tüskéihez csatlakozik. Ezt használják az STM32 kártya és az LCD áramellátására, mivel mindkettő képes elfogadni a + 5 V-ot. Az FTDI kártya Rx és Tx csapja az STM32 A9 és A10 tűjéhez van csatlakoztatva, így a rendszert közvetlenül a rendszerbetöltő nélkül programozhatjuk.
Ezután az LCD-t az STM32 kártyához kell csatlakoztatni. Az LCD-t 4-bites módban fogjuk használni, ezért össze kell csatlakoztatnunk a 4 adatbit-csapot (DB4-DB7) és a két vezérlőcsapot (RS és EN) az STM32 kártyához, amint az az STM32F103C8T6 LCD interfész áramkörben látható ábra. Az alábbi táblázat további segítséget nyújt a kapcsolat létrehozásában.
LCD tű sz. |
LCD tű neve |
STM32 tű neve |
1 |
Föld (Gnd) |
Föld (G) |
2 |
VCC |
5V |
3 |
VEE |
Föld (G) |
4 |
Register Select (RS) |
PB11 |
5. |
Olvasás / írás (RW) |
Föld (G) |
6. |
Engedélyezés (EN) |
PB10 |
7 |
0. adatbit (DB0) |
Nincs kapcsolat (NC) |
8. |
1. adatbit (DB1) |
Nincs kapcsolat (NC) |
9. |
2. adatbit (DB2) |
Nincs kapcsolat (NC) |
10. |
3. adatbit (DB3) |
Nincs kapcsolat (NC) |
11. |
4. adatbit (DB4) |
PB0 |
12. |
5. adatbit (DB5) |
PB1 |
13. |
6. adatbit (DB6) |
PC13 |
14 |
7. adatbit (DB7) |
PC14 |
15 |
LED pozitív |
5V |
16. |
LED negatív |
Föld (G) |
Miután a kapcsolatok elkészültek, megnyithatjuk az Arduino IDE-t és elkezdhetjük programozni.
Az STM32 programozása az LCD-hez Arduino használatával
Amint ebben az oktatóanyagban elmondtuk, az Arduino IDE-t fogjuk használni az STM32 mikrokontroller programozásához. De az Arduino IDE alapértelmezés szerint nem fogja telepíteni az STM32 kártyát, ezért le kell töltenünk egy csomagot, és ugyanarra elő kell készítenünk az Arduino IDE-t. Pontosan ezt tettük a korábbi oktatóanyagunkban, és elkezdtük az STM32F103C8T6 használatát az Arduino IDE használatával. Tehát, ha még nem telepítette a szükséges csomagokat, térjen vissza erre az oktatóanyagra, és kövesse azt, mielőtt itt folytatja.
Miután az STM32 Board telepítve van az Arduino IDE-be, elkezdhetjük a programozást. A program nagyon hasonlít egy Arduino tábla programjához, csak a pin nevek változnak meg, mivel az STM32 és az Arduino jelölései eltérnek egymástól. A teljes programot ennek az oldalnak a végén adom meg, de a program magyarázatához apró, értelmes részletekre bontottam, az alábbiak szerint.
Az Arduino mikrokontrollereink programozásának egyik észrevehető előnye, hogy az Arduino szinte minden híres érzékelőhöz és működtetőhöz kész könyvtárakat készít. Tehát itt kezdjük a programunkat az LCD könyvtár bevonásával, ami nagyon megkönnyíti a programozást.
#include
A következő sorban meg kell adnunk, hogy az STM32 mely GPIO csapjaihoz csatlakoztattuk az LCD kijelző vezérlő és az adatsorokat. Ehhez ellenőriznünk kell a hardverünket, az egyszerűség kedvéért hivatkozhatunk a fenti táblázatra is, amely felsorolja az LCD tűinek neveit az STM32 GPIO tűjéhez. A csapok megemlítése után inicializálhatjuk az LCD-t a LiquidCrystal funkcióval. Az LCD-t az alábbiak szerint „ lcd-nek ” is nevezzük .
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // megemlítjük a pin-neveket, hogy az LCD-vel a LiquidCrystal lcd csatlakozzon (rs, en, d4, d5, d6, d7); // Inicializálja az LCD-t
Ezután belépünk a beállítási funkcióba. Itt először megemlítjük, hogy milyen típusú LCD-t használunk. Mivel 16 * 2-es LCD-ről van szó, az lcd.begin (16,2) sort használjuk . A void setup függvényen belüli kódot csak egyszer hajtják végre. Tehát egy bevezető szöveg megjelenítésére használjuk, amely 2 másodpercre megjelenik a képernyőn, majd törlődik. Beszélve a helyzetben, amikor a szöveg jelenik meg használni a funkciót lcd.setcursor és kinyomtatni a szöveget használjuk a lcd.print funkciót. Például az lcd.setCursor (0,0) beállítja a kurzort az első sorba és az első oszlopba, ahol kinyomtatjuk az „ Interfacing LCD ” -t, és az lcd.setCursor (0,1) áthelyezi a kurzort a második sor első oszlopába, ahol kinyomtatjuk a „ CircuitDigest ” sort.
void setup () {lcd.begin (16, 2); // 16 * 2 LCD-t használunk lcd.setCursor (0, 0); // Az első sor első oszlopában lcd.print ("Interfacing LCD"); // Nyomtassa ki ezt az lcd.setCursor (0, 1); // A második sor első oszlopában lcd.print ("- CircuitDigest"); // Nyomtassa ki ezt a késést (2000); // várjon két másodpercet lcd.clear (); // A képernyő törlése}
Az intro szöveg megjelenítése után 2 másodpercig tartjuk a programot egy késleltetés létrehozásával, hogy a felhasználó el tudja olvasni az intro üzenetet. Ezt a késleltetést a vonalkésleltetés (2000) hozza létre, ahol 2000 a késleltetési érték mill másodpercben. A késleltetés után kitisztítjuk az LCD-t az lcd.clear () funkcióval, amely az LCD-t az LCD-n lévő összes szöveg eltávolításával törli.
Végül belsejében void loop, akkor megjelenik a „STM32 -Blue Pill” az első sorban, és az értéke másodperc a második sorban. A másodperc értéke a millis () függvényből nyerhető ki. A millis () egy időzítő, amely az MCU bekapcsolásától kezdve növekszik. Az érték milli másodperc formában van, ezért elosztjuk 1000-vel, mielőtt megjelenítenénk az LCD-n.
void loop () { lcd.setCursor (0, 0); // Az első sor első oszlopában lcd.print ("STM32 -Kék tabletta"); // Nyomtassa ki ezt az lcd.setCursor (0, 1); // A második sor első oszlopában lcd.print (millis () / 1000); // A secounds értékének kinyomtatása }
A program feltöltése az STM32F103C8T6 fájlba
A fenti bekezdésben leírtaknak megfelelően észreveheti a kimenetet, amint a kód feltöltődik. De ez a program nem fog működni a következő alkalommal, amikor bekapcsolja a táblát, mivel a kártya még mindig programozási módban van. Tehát a program feltöltése után a 0. indító átugrót vissza kell állítani 0 pozícióba, az alábbiak szerint. Most is, mivel a program már fel van töltve az STM32 kártyára, már nincs szükségünk az FTDI kártyára, és a teljes beállítást az STM32 kártya mikro-USB portjáról lehet táplálni, amint az alább látható.
Ez csak egy egyszerű interfész projekt, amely elősegíti az LCD kijelző és az STM32 kártya használatát, de ezt felhasználhatja klassz projektek készítéséhez is. Remélem, megértette az oktatóanyagot, és valami hasznosat tanult belőle. Ha bármilyen problémával szembesült a működésében, használja a megjegyzés részt a probléma közzétételéhez, vagy használja a fórumokat egyéb technikai kérdésekre. Az LCD kijelző teljes működése az STM32-mel az alábbiakban található videó formájában is megtalálható.