Um eine gute Kommunikation zwischen Mensch und Maschine herzustellen, spielen Anzeigeeinheiten eine wichtige Rolle. Sie sind daher ein wichtiger Bestandteil eingebetteter Systeme. Anzeigeeinheiten - groß oder klein - arbeiten nach dem gleichen Grundprinzip. Neben komplexen Anzeigeeinheiten wie Grafikanzeigen und 3D-Displays muss man wissen, wie man mit einfachen Anzeigen wie 16x1- und 16x2-Einheiten arbeitet. Die 16x1-Anzeigeeinheit hat 16 Zeichen und befindet sich in einer Zeile. Die 16x2 LCD wird 32 Zeichen insgesamt 16in 1 st Linie und weitere 16 in 2 ndLinie. Hier muss man verstehen, dass in jedem Zeichen 5x10 = 50 Pixel vorhanden sind. Um ein Zeichen anzuzeigen, müssen alle 50 Pixel zusammenarbeiten. Darüber müssen wir uns jedoch keine Sorgen machen, da sich in der Anzeigeeinheit ein weiterer Controller (HD44780) befindet, der die Pixel steuert. (Sie können es in der LCD-Einheit sehen, es ist das blaue Auge auf der Rückseite).
Erforderliche Komponenten
Hardware:
ATmega32 Mikrocontroller
Stromversorgung (5V)
AVR-ISP-Programmierer
JHD_162ALCD (16x2 LCD)
100uF Kondensator.
Software:
Atmel Studio 6.1
Progisp oder Flash Magic
Schaltplan und Erklärung
Wie in der LCD-Schnittstelle zur ATmega32-Schaltung gezeigt, können Sie sehen, dass PORTA von ATMEGA32 mit dem Datenport-LCD verbunden ist. Hier sollte man daran denken, die JTAG-Kommunikation in PORTC von ATMEGA durch Ändern der Sicherungsbytes zu deaktivieren, wenn man PORTC als normalen Kommunikationsport verwenden möchte. In 16x2 LCD gibt es insgesamt 16 Pins, wenn es eine Hintergrundbeleuchtung gibt, wenn es keine Hintergrundbeleuchtung gibt, gibt es 14 Pins. Man kann die Gegenlichtstifte mit Strom versorgen oder belassen. Nun in den 14 Stiften sind 8 Datenstifte (7-14 oder D0-D7), 2 Stromversorgungsstifte (1, 2 oder VSS & VDD oder GND & + 5 V), 3 rd Stift für die Kontraststeuerung (VEE-Kontrollen, wie dick sollten die Zeichen gezeigt), 3 Steuerstifte (RS & RW & E)
In der obigen Schaltung zur Schnittstelle von 16x2 LCD mit AVR-Mikrocontroller können Sie beobachten, dass ich nur zwei Steuerstifte genommen habe. Dies gibt die Flexibilität eines besseren Verständnisses. Das Kontrastbit und READ / WRITE werden nicht oft verwendet, so dass sie gegen Masse kurzgeschlossen werden können. Dies versetzt das LCD in den höchsten Kontrast- und Lesemodus. Wir müssen nur die ENABLE- und RS-Pins steuern, um Zeichen und Daten entsprechend zu senden.
Die Verbindungen zwischen dem ATmega32-Mikrocontroller und dem 16x2-LCD sind nachstehend aufgeführt:
PIN1 oder VSS - Masse
PIN2 oder VDD oder VCC - + 5V Stromversorgung
PIN3 oder VEE - Boden (bietet maximalen Kontrast am besten für Anfänger)
PIN4 oder RS (Registerauswahl) - PD6 des Mikrocontrollers
PIN5 oder RW (Lesen / Schreiben) - Masse (versetzt das LCD in den Lesemodus, erleichtert die Kommunikation für den Benutzer)
PIN6 oder E (Aktivieren) - PD5 des Mikrocontrollers
PIN7 oder D0 - PA0 des Mikrocontrollers
PIN8 oder D1 - PA1
PIN9 oder D2 - PA2
PIN10 oder D3 - PA3
PIN11 oder D4 - PA4
PIN12 oder D5 - PA5
PIN13 oder D6 - PA6
PIN14 oder D7 - PA7
In der Schaltung sehen Sie, dass wir 8-Bit-Kommunikation (D0-D7) verwendet haben, dies ist jedoch nicht obligatorisch und wir können auch 4-Bit-Kommunikation (D4-D7) verwenden, aber mit 4-Bit-Kommunikationsprogramm wird es für Anfänger etwas komplex, also haben wir einfach weitergemacht 8-Bit-Kommunikation.
Nach bloßer Beobachtung aus der obigen Tabelle verbinden wir 10 Pins des LCD mit dem Controller, wobei 8 Pins Datenpins und 2 Pins zur Steuerung sind.
Arbeiten
Um loszulegen, müssen Sie die Funktionen von 10 Pins eines 16x2 LCD (8 Datenpins + 2 Steuerpins) kennen. Die 8 Datenpins dienen zum Senden von Daten oder Befehlen an das LCD. In zwei Steuerstiften:
1. Der RS-Pin (Registerauswahl) teilt dem LCD mit, ob Daten an ihn gesendet oder ein Befehl an ihn gesendet werden.
Zum Beispiel:
In der obigen Tabelle 1 weist ein Wert für den Datenport (D7-D0) von "0b0010 1000 oder 0x28" das LCD an, das Symbol "(" anzuzeigen. In Tabelle 2 gibt der gleiche Wert von 0x28 dem LCD an, dass Sie ein 5x7-Punkt-LCD sind und verhalten sich wie eins “, so dass der Benutzer für denselben Wert zwei Dinge definieren kann. Jetzt wird diese Situation durch den Registerauswahl-Pin neutralisiert. Wenn der RS-Pin auf niedrig gesetzt ist, versteht das LCD, dass wir einen Befehl senden. Wenn wir den RS-Pin auf hoch setzen, dann Das LCD versteht, dass wir die Daten senden. In beiden Fällen berücksichtigt das LCD den Datenportwert gemäß dem RS-Pin-Wert.
2. Der E-Pin (Aktivieren) zeigt einfach die „Betriebsanzeige-LED eines PCs“ an. Dieser Pin ist auf High gesetzt, um dem LCD mitzuteilen, dass Daten vom Datenport des Controllers empfangen werden sollen. Sobald dieser Pin nach High niedrig wird, verarbeitet das LCD die empfangenen Daten und zeigt das entsprechende Ergebnis an. Daher wird dieser Pin vor dem Senden von Daten auf hoch gesetzt und nach dem Senden von Daten auf Masse gezogen.
Nachdem Sie die Hardware angeschlossen haben, starten Sie Atmel Studio und starten Sie ein neues Projekt zum Schreiben des Programms. Öffnen Sie nun den Programmierbildschirm und starten Sie das Programm. Das Programm muss wie folgt folgen.
Zuerst teilen wir dem Controller mit, welche Ports wir für Daten und die Steuerung des LCD verwenden. Teilen Sie dem Controller dann mit, wann er Daten oder einen Befehl entsprechend senden soll, indem Sie mit den RS- und E-Pins spielen.
Kurze Erläuterung der im Programm verwendeten Konzepte:
1. E ist hoch eingestellt (sagt dem LCD, dass es Daten empfangen soll) und RS ist niedrig eingestellt (sagt dem LCD, dass wir den Befehl geben).
2. Geben Sie dem Datenport den Wert 0x01 als Befehl zum Löschen des Bildschirms
3. E ist hoch eingestellt (sagt dem LCD, dass Daten empfangen werden sollen) und RS ist hoch eingestellt (sagt dem LCD, dass wir Daten geben).
4. Nehmen Sie eine Zeichenfolge, die jedes Zeichen einzeln in einer Zeichenfolge sendet.
5. E ist niedrig eingestellt (zeigt dem LCD an, dass wir mit dem Senden der Daten fertig sind).
6. Nach dem letzten Befehl beendet das LCD die Kommunikation, verarbeitet die Daten und zeigt die Zeichenfolge auf dem Bildschirm an.
In diesem Szenario senden wir die Zeichen nacheinander. Die Zeichen werden dem LCD durch ASCII-Codes (amerikanischer Standardcode für den Informationsaustausch) zugewiesen.
Die Tabelle der ASCII-Codes ist oben dargestellt. Damit das LCD ein Zeichen "@" anzeigt, müssen wir einen hexadezimalen Code "64" senden. Wenn wir '0x62' an das LCD senden, wird das Symbol '>' angezeigt. Auf diese Weise senden wir die entsprechenden Codes an das LCD, um einen Namen anzuzeigen.
Die Art der Kommunikation zwischen LCD und ATmega32 AVR-Mikrocontroller wird am besten Schritt für Schritt anhand des folgenden C-Codes erläutert.