Displayenheder er de vigtigste outputenheder i integrerede projekter og elektronikprodukter. 16x2 LCD er en af de mest anvendte displayenheder. 16x2 LCD betyder, at der er to rækker, hvor 16 tegn kan vises pr. Linje, og hvert tegn tager 5X7 matrixplads på LCD. I denne vejledning skal vi forbinde 16X2 LCD-modul til 8051 mikrocontroller (AT89S52). Interfacering af LCD med 8051 mikrokontroller kan se ret kompliceret ud for nybegyndere, men efter at have forstået konceptet, ser det meget simpelt og let ud. Selvom det kan tage tid at tage, fordi du har brug for at forstå og forbinde 16 ben på LCD til mikrocontrolleren. Så lad os først forstå de 16 ben på LCD-modulet.
Vi kan opdele det i fem kategorier, Power Pins, contrast pin, Control Pins, Data pins og Backlight pins.
Kategori |
Pin NO. |
Pin-navn |
Fungere |
Power Pins |
1 |
VSS |
Jordstift, forbundet til jorden |
2 |
VDD eller Vcc |
Spændingsstift + 5V |
|
Kontraststift |
3 |
V0 eller VEE |
Kontrastindstilling, tilsluttet Vcc grundig en variabel modstand. |
Kontrolstifter |
4 |
RS |
Registrer Vælg Pin, RS = 0 Kommandotilstand, RS = 1 Datatilstand |
5 |
RW |
Læse / skrive-pin, RW = 0 Skrivemåde, RW = 1 læsetilstand |
|
6 |
E |
Aktiver, en høj til lav puls har brug for at aktivere LCD |
|
Datapinde |
7-14 |
D0-D7 |
Data Pins, Gemmer de data, der skal vises på LCD eller kommandoinstruktionerne |
Baggrundsbelysningstifter |
15 |
LED + eller A. |
For at tænde baggrundsbelysning + 5V |
16 |
LED- eller K |
Baggrundsbelysning |
Alle ben er tydeligt forståelige med deres navn og funktioner undtagen kontrolbenene, så de forklares nedenfor:
RS: RS er den valgte pin-kode. Vi er nødt til at indstille det til 1, hvis vi sender nogle data, der skal vises på LCD. Og vi sætter det til 0, hvis vi sender en kommandoinstruktion som at rydde skærmen (hex-kode 01).
RW: Dette er læse / skrive-pin, vi sætter det til 0, hvis vi skal skrive nogle data på LCD. Og sæt det til 1, hvis vi læser fra LCD-modulet. Generelt er dette indstillet til 0, fordi vi ikke behøver at læse data fra LCD. Kun en instruktion "Få LCD-status" skal læses nogle gange.
E: Denne ben bruges til at aktivere modulet, når der gives en høj til lav puls til det. Der skal gives en puls på 450 ns. Denne overgang fra HIGH til LOW gør modulet AKTIVT.
Der er nogle forudindstillede kommandoinstruktioner i LCD, vi har brugt dem i vores program nedenfor til at forberede LCD (i lcd_init () -funktionen). Nogle vigtige kommandoinstruktioner er givet nedenfor:
Hex-kode |
Kommando til LCD instruktionsregister |
0F |
LCD ON, markør ON |
01 |
Ryd skærmbilledet |
02 |
Vende hjem |
04 |
Reducer markør (skift markør til venstre) |
06 |
Forøg markør (skift markør til højre) |
05 |
Skift skærm til højre |
07 |
Skift display til venstre |
0E |
Display ON, markøren blinker |
80 |
Tving markøren til begyndelsen af første linje |
C0 |
Tving markøren til begyndelsen af anden linje |
38 |
2 linjer og 5 × 7 matrix |
83 |
Markørlinje 1 position 3 |
3C |
Aktivér anden linje |
08 |
Display FRA, markør FRA |
C1 |
Gå til anden linje, position 1 |
OC |
Display TIL, markør FRA |
C1 |
Gå til anden linje, position 1 |
C2 |
Spring til anden linje, position 2 |
Kredsløbsdiagram og forklaring
Kredsløbsdiagram for LCD-interface med 8051 mikrokontroller er vist i ovenstående figur. Hvis du har grundlæggende forståelse for 8051, skal du vide om EA (PIN 31), XTAL1 & XTAL2, RST-pin (PIN 9), Vcc og Ground Pin af 8051 mikrokontroller. Jeg har brugt disse pins i ovenstående kredsløb. Hvis du ikke har nogen idé om det, anbefaler jeg dig at læse denne artikel LED-grænseflade med 8051 Microcontroller, før du går gennem LCD-grænseflade.
Så udover ovenstående stifter har vi tilsluttet datastifterne (D0-D7) på LCD til Port 2 (P2_0 - P2_7) mikrokontroller. Og styr stifterne RS, RW og E til henholdsvis stiften 12,13,14 (pin 2,3,4 af port 3) på mikrocontroller.
PIN 2 (VDD) og PIN 15 (baggrundsbelysning) på LCD er forbundet med spænding (5v), og PIN 1 (VSS) og PIN 16 (baggrundslys jord) er forbundet til jord.
Pin 3 (V0) er forbundet til spænding (Vcc) gennem en variabel modstand på 10k for at justere LCD-kontrasten. Mellembenet på den variable modstand er forbundet til PIN 3, og andre to ben er forbundet til spændingsforsyningen og jorden.
Kode Forklaring
Jeg har forsøgt at forklare koden gennem kommentarer (i selve koden).
Som jeg har forklaret tidligere om kommandotilstand og datatilstand, kan du se, at mens vi sender kommando (funktion lcd_cmd), har vi indstillet RS = 0, RW = 0, og en HIGH til LAV-puls gives til E ved at gøre det 1, derefter 0 Også når vi sender data (funktion lcd_data) til LCD, har vi indstillet RS = 1, RW = 0, og der gives E til HIGH til LOW-puls ved at gøre det 1 til 0. Funktion msforsinkelse () er oprettet for at skabe forsinkelse i millisekunder. og kaldes ofte i programmet, kaldes det, så LCD-modulet kan have tilstrækkelig tid til at udføre den interne betjening og kommandoer.
Der er oprettet en while-loop til at udskrive strengen, som kalder lcd_data-funktionen hver gang for at udskrive et tegn indtil det sidste tegn (null terminator- '\ 0').
Vi har brugt lcd_init () -funktionen til at gøre LCD-skærmen klar ved hjælp af de forudindstillede kommandoinstruktioner (forklaret ovenfor).