- Wymagane materiały
- Schemat obwodu i połączenie
- Programowanie STM32 dla LCD za pomocą Arduino
- Wgrywanie programu do STM32F103C8T6
W przypadku każdego projektu mikrokontrolera połączenie z nim wyświetlacza uczyniłoby projekt o wiele łatwiejszym i atrakcyjnym dla użytkownika do interakcji. Najczęściej używaną jednostką wyświetlającą dla mikrokontrolerów są wyświetlacze 16 × 2 Alpha numeryczne. Tego typu wyświetlacze są przydatne nie tylko do wyświetlania ważnych informacji dla użytkownika, ale mogą również służyć jako narzędzie do debugowania na początkowym etapie rozwoju projektu. Tak więc w tym samouczku dowiemy się, w jaki sposób możemy połączyć wyświetlacz LCD 16 × 2 z płytką rozwojową STM32F103C8T6 STM32 i zaprogramować ją za pomocą Arduino IDE. Dla osób, które są zaznajomione z Arduino, ten samouczek będzie po prostu spacerkiem, ponieważ oba są bardzo podobne. Aby dowiedzieć się więcej na temat płyty STM32 Blue Pill, skorzystaj z naszego samouczka wprowadzającego.
Wymagane materiały
- Płytka rozwojowa Blue Pill STM32
- Wyświetlacz LCD 16 × 2
- Programator FTDI
- Podłączanie przewodów
- LCD
Krótkie wprowadzenie do wyświetlacza LCD 16 × 2 z matrycą punktową
Jak powiedziano wcześniej, Energia IDE zapewnia piękną bibliotekę, która sprawia, że interfejs jest bułką z masłem, dlatego nie jest obowiązkowa wiedza o module wyświetlacza. Ale czy nie byłoby interesujące pokazać, czego używamy!
Nazwa 16 × 2 oznacza, że wyświetlacz ma 16 kolumn i 2 rzędy, które razem (16 * 2) tworzą 32 pola. Jedno pudełko wyglądałoby mniej więcej tak na poniższym obrazku
Pojedyncze pudełko ma 40 pikseli (punktów) z porządkiem matrycy 5 wierszy i 8 kolumn, te 40 pikseli razem tworzy jeden znak. Podobnie, 32 znaki można wyświetlić we wszystkich polach. Teraz spójrzmy na pinouty.
Wyświetlacz LCD ma łącznie 16 pinów, jak pokazano powyżej, można je podzielić na cztery grupy, jak poniżej
Piny źródłowe (1, 2 i 3): Te styki zapewniają moc i poziom kontrastu wyświetlacza
Piny sterujące (4, 5 i 6): Te szpilki ustawiają / sterują rejestrami w IC interfejsu LCD (więcej można znaleźć w linku poniżej)
Piny danych / poleceń (7 do 14): Te szpilki dostarczają danych, jakie informacje powinny być wyświetlane na wyświetlaczu LCD.
Piny LED (15 i 16): Te szpilki służą do podświetlenia podświetlenia LCD w razie potrzeby (opcjonalnie).
Spośród wszystkich tych 16 pinów, tylko 10 pinów jest obowiązkowych do prawidłowego działania wyświetlacza LCD, jeśli chcesz dowiedzieć się więcej o tych wyświetlaczach LCD, przejdź do artykułu 16x2 LCD.
Schemat obwodu i połączenie
Schemat obwodu do interfejsu 16 * 2 Dot matrix LCD z płytą STM32F103C8T6 STM32 Blue Pill pokazano poniżej. Jest wykonany przy użyciu oprogramowania Fritzing.
Jak widać, całe połączenie jest wykonywane na płytce stykowej. Do zaprogramowania mikrokontrolera STM32 potrzebujemy płytki FTDI. Podobnie jak w naszym poprzednim samouczku, podłączyliśmy płytkę FTDI do STM32, pin Vcc i uziemienia programatora FDTI są połączone odpowiednio z pinem 5 V i pinem uziemienia STM32. Służy do zasilania płyty STM32 i wyświetlacza LCD, ponieważ oba mogą akceptować + 5V. Styki Rx i Tx płytki FTDI są połączone ze stykami A9 i A10 STM32, dzięki czemu możemy programować płytkę bezpośrednio, bez programu ładującego.
Następnie LCD należy podłączyć do płytki STM32. Zamierzamy używać wyświetlacza LCD w trybie 4-bitowym, więc musimy podłączyć 4 piny bitowe danych (DB4 do DB7) i dwa piny sterujące (RS i EN) do płytki STM32, jak pokazano na obwodzie interfejsu LCD STM32F103C8T6 schemat powyżej. Ponadto poniższa tabela pomoże ci w nawiązaniu połączenia.
Nr styku wyświetlacza LCD |
Nazwa styku wyświetlacza LCD |
Nazwa styku STM32 |
1 |
Ziemia (Gnd) |
Mielone (G) |
2 |
VCC |
5V |
3 |
VEE |
Mielone (G) |
4 |
Zarejestruj Wybierz (RS) |
PB11 |
5 |
Odczyt / zapis (RW) |
Mielone (G) |
6 |
Włącz (EN) |
PB10 |
7 |
Bit danych 0 (DB0) |
Brak połączenia (NC) |
8 |
Bit danych 1 (DB1) |
Brak połączenia (NC) |
9 |
Bit danych 2 (DB2) |
Brak połączenia (NC) |
10 |
Bit danych 3 (DB3) |
Brak połączenia (NC) |
11 |
Bit danych 4 (DB4) |
PB0 |
12 |
Bit danych 5 (DB5) |
PB1 |
13 |
Bit danych 6 (DB6) |
PC13 |
14 |
Bit danych 7 (DB7) |
PC14 |
15 |
Dioda LED dodatnia |
5V |
16 |
Negatyw LED |
Mielone (G) |
Po wykonaniu połączeń możemy otworzyć Arduino IDE i rozpocząć programowanie.
Programowanie STM32 dla LCD za pomocą Arduino
Jak powiedziano w tym samouczku, będziemy używać Arduino IDE do programowania naszego mikrokontrolera STM32. Ale Arduino IDE domyślnie nie będzie miało zainstalowanej płytki STM32, stąd musimy pobrać pakiet i przygotować Arduino IDE na to samo. To jest dokładnie to, co zrobiliśmy w naszym poprzednim samouczku, zaczynając od STM32F103C8T6 przy użyciu Arduino IDE. Jeśli więc nie zainstalowałeś wymaganych pakietów, wróć do tego samouczka i postępuj zgodnie z nim, zanim przejdziesz dalej.
Po zainstalowaniu płytki STM32 w Arduino IDE możemy przystąpić do programowania. Program jest bardzo podobny do tego na płytce Arduino, jedyną rzeczą, która ulegnie zmianie, są nazwy pinów, ponieważ notacje są różne dla STM32 i Arduino. Kompletny program jest podany na końcu tej strony, ale aby wyjaśnić program, podzieliłem go na małe znaczące fragmenty, jak pokazano poniżej.
Jedną z zauważalnych zalet używania Arduino do programowania naszych mikrokontrolerów jest to, że Arduino ma gotowe biblioteki dla prawie wszystkich znanych czujników i elementów wykonawczych. Więc tutaj zaczynamy nasz program od dołączenia biblioteki LCD, co znacznie ułatwia programowanie.
#zawierać
W następnym wierszu musimy określić, do których pinów GPIO STM32 podłączyliśmy linie sterowania wyświetlaczem LCD i linie danych. Aby to zrobić, musimy sprawdzić nasz sprzęt, dla ułatwienia możesz również skorzystać z tabeli podanej na górze, która zawiera nazwy pinów LCD w porównaniu z pinem GPIO STM32. Po wspomnianiu pinów możemy zainicjalizować LCD za pomocą funkcji LiquidCrystal . Nazywamy również nasz wyświetlacz LCD jako „ lcd ”, jak pokazano poniżej.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // wymień nazwy pinów, do których LCD jest podłączony do LCD LiquidCrystal (rs, en, d4, d5, d6, d7); // Zainicjuj LCD
Następnie wchodzimy do funkcji konfiguracji . W tym miejscu najpierw wspomnimy, jakiego typu LCD używamy. Ponieważ jest to wyświetlacz LCD 16 * 2, używamy wiersza lcd.begin (16,2). Kod wewnątrz funkcji void setup jest wykonywany tylko raz. Dlatego używamy go do wyświetlania tekstu wprowadzającego, który pojawia się na ekranie przez 2 sekundy, a następnie zostaje wyczyszczony. Aby wspomnieć o miejscu, w którym ma się pojawić tekst, używamy funkcji lcd.setcursor, a do drukowania tekstu używamy funkcji lcd.print . Na przykład lcd.setCursor (0,0) ustawi kursor w pierwszym wierszu i pierwszej kolumnie, w której wypisujemy „ Interfacing LCD ” oraz funkcję lcd.setCursor (0,1) przenosi kursor do drugiego wiersza, pierwszej kolumny, gdzie drukujemy wiersz „ CircuitDigest ”.
void setup () {lcd.begin (16, 2); // Używamy 16 * 2 LCD lcd.setCursor (0, 0); // W pierwszym wierszu pierwsza kolumna lcd.print ("Interfejs LCD"); // Wydrukuj ten lcd.setCursor (0, 1); // W drugim wierszu w pierwszej kolumnie lcd.print ("- CircuitDigest"); // Wydrukuj to opóźnienie (2000); // czekaj dwie sekundy lcd.clear (); // Wyczyść ekran}
Po wyświetleniu tekstu intro trzymamy program przez 2 sekundy, tworząc opóźnienie, aby użytkownik mógł odczytać wiadomość intro. Opóźnienie to jest tworzone przez opóźnienie linii (2000), gdzie 2000 jest wartością opóźnienia w milisekundach. Po opóźnieniu czyścimy wyświetlacz LCD za pomocą funkcji lcd.clear (), która czyści wyświetlacz LCD, usuwając cały tekst z wyświetlacza.
Wreszcie wewnątrz pustej pętli, możemy wyświetlić „STM32-Blue Pill” na pierwszej linii, a wartość sekund na drugiej linii. Wartość sekundy można uzyskać z funkcji millis () . W millis () jest timer, który dostaje wzrastających prawo od czasu MCU jest zasilany. Wartość jest wyrażona w milisekundach, więc dzielimy ją przez 1000 przed wyświetleniem jej na wyświetlaczu LCD.
void loop () { lcd.setCursor (0, 0); // W pierwszym wierszu pierwsza kolumna lcd.print ("STM32 -Blue Pill"); // Wydrukuj ten lcd.setCursor (0, 1); // W drugim wierszu w pierwszej kolumnie lcd.print (millis () / 1000); // Wydrukuj wartość sekund }
Wgrywanie programu do STM32F103C8T6
Jak omówiono w powyższym akapicie, powinieneś być w stanie zauważyć dane wyjściowe, gdy tylko kod zostanie załadowany. Ale ten program nie zadziała następnym razem, gdy włączysz kartę, ponieważ płyta jest nadal w trybie programowania. Tak więc po załadowaniu programu zworka przy rozruchu 0 powinna zostać ponownie ustawiona na 0, jak pokazano poniżej. Również teraz, ponieważ program jest już załadowany na płytkę STM32, nie potrzebujemy płytki FTDI, a cała konfiguracja może być zasilana przez port micro-USB płyty STM32, jak pokazano poniżej.
To tylko prosty projekt interfejsu, który pomaga w korzystaniu z wyświetlacza LCD z płytą STM32, ale ponadto możesz go użyć do tworzenia fajnych projektów. Mam nadzieję, że zrozumiałeś samouczek i nauczyłeś się z niego czegoś przydatnego. Jeśli napotkałeś jakiś problem z uruchomieniem go, skorzystaj z sekcji komentarzy, aby opublikować problem lub skorzystaj z forum, aby uzyskać inne pytania techniczne. Kompletny pracy wyświetlacza LCD z STM32 można znaleźć również jako film podanym poniżej.