- 16x2 alphanumerisches LCD-Display
- 16x2 LCD CCS Bibliothek für MSP430
- LCD-Funktionen für das 16x2-LCD-Display des MSP430
- Schaltplan zur Schnittstelle LCD mit MSP430
- Programmieren des MSP430 mit Code Composer Studio für die LCD-Anzeige
Dieser Artikel ist die Fortsetzung unserer Tutorial-Reihe zur Programmierung von MSP430 mit Code Composer Studio. Das letzte Tutorial basierte auf externen Interrupts auf MSP430 mit GPIO-Pins. In diesem Tutorial geht es darum , ein Display mit dem MSP430 zu verbinden. Wenn es um die Anzeige des 16 * 2-LCD- Displays geht, ist es die erste Wahl für jeden elektronischen Bastler. Zuvor haben wir auch LCD mit MSP430 über Arduino IDE verbunden. In diesem Tutorial verwenden wir die native Code Composer Studio-Plattform anstelle der Arduino IDE. Auf diese Weise erhalten wir als Designer mehr Flexibilität.
Weitere Informationen zum 16x2-LCD-Display und zur Verwendung mit anderen Mikrocontrollern finden Sie in den folgenden Tutorials.
- Schnittstelle zwischen LCD und ATmega16
- LCD mit Raspberry Pi verbinden
- Schnittstelle zwischen LCD und PIC-Mikrocontroller
- LCD-Schnittstelle mit ARM7-LPC2148
- LCD mit NodeMCU verbinden
- LCD mit STM32 verbinden
- LCD-Schnittstelle mit MSP430G2
- LCD mit STM8 verbinden
Es verfügt über einen integrierten IC hd44780, der den Befehl und die an ihn übergebenen Daten speichern kann. Das LCD-Modul verfügt über ca. 16 Pins. 8 davon sind Datenpins, 4 davon sind Versorgungsstifte für die LED-Hintergrundbeleuchtung und das gesamte LCD-Modul, 3 für die Steuerung des Betriebs und 1 Stift für die Kontrasteinstellung. Das Tutorial basiert auf der von Dennis Eichmann erstellten Bibliothek. Es ist sehr einfach, eine Bibliothek mit separaten Funktionen zum Drucken verschiedener Datentypen zu verwenden. Es enthält auch Bestimmungen zum Anzeigen der Daten in verschiedenen Formen mit führenden, ausgeblendeten und gelöschten Nullen. Es ist eine ziemlich umfangreiche und umfassende Bibliothek und kann für die verschiedenen Verbindungen konfiguriert werden. Hier wird die Header-Datei geändert, um eine 8-polige parallele Konfiguration für die Datenkommunikation aufzunehmen.
16x2 alphanumerisches LCD-Display
Ein generisches 16x2-Display verfügt über einen eingebauten hd44780-IC (unten rot eingekreist), auf dem der Befehl und die an ihn übergebenen Daten gespeichert werden können. Das LCD-Modul verfügt über ca. 16 Pins. 8 davon sind Datenpins, 4 davon sind Versorgungsstifte für die LED-Hintergrundbeleuchtung und das gesamte LCD-Modul, 3 für die Steuerung des Betriebs und 1 Pin für die Kontrasteinstellung.
Dieses LCD-Modul ist oben vielseitig dargestellt und verwendet im Vergleich zu anderen segmentierten LCDs minimale Pins. Wenn Sie neugierig sind, wie genau dies alles funktioniert, sollten Sie sich die Funktionsweise des 16x2-LCD-Displays ansehen, auf dem wir bereits ausführlich über die Funktionsweise des LCD gesprochen haben.
RS Pin: RS = 1 aktiviert das Datenregister im LCD, mit dem die Werte in das Datenregister im LCD geschrieben werden. RS = 0 aktiviert das Befehlsregister des LCD.
Enable Pin: Negative Flanke ausgelöst; Wenn der Pin vom Zustand HIGH in den Zustand LOW geändert wird, wird das LCD aufgefordert, auf die Datenpins zu schreiben. Positiv flankengetriggert; Wenn der Pin vom LOW-Zustand in den HIGH-Zustand geändert wird, wird das LCD aufgefordert, von den Datenpins zu lesen.
R / W-Pin: R / W = 0 schreibt gemäß Auswahl des RS-Pins in das Befehlsregister oder Datenregister. R / W = 1 liest gemäß Auswahl des RS-Pins aus dem IR oder DR.
RS R / W-Betrieb
0 0 IR-Schreibvorgang als interne Operation (Anzeige klar usw.)
0 1 Read Busy Flag (DB7) und Adresszähler (DB0 bis DB6) lesen
1 0 DR-Schreiben als interne Operation (DR in DDRAM oder CGRAM)
1 1 DR als interne Operation gelesen (DDRAM oder CGRAM zu DR)
D0-D7-Pins: Die Daten werden über diese Pins zu und von den Befehls- und Datenregistern übertragen.
Versorgungsstifte: V ss, V dd- Stifte werden zur Stromversorgung des LCD-Moduls verwendet. A, K-Pins versorgen die LED-Hintergrundbeleuchtung mit Strom. V 0 -Pins dienen zur Steuerung des Kontrasts.
16x2 LCD CCS Bibliothek für MSP430
Das Tutorial basiert auf der von Dennis Eichmann erstellten Bibliothek. Es ist sehr einfach, eine Bibliothek mit separaten Funktionen zum Drucken verschiedener Datentypen zu verwenden. Es enthält auch Bestimmungen zum Anzeigen der Daten in verschiedenen Formen mit führenden, ausgeblendeten und gelöschten Nullen. Es ist eine ziemlich umfangreiche und umfassende Bibliothek und kann für die verschiedenen Verbindungen konfiguriert werden. Hier wird die Header-Datei geändert, um eine 8-polige parallele Konfiguration für die Datenkommunikation aufzunehmen. Die Bibliothek kann über den folgenden Link heruntergeladen werden. Nach dem Herunterladen führen Sie die folgenden Schritte aus, um die Bibliothek zu CCS hinzuzufügen.
Laden Sie die 16x2-Bibliothek für MSP430 - Code Composer Studio herunter
Schritt 1: Erstellen von Dateien und Projekten
Ein Standard-CCS-Projekt wird über das Dateimenü erstellt. Wählen Sie im Dialogfeld Projekt erstellen das Gerät aus und geben Sie hd44780 als Projektnamen an. Wählen Sie unter Projekttyp und Toolchain den Ausgabetyp als statische Bibliothek aus und erstellen Sie das Projekt.
Erstellen Sie in der Projekt-Explorer-Spur (linke Seite) eine Header-Datei im Include-Ordner und nennen Sie sie hd44780.h . Kopieren Sie dann den Inhalt der heruntergeladenen Datei hd44780.h in diese neu erstellte.
Erstellen Sie nun das Hauptprojekt, indem Sie den Ausgabetyp in eine ausführbare Datei ändern und ein Projekt mit dem Namen CCS_LCD erstellen .
Schritt 2: Fügen Sie die Suchpfade zum Hauptprojekt hinzu
Fügen Sie im Eigenschaften-Dialogfeld des hd44780-Projekts und in den Include-Optionen für den MSP430-Compiler den Include-Ordner in der Datei den Suchpfad hinzu.
Dann baut dieses Projekt auf der notwendigen Linker - Dateien als solche erstellen LIB - Dateien . Wenn Sie dies erstellen, wird die Datei hd44780.lib im Debug-Ordner erstellt.
Schritt 3: Fügen Sie die Suchpfade für Linker hinzu
Fügen Sie im Dialogfeld Eigenschaften für das CCS_LCD- Projekt und im Dateisuchpfad der Registerkarte MSP430 Linker die Datei hd44780.lib hinzu, die sich im Debug-Ordner des Projekts hd44780 befindet. Der Debug-Ordner ist auch im Dateisuchpfad enthalten.
Der Include-Ordner wird erneut zu den Include-Optionen des MSP430-Compilers des CCS_LCD- Projekts hinzugefügt .
Die Bibliothek wurde erfolgreich kompiliert und dem Linker des Hauptprojekts hinzugefügt.
LCD-Funktionen für das 16x2-LCD-Display des MSP430
void hd44780_timer_isr (void): Dies wird im ISR des Timers A regelmäßig aufgerufen. Der Timer A wird verwendet, um die LCD-Funktionen wie das Löschen des Bildschirms, das Setzen des Cursors und das Anzeigen der Daten regelmäßig auszuführen . Die Funktion soll im ISR verwendet werden. Es gibt nichts zurück.
uint8_t hd44780_write_string (char * ch__string, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Es wird die im ersten Argument angegebene Zeichenfolge geschrieben.
char * ch__string: Die Zeichenfolge, die in den Datenpuffer geschrieben werden soll (innerhalb der Funktion hd44780_timer_isr ). Die Daten werden in das Datenregister und das Befehlsregister des LCD-IC kopiert, wenn der hd44780_timer_isr periodisch aufgerufen wird.
uint8_t u8__row: Definiert die Zeile, in die die Zeichenfolge geschrieben wird.
uint8_t u8__column: Definiert die Spalte, in die die Zeichenfolge geschrieben wird.
uint8_t u8__cr_lf: Wenn es auf 1 gesetzt ist, wird die Zeile zur nächsten weitergeleitet. Wenn es 0 ist, stoppt der Druckvorgang in derselben Zeile.
void hd44780_clear_screen (void): Diese Funktion löscht den gesamten Bildschirm. Es gibt nichts zurück.
uint8_t hd44780_output_unsigned_16bit_value (uint16_t u16__value, uint8_t u8__leading_zero_handling, uint8_t u8__row, uint8_t u8__column, uint8_t u8__cr_lf): Die Funktion zeigt den vorzeichenlosen 16-Bit-Wert des LCD auf dem vorzeichenlosen 16-Bit-Wert an.
uint16_t u16__value: Die anzuzeigende Ganzzahl wird im ersten Argument angegeben.
uint8_t u8__leading_zero_handling: Wenn 0 übergeben wird, werden führende Nullen zum ganzzahligen Wert angezeigt. Wenn 1 übergeben wird, werden die Nullen ausgeblendet. Wenn 2 als Parameter übergeben wird, werden nur die signifikanten Ziffern angezeigt.
uint8_t u8__row: Die Zeile, in der die Ganzzahl angezeigt wird, ist ausgewählt.
uint8_t u8__column: Die zu druckende Spalte wird mit dem Argument ausgewählt.
uint8_t u8__cr_lf: Wenn es auf 1 gesetzt ist, wird die Zeile zur nächsten weitergeleitet. Wenn es 0 ist, stoppt der Druckvorgang in derselben Zeile.
Schaltplan zur Schnittstelle LCD mit MSP430
Das vollständige Schaltbild ist in der folgenden Abbildung dargestellt. Wie Sie sehen können, sind die Hardwareverbindungen sehr einfach und wir haben die gesamte Karte mit einem 5-V-Adapter mit Strom versorgt.
Die Verbindungen werden gemäß der obigen Skizze hergestellt. In der folgenden Tabelle finden Sie die detaillierten Verbindungen.
Vss | Masse der 5V Stromversorgung |
Vdd | 5V |
V0 | Potentiometerausgang |
RS | P2.1 |
R / W. | Boden |
E. | P2.0 |
D0 | P1.0 |
D1 | P1.1 |
D2 | P1.2 |
D3 | P1.3 |
D4 | P1.4 |
D5 | P1.5 |
D6 | P1.6 |
D7 | P1.7 |
EIN | 220 Ohm Widerstand |
K. | Boden |
Die Anode der LED-Hintergrundbeleuchtung kann nicht direkt an eine 5-V-Versorgung angeschlossen werden. Es sollte an einen Widerstand angeschlossen werden, um den Stromfluss durch das LCD-Modul zu minimieren. Ich habe meine Verbindungen mit einer Perf-Platine hergestellt, um das LCD zu löten, und dann Überbrückungskabel verwendet, um das LCD mit der MSP430-Platine zu verbinden. Mein Aufbau sieht wie folgt aus, aber Sie können auch einfach ein Steckbrett verwenden, um Ihre Verbindungen herzustellen.
Programmieren des MSP430 mit Code Composer Studio für die LCD-Anzeige
Der vollständige Code, der in diesem Projekt verwendet wird, finden Sie unten auf dieser Seite. Die Erklärung zur Verwendung des Codes lautet wie folgt. Öffnen Sie zunächst die Header-Datei (hd44780.h) und fügen Sie die Teilenummer des Mikrocontrollers in den ersten Teil der Datei ein.
#include "msp430g2553.h"
Der Watchdog-Timer muss zuerst gestoppt werden. DCOCTL- und BCSCTL1- Steuerregister werden verwendet, um den Oszillator des Mikrocontrollers zu konfigurieren. In den folgenden Zeilen wird der MCLK auf 1 MHz konfiguriert.
WDTCTL = (WDTPW - WDTHOLD); BCSCTL1 = CALBC1_1MHZ; DCOCTL = CALDCO_1MHZ;
Die Pins von Port 1 müssen als Ausgang erwähnt werden, der für die Datenpins verwendet werden soll. Pin 0 und Pin 1 müssen auch als Ausgang in Port 2 erwähnt werden, der für RS- und R / W-Pin verwendet wird.
P1DIR = 0xFF; P2DIR = (0x01 - 0x02);
Der eingebaute Timer wird verwendet, um Werte regelmäßig anzuzeigen. Timer A wird mit SMCLK (1 MHz) als Taktquelle ausgewählt, und der kontinuierliche Modus ist der Betriebsmodus.
TA0CCR1 = 32768; TA0CCTL1 = CCIE; TA0CTL = (TASSEL_2 - MC_2 - TACLR);
Die Interrupts für die Vergleichskanäle 1 und 2 und den Timer-Überlauf-Interrupt teilen sich den gleichen Interrupt-Vektor ( TIMER0_A1_VECTOR ) mit unterschiedlichen Startadressen. Der Capture-Vergleichskanal 1 (CCR1) verwendet 2 als Adresse, die im Switch-Fall verwendet wird.
#pragma vector = TIMER0_A1_VECTOR __interrupt void timer_0_a1_isr (void) { switch (TA0IV) { case 2: { hd44780_timer_isr (); Unterbrechung; } } }
Sobald Sie Ihren Code kompiliert haben, können Sie ihn auf die MSP430-Karte hochladen, wie in den ersten Schritten zum MSP430-Lernprogramm erläutert. Wenn alles wie erwartet verläuft, sollte Ihr LCD-Display wie unten gezeigt einen gewissen Kontrast aufweisen.
Wenn Ihr Test sehr schwach ist, können Sie versuchen, das Potentiometer einzustellen, um einen besseren Kontrast zu erzielen. Die vollständige Arbeitsweise des Projekts finden Sie auch in dem unten verlinkten Video. Ich hoffe, Ihnen hat das Projekt gefallen und Sie fanden es interessant, Ihr eigenes zu bauen. Wenn Sie Fragen haben, hinterlassen Sie diese bitte im Kommentarbereich unten. Sie können auch alle Ihre technischen Fragen in Foren schreiben, um sie zu beantworten oder eine Diskussion zu beginnen.