Displeja bloki ir vissvarīgākās iegulto projektu un elektronikas produktu izvades ierīces. 16x2 LCD ir viena no visbiežāk izmantotajām displeja vienībām. 16x2 LCD nozīmē, ka ir divas rindas, kurās katrā rindiņā var parādīt 16 rakstzīmes, un katra rakstzīme aizņem 5X7 matricas vietu LCD. Šajā apmācībā mēs savienosim 16X2 LCD moduli ar 8051 mikrokontrolleru (AT89S52). LCD saskarne ar 8051 mikrokontrolleru jaunajiem iesācējiem varētu izskatīties diezgan sarežģīta, taču pēc jēdziena izpratnes tas izskatās ļoti vienkārši un viegli. Lai gan tas var aizņemt laiku, jo jums ir jāsaprot un jāpievieno 16 LCD kontakti ar mikrokontrolleru. Tātad vispirms sapratīsim 16 LCD moduļa tapas.
Mēs varam to sadalīt piecās kategorijās: barošanas tapas, kontrasttapa, vadības tapas, datu tapas un apgaismojuma tapas.
Kategorija |
PIN NO. |
Piespraudes nosaukums |
Funkcija |
Spēka tapas |
1 |
VSS |
Zemējuma tapa, savienota ar zemi |
2 |
VDD vai Vcc |
Sprieguma tapa + 5V |
|
Kontrasta tapa |
3 |
V0 vai VEE |
Kontrasta iestatījums, savienots ar Vcc, izmantojot mainīgu rezistoru. |
Kontroles adatas |
4 |
RS |
Reģistrēties Atlasiet piespraudi, RS = 0 komandu režīms, RS = 1 Datu režīms |
5 |
RW |
Lasīšanas / rakstīšanas tapa, RW = 0 rakstīšanas režīms, RW = 1 Lasīšanas režīms |
|
6 |
E |
Iespējot, LCD jāiespējo no augsta līdz zemam impulsam |
|
Datu tapas |
7-14 |
D0-D7 |
Datu tapas, glabā LCD displejā parādāmos datus vai komandu instrukcijas |
Apgaismojuma tapas |
15 |
LED + vai A |
Lai darbinātu fona apgaismojumu + 5V |
16 |
LED vai K |
Fona apgaismojums |
Visas tapas ir skaidri saprotamas pēc nosaukuma un funkcijām, izņemot vadības tapas, tāpēc tās ir paskaidrotas tālāk:
RS: RS ir reģistra atlases tapa. Mums ir jāiestata uz 1, ja mēs sūtām dažus datus, kas jāparāda LCD. Un mēs to iestatīsim uz 0, ja sūtīsim komandu komandu, piemēram, notīriet ekrānu (sešstūra kods 01).
RW: Šī ir lasīšanas / rakstīšanas tapa, mēs to iestatīsim uz 0, ja mēs ierakstīsim dažus datus LCD. Un iestatiet to uz 1, ja mēs lasām no LCD moduļa. Parasti tas ir iestatīts uz 0, jo mums nav nepieciešams lasīt datus no LCD. Dažreiz ir jāizlasa tikai viena instrukcija “LCD statusa iegūšana”.
E: šo tapu izmanto, lai iespējotu moduli, kad tam tiek dots impulss no augsta līdz zemam. Būtu jāpiešķir pulss 450 ns. Šī pāreja no HIGH uz LOW padara moduli IESPĒJAMU.
LCD ir daži iepriekš iestatīti komandu norādījumi, mēs tos esam izmantojuši savā zemāk esošajā programmā, lai sagatavotu LCD (funkcija lcd_init ()). Tālāk ir sniegtas dažas svarīgas komandu instrukcijas:
Hex kods |
Komanda LCD instrukciju reģistram |
0F |
LCD ON, kursors ON |
01 |
Notīrīt displeja ekrānu |
02 |
Atgriezties mājās |
04 |
Samazināt kursoru (novirzīt kursoru pa kreisi) |
06 |
Palielināšanas kursors (novirzīt kursoru pa labi) |
05 |
Displeja pārslēgšana pa labi |
07 |
Displeja pārslēgšana pa kreisi |
0E |
Displejs ON, mirgo kursors |
80 |
Piespiest kursoru pirmās rindas sākumā |
C0 |
Piespiest kursoru uz otrās rindas sākumu |
38 |
2 līnijas un 5 × 7 matrica |
83. |
1. kursora līnijas 3. pozīcija |
3C |
Aktivizēt otro rindu |
08 |
Displejs OFF, kursors OFF |
C1 |
Pārlēkt uz otro līniju, 1. pozīcija |
OC |
Displejs ON, kursors OFF |
C1 |
Pārlēkt uz otro līniju, 1. pozīcija |
C2 |
Pārlēkt uz otro līniju, 2. pozīcija |
Shēmas shēma un paskaidrojums
Ķēdes shēma LCD saskarnei ar 8051 mikrokontrolleru ir parādīta iepriekš redzamajā attēlā. Ja jums ir pamata izpratne par 8051, jums jāzina par EA (PIN 31), XTAL1 un XTAL2, RST tapu (PIN 9), Vcc un 8051 mikrokontrollera zemes kontaktu. Esmu izmantojis šīs tapas iepriekš minētajā ķēdē. Ja jums par to nav ne jausmas, es iesaku jums izlasīt šo rakstu LED mijiedarbība ar 8051 mikrokontrolleru pirms LCD saskarnes izmantošanas.
Tātad, bez iepriekš minētajām tapām, mēs esam savienojuši LCD datu tapas (D0-D7) ar 2. porta (P2_0 - P2_7) mikrokontrolleru. Vadības tapas RS, RW un E attiecīgi uz mikrokontrollera tapām 12,13,14 (3. pieslēgvietas 2,3,4).
LCD PIN 2 (VDD) un PIN 15 (Apgaismojuma padeve) ir pievienoti spriegumam (5v), un PIN 1 (VSS) un PIN 16 (Apgaismojuma iezemējums) ir pievienoti zemei.
3. kontakts (V0) ir savienots ar spriegumu (Vcc) caur mainīgu 10k rezistoru, lai pielāgotu LCD kontrastu. Mainīgā rezistora vidējā kāja ir savienota ar PIN 3, bet pārējās divas kājas ir savienotas ar sprieguma padevi un zemējumu.
Kods Paskaidrojums
Esmu mēģinājis izskaidrot kodu, izmantojot komentārus (pašā kodā).
Kā es jau iepriekš paskaidroju par komandu režīmu un datu režīmu, jūs varat redzēt, ka, sūtot komandu (funkcija lcd_cmd), mēs esam iestatījuši RS = 0, RW = 0 un E tiek piešķirts impulss HIGH uz LOW, padarot to par 1, tad 0 Arī sūtot datus (funkcija lcd_data) uz LCD, mēs esam iestatījuši RS = 1, RW = 0 un impulss E tiek piešķirts no HIGH uz LOW, padarot to no 1 līdz 0. Funkcija msdelay () ir izveidota, lai radītu aizkavi milisekundēs un bieži tiek izsaukts programmā, tas tiek izsaukts, lai LCD modulim būtu pietiekami daudz laika, lai izpildītu iekšējo darbību un komandas.
Virknes drukāšanai ir izveidota brīža cilpa, kas katru reizi izsauc funkciju lcd_data, lai drukātu rakstzīmi līdz pēdējai rakstzīmei (null terminator- '\ 0').
Mēs esam izmantojuši funkciju lcd_init (), lai LCD būtu gatavs, izmantojot iepriekš iestatītās komandu instrukcijas (paskaidrots iepriekš).