Upang maitaguyod ang isang mahusay na komunikasyon sa pagitan ng mundo ng tao at mundo ng makina, ang mga unit ng display ay may mahalagang papel. At sa gayon sila ay isang mahalagang bahagi ng mga naka-embed na system. Mga unit ng display - malaki o maliit, gumana sa parehong pangunahing prinsipyo. Bukod sa mga kumplikadong yunit ng pagpapakita tulad ng mga graphic display at 3D dispay, dapat malaman ng isa ang pagtatrabaho sa mga simpleng pagpapakita tulad ng 16x1 at 16x2 unit. Ang 16x1 display unit ay magkakaroon ng 16 character at nasa isang linya. Ang 16x2 LCD ay magkakaroon ng 32 character sa kabuuang 16in 1 st line at isa pang 16 sa 2 ndlinya Narito dapat maunawaan ng isa na sa bawat character mayroong 5x10 = 50 pixel upang maipakita ang isang character lahat ng 50 pixel ay dapat na magkakasama. Ngunit hindi namin kailangang mag-alala tungkol doon dahil may isa pang controller (HD44780) sa display unit na gumagawa ng trabaho ng pagkontrol sa mga pixel. (makikita mo ito sa LCD unit, ito ang itim na mata sa likuran).
Kinakailangan ang Mga Bahagi
Hardware:
ATmega32 microcontroller
Suplay ng kuryente (5v)
Programmer ng AVR-ISP
JHD_162ALCD (16x2 LCD)
100uF capacitor.
Software:
Atmel studio 6.1
Progisp o flash magic
Circuit Diagram at Paliwanag
Tulad ng ipinakita sa LCD na nakikipag-ugnay sa ATmega32 circuit, maaari mong makita na ang PORTA ng ATMEGA32 ay konektado sa data port LCD. Narito dapat tandaan na huwag paganahin ang komunikasyon ng JTAG sa PORTC ng ATMEGA sa pamamagitan ng pagbabago ng mga byte ng fuse, kung nais na gamitin ang PORTC bilang isang normal na port ng komunikasyon. Sa 16x2 LCD mayroong 16 na pin sa lahat, kung mayroong back light, kung walang back light magkakaroon ng 14 na pin. Maaari ng isang tumakbo o iwanan ang mga light light pin. Ngayon sa 14 na pin mayroong 8 data pin (7-14 o D0-D7), 2 power supply pin (1 & 2 o VSS & VDD o gnd & + 5v), 3 rd pin para sa control ng kaibahan (kinokontrol ng VEE kung gaano dapat makapal ang mga character ipinakita), 3 control pin (RS & RW & E)
Sa circuit sa itaas upang mag- interface ng 16x2 LCD na may AVR microcontroller, maaari mong obserbahan na kinuha ko lamang ang dalawang control pin. Nagbibigay ito ng kakayahang umangkop ng mas mahusay na pag-unawa. Ang kaibahan ng kaunti at BASAHIN / Sumulat ay hindi madalas na ginagamit upang maaari silang maiksi sa lupa. Inilalagay nito ang LCD sa pinakamataas na kaibahan at mode na basahin. Kailangan lang naming makontrol ang Mga PIN na INABAYAHAN at RS upang magpadala ng mga character at data nang naaayon.
Ang mga koneksyon sa pagitan ng ATmega32 microcontroller at 16x2 LCD ay ibinibigay sa ibaba:
PIN1 o VSS - ground
PIN2 o VDD o VCC - + 5v na lakas
PIN3 o VEE - ground (nagbibigay ng pinakamataas na maximum na kaibahan para sa isang nagsisimula)
PIN4 o RS (Pagpili ng Rehistro) - PD6 ng microcontroller
PIN5 o RW (Basahin / Isulat) - ground (inilalagay ang LCD sa read mode na pinapagaan ang komunikasyon para sa gumagamit)
PIN6 o E (Paganahin) - PD5 ng microcontroller
PIN7 o D0 - PA0 ng microcontroller
PIN8 o D1 - PA1
PIN9 o D2 - PA2
PIN10 o D3 - PA3
PIN11 o D4 - PA4
PIN12 o D5 - PA5
PIN13 o D6 - PA6
PIN14 o D7 - PA7
Sa circuit maaari mong makita na ginamit namin ang 8bit na komunikasyon (D0-D7) subalit hindi ito sapilitan at maaari rin kaming gumamit ng 4bit na komunikasyon (D4-D7) ngunit sa 4 na programa sa komunikasyon ay medyo kumplikado para sa mga nagsisimula kaya't sumama lamang kami sa 8 bit na komunikasyon.
Kaya mula sa pagmamasid lamang mula sa itaas na talahanayan kumokonekta kami ng 10 mga pin ng LCD sa controller kung saan ang 8 mga pin ay mga pin ng data at 2 mga pin para sa kontrol.
Nagtatrabaho
Ngayon upang makapagsimula dapat mong malaman ang mga pagpapaandar ng 10 pin ng 16x2 LCD (8 data pin + 2 control pin). Ang 8 data pin ay para sa pagpapadala ng data o mga utos sa LCD. Sa dalawang control pin:
1. Ang pin na RS (Rehistro ng rehistro) ay upang sabihin sa LCD kung nagpapadala ba tayo ng data dito o utos dito.
Halimbawa:
Sa itaas na talahanayan isa para sa isang halaga ng Data port (D7-D0) na "0b0010 1000 o 0x28" ay nagsasabi sa LCD na ipakita ang simbolong "(". Sa talahanayan dalawa ang parehong halaga ng 0x28 ay nagsasabi sa LCD na "ikaw ay isang 5x7 dot LCD at kumilos tulad ng isa ", kaya para sa parehong halaga ay maaaring tukuyin ng gumagamit ang dalawang bagay, ngayon ang sitwasyong ito ay na-neutralize ng rehistro ng Seleksyon pin, kung ang RS pin ay itinakda mababa pagkatapos ay nauunawaan ng LCD na nagpapadala kami ng utos. Kung itinakda namin ang RS pin sa mataas pagkatapos Naiintindihan ng LCD na nagpapadala kami ng data. At sa gayon sa parehong kaso iginagalang ng LCD ang halaga ng port ng data ayon sa halaga ng RS pin.
2. Ang E (Paganahin) ang pin ay upang sabihin lamang sa "power indication LED ng isang PC", ang pin na ito ay nakatakda sa mataas upang sabihin sa LCD "upang makatanggap ng data form data port ng controller". Kapag ang pin na ito ay bumaba pagkatapos ng mataas, iproseso ng LCD ang natanggap na data at ipakita ang kaukulang resulta. Kaya't ang pin na ito ay nakatakda sa mataas bago magpadala ng data at hinila pababa sa lupa pagkatapos magpadala ng data.
Ngayon pagkatapos ikonekta ang hardware, simulan ang Atmel studio at magsimula ng isang bagong proyekto para sa pagsulat ng programa, buksan ngayon ang screen ng programa at simulan ang wring program. Ang programa ay kailangang sundin bilang sumusunod na palabas.
Una naming sasabihin sa controller kung aling mga port ang ginagamit namin para sa data at kontrol sa LCD. Pagkatapos sabihin sa controller kung kailan magpapadala ng data o isang utos nang naaayon sa pamamagitan ng paglalaro ng mga RS at E pin.
Maikling paliwanag ng mga konseptong ginamit sa programa:
1. Ang E ay itinakda nang mataas (nagsasabi sa LCD na makatanggap ng data) at ang RS ay itinakda nang mababa (na nagsasabi sa LCD na nagbibigay kami ng utos)
2. Pagbibigay ng halaga 0x01 sa data port bilang isang utos upang i-clear ang screen
3. Ang E ay itinakda nang mataas (nagsasabi sa LCD na makatanggap ng data) at ang RS ay itinakda nang mataas (na nagsasabi sa LCD na nagbibigay kami ng data)
4. Pagkuha ng isang string ng mga character na nagpapadala ng bawat character sa isang string nang paisa-isa.
5. Ang E ay itinakda nang mababa (na nagsasabi sa LCD na tapos na kaming magpadala ng data)
6. Matapos ang huling utos ay tinatapos ng LCD ang komunikasyon at pinoproseso ang data at ipinapakita ang string ng mga character sa screen.
Sa senaryong ito ay sunud-sunod naming ipadala ang mga character. Ang mga character ay ibinibigay sa LCD ng mga ASCII code (American standard Code for Information Interchange).
Ang talahanayan ng mga ASCII code ay ipinapakita sa itaas. Dito para maipakita ng LCD ang isang character na "@" kailangan naming magpadala ng isang hexadecimal code na "64". Kung magpapadala kami ng '0x62' sa LCD magpapakita ito ng simbolong '>'. Tulad nito magpapadala kami ng naaangkop na mga code sa LCD upang ipakita ang isang pangalan.
Ang paraan ng komunikasyon sa pagitan ng LCD at ATmega32 AVR microcontroller ay pinakamahusay na ipinaliwanag sa hakbang-hakbang ng C code pababa sa ibaba,