Ang mga unit ng display ay ang pinakamahalagang mga aparato ng output sa mga naka-embed na proyekto at mga produktong electronics. Ang 16x2 LCD ay isa sa pinaka ginagamit na yunit sa pagpapakita. Ang 16x2 LCD ay nangangahulugang mayroong dalawang mga hilera kung saan maaaring ipakita ang 16 na mga character sa bawat linya, at ang bawat character ay tumatagal ng 5X7 matrix space sa LCD. Sa tutorial na ito ikokonekta namin ang 16X2 LCD module sa 8051 microcontroller (AT89S52). Ang interface ng LCD na may 8051 microcontroller ay maaaring magmukhang kumplikado sa mga baguhan, ngunit pagkatapos maunawaan ang konsepto ay magmukhang napaka-simple at madali. Bagaman maaaring tumagal ng oras dahil kailangan mong maunawaan at ikonekta ang 16 na mga pin ng LCD sa microcontroller. Kaya unawain muna natin ang 16 na pin ng LCD module.
Maaari natin itong hatiin sa limang kategorya, Mga Power Pins, contrad pin, Control Pins, Data pin at Backlight pin.
Kategoryang |
Pin NO. |
Pangalan ng Pin |
Pag-andar |
Mga Power Pins |
1 |
VSS |
Ground Pin, konektado sa Ground |
2 |
VDD o Vcc |
Boltahe Pin + 5V |
|
Contrast Pin |
3 |
V0 o VEE |
Pagtatakda ng Contrast, nakakonekta sa Vcc nang lubusan isang variable risistor. |
Kontrolin ang Mga Pins |
4 |
Ang RS |
Magrehistro Piliin ang Pin, RS = 0 Command mode, RS = 1 Data mode |
5 |
RW |
Basahin / Isulat ang pin, RW = 0 Mode ng pagsulat, RW = 1 Basahin ang mode |
|
6 |
E |
Paganahin, isang mataas hanggang sa mababang pulso na kailangan upang paganahin ang LCD |
|
Mga Data Pins |
7-14 |
D0-D7 |
Mga Data Pins, Iniimbak ang Data na ipapakita sa LCD o mga tagubilin sa utos |
Mga Backlight Pins |
15 |
LED + o A |
Upang mapagana ang Backlight + 5V |
16 |
LED- o K |
Backlight Ground |
Ang lahat ng mga pin ay malinaw na nauunawaan ng kanilang pangalan at pag-andar, maliban sa mga control pin, kaya ipinaliwanag sa ibaba:
RS: Ang RS ay ang register select pin. Kailangan naming itakda ito sa 1, kung nagpapadala kami ng ilang data upang maipakita sa LCD. At itatakda namin ito sa 0 kung nagpapadala kami ng ilang mga tagubilin sa utos tulad ng pag-clear sa screen (hex code 01).
RW: Ito ang Basahin / isulat ang pin, itatakda namin ito sa 0, kung magsusulat kami ng ilang data sa LCD. At itakda ito sa 1, kung nagbabasa tayo mula sa module ng LCD. Pangkalahatan ito ay nakatakda sa 0, sapagkat hindi namin kailangang basahin ang data mula sa LCD. Isang tagubilin lamang na "Kumuha ng katayuan sa LCD", kailangang basahin ng ilang beses.
E: Ginagamit ang pin na ito upang paganahin ang module kapag ang isang mataas hanggang mababang pulso ay ibinigay dito. Ang isang pulso na 450 ns ay dapat ibigay. Ang paglipat na iyon mula sa TAAS patungo sa LOW ay ginagawang ENABLE ang module.
Mayroong ilang mga paunang preset na tagubilin sa LCD, ginamit namin ang mga ito sa aming programa sa ibaba upang ihanda ang pagpapaandar ng LCD (sa lcd_init ()). Ang ilang mahahalagang tagubilin sa utos ay ibinibigay sa ibaba:
Hex Code |
Mag-utos sa Rehistro ng Tagubilin sa LCD |
0F |
LCD ON, cursor ON |
01 |
I-clear ang display screen |
02 |
Bumalik sa bahay |
04 |
Pagbabawas ng cursor (ilipat ang cursor sa kaliwa) |
06 |
Palakihin ang cursor (ilipat ang cursor patungo sa kanan) |
05 |
Tamang ipakita ang shift |
07 |
Nai-shift ang display sa kaliwa |
0E |
Display ON, kumikislap na cursor |
80 |
Pilitin ang cursor sa simula ng unang linya |
C0 |
Pilitin ang cursor sa simula ng pangalawang linya |
38 |
2 linya at 5 × 7 matrix |
83 |
Linya ng Cursor 1 posisyon 3 |
3C |
Paganahin ang pangalawang linya |
08 |
Ipakita ang OFF, cursor OFF |
C1 |
Tumalon sa pangalawang linya, posisyon 1 |
OC |
Ipakita ang ON, cursor OFF |
C1 |
Tumalon sa pangalawang linya, posisyon 1 |
C2 |
Tumalon sa pangalawang linya, posisyon 2 |
Circuit Diagram at Paliwanag
Ang diagram ng circuit para sa LCD na nakikipag-ugnay sa 8051 microcontroller ay ipinapakita sa itaas na pigura. Kung mayroon kang pangunahing pag-unawa sa 8051 pagkatapos ay dapat mong malaman ang tungkol sa EA (PIN 31), XTAL1 & XTAL2, RST pin (PIN 9), Vcc at Ground Pin ng 8051 microcontroller. Ginamit ko ang mga Pins na ito sa itaas na circuit. Kung wala kang anumang ideya tungkol doon ay inirerekumenda ko sa iyo na basahin ang Artikulo LED Interfacing na ito sa 8051 Microcontroller bago dumaan sa LCD interfacing.
Kaya bukod sa mga pin sa itaas ay konektado namin ang mga data pin (D0-D7) ng LCD sa Port 2 (P2_0 - P2_7) microcontroller. At kontrolin ang mga pin na RS, RW at E sa pin 12,13,14 (pin 2,3,4 ng port 3) ng microcontroller ayon sa pagkakabanggit.
Ang PIN 2 (VDD) at PIN 15 (Backlight supply) ng LCD ay konektado sa boltahe (5v), at ang PIN 1 (VSS) at PIN 16 (Backlight ground) ay konektado sa lupa.
Ang Pin 3 (V0) ay konektado sa boltahe (Vcc) sa pamamagitan ng isang variable risistor na 10k upang ayusin ang kaibahan ng LCD. Ang gitnang binti ng variable risistor ay konektado sa PIN 3 at iba pang dalawang paa ay konektado sa supply ng boltahe at Ground.
Paliwanag sa Code
Sinubukan kong ipaliwanag ang code sa pamamagitan ng mga komento (sa code mismo).
Tulad ng naipaliwanag ko nang mas maaga tungkol sa mode ng utos at mode ng data, maaari mong makita na habang nagpapadala ng utos (pagpapaandar lcd_cmd) itinakda namin ang RS = 0, RW = 0 at isang HINDI sa LOW na pulso ang ibinibigay sa E sa pamamagitan ng paggawa nito ng 1, pagkatapos ay 0. Gayundin kapag nagpapadala ng data (function lcd_data) sa LCD naitakda namin ang RS = 1, RW = 0 at isang HIGAS sa MABABANG pulso ay ibinibigay sa E sa pamamagitan ng paggawa nito ng 1 hanggang 0. Ang pagpapaandar msdelay () ay nilikha upang lumikha ng pagkaantala sa mga milliseconds at madalas na tinatawag sa programa, ito ay tinatawag upang ang LCD module ay maaaring magkaroon ng sapat na oras upang maisagawa ang panloob na operasyon at mga utos.
Ang isang habang loop ay nilikha upang mai-print ang string, na kung saan ay tumatawag sa lcd_data function sa bawat oras upang mai-print ang isang character hanggang sa huling character (null terminator- '\ 0').
Ginamit namin ang pagpapaandar ng lcd_init () upang maihanda ang LCD sa pamamagitan ng paggamit ng mga preset na tagubilin sa utos (ipinaliwanag sa itaas).