Displayenheter är de viktigaste utmatningsenheterna i inbäddade projekt och elektronikprodukter. 16x2 LCD är en av de mest använda displayenheterna. 16x2 LCD betyder att det finns två rader där 16 tecken kan visas per rad, och varje tecken tar 5X7 matrisutrymme på LCD. I denna handledning ska vi ansluta 16X2 LCD-modul till 8051 mikrokontroller (AT89S52). Gränssnitt LCD med 8051 mikrokontroller kan se ganska komplicerat ut för nybörjare, men efter att ha förstått konceptet skulle det se väldigt enkelt och enkelt ut. Även om det kan ta lång tid eftersom du behöver förstå och ansluta 16 stift LCD till mikrokontrollern. Så först låt oss förstå de 16 stiften på LCD-modulen.
Vi kan dela upp den i fem kategorier, Power Pins, contrast pin, Control Pins, Data pins och Backlight pins.
Kategori |
Fäst NO. |
Pin-namn |
Fungera |
Power Pins |
1 |
VSS |
Jordstift, ansluten till marken |
2 |
VDD eller Vcc |
Spänningsstift + 5V |
|
Kontraststift |
3 |
V0 eller VEE |
Kontrastinställning, ansluten till Vcc genom ett variabelt motstånd. |
Kontrollstift |
4 |
RS |
Registrera Välj stift, RS = 0 Kommandoläge, RS = 1 Dataläge |
5 |
RW |
Läs- / skrivstift, RW = 0 Skrivläge, RW = 1 Läsläge |
|
6 |
E |
Aktivera, en hög till låg puls behöver aktivera LCD-skärmen |
|
Datapinnar |
7-14 |
D0-D7 |
Data Pins, lagrar de data som ska visas på LCD-skärmen eller kommandoinstruktionerna |
Bakgrundsbelysning Pins |
15 |
LED + eller A. |
För att driva bakgrundsbelysning + 5V |
16 |
LED- eller K |
Bakgrundsbelysning mark |
Alla stift är tydligt förståliga av deras namn och funktioner, förutom styrstiften, så de förklaras nedan:
RS: RS är registervalstappen. Vi måste ställa in den på 1 om vi skickar några data som ska visas på LCD-skärmen. Och vi kommer att ställa in den på 0 om vi skickar en kommandoinstruktion som att rensa skärmen (hexkod 01).
RW: Detta är läs- / skrivstift, vi sätter det till 0 om vi ska skriva lite data på LCD. Och ställ in den på 1 om vi läser från LCD-modulen. Generellt är detta inställt på 0, eftersom vi inte behöver läsa data från LCD. Endast en instruktion ”Få LCD-status” behöver läsas några gånger.
E: Denna stift används för att aktivera modulen när en hög till låg puls ges till den. En puls på 450 ns bör ges. Denna övergång från HÖG till LÅG gör modulen AKTIV.
Det finns några förinställda kommandoinstruktioner i LCD, vi har använt dem i vårt program nedan för att förbereda LCD-skärmen (i lcd_init () -funktionen). Några viktiga kommandoinstruktioner ges nedan:
Hexkod |
Kommando till LCD-instruktionsregister |
0F |
LCD PÅ, markören PÅ |
01 |
Rensa skärmen |
02 |
Återvända hem |
04 |
Minska markören (flytta markören till vänster) |
06 |
Öka markören (flytta markören till höger) |
05 |
Skift display till höger |
07 |
Skift display till vänster |
0E |
Display PÅ, markören blinkar |
80 |
Tvinga markören till början av första raden |
C0 |
Tvinga markören till början av andra raden |
38 |
2 rader och 5 × 7 matris |
83 |
Markörlinje 1 position 3 |
3C |
Aktivera andra raden |
08 |
Display AV, markör AV |
C1 |
Hoppa till andra raden, position 1 |
OC |
Display PÅ, markören AV |
C1 |
Hoppa till andra raden, position 1 |
C2 |
Hoppa till andra raden, position 2 |
Kretsschema och förklaring
Kretsschema för LCD-gränssnitt med 8051 mikrokontroller visas i figuren ovan. Om du har grundläggande förståelse för 8051 måste du veta om EA (PIN 31), XTAL1 & XTAL2, RST-stift (PIN 9), Vcc och Ground Pin av 8051 mikrokontroller. Jag har använt dessa stift i ovanstående krets. Om du inte har någon aning om det rekommenderar jag att du läser den här artikeln LED-gränssnitt med 8051 mikrokontroller innan du går igenom LCD-gränssnitt.
Så förutom dessa ovanstående stift har vi anslutit datapinnarna (D0-D7) på LCD-skärmen till Port 2 (P2_0 - P2_7) mikrokontroller. Och styr stiften RS, RW och E till stift 12,13,14 (stift 2,3,4 av port 3) på mikrokontrollen.
PIN 2 (VDD) och PIN 15 (bakgrundsbelysning) på LCD är anslutna till spänning (5v) och PIN 1 (VSS) och PIN 16 (bakgrundsbelysning jord) är anslutna till jord.
Stift 3 (V0) är ansluten till spänning (Vcc) genom ett variabelt motstånd på 10k för att justera LCD-kontrasten. Mellanbenet på det variabla motståndet är anslutet till PIN 3 och andra två ben är anslutna till spänningsförsörjningen och jord.
Kodförklaring
Jag har försökt förklara koden genom kommentarer (i själva koden).
Som jag har förklarat tidigare om kommandoläge och dataläge kan du se att medan vi skickar kommando (funktion lcd_cmd) har vi ställt in RS = 0, RW = 0 och en HÖG till LÅG puls ges till E genom att göra den 1, sedan 0 Även när vi skickar data (funktion lcd_data) till LCD har vi ställt in RS = 1, RW = 0 och en HÖG till LÅG puls ges till E genom att göra den 1 till 0. Funktion msfördröjning () har skapats för att skapa fördröjning i millisekunder. och kallas ofta i programmet kallas det så att LCD-modulen kan ha tillräckligt med tid för att utföra den interna funktionen och kommandona.
En stund-loop har skapats för att skriva ut strängen, som anropar lcd_data-funktionen varje gång för att skriva ut ett tecken tills det sista tecknet (null terminator- '\ 0').
Vi har använt lcd_init () -funktionen för att göra LCD-skärmen redo genom att använda de förinställda kommandoinstruktionerna (förklaras ovan).