- Erforderliche Materialien
- Schaltplan und Anschluss
- Programmierung von STM32 für LCD mit Arduino
- Hochladen des Programms auf STM32F103C8T6
Bei jedem Mikrocontroller-Projekt würde die Anbindung einer Anzeigeeinheit an das Projekt das Projekt für den Benutzer viel einfacher und ansprechender machen. Die am häufigsten verwendete Anzeigeeinheit für Mikrocontroller sind die 16 × 2 alphanumerischen Anzeigen. Diese Anzeigetypen sind nicht nur nützlich, um dem Benutzer wichtige Informationen anzuzeigen, sondern können auch als Debugging-Tool in der ersten Entwicklungsphase des Projekts fungieren. In diesem Tutorial erfahren Sie, wie Sie ein 16 × 2-LCD-Display mit der STM32F103C8T6 STM32-Entwicklungsplatine verbinden und mit der Arduino IDE programmieren können. Für Leute, die mit Arduino vertraut sind, ist dieses Tutorial nur ein Kinderspiel, da beide sehr ähnlich sind. Um mehr über STM32 Blue Pill Board zu erfahren, folgen Sie unserem Tutorial Erste Schritte.
Erforderliche Materialien
- STM32 Blue Pill Development Board
- 16 × 2 LCD-Anzeige
- FTDI-Programmierer
- Kabel anschließen
- LCD
Kurze Einführung in das 16 × 2-Punktmatrix-LCD-Display
Wie bereits erwähnt, bietet die Energia IDE eine schöne Bibliothek, die die Schnittstelle zu einem Kinderspiel macht. Daher ist es nicht zwingend erforderlich, etwas über das Anzeigemodul zu wissen. Aber wäre es nicht interessant zu zeigen, was wir verwenden !!
Der Name 16 × 2 impliziert, dass die Anzeige 16 Spalten und 2 Zeilen enthält, die zusammen (16 * 2) 32 Felder bilden. Eine einzelne Box würde im Bild unten ungefähr so aussehen
Eine einzelne Box hat 40 Pixel (Punkte) mit einer Matrixreihenfolge von 5 Zeilen und 8 Spalten. Diese 40 Pixel bilden zusammen ein Zeichen. Ebenso können 32 Zeichen in allen Feldern angezeigt werden. Schauen wir uns nun die Pinbelegung an.
Das LCD verfügt über insgesamt 16 Pins. Wie oben gezeigt, können diese wie folgt in vier Gruppen eingeteilt werden
Quellstifte (1, 2 und 3): Diese Stifte geben die Leistung und den Kontrast für das Display an
Steuerpins (4, 5 und 6): Diese Pins setzen / steuern die Register im LCD-Schnittstellen-IC (mehr dazu finden Sie unter dem folgenden Link).
Daten- / Befehls-Pins (7 bis 14): Diese Pins geben die Daten darüber an, welche Informationen auf dem LCD angezeigt werden sollen.
LED-Pins (15 und 16): Diese Pins werden verwendet, um die Hintergrundbeleuchtung des LCD bei Bedarf zu leuchten (optional).
Von all diesen 16 Pins müssen nur 10 Pins für die ordnungsgemäße Funktion des LCD verwendet werden, wenn Sie mehr über diese LCD-Anzeige erfahren möchten. Springen Sie zu diesem 16x2-LCD-Artikel.
Schaltplan und Anschluss
Das Schaltbild für die Schnittstelle 16 * 2 Dot Matrix LCD mit STM32F103C8T6 STM32 Blue Pill Board ist unten dargestellt. Es wird mit der Fritzing Software erstellt.
Wie Sie sehen können, wird die vollständige Verbindung über ein Steckbrett hergestellt. Wir benötigen eine FTDI-Karte, um den STM32-Mikrocontroller zu programmieren. Ähnlich wie in unserem vorherigen Tutorial haben wir die FTDI-Karte mit STM32 verdrahtet. Der Vcc- und Erdungsstift des FDTI-Programmiergeräts ist mit dem 5-V-Stift bzw. dem Erdungsstift des STM32 verbunden. Dies wird verwendet, um die STM32-Karte und das LCD mit Strom zu versorgen, da beide Dosen + 5V akzeptieren können. Der Rx- und Tx-Pin der FTDI-Karte ist mit dem A9- und A10-Pin des STM32 verbunden, sodass wir die Karte direkt ohne den Bootloader programmieren können.
Als nächstes muss das LCD an die STM32-Karte angeschlossen werden. Wir werden das LCD im 4-Bit-Modus verwenden, daher müssen wir die 4 Datenbit-Pins (DB4 bis DB7) und die beiden Steuerpins (RS und EN) mit der STM32- Karte verbinden, wie in der LCD- Schnittstellenschaltung STM32F103C8T6 gezeigt Diagramm oben. Die folgende Tabelle hilft Ihnen beim Herstellen der Verbindung.
LCD-Pin-Nr. |
LCD-Pin-Name |
STM32 Pin Name |
1 |
Boden (Gnd) |
Boden (G) |
2 |
VCC |
5V |
3 |
VEE |
Boden (G) |
4 |
Register Select (RS) |
PB11 |
5 |
Lesen / Schreiben (RW) |
Boden (G) |
6 |
Aktivieren (EN) |
PB10 |
7 |
Datenbit 0 (DB0) |
Keine Verbindung (NC) |
8 |
Datenbit 1 (DB1) |
Keine Verbindung (NC) |
9 |
Datenbit 2 (DB2) |
Keine Verbindung (NC) |
10 |
Datenbit 3 (DB3) |
Keine Verbindung (NC) |
11 |
Datenbit 4 (DB4) |
PB0 |
12 |
Datenbit 5 (DB5) |
PB1 |
13 |
Datenbit 6 (DB6) |
PC13 |
14 |
Datenbit 7 (DB7) |
PC14 |
15 |
LED positiv |
5V |
16 |
LED negativ |
Boden (G) |
Sobald die Verbindungen hergestellt sind, können wir die Arduino IDE öffnen und mit der Programmierung beginnen.
Programmierung von STM32 für LCD mit Arduino
Wie in diesem Tutorial beschrieben, verwenden wir die Arduino IDE, um unseren STM32-Mikrocontroller zu programmieren. Auf der Arduino IDE ist jedoch standardmäßig keine STM32-Karte installiert. Daher müssen wir ein Paket herunterladen und die Arduino IDE darauf vorbereiten. Genau dies haben wir in unserem vorherigen Tutorial getan, als wir mit STM32F103C8T6 unter Verwendung der Arduino IDE begonnen haben. Wenn Sie die erforderlichen Pakete nicht installiert haben, greifen Sie auf dieses Lernprogramm zurück und befolgen Sie es, bevor Sie hier fortfahren.
Sobald die STM32-Karte in der Arduino IDE installiert ist, können wir mit der Programmierung beginnen. Das Programm ist dem eines Arduino-Boards sehr ähnlich. Das einzige, was sich ändern wird, sind die Pin-Namen, da die Notationen für STM32 und Arduino unterschiedlich sind. Das vollständige Programm finden Sie am Ende dieser Seite. Um das Programm zu erläutern, habe ich es wie unten gezeigt in kleine aussagekräftige Ausschnitte aufgeteilt.
Ein bemerkenswerter Vorteil der Verwendung von Arduino für die Programmierung unserer Mikrocontroller besteht darin, dass Arduino für fast alle bekannten Sensoren und Aktoren vorgefertigte Bibliotheken hat. Hier beginnen wir unser Programm mit der LCD-Bibliothek, die die Programmierung erheblich vereinfacht.
#einschließen
In der nächsten Zeile müssen wir angeben, an welche GPIO-Pins des STM32 wir die LCD- Anzeigesteuerung und die Datenleitungen angeschlossen haben. Dazu müssen wir unsere Hardware überprüfen. Zur Vereinfachung können Sie auch auf die Tabelle oben verweisen, in der die Pin-Namen des LCD gegen den GPIO-Pin des STM32 aufgelistet sind. Nachdem wir die Pins erwähnt haben, können wir das LCD mit der LiquidCrystal- Funktion initialisieren. Wir nennen unser LCD auch " lcd ", wie unten gezeigt.
const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; // erwähne die Pin-Namen, mit denen LCD mit LiquidCrystal lcd verbunden ist (rs, en, d4, d5, d6, d7); // LCD initialisieren
Als nächstes betreten wir die Setup- Funktion. Hier haben wir zuerst erwähnt, welche Art von LCD wir verwenden. Da es sich um ein 16 * 2-LCD handelt, verwenden wir die Zeile lcd.begin (16,2). Der Code in der Void-Setup- Funktion wird nur einmal ausgeführt. Wir verwenden es also, um einen Intro-Text anzuzeigen, der 2 Sekunden lang auf dem Bildschirm angezeigt wird und dann gelöscht wird. Um die Position zu erwähnen, an der der Text erscheinen muss, verwenden wir die Funktion lcd.setcursor und um den Text zu drucken, verwenden wir die Funktion lcd.print . Zum Beispiel setzt lcd.setCursor (0,0) den Cursor auf die erste Zeile und die erste Spalte, in der wir " Interfacing LCD " und die Funktion lcd.setCursor (0,1) drucken. Bewegt den Cursor in die erste Zeile der zweiten Zeile, in der die Zeile „ CircuitDigest “ gedruckt wird .
void setup () {lcd.begin (16, 2); // Wir verwenden einen 16 * 2 LCD lcd.setCursor (0, 0); // In der ersten Zeile erste Spalte lcd.print ("Interfacing LCD"); // Drucke diesen lcd.setCursor (0, 1); // In der zweiten Zeile erste Spalte lcd.print ("- CircuitDigest"); // Diese Verzögerung drucken (2000); // warte zwei Sekunden lcd.clear (); // Bildschirm löschen}
Nach dem Anzeigen des Intro-Textes halten wir das Programm 2 Sekunden lang, indem wir eine Verzögerung erzeugen, damit der Benutzer die Intro-Nachricht lesen kann. Diese Verzögerung wird durch die Leitungsverzögerung (2000) erzeugt, wobei 2000 der Verzögerungswert in Millsekunden ist. Nach der Verzögerung löschen wir das LCD mit der Funktion lcd.clear () , die das LCD löscht, indem der gesamte Text auf dem LCD entfernt wird.
Schließlich im Innern der Hohlraumschleife, wir in der ersten Zeile und der Wert von Sekunden in der zweiten Zeile „STM32 -Blue Pill“ anzuzeigen. Der Wert der Sekunde kann aus der Funktion millis () erhalten werden. Die Millis () ist ein Zeitgeber, der das Inkrementieren rechts angetrieben wird, die MCU von der Zeit erhält. Der Wert wird in Millisekunden angegeben, daher teilen wir ihn durch 1000, bevor wir ihn auf unserem LCD anzeigen.
void loop () { lcd.setCursor (0, 0); // In der ersten Zeile erste Spalte lcd.print ("STM32-Blue Pill"); // Drucke diesen lcd.setCursor (0, 1); // In der zweiten Zeile erste Spalte lcd.print (millis () / 1000); // Drucke den Wert von Sekunden }
Hochladen des Programms auf STM32F103C8T6
Wie im obigen Absatz erläutert, sollten Sie in der Lage sein, die Ausgabe zu bemerken, sobald der Code hochgeladen wird. Dieses Programm funktioniert jedoch beim nächsten Einschalten der Karte nicht, da sich die Karte noch im Programmiermodus befindet. Also, sobald das Programm die Jumper auf Boot hochgeladen 0 sollte unten als Show auf 0 Positionen geändert werden, zurück. Da das Programm bereits auf die STM32-Karte hochgeladen wurde, benötigen wir die FTDI-Karte nicht mehr. Die gesamte Einrichtung kann über den Micro-USB-Anschluss der STM32-Karte mit Strom versorgt werden (siehe unten).
Dies ist nur ein einfaches Schnittstellenprojekt zur Verwendung des LCD-Displays mit STM32-Karte. Sie können es jedoch auch zum Erstellen cooler Projekte verwenden. Ich hoffe, Sie haben das Tutorial verstanden und daraus etwas Nützliches gelernt. Wenn Sie Probleme hatten, es zum Laufen zu bringen, verwenden Sie bitte den Kommentarbereich, um das Problem zu veröffentlichen, oder verwenden Sie die Foren für andere technische Fragen. Die vollständige Funktionsweise des LCD-Displays mit STM32 finden Sie auch als Video unten.