Ekranai yra svarbiausi įterptųjų projektų ir elektronikos gaminių išvesties įrenginiai. 16x2 skystųjų kristalų ekranas yra vienas iš dažniausiai naudojamų ekranų. 16x2 LCD reiškia, kad yra dvi eilutės, kuriose kiekvienoje eilutėje gali būti rodoma 16 simbolių, o kiekvienas simbolis užima 5X7 matricos vietą LCD. Šioje pamokoje ketiname prijungti 16X2 LCD modulį prie 8051 mikrovaldiklio (AT89S52). Sąveikaujantis skystųjų kristalų ekranas su 8051 mikrovaldikliu gali atrodyti gana sudėtingas naujokams, tačiau supratęs koncepciją atrodytų labai paprastai ir lengvai. Nors tai gali užtrukti, nes turite suprasti ir prijungti 16 LCD kontaktų prie mikrovaldiklio. Taigi pirmiausia supraskime 16 LCD modulio kaiščių.
Mes galime jį suskirstyti į penkias kategorijas: maitinimo kaiščiai, kontrasto kaiščiai, valdymo kaiščiai, duomenų kaiščiai ir apšvietimo kaiščiai.
Kategorija |
PIN Nr. |
PIN vardas |
Funkcija |
Maitinimo kaiščiai |
1 |
VSS |
Įžeminimo kaištis, prijungtas prie žemės |
2 |
VDD arba Vcc |
Įtampos kaištis + 5V |
|
Kontrasto kaištis |
3 |
V0 arba VEE |
Kontrasto nustatymas, prijungtas prie Vcc, kintamuoju rezistoriumi. |
Valdymo kaiščiai |
4 |
RS |
Registruotis Pasirinkite PIN kodą, RS = 0 komandos režimas, RS = 1 duomenų režimas |
5 |
RW |
Skaitymo / rašymo kaištis, RW = 0 rašymo režimas, RW = 1 skaitymo režimas |
|
6 |
E |
Įgalinti, nuo didelio iki mažo pulso reikia įjungti skystųjų kristalų ekraną |
|
Duomenų kaiščiai |
7–14 |
D0-D7 |
Duomenų kaiščiai, saugo duomenis, kurie turi būti rodomi LCD ekrane, arba komandų instrukcijas |
Apšvietimo kaiščiai |
15 |
LED + arba A |
Norėdami maitinti apšvietimą + 5V |
16 |
LED arba K |
Apšvietimo žemė |
Visi kaiščiai yra aiškiai suprantami pagal jų pavadinimą ir funkcijas, išskyrus valdymo kaiščius, todėl jie paaiškinami toliau:
RS: RS yra registro rinkimo kaištis. Turime jį nustatyti į 1, jei siunčiame tam tikrus duomenis, kurie bus rodomi LCD. Ir mes nustatysime jį į 0, jei siunčiame komandų instrukcijas, pvz., Išvalykite ekraną (šešiakampis kodas 01).
RW: Tai yra skaitymo / rašymo kaištis, mes nustatysime jį į 0, jei ketiname įrašyti kai kuriuos duomenis į LCD. Ir nustatykite jį į 1, jei skaitome iš LCD modulio. Paprastai tai nustatyta į 0, nes mums nereikia skaityti duomenų iš LCD. Kelis kartus reikia perskaityti tik vieną instrukciją „Gauti LCD būseną“.
E: Šis kaištis naudojamas įjungti modulį, kai jam suteikiamas aukštas arba žemas impulsas. Turėtų būti pateiktas 450 ns impulsas. Perėjimas iš HIGH į LOW daro modulį ĮJUNGTINĮ.
Skystųjų kristalų ekrane yra keletas iš anksto nustatytų komandų nurodymų. Mes juos panaudojome savo žemiau esančioje programoje norėdami paruošti skystųjų kristalų ekraną (funkcija lcd_init () Toliau pateikiamos kelios svarbios komandos instrukcijos:
Hex kodas |
Komanda LCD instrukcijų registrui |
0F |
LCD įjungtas, žymeklis įjungtas |
01 |
Išvalyti ekraną |
02 |
Grįžti namo |
04 |
Mažinti žymeklį (perkelti žymeklį į kairę) |
06 |
Padidinti žymeklį (perkelti žymeklį į dešinę) |
05 |
„Shift“ ekranas dešinėje |
07 |
„Shift“ ekranas kairėje |
0E |
Ekranas ON, mirksi žymeklis |
80 |
Priversti žymeklį į pirmosios eilutės pradžią |
C0 |
Priversti žymeklį į antros eilutės pradžią |
38 |
2 eilutės ir 5 × 7 matrica |
83 |
1 žymeklio eilutės 3 padėtis |
3C |
Suaktyvinti antrą eilutę |
08 |
Ekranas OFF, žymeklis OFF |
C1 |
Peršokti į antrą eilutę, 1 pozicija |
OC |
Ekranas ON, žymeklis OFF |
C1 |
Peršokti į antrą eilutę, 1 pozicija |
C2 |
Pereikite į antrą eilutę, 2 pozicija |
Grandinės schema ir paaiškinimas
LCD jungties su 8051 mikrovaldikliu schema parodyta aukščiau pateiktame paveikslėlyje. Jei turite pagrindinį 8051 supratimą, turite žinoti apie EA (PIN 31), XTAL1 ir XTAL2, RST kaištį (PIN 9), „Vcc“ ir „8051“ mikrovaldiklio antžeminį kaištį. Aš naudoju šiuos kaiščius aukščiau esančioje grandinėje. Jei neturite apie tai idėjos, rekomenduoju perskaityti šį straipsnį „LED sąsaja su 8051 mikrovaldikliu“ prieš einant per LCD sąsają.
Taigi, be šių aukščiau esančių kaiščių, mes prijungėme LCD duomenų kaiščius (D0-D7) prie 2 prievado (P2_0 - P2_7) mikrovaldiklio. Valdymo kaiščiai RS, RW ir E yra atitinkamai mikrovaldiklio kaiščiai 12,13,14 (3 prievado 2,3,4 kaištis).
Skystųjų kristalų ekranų PIN 2 (VDD) ir PIN 15 (apšvietimo tiekimas) yra prijungtos prie įtampos (5v), o PIN 1 (VSS) ir PIN 16 (apšvietimo įžeminimas) - prie žemės.
3 kaištis (V0) prijungtas prie įtampos (Vcc) per kintamą 10 k varžą, kad būtų galima reguliuoti LCD kontrastą. Kintamo rezistoriaus vidurinė koja yra prijungta prie PIN 3, o kitos dvi kojos - prie įtampos tiekimo ir įžeminimo.
Kodo paaiškinimas
Bandžiau paaiškinti kodą komentarais (pačiame kode).
Kaip aš jau anksčiau paaiškinau apie komandų režimą ir duomenų režimą, galite pamatyti, kad siunčiant komandą (funkcija lcd_cmd) mes nustatėme RS = 0, RW = 0 ir impulsas HIGH į LOW yra E Taip pat, siunčiant duomenis (funkcija lcd_data) į LCD, mes nustatėme RS = 1, RW = 0, o E impulsui suteikiamas HIGH į LOW impulsas, padarant jį nuo 1 iki 0. Funkcija msdelay () sukurta norint sukurti vėlavimą milisekundėmis ir dažnai iškviečiamas programoje, jis vadinamas taip, kad LCD modulis galėtų turėti pakankamai laiko atlikti vidinę operaciją ir komandas.
Sukurta „while“ kilpa eilutei atspausdinti, kuri kiekvieną kartą iškviečia funkciją „lcd_data“, kad atspausdintų simbolį iki paskutinio simbolio (null terminator- '\ 0').
Mes naudojome funkciją lcd_init () norėdami paruošti skystųjų kristalų ekraną naudodami iš anksto nustatytas komandines instrukcijas (paaiškintas aukščiau).