Anzeigeeinheiten sind die wichtigsten Ausgabegeräte in eingebetteten Projekten und Elektronikprodukten. 16x2 LCD ist eine der am häufigsten verwendeten Anzeigeeinheiten. 16x2 LCD bedeutet, dass es zwei Zeilen gibt, in denen 16 Zeichen pro Zeile angezeigt werden können, und jedes Zeichen nimmt 5X7 Matrixplatz auf dem LCD ein. In diesem Tutorial verbinden wir das 16X2-LCD-Modul mit dem 8051-Mikrocontroller (AT89S52). Die Schnittstelle zwischen LCD und 8051-Mikrocontroller mag für Neulinge recht komplex aussehen, aber nach dem Verständnis des Konzepts würde es sehr einfach und leicht aussehen. Dies kann jedoch einige Zeit in Anspruch nehmen, da Sie 16 Pins LCD verstehen und an den Mikrocontroller anschließen müssen. Lassen Sie uns zunächst die 16 Pins des LCD-Moduls verstehen.
Wir können es in fünf Kategorien einteilen: Power Pins, Kontraststifte, Steuerstifte, Datenstifte und Hintergrundbeleuchtungsstifte.
Kategorie |
Pin NO. |
Pin Name |
Funktion |
Power Pins |
1 |
VSS |
Erdungsstift, mit Masse verbunden |
2 |
VDD oder Vcc |
Spannungsstift + 5V |
|
Kontraststift |
3 |
V0 oder VEE |
Kontrasteinstellung, über einen variablen Widerstand mit Vcc verbunden. |
Steuerstifte |
4 |
RS |
Register Select Pin, RS = 0 Befehlsmodus, RS = 1 Datenmodus |
5 |
RW |
Lese- / Schreibstift, RW = 0 Schreibmodus, RW = 1 Lesemodus |
|
6 |
E. |
Aktivieren, ein hoher bis niedriger Impuls muss das LCD aktivieren |
|
Datenstifte |
7-14 |
D0-D7 |
Datenstifte, Speichert die Daten, die auf dem LCD angezeigt werden sollen, oder die Befehlsanweisungen |
Stifte für die Hintergrundbeleuchtung |
15 |
LED + oder A. |
Zum Einschalten der Hintergrundbeleuchtung + 5V |
16 |
LED- oder K. |
Hintergrundbeleuchtung Boden |
Alle Stifte mit Ausnahme der Steuerstifte sind anhand ihres Namens und ihrer Funktionen klar verständlich. Daher werden sie im Folgenden erläutert:
RS: RS ist der Registerauswahlstift. Wir müssen es auf 1 setzen, wenn wir einige Daten senden, die auf dem LCD angezeigt werden sollen. Und wir werden es auf 0 setzen, wenn wir eine Befehlsanweisung wie das Löschen des Bildschirms senden (Hex-Code 01).
RW: Dies ist der Lese- / Schreib-Pin. Wir setzen ihn auf 0, wenn wir einige Daten auf das LCD schreiben wollen. Und setzen Sie es auf 1, wenn wir vom LCD-Modul lesen. Im Allgemeinen wird dies auf 0 gesetzt, da wir keine Daten vom LCD lesen müssen. Nur eine Anweisung „LCD-Status abrufen“ muss einige Male gelesen werden.
E: Dieser Pin wird verwendet, um das Modul zu aktivieren, wenn ihm ein hoher bis niedriger Impuls gegeben wird. Ein Impuls von 450 ns sollte gegeben werden. Dieser Übergang von HIGH nach LOW macht das Modul AKTIVIERBAR.
Es gibt einige voreingestellte Befehlsanweisungen im LCD, die wir in unserem Programm unten verwendet haben, um das LCD vorzubereiten (in der Funktion lcd_init ()). Einige wichtige Befehlsanweisungen sind unten angegeben:
Hex-Code |
Befehl zum LCD-Befehlsregister |
0F |
LCD EIN, Cursor EIN |
01 |
Bildschirm löschen |
02 |
Nach Hause zurückkehren |
04 |
Cursor dekrementieren (Cursor nach links verschieben) |
06 |
Cursor erhöhen (Cursor nach rechts verschieben) |
05 |
Anzeige nach rechts verschieben |
07 |
Anzeige nach links verschieben |
0E |
Anzeige EIN, Cursor blinkt |
80 |
Den Cursor auf den Anfang der ersten Zeile setzen |
C0 |
Den Cursor auf den Anfang der zweiten Zeile setzen |
38 |
2 Zeilen und 5 × 7 Matrix |
83 |
Cursorzeile 1 Position 3 |
3C |
Aktivieren Sie die zweite Zeile |
08 |
Anzeige AUS, Cursor AUS |
C1 |
Springe zur zweiten Zeile, Position 1 |
OK |
Anzeige EIN, Cursor AUS |
C1 |
Springe zur zweiten Zeile, Position 1 |
C2 |
Springe zur zweiten Zeile, Position 2 |
Schaltplan und Erklärung
Der Schaltplan für die LCD-Schnittstelle mit dem 8051-Mikrocontroller ist in der obigen Abbildung dargestellt. Wenn Sie Grundkenntnisse über 8051 haben, müssen Sie über EA (PIN 31), XTAL1 und XTAL2, RST-Pin (PIN 9), Vcc und Ground Pin des 8051-Mikrocontrollers Bescheid wissen. Ich habe diese Pins in der obigen Schaltung verwendet. Wenn Sie keine Ahnung davon haben, empfehle ich Ihnen, diesen Artikel LED-Schnittstelle mit 8051-Mikrocontroller zu lesen, bevor Sie die LCD-Schnittstelle durchlaufen.
Neben diesen obigen Pins haben wir die Datenpins (D0-D7) des LCD mit dem Mikrocontroller von Port 2 (P2_0 - P2_7) verbunden. Und Steuerpins RS, RW und E an Pin 12, 13, 14 (Pin 2,3, 4 von Port 3) des Mikrocontrollers.
PIN 2 (VDD) und PIN 15 (Hintergrundbeleuchtung) des LCD sind mit Spannung (5 V) verbunden, und PIN 1 (VSS) und PIN 16 (Hintergrundbeleuchtung Masse) sind mit Masse verbunden.
Pin 3 (V0) ist über einen variablen Widerstand von 10 k mit der Spannung (Vcc) verbunden, um den Kontrast des LCD einzustellen. Der mittlere Schenkel des variablen Widerstands ist mit PIN 3 verbunden, und die anderen beiden Schenkel sind mit der Spannungsversorgung und Masse verbunden.
Code Erklärung
Ich habe versucht, den Code durch Kommentare zu erklären (im Code selbst).
Wie ich zuvor über den Befehlsmodus und den Datenmodus erklärt habe, können Sie sehen, dass wir beim Senden des Befehls (Funktion lcd_cmd) RS = 0, RW = 0 gesetzt haben und E einen HIGH to LOW-Impuls gegeben wird, indem Sie ihn auf 1 und dann auf 0 setzen Auch beim Senden von Daten (Funktion lcd_data) an das LCD haben wir RS = 1, RW = 0 gesetzt und E einen Impuls von HIGH nach LOW gegeben, indem er auf 1 bis 0 gesetzt wird. Die Funktion msdelay () wurde erstellt, um eine Verzögerung in Millisekunden zu erzeugen und häufig im Programm aufgerufen, wird es aufgerufen, damit das LCD-Modul genügend Zeit hat, um die internen Operationen und Befehle auszuführen.
Zum Drucken der Zeichenfolge wurde eine while-Schleife erstellt, die jedes Mal die Funktion lcd_data aufruft, um ein Zeichen bis zum letzten Zeichen zu drucken (Nullterminator- '\ 0').
Wir haben die Funktion lcd_init () verwendet, um das LCD mithilfe der voreingestellten Befehlsanweisungen (siehe oben) vorzubereiten.