Näyttöyksiköt ovat sulautettujen projektien ja elektroniikkatuotteiden tärkeimmät lähtölaitteet. 16x2 LCD on yksi käytetyimmistä näyttöyksiköistä. 16x2 LCD tarkoittaa, että on kaksi riviä, joissa 16 merkkiä voidaan näyttää riviä kohden, ja kukin merkki vie 5X7 matriisitilaa LCD-näytöllä. Tässä opetusohjelmassa aiomme liittää 16X2 LCD-moduulin 8051-mikrokontrolleriin (AT89S52). LCD-näytön ja 8051-mikrokontrollerin yhdistäminen saattaa näyttää melko monimutkaiselta aloittelijoille, mutta käsitteen ymmärtämisen jälkeen se näyttäisi hyvin yksinkertaiselta ja helpolta. Vaikka se voi viedä aikaa, koska sinun on ymmärrettävä ja liitettävä 16 nastan LCD-näyttöä mikrokontrolleriin. Joten ensin ymmärretään LCD-moduulin 16 nastaa.
Voimme jakaa sen viiteen luokkaan: virtaliittimet, kontrastitapit, ohjaustapit, datanastat ja taustavalonastat.
Kategoria |
Tappi NO. |
PIN-nimi |
Toiminto |
Virtanastat |
1 |
VSS |
Maadoitustappi, kytketty maahan |
2 |
VDD tai Vcc |
Jännitetappi + 5V |
|
Kontrastinasta |
3 |
V0 tai VEE |
Kontrastiasetus, kytketty Vcc: hen perusteellisesti vaihtelevalla vastuksella. |
Ohjausnastat |
4 |
RS |
Rekisteröidy Valitse tappi, RS = 0 komentotila, RS = 1 datatila |
5 |
RW |
Luku- / kirjoitusnasta, RW = 0 Kirjoitustila, RW = 1 lukutila |
|
6 |
E |
Ota käyttöön, korkean tai matalan pulssin on oltava käytössä nestekidenäytössä |
|
Data-nastat |
7-14 |
D0-D7 |
Datanastat, tallentaa nestekidenäytössä näytettävät tiedot tai komento-ohjeet |
Taustavalo-nastat |
15 |
LED + tai A |
Taustavalon + 5 V virran saamiseksi |
16 |
LED tai K |
Taustavalon maa |
Kaikki nastat ovat selvästi ymmärrettävissä nimeltään ja toiminnoiltaan, paitsi nastat, joten ne selitetään alla:
RS: RS on rekisterinvalintatappi. Meidän on asetettava se arvoon 1, jos lähetämme tietoja näytettäväksi LCD-näytöllä. Ja asetamme sen arvoon 0, jos lähetämme komento-ohjeita, kuten näytön tyhjentäminen (heksakoodi 01).
RW: Tämä on luku- / kirjoitusnasta, asetamme sen arvoon 0, jos aiomme kirjoittaa joitain tietoja LCD-näytölle. Ja aseta se arvoon 1, jos luemme LCD-moduulista. Yleensä tämä on 0, koska meidän ei tarvitse lukea tietoja LCD-näytöltä. Vain yksi "LCD-näytön tila" -ohje on luettava muutaman kerran.
E: Tätä tapia käytetään moduulin käyttöönottoon, kun sille annetaan korkea tai matala pulssi. Pulssi on annettava 450 ns. Siirtyminen HIGH-tilasta LOW-tilaan tekee moduulista PÄÄLLÄ.
LCD-näytössä on joitain esiasetettuja komento-ohjeita, olemme käyttäneet niitä alla olevassa ohjelmassa LCD-näytön valmistelemiseksi (toiminnossa lcd_init ()). Joitakin tärkeitä komento-ohjeita on annettu alla:
Hex-koodi |
Komento LCD-käyttörekisteriin |
0F |
LCD PÄÄLLÄ, kohdistin PÄÄLLÄ |
01 |
Tyhjennä näyttö |
02 |
Palata kotiin |
04 |
Pienennä kohdistin (siirrä kohdistin vasemmalle) |
06 |
Lisäosoitin (siirrä kohdistin oikealle) |
05 |
Vaihda näyttö oikealle |
07 |
Vaihda näyttö vasemmalle |
0E |
Näyttö PÄÄLLÄ, kohdistin vilkkuu |
80 |
Pakota kohdistin ensimmäisen rivin alkuun |
C0 |
Pakota kohdistin toisen rivin alkuun |
38 |
2 riviä ja 5 × 7 matriisi |
83 |
Kohdistimen viivan 1 sijainti 3 |
3C |
Aktivoi toinen rivi |
08 |
Näyttö POIS, kohdistin POIS |
C1 |
Hyppää toiselle riville, asento 1 |
OC |
Näyttö PÄÄLLÄ, kohdistin POIS |
C1 |
Hyppää toiselle riville, asento 1 |
C2 |
Hyppää toiselle riville, sijainti 2 |
Piirikaavio ja selitys
Piirikaavio LCD-liitännästä 8051-mikrokontrolleriin on esitetty yllä olevassa kuvassa. Jos sinulla on perustiedot 8051: stä, sinun on tiedettävä EA (PIN 31), XTAL1 ja XTAL2, RST-nasta (PIN 9), Vcc ja 8051-mikrokontrollerin maadoitettu nasta. Olen käyttänyt näitä nastoja yllä olevassa piirissä. Jos sinulla ei ole aavistustakaan siitä, suosittelen, että luet tämän artikkelin LED-liitäntä 8051-mikrokontrolleriin ennen LCD-liitännän käyttämistä.
Joten näiden yllä olevien nastojen lisäksi olemme liittäneet nestekidenäytön datanastat (D0-D7) Port 2 -mikro-ohjaimeen. Ja ohjaintapit RS, RW ja E mikrokontrollerin tapiin 12,13,14 (portin 3 nasta 2,3,4).
LCD-näytön PIN 2 (VDD) ja PIN 15 (taustavalon syöttö) on kytketty jännitteeseen (5v), ja PIN 1 (VSS) ja PIN 16 (taustavalon maa) on kytketty maahan.
Tappi 3 (V0) on kytketty jännitteeseen (Vcc) 10 k: n vaihtuvan vastuksen kautta nestekidenäytön kontrastin säätämiseksi. Säädettävän vastuksen keskijalka on kytketty PIN 3: een ja kaksi muuta jalkaa on kytketty jännitesyöttöön ja maahan.
Koodin selitys
Olen yrittänyt selittää koodin kommenttien avulla (itse koodissa).
Kuten olen aiemmin selittänyt komentotilasta ja datatilasta, voit nähdä, että kun lähetämme komentoa (toiminto lcd_cmd), olemme asettaneet RS = 0, RW = 0 ja E: lle annetaan HIGH - LOW pulssi tekemällä se 1, sitten 0 Myös kun lähetämme dataa (toiminto lcd_data) LCD: lle, olemme asettaneet RS = 1, RW = 0 ja E: lle annetaan HIGH - LOW pulssi tekemällä se arvoksi 1 - 0. Toiminto msdelay () on luotu viiveen tuottamiseksi millisekunneissa ja sitä kutsutaan usein ohjelmassa, sitä kutsutaan niin, että LCD-moduulilla voi olla riittävästi aikaa sisäisen toiminnan ja komentojen suorittamiseen.
Merkkijonon tulostamiseen on luotu jonkin aikaa silmukka, joka kutsuu lcd_data-funktiota joka kerta merkin tulostamiseksi viimeiseen merkkiin asti (null terminator- '\ 0').
Olemme käyttäneet lcd_init () -toimintoa saadaksesi nestekidenäytön valmiiksi käyttämällä esiasetettuja komento-ohjeita (selitetty yllä).