- Erforderliche Komponenten:
- Grafisches LCD:
- Anzeigen eines Bildes auf einem grafischen LCD mit 8051:
- Schaltungserklärung:
- Programmiererklärung:
In unserem täglichen Leben sehen wir viele Arten von Geräten zur Anzeige von Text, Bildern und Grafiken. LCDs sind eines der beliebtesten Anzeigegeräte in der Elektronik und werden in fast allen Projekten verwendet, in denen Informationen angezeigt werden. Es gibt viele Arten von LCDs, die in elektronischen Projekten verwendet werden. Wir haben bereits in vielen unserer Projekte 16X2-LCD verwendet und auch TFT-LCD mit Arduino. Sie können alle unsere 16X2 LCD-Projekte finden, indem Sie diesem Link folgen, einschließlich der Schnittstelle zu 8051, AVR, Arduino und vielen mehr.
In diesem Tutorial werden wir eine grafische LCD-Schnittstelle mit dem 8051-Mikrocontroller erstellen. In diesem Projekt zeigen wir, wie ein Bild auf einem grafischen LCD (GLCD) angezeigt wird.
Erforderliche Komponenten:
- Grafisches LCD
- AT89c52 8051 Mikrocontroller
- Spannungsregler 7805
- 1000uf Kondensator
- 10 uF Kondensator
- 10K Widerstand
- 10K POT
- Kristalloszillator 12 MH
- Verbindungskabel
- Brotbrett
- Burg streift männlich
- Energieversorgung
- LED
- 220 Ohm Widerstand
- 1K Widerstand
Grafisches LCD:
Ein einfaches 16x2-LCD hat 16 Pins, das grafische LCD 20 Pins. Die Pin-Beschreibung ist unten gemäß Datenblatt angegeben:
Pin Nr. | Pin Name | Beschreibung | Funktion |
1 | VSS | Boden | 0 Volt |
2 | VDD | Energieversorgung | 5 Volt |
3 | V0 | LCD-Kontrasteinstellung | |
4 | RS | Befehls- / Datenregisterauswahl | RS = 0: Befehlsauswahl und RS = 1: Datenauswahl |
5 | R / W. | Lese- / Schreibregister | R / W = 0: Auswahl schreiben und R / W = 1: Auswahl lesen |
6 | E. | Signal aktivieren | |
7 | DB0 | Dateneingabe- / Ausgabepin (DB0-DB7) | 8 Bit (DB0-DB7) |
8 | DB1 | ||
9 | DB2 | ||
10 | DB3 | ||
11 | DB4 | ||
12 | DB5 | ||
13 | DB6 | ||
14 | DB7 | ||
15 | CS1 | Chipauswahl | CS1 = 1, Chipauswahlsignal für IC1 |
16 | CS2 | Chipauswahl | CS2 = 1, Chipauswahlsignal für IC2 |
17 | RST | Zurücksetzen | GLCD zurücksetzen |
18 | VEE | Negative Spannung für LCD-Treiber | |
19 | EIN | Hintergrundbeleuchtung LED | 5 Volt |
20 | K. | Hintergrundbeleuchtung LED | Boden |
Anzeigen eines Bildes auf einem grafischen LCD mit 8051:
Um ein Bild auf einem grafischen LCD anzuzeigen, müssen wir es zuerst in Assembly Code konvertieren, damit der 8051 Microcontroller es verstehen und lesen kann. Daher müssen wir die folgenden Schritte zum Konvertieren von Bildern in HEX-Code ausführen:
Schritt 1: Zuerst müssen wir eine Anwendung herunterladen, die Image (BMP-Format) in Assembly Code konvertiert. Laden Sie also die BMP2ASM-Bildkonvertierungsanwendung von diesem Link herunter. Klicken Sie einfach mit der rechten Maustaste auf den Link und dann auf Link speichern unter…
Schritt 2: Wählen Sie dann das Bild aus, das Sie auf dem grafischen LCD anzeigen möchten, und konvertieren Sie es mit einer Anwendung wie MS Paint, Photoshop usw. in BMP (falls es noch nicht im BMP-Format vorliegt). Oder Sie finden viele Online-Websites zur Bildformatkonvertierung. Wir haben unten BMP-Bild mit der Größe 128x64:
Schritt 3: Extrahieren Sie nun die Datei BMP2ASM.zip, die wir in Schritt 1 heruntergeladen haben, öffnen Sie die Datei Bmp2asm.exe und wählen Sie das BMP-Image aus.
Schritt 4: Drücken Sie nun im BMP2ASM-Anwendungsfenster auf "Konvertieren".
Schritt 5: Kopieren Sie dann den generierten Code und fügen Sie ihn in das Programm 8051 in Keil uVision ein. Nehmen Sie einige Änderungen vor und kompilieren Sie den Code.
Jetzt kann Ihr Code in 8051 Microcontroller hochgeladen werden.
Schaltungserklärung:
Die Schaltungsverbindungen für die Schnittstelle zwischen grafischem LCD und 8051-Mikrocontroller sind einfach und fast identisch mit dem Anschluss von 16x2-LCD an 8051. Das 16x2-LCD verfügt jedoch über 16 Pins und das GLCD über 20 Pins.
Ein 10K-Topf wird zum Einstellen des Kontrasts für GLCD verwendet. Die Steuerpins von GLCD RS, R / W und E sind direkt mit den 89C52- Pin-Nummern P1.0, P1.1 und P1.2 verbunden. Die Chipauswahlstifte CS1 und CS2 des LCD sind mit Pin P1.3 bzw. P1.4 verbunden. Die Datenpins DB0-DB7 sind direkt am PORT P2 verbunden. Ein Spannungsregler 7805 wird für die reguläre 5-Volt-Versorgung verwendet. Im Demonstrationsvideo habe ich ein Arduino-Netzteil verwendet.
Programmiererklärung:
Zunächst nehmen wir die erforderlichen Header-Dateien in das Programm auf und definieren Bits für Steuer- und Datenpins von GLCD.
#einschließen
Danach haben wir eine Verzögerungsfunktion erstellt.
nichtige Verzögerung (int itime) {int i, j; für (i = 0; i
Die Funktion void lcd_disp_on () wird zum Einschalten des Displays verwendet.
Die Funktion void setCursorY (int y) wird zum Setzen der Spalte in GLCD erstellt, und die Funktion void setCursorX (int x) wird zum Setzen der Seite in GLCD erstellt. Die vollständige Codedatei finden Sie im folgenden Codeabschnitt.
Nach dem Einstellen von Spalte und Seite haben wir eine Funktion zum Senden von Befehlen und Daten an GLCD geschrieben.
void lcdprint (char dat, int size) {unsigned int i; für (i = 0; i
In der void main () -Funktion haben wir GLCD gelöscht und dann Column und Page gesetzt. Senden Sie anschließend Daten mithilfe der Funktion void lcdprint (char dat, int size) an das LCD.
void main () {int x, y; P3 = 0xff; während (1) {lcdclear (); für (y = 0; y <8; y ++) {für (x = 0; x <128; x ++) {lcd_disp_on (); setCursorX (y); setCursorY (x); lcdprint (Bild, x); }}…………………..
Code-Fluss:
- Wenn wir das System einschalten, löscht das Programm zuerst die GLCD und schaltet das Display ein.
- Setzen Sie dann den Cursor auf Column, von wo aus wir die Daten schreiben möchten.
- Setzen Sie dann den Cursor auf Seite, von wo aus wir die Daten schreiben möchten.
- Jetzt sendet das Programm die Daten nacheinander bis 128 x 8 Mal an den ausgewählten Ort. Weil eine GLCD 8 Seiten und 128 Spalten hat.