Im Laufe meiner Leidenschaft für Elektronik hatte ich die Gelegenheit, LCDs verschiedener Hersteller zu verwenden – DataVision, WINSTAR, Uniworld Technology Corp. Sie unterschieden sich in der Art des Controllers, der Anzahl der Pins und der Länge der Leitungen, hatten aber alle den gleichen Anschlussplan, das gleiche Befehlssystem und wurden vom gleichen Programm des Mikrocontrollers bedient. Daher werden wir jetzt zwar über das Display sprechen WH0802A von WINSTAR, alles, was unten gesagt wird, gilt für Zeichen-LCD-Displays anderer Unternehmen.
Also verbinden wir das WH0802A-YGH-CT-Display mit dem Mikrocontroller
WH0802A ist ein zweizeiliges Zeichendisplay für 8 Zeichen mit integriertem KS0066-Steuergerät.Schauen wir uns den Zweck der Anzeigestifte an.
Einige Displays verfügen über zwei zusätzliche Pins – Hintergrundbeleuchtungspins +LED und –LED. Wenn es darüber hinaus Schlussfolgerungen gibt, bedeutet dies nicht, dass eine Hintergrundbeleuchtung vorliegt. Genauso wie umgekehrt. Mein Display hat eine Hintergrundbeleuchtung, aber keine Steuerpins.
Standardmäßig ist die Hintergrundbeleuchtung des WH0802A-YGH-CT-Displays deaktiviert. Um es einzuschalten, müssen Sie ein paar einfache Manipulationen vornehmen, nämlich zwei Jumper installieren und einen Strombegrenzungswiderstand anlöten (siehe Foto RK, JF bzw. RA).
Anschlussplan anzeigen
Dies ist ein typisches Diagramm zum Anschluss von Zeichen-LCDs. Wir werden den Steuerkreis für die Hintergrundbeleuchtung des Displays nicht verwenden, aber ich habe ihn für alle Fälle gezeichnet.
Code starten
Nachdem Sie den Stromkreis mit Strom versorgt haben, müssen Sie den Kontrastregler (Widerstand R1) einschalten. Wenn die oberste Zeile auf dem Bildschirm erscheint, bedeutet dies, dass sie aktiv ist und es Zeit ist, mit dem Schreiben von Code zu beginnen. In der Anfangsphase werden wir einen 8-Bit-Bus verwenden. Um die ersten Ergebnisse zu erhalten, müssen wir zwei Funktionen schreiben – eine Datenaufzeichnungsfunktion und eine Befehlsaufzeichnungsfunktion. Sie unterscheiden sich nur in einer Zeile: Wenn Daten geschrieben werden, muss das RS-Signal 1 sein, wenn ein Befehl geschrieben wird, muss RS 0 sein. Wir werden die Lesefunktionen vorerst nicht verwenden, daher wird das R/W-Signal immer 0 sein .
Der Schreibzyklus für einen 8-Bit-Bus sieht folgendermaßen aus:
1. RS einstellen (0 – Befehl, 1 – Daten)
2. Geben Sie den Wert des Datenbytes an den DB7…DB0-Bus aus
3. Setzen Sie E=1
4. Softwareverzögerung 1
5. Setzen Sie E=0
6. Softwareverzögerung 2
Der LCD-Zeichenanzeige-Controller ist nicht unendlich schnell, daher kommt es zwischen einigen Vorgängen zu Softwareverzögerungen. Der erste wird benötigt, um das Strobe-Signal für einige Zeit zu halten, der zweite, damit der Controller Zeit hat, Daten zu schreiben oder einen Befehl auszuführen. Die Verzögerungswerte sind immer in der Beschreibung des Display-Controllers angegeben und Sie müssen immer mindestens deren Mindestwert einhalten, da sonst Ausfälle im Betrieb des Controllers vorprogrammiert sind.
Im Allgemeinen verfügt der Display-Controller über ein sogenanntes Busy Flag – BF. Wenn das Flag 1 ist, ist der Controller beschäftigt, wenn es 0 ist, ist es frei. Anstelle einer zweiten Softwareverzögerung können Sie das Besetzt-Flag auslesen und prüfen, wann der Display-Controller frei ist. Da wir aber schnell erste Ergebnisse erhalten wollen, beschäftigen wir uns später mit der Busy Flag.
#enthalten
#enthalten
//Port, an den der LCD-Datenbus angeschlossen ist
#define PORT_DATA PORTD
#define PIN_DATA PIND
#DDRX_DATA DDRD definieren
//Port, an dem die Steuerpins angeschlossen sind
#define PORT_SIG PORTB
#define PIN_SIG PINB
#define DDRX_SIG DDRB
//Pin-Nummern des Mikrocontrollers
//an den die LCD-Steuerpins angeschlossen sind
#define RS 5
#define RW 6
#define DE 7
//Makros für die Arbeit mit Bits
#define ClearBit(reg, bit) reg &= (~(1<<(bit)))
#define SetBit(reg, bit) reg |= (1<<(bit))
#define F_CPU 8000000
#define_delay_us(us) __delay_cycles((F_CPU / 1000000) * (us));
#define_delay_ms(ms) __delay_cycles((F_CPU / 1000) * (ms));
//Befehlsaufzeichnungsfunktion
Leere LcdWriteCom( unsigniertes Zeichen Daten)
{
ClearBit(PORT_SIG, RS); // RS auf 0 setzen
PORT_DATA = Daten; // Daten an den Bus ausgeben
SetBit(PORT_SIG, EN); // setze E auf 1
_delay_us(2);
ClearBit(PORT_SIG, EN); // setze E auf 0
_delay_us(40);
//Datenaufzeichnungsfunktion
{
SetBit(PORT_SIG, RS); //RS auf 1 setzen
PORT_DATA = Daten; //Daten an den Bus ausgeben
SetBit(PORT_SIG, EN); //setze E auf 1
_delay_us(2);
ClearBit(PORT_SIG, EN); // setze E auf 0
Delay_us(40);
}
int hauptsächlich( Leere
)
{
während
(1);
zurückkehren
0;
}
Hier gibt es keine komplizierten Teile, alles sollte klar sein. Fortfahren.
Jedes LCD-Display muss vor der Verwendung initialisiert werden. Der Initialisierungsprozess wird normalerweise im Datenblatt des Display-Controllers beschrieben. Aber selbst wenn es dort keine Informationen gibt, wird die Reihenfolge höchstwahrscheinlich so sein.
1. Essen servieren2. Warten Sie >40 ms
3. Geben Sie den Funktionssatzbefehl aus
D.L.– Busbreiten-Einstellungsbit
0 – 4-Bit-Bus, 1 – 8-Bit-Bus
N– Bit zum Einstellen der Anzahl der Anzeigezeilen
0 – einzeiliger Modus, 1 – zweizeiliger Modus
F– Schriftart-Einstellungsbit
0 – Format 5*8, 1 – Format 5*11
* – es spielt keine Rolle, was in diesen Bits enthalten sein wird
4. Geben Sie den Befehl „Anzeige EIN/AUS“ aus
D– Ein-/Aus-Bit anzeigen
0 – Display aus, 1 – Display ein
C– Cursor-Ein/Aus-Bit
0 – Cursor deaktiviert, 1 – Cursor aktiviert
B– Flicker-Aktivierungsbit
0 – flackernder Cursor aktiviert, 1 – flackernder Cursor deaktiviert
5. Geben Sie den Befehl „Anzeige löschen“ aus
6. Warten Sie > 1,5 ms
7. Geben Sie den Befehl „Entry Mode Set“ aus
AUSWEIS– Reihenfolge der steigenden/abfallenden DDRAM-Adresse (Anzeigedaten-RAM)
0 – Cursor bewegt sich nach links, Adresse verringert sich um 1, 1 – Cursor bewegt sich nach rechts, Adresse erhöht sich um 1
Sch– Reihenfolge der gesamten Anzeige verschieben
0 – keine Verschiebung, 1 – Verschiebung erfolgt entsprechend dem I/D-Signal – falls vorhanden. 0 – Anzeige verschiebt sich nach rechts, 1 – Anzeige verschiebt sich nach links
In unserem Beispiel sieht die Initialisierungsfunktion so aus
Wir haben gelernt, wie man: einen Mikrocontroller steuert und etwas mit einem Mikrocontroller steuert. Um unser Gerät benutzerfreundlicher zu machen, werden wir nun ein Display daran anschließen.
Lassen Sie mich gleich eine Reservierung vornehmen: Die Anzeige ist symbolisch. Das bedeutet, dass er in seinem Inneren, in seiner Erinnerung, bereits ein Alphabet hat. Wir müssen lediglich den Befehl zum Drucken der Zeile erteilen.
Die Anzeigen sind unterschiedlich: unterschiedliche Farben der Bildschirmhintergrundbeleuchtung, unterschiedliche Anzahl von Zeilen, unterschiedliche Anzahl von Zeichen pro Zeile. Daher betrachten wir hier das WH0802A-YGK-CT-Display, 2 Zeilen mit 8 Zeichen, gelbe LED-Hintergrundbeleuchtung.
Lassen Sie uns ein Projekt in CodeVision erstellen. Auf der Registerkarte LCD geben wir den Port an, an den unser Display angeschlossen wird (PORTD). In der Zeile „Char/Line“ geben wir die Anzahl der Zeichen unseres LCD-Displays an (8).
Wir generieren und speichern das Projekt. Wir bringen den Code in die folgende Form:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #enthalten |
#enthalten
Ändern wir unseren Programmcode ein wenig:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #enthalten |
#enthalten
Lassen Sie uns den resultierenden Code zur Simulation in ISIS Proteus ausführen. Wie Sie sehen, wird die erste Zeile korrekt angezeigt, die zweite Zeile ist jedoch beschissen. Tatsache ist, dass Proteus das russische Alphabet nicht erkennt und wenn Ihr Display es nicht unterstützt, dann wird das echte Display auch unverständliche Zeichen enthalten.
Jetzt müssen wir das Ganze auf einem echten Display ausprobieren. Hier gibt es einige Nuancen. Wir öffnen das Datenblatt auf unserem Display und sehen diese Tabelle mit Pinbelegung:
Wahrscheinlich ist hier alles klar, aber dennoch:
1 - Masse 0V.
2 - Stromversorgung +5V.
3 - Kontrastkontrolle. Verbunden über einen variablen Widerstand.
LED Lichter. Wir schließen es wie eine normale LED an.
A – über einen Strombegrenzungswiderstand mit „+“ verbinden, K – mit „Masse“ (GND) verbinden.
Ein weiterer wichtiger Punkt ist, dass der Mikrocontroller über einen Quarzresonator getaktet werden muss, da sonst ein korrekter Betrieb nicht gewährleistet ist.
Aussehen des Firmware-Geräts
Firmware und Proteus-Datei verfügbar
Bei der Arbeit mit Arduino ist es manchmal erforderlich, einige Daten auf dem Display anzuzeigen. Die Übertragung der Daten auf einen PC zu diesem Zweck ist jedoch nur dann sinnvoll, wenn das Gerät in Verbindung mit einem PC verwendet wird. Aber was ist mit autonomen Geräten? Hier kommen LCD-Displays zur Rettung. Schauen wir uns LCD-Displays an, die auf dem HD44780-Controller basieren
Dieses monochrome Display verfügt über eine optionale Hintergrundbeleuchtung und kann 2 Zeilen mit 16 Zeichen anzeigen. Die Zeichenauflösung beträgt 5x8 Pixel. Es gibt Unterstützung für das kyrillische Alphabet.
Welche Vorteile bieten diese Displays? Der HD44780-LCD-Bildschirm ist ein Standard und wird häufig bei kleinen monochromen LCD-Displays verwendet, daher wurde die darauf basierende Bibliothek für die Arbeit mit Displays von Profis geschrieben. Arduino-Entwickler haben eine Bibliothek für ihre Plattform geschrieben, die LiquidCrystal heißt. Wir verwenden es, um mit dem von mir gewählten Display zu arbeiten.
Zum Anschluss des LCD-Bildschirms benötigen wir folgende Komponenten
- Jedes Arduino (in unserem Fall Arduino UNO)
- LCD-Display basierend auf HD44780
- Steckbrett
- Verbindungsdrähte
- Potentiometer (optional)
![](https://i0.wp.com/helpduino.ru/images/lcd_%D1%81ompleckt.png)
Anschließen eines LCD-Bildschirms
Anschließen eines LCD-Bildschirms an Arduino Selbst für ein Kind nicht schwierig. Befestigen Sie den Bildschirm am Steckbrett und verbinden Sie die +5-V-Stromversorgung und Masse vom Arduino mit den Stromschienen des Steckbretts, wie auf dem Foto gezeigt. (Da wir häufig Strom und Erde benötigen, ist der Anschluss an die Schienen bequemer, und im Allgemeinen muss man sich daran gewöhnen, ihn auf diese Weise anzuschließen.)
![](https://i2.wp.com/helpduino.ru/images/lcd_compleckt2.png)
Für den vollständigen Betrieb von Arduino mit dem Display verbinden wir 12 Pins:
- 1 - Vss, Masse ⇨ GND
- 2 - Vdd, Leistung ⇨ +5 V
- 3 - Vo, Kontrastspannungsregelung ⇨ Potentiometerausgang
- 4 - RS, Registerauswahl ⇨ Pin 12 Arduino
- 5 - R/W, Lesen/Schreiben ⇨ Masse (Schreibmodus)
- 6 – E, auch bekannt als Enable, Fall Strobe ⇨ Pin 11 Arduino
- 7-10 - DB0-DB3, niederwertige Bits der 8-Bit-Schnittstelle; nicht verbunden
- 11-14 – DB4-DB7, High-Bits der Schnittstelle ⇨ Pins 5-2 Arduino
- 15 - A, Stromversorgung für Hintergrundbeleuchtung ⇨ +5 V
- 16 - K, Masse für Hintergrundbeleuchtung ⇨ GND
![](https://i2.wp.com/helpduino.ru/images/lcd_sxema_podklucheniya.png)
Dieses Display unterstützt, wie andere auf dem HD44780-Controller, zwei parallele Schnittstellenoptionen:
- 8-Bit, Pins DB0-DB7, 1 Byte (8 Bit) wird pro Taktzyklus übertragen
- 4-Bit, Pins DB4-DB7, pro Taktzyklus wird ein halbes Byte übertragen (4 Bits)
Es macht keinen Sinn, die 8-Bit-Option zu verwenden, da dafür mehr Beine erforderlich sind, und es gibt immer noch keinen Geschwindigkeitsgewinn: Die Bildwiederholfrequenz beträgt nicht mehr als 10 Mal pro Sekunde, sodass wir immer noch nichts sehen können häufig aktualisierte Daten. Daher lassen wir die Pins DB0-DB3 unbeschaltet.
Der Bildschirm ist angeschlossen und bereit, Daten zu empfangen. Es bleibt nur noch, ein Programm für Arduino zu schreiben.
Programmierung
Um Text von Arduino auszugeben, verwenden wir die Liquid Crystal-Bibliothek, über die wir oben gesprochen haben.
Um den Sensor auf Arduino zu betreiben, müssen Sie die DHT11-Bibliothek herunterladen und installieren.
Sie können die Bibliothek hier herunterladen.
Nachdem wir die erforderliche Bibliothek heruntergeladen haben, müssen wir sie korrekt installieren Installieren. Die heruntergeladenen Dateien müssen in den folgenden Pfad verschoben werden:
Disk C-Programmdateien Arduino-Bibliotheken
![](https://i2.wp.com/helpduino.ru/images/librari.png)
Nachdem wir alles erledigt haben, kommen wir zum wichtigsten Schritt, nämlich der Programmierung.
/* Bibliothek für die Arbeit mit LCD einbinden */
#enthalten
/* Erstellen Sie ein LCD-Anzeigeobjekt mit dem LiquidCrystal-Klassenkonstruktor
* mit 6 Argumenten. Die Bibliothek selbst bestimmt anhand der Anzahl der Argumente,
* dass Sie eine 4-Bit-Schnittstelle verwenden müssen.
* Wir geben an, mit welchen Arduino-Pins die Display-Pins verbunden sind:
*RS, E, DB4, DB5, DB6, DB7
*/
LiquidCrystal-LCD (12, 11, 5, 4, 3, 2);
Void setup()
{
/* Initialisierung der Anzeige: 2 Zeilen mit 16 Zeichen */
LCD. begin(16, 2);
/* Phrase anzeigen */
LCD. print("Hallo von HelpDuino!");
}
Leere Schleife()
{
/* Setzen Sie den Cursor auf Spalte 1 der 2. Zeile. Die Nummerierung beginnt bei Null
* Das erste Argument ist die Spaltennummer.
*/
LCD. setCursor(0, 1);
/* Zeigt die Anzahl der Sekunden an, die seit dem Start des Arduino vergangen sind */
LCD. print(millis()/1000);
}
![](https://i1.wp.com/helpduino.ru/images/lcd_compleckt4.png)
Dies ist, was Sie bekommen sollten, dies ist die einfachste Skizze, sie enthält nur 4 Hauptlinien, aber Sie können es herausfinden und dieses Prinzip verwenden, um das zu erstellen, was Sie brauchen!
Jeder Funkamateur kommt nach einer gewissen Anzahl einfacher hausgemachter Projekte zu dem Ziel, mit Sensoren und Knöpfen etwas Grandioses zu konstruieren. Schließlich ist es viel interessanter, Daten auf einem Display anzuzeigen als auf einem Hafenmonitor. Doch dann stellt sich die Frage: Welches Display soll man wählen? Und im Allgemeinen, wie wird es angeschlossen, was wird zum Verbinden benötigt? Die Antworten auf diese Fragen werden in diesem Artikel besprochen.
LCD 1602
Unter den vielen Anzeigemöglichkeiten möchte ich besonders das LCD1602-Display auf Basis des HD4478-Controllers erwähnen. Dieses Display ist in zwei Farben erhältlich: weiße Buchstaben auf blauem Hintergrund, schwarze Buchstaben auf gelbem Hintergrund. Auch der Anschluss des LCD 1602 an Arduino bereitet keine Probleme, da eine integrierte Bibliothek vorhanden ist und kein zusätzlicher Download erforderlich ist. Displays unterscheiden sich nicht nur im Preis, sondern auch in der Größe. Funkamateure verwenden häufig 16 x 2, also 2 Zeilen mit 16 Zeichen. Es gibt aber auch 20 x 4, wo es 4 Zeilen mit 20 Zeichen gibt. Abmessungen und Farbe spielen beim Anschluss des LCD 1602-Displays an Arduno keine Rolle; Der Betrachtungswinkel beträgt 35 Grad, die Reaktionszeit des Displays beträgt 250 ms. Es kann bei Temperaturen von -20 bis 70 Grad Celsius arbeiten. Im Betrieb verbraucht es 4 mA für den Bildschirm und 120 mA für die Hintergrundbeleuchtung.
Wo wird es verwendet?
Dieses Display ist nicht nur bei Funkamateuren, sondern auch bei großen Herstellern beliebt. Beispielsweise nutzen auch Drucker und Kaffeemaschinen LCD1602. Dies liegt an seinem niedrigen Preis; auf chinesischen Websites kostet dieses Display 200-300 Rubel. Es lohnt sich dort zu kaufen, da in unseren Filialen die Aufschläge für dieses Display sehr hoch sind.
Anschließen an Arduino
Beim Anschluss des LCD 1602 an Arduino Nano und Uno ist es nicht anders. Sie können mit der Anzeige in zwei Modi arbeiten: 4 Bit und 8. Beim Arbeiten mit 8 Bit werden sowohl die niederwertigen als auch die höherwertigen Bits verwendet, bei 4 Bit nur die niederwertigen. Es macht keinen besonderen Sinn, mit 8-Bit zu arbeiten, da dadurch 4 weitere Kontakte für die Verbindung hinzugefügt werden, was nicht ratsam ist, da die Geschwindigkeit nicht höher ist und die Grenze für Anzeigeaktualisierungen 10 Mal pro Sekunde beträgt. Um den LCD 1602 mit dem Arduino zu verbinden, werden im Allgemeinen viele Drähte verwendet, was einige Unannehmlichkeiten verursacht, aber es gibt spezielle Abschirmungen, aber dazu später mehr. Das Foto zeigt den Anschluss des Displays an den Arduino Uno:
Beispielcode:
#enthalten
Was macht der Code? Der erste Schritt besteht darin, die Bibliothek anzuschließen, um mit dem Display arbeiten zu können. Wie oben erwähnt, ist diese Bibliothek bereits in der Arduino IDE enthalten und muss nicht zusätzlich heruntergeladen und installiert werden. Als nächstes werden die Kontakte bestimmt, die mit den Pins verbunden sind: RS, E, DB4, DB5, DB6, DB7. Anschließend wird die Bildschirmgröße eingestellt. Da wir mit einer Version mit 16 Zeichen und 2 Zeilen arbeiten, schreiben wir die folgenden Werte. Wir platzieren den Cursor am Anfang der ersten Zeile und zeigen unseren ersten Text Hello World an. Platzieren Sie als Nächstes den Cursor in der zweiten Zeile und zeigen Sie den Namen der Site an. Das ist alles! Der Anschluss von LCD 1602 an Arduino Uno wurde in Betracht gezogen.
Was ist I2C und warum wird es benötigt?
Wie oben erwähnt, erfordert der Anschluss des Displays viele Kontakte. Wenn Sie beispielsweise mit mehreren Sensoren und einem LCD-Display arbeiten, reichen 1602 Pins möglicherweise einfach nicht aus. Funkamateure verwenden häufig die Uno- oder Nano-Versionen, die nicht viele Kontakte haben. Dann erfanden die Leute spezielle Schilde. Zum Beispiel I2C. Es ermöglicht den Anschluss eines Displays mit nur 4 Pins. Das ist doppelt so viel. Das I2C-Modul wird sowohl separat verkauft, wo Sie es selbst anlöten müssen, als auch bereits an das LCD 1602-Display angelötet.
Anschluss über I2C-Modul
Der Anschluss des LCD 1602 an Arduino Nano mit I2C nimmt wenig Platz in Anspruch, nur 4 Pins: Masse, Strom und 2 Datenausgänge. Wir verbinden Strom und Masse mit 5 V bzw. GND am Arduino. Wir verbinden die verbleibenden zwei Kontakte: SCL und SDA mit beliebigen analogen Pins. Auf dem Foto sehen Sie ein Beispiel für den Anschluss eines LCD 1602 an ein Arduino mit einem I2C-Modul:
Programmcode
Wenn für die Arbeit mit einer Anzeige ohne Modul nur eine Bibliothek verwendet werden musste, sind für die Arbeit mit einem Modul zwei Bibliotheken erforderlich. Einer davon ist bereits in der Arduino IDE enthalten – Wire. Eine weitere Bibliothek, LiquidCrystal I2C, muss separat heruntergeladen und installiert werden. Um die Bibliothek in Arduino zu installieren, muss der Inhalt des heruntergeladenen Archivs in den Stammordner „Libraries“ geladen werden. Beispielprogrammcode mit I2C:
#enthalten
Wie Sie sehen, ist der Code fast derselbe.
Wie füge ich mein eigenes Symbol hinzu?
Das Problem bei diesen Anzeigen besteht darin, dass kyrillische Buchstaben und Symbole nicht unterstützt werden. Sie müssen beispielsweise ein Symbol in die Anzeige laden, damit es es widerspiegeln kann. Dazu bietet Ihnen das Display die Möglichkeit, bis zu 7 eigene Symbole zu erstellen. Stellen Sie sich die Tabelle vor:
0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 0 | 0 |
Bei 0 ist dort nichts, bei 1 handelt es sich um einen bemalten Bereich. Im obigen Beispiel sehen Sie die Entstehung des „lächelnden Smiley“-Symbols. Anhand eines Beispielprogramms in Arduino würde es so aussehen:
#enthalten
Wie Sie sehen können, wurde eine Bitmaske genauso erstellt wie die Tabelle. Einmal erstellt, kann es als Variable auf dem Display angezeigt werden. Denken Sie daran, dass Sie nur 7 Zeichen im Speicher speichern können. Im Prinzip reicht das aus. Zum Beispiel, wenn Sie ein Gradsymbol anzeigen müssen.
Probleme, bei denen die Anzeige möglicherweise nicht funktioniert
Es kann vorkommen, dass die Anzeige nicht funktioniert. Beispielsweise schaltet es sich ein, zeigt aber keine Zeichen an. Oder es lässt sich überhaupt nicht einschalten. Überprüfen Sie zunächst, ob Sie die Pins richtig angeschlossen haben. Wenn Sie eine LCD 1202-Verbindung zu Arduino ohne I2C verwendet haben, kann es sehr leicht passieren, dass sich die Drähte verheddern, was dazu führen kann, dass das Display nicht richtig funktioniert. Außerdem sollte darauf geachtet werden, dass der Displaykontrast erhöht wird, da bei minimalem Kontrast noch nicht einmal erkennbar ist, ob das LCD 1602 eingeschaltet ist oder nicht. Wenn dies nicht hilft, liegt das Problem möglicherweise an der Verlötung der Kontakte, dies ist bei Verwendung eines I2C-Moduls der Fall. Ein weiterer häufiger Grund dafür, dass die Anzeige möglicherweise nicht funktioniert, ist die falsche Einstellung der I2C-Adresse. Tatsache ist, dass es viele Hersteller gibt und diese eine andere Adresse angeben können. Sie müssen dies hier korrigieren:
LiquidCrystal_I2C lcd(0x27,16,2);
In Klammern sehen Sie zwei Werte, 0x27 und 16,2 (16,2 ist die Anzeigegröße und 0x27 die I2C-Adresse). Anstelle dieser Werte können Sie versuchen, 0x37 oder 0x3F einzustellen. Nun, ein weiterer Grund ist einfach ein fehlerhaftes LCD 1602. Wenn man bedenkt, dass fast alles für Arduino in China hergestellt wird, kann man nicht hundertprozentig sicher sein, dass das gekaufte Produkt nicht defekt ist.
Vor- und Nachteile von LCD 1602
Schauen wir uns die Vor- und Nachteile des LCD 1602-Displays an.
- Preis. Dieses Modul kann zu einem sehr günstigen Preis in chinesischen Geschäften erworben werden. Der Preis beträgt 200-300 Rubel. Manchmal wird es sogar zusammen mit einem I2C-Modul verkauft.
- Einfach anzuschließen. Wahrscheinlich verbindet heutzutage niemand mehr LCD 1602 ohne I2C. Und mit diesem Modul benötigt die Verbindung nur 4 Kontakte, es gibt keine „Drahtgeflechte“.
- Programmierung. Dank vorgefertigter Bibliotheken ist die Arbeit mit diesem Modul einfach; alle Funktionen sind bereits geschrieben. Und wenn Sie Ihr eigenes Symbol hinzufügen müssen, dauert das nur ein paar Minuten.
- Bei der Nutzung durch tausende Funkamateure konnten keine größeren Nachteile festgestellt werden, lediglich Fälle von Fehlkäufen kommen vor, da überwiegend chinesische Anzeigemöglichkeiten zum Einsatz kommen.
In diesem Artikel ging es um den Anschluss des 1602 an Arduino und es wurden auch Beispiele für Programme für die Arbeit mit diesem Display bereitgestellt. Es ist wirklich eines der besten seiner Kategorie; nicht umsonst wählen es Tausende von Funkamateuren für ihre Projekte!
Jeder ist seit langem daran gewöhnt, dass jedes elektronische Gerät über einen Bildschirm verfügt, mit dessen Hilfe es einem Menschen allerlei nützliche Informationen liefert. Der MP3-Player zeigt den Namen des gerade abgespielten Titels an, die Quadcopter-Fernbedienung zeigt Flugtelemetrie an, sogar die Waschmaschine zeigt die Zeit bis zum Ende des Waschvorgangs an und das Smartphone beherbergt in der Regel den gesamten Desktop eines Personalcomputers! Höchstwahrscheinlich könnte Ihr nächstes Gerät auch ein kleines Display verwenden :) Versuchen wir, eine einfache elektronische Uhr zu bauen! Und als Anzeigetafel verwenden wir die gängige und günstige Zeichen-Flüssigkristallanzeige 1602. Hier ist sie, genau wie auf dem Bild: Zusätzlich zu 16x2, einer 20x4-Zeichenanzeige (vier Zeilen à 20 Zeichen), sowie einer Grafikanzeige mit einer Auflösung von 128x64 Pixeln gelten als recht beliebt. Hier sind sie auf den Bildern:
1. Anschluss des Zeichen-LCD-Displays 1602
Das 1602-Display verfügt über 16 Pins. Normalerweise sind sie von links nach rechts nummeriert, wenn man es wie auf dem Bild betrachtet. Manchmal sind die Pins signiert, wie zum Beispiel: DB0, DB1, EN usw. Und manchmal geben sie einfach die Ausgabenummer an. In jedem Fall ist die Liste der Pins immer dieselbe: 1 – „GND“, Masse (minus Leistung); 2 – „Vcc“, Stromversorgung +5V; Registerauswahl; „R/W“, Datenübertragungsrichtung (Schreiben/Lesen); 7-14 – „DB0“, „DB1“, .., „DB7“ – Datenbus; ); 16 – Hintergrundbeleuchtungskathode (Masse). Die VEE-, RS-Leitungen und vier Datenleitungen DB4, DB5, DB6, DB7 werden an die digitalen Ausgänge des Controllers angeschlossen. Wir werden die „R/W“-Leitung mit der „Masse“ des Controllers verbinden (da wir nur die Funktion zum Schreiben in den Anzeigespeicher benötigen). Wir werden die Hintergrundbeleuchtung vorerst nicht anschließen, ich denke, Sie können das leicht selbst herausfinden :) Schematische Darstellung des Anschlusses des Displays an Arduino Uno![](https://i1.wp.com/robotclass.ru/wp-content/uploads/2014/12/lcdx1potx1_%D1%81%D1%85%D0%B5%D0%BC%D0%B0-1024x896.png)
![](https://i0.wp.com/robotclass.ru/wp-content/uploads/2014/12/lcdx1_bb-1024x428.png)
LCD-Display 1602 | 1 | 2 | 4 | 6 | 11 | 12 | 13 | 14 | 15 | 16 |
Arduino Uno | GND | +5V | 4 | 5 | 6 | 7 | 8 | 9 | +5V | GND |
2. „Hallo Welt!“ programmieren
Um mit LCD-Displays verschiedener Größen und Typen arbeiten zu können, verfügt der Arduino IDE-Editor über eine spezielle Bibliothek Flüssigkristall. Um die Bibliothek einzubinden, schreiben wir den folgenden Ausdruck in die erste Zeile unseres Programms: #include3. Programmierung der Uhr
Nachdem das Display nun ordnungsgemäß funktioniert, versuchen wir, unser einfaches Gerät in eine echte elektronische Uhr zu verwandeln. Aufmerksamkeit! Um die Zeit anzuzeigen, benötigen wir die Time-Bibliothek. Wenn es noch nicht installiert ist, können Sie das Archiv über den Link herunterladen. Verbinden wir es: #include- year() – gibt uns das Jahr zurück;
- Monat() – Monat;
- Tag Tag;
- Stunde() – Stunde;
- minute() – gibt die Minute zurück;
- second() – Sekunde.