Ang pagpapakita ay kinakailangang bahagi ng anumang makina kung ito man ay anumang kagamitan sa bahay o mga makina pang-industriya. Ipinapakita hindi lamang ang mga pagpipilian sa kontrol upang mapatakbo ang makina ngunit ipinapakita rin ang katayuan at output ng gawaing isinagawa ng makina na iyon. Maraming uri ng pagpapakita na ginagamit sa electronics tulad ng 7-segment display, 16x2 LCD display, TFT touch screen display, OLED display atbp.
Ang 16x2 LCD display ay ang pinaka pangunahing module ng pagpapakita at ginagamit din sa ilang maliliit na kagamitan sa electronics tulad ng calculator, digital meter atbp. Natapos namin ang maraming mga proyekto gamit ang 16x2 LCD kasama ang pangunahing interfacing sa iba pang mga microcontroller:
- LCD Interfacing na may 8051 Microcontroller
- Ang interface ng LCD na may ATmega32 Microcontroller
- LCD Interfacing sa PIC Microcontroller
- Ang pagitan ng 16x2 LCD na may Arduino
- 16x2 LCD Interfacing kasama ang Raspberry Pi gamit ang Python
Sa tutorial na ito, makikita natin kung paano i- interface ang isang 16x2 LCD sa Atmega16 AVR microcontroller at ipakita ang isang simpleng maligayang mensahe.
Kinakailangan ang Mga Bahagi
- Atmega16
- 16x2 LCD Module
- Mga jumper
- Breadboard
Diagram ng Circuit
Programming Atmega16 para sa 16x2 LCD Display
Ang programa ay hindi nangangailangan ng anumang mga panlabas na aklatan. Narito ang Atmega16 ay nai-program na gamit ang USBASP at Atmel Studio7.0. Ang Kumpletong Program at Paggawa ng Video ay ibinibigay sa pagtatapos ng proyekto, i-upload lamang ang programa sa Atmega16 at paikutin ang 10k POT upang ayusin ang ningning ng LCD.Paunang tukuyin ang Frequency ng CPU at isama ang mga kinakailangang aklatan na kasama ng Atmel Studio Package tulad ng pag -access sa mga IO pin at
Tukuyin ang RS at EN pin ng LCD sa programa. Ginagamit ang RS Pins upang piliin ang data at pagrehistro sa utos. Ang paganahin ang pin ay nag-lat ng data.
#define en PA3 # tukuyin ang rs PA2
Tukuyin din kung aling PORT ng Atmega16 ang gagamitin upang i-interface ang LCD. Dito, ginagamit ang PORTA.
#define lcdDirection DDRA #define lcdPort PORTA
Susunod na hakbang ay upang bumuo ng isang pagpapaandar na tatanggap ng isang utos sa pamamagitan ng pagpasa ng isang parameter. Maraming mga LCD HEX Command. Ang Hex Command ay ginagamit upang tukuyin ang pagpapaandar ng LCD. Dahil ginagamit namin ang 4-bit Mode ng LCD, ang byte (8-bit) ay ipapadala sa dalawang mga packet. Ang isang packet ay magiging Upper Nibble (4-bit) at iba pang packet ay magiging Lower Nibble (4-bit).
void lcdCommand (unsigned char command) { lcdPort = (lcdPort & 0x0F) - (utos & 0xF0); lcdPort & = ~ (1 <
Ang susunod na hakbang ay tatanggapin ang mga character at ilalagay ito sa port ng LCD. Ang mga character na natanggap pagkatapos ay ipinadala sa LCD nibble sa pamamagitan ng nibble. Kinukuha ng Function ang character gamit ang pass by parameter at pagkatapos ay kukuha ng upper at lower nibble. Ang pin na 'rs' ay nakatakda sa mataas para sa pagrehistro ng data at pagkatapos ang isang tumataas na pulso ay ipinadala upang mailagay ang data. Katulad nito ang mas mababang nibble sa ipinadala sa pamamagitan ng pagbabago ng halaga ng paganahin at pagpapadala ng tumataas na pulso para paganahin.
void lcdChar (unsigned char string) { lcdPort = (lcdPort & 0x0F) - (string & 0xF0); lcdPort - = (1 <
Ang pagpapaandar na ito ay nagko - convert lamang ng character sa string at maaaring magamit sa programa sa paglaon kung saan kinakailangan ang pagsulat ng string.
walang bisa lcdString (char * str) { int j; para sa (j = 0; str! = 0; j ++) { lcdChar (str); } }
Ngayon isang function ay nakasulat upang i- clear ang screen. Kailangan mo lamang ipadala ang utos 01 sa HEX at pagkatapos ay itakda lamang ang cursor sa paunang posisyon.
walang bisa lcdClear () { lcdCommand (0x01); _delay_ms (2); lcdCommand (0x80); }
Ngayon sa pangunahing pag-andar, ang LCD ay naisasimula. Paunang itakda ang direksyon ng PORT para sa interface ng LCD. Dito, ang PORT ay itinakda bilang OUTPUT kaya itakda ang FF.
lcdDirection = 0xFF; _delay_ms (20)
Pagkatapos itakda ang LCD sa 4-bit mode sa pamamagitan ng pagpapadala ng 02 sa hex. Magpadala rin ng 28 sa hex upang itakda ito sa 2 linya, 15x7 matrix pixel sa 4-bit mode.
lcdCommand (0x02); lcdCommand (0x28);
Ginagamit ang utos na 0c at 06 upang makontrol ang posisyon ng cursor. At sa wakas linisin lamang ang screen sa pamamagitan ng pagpapadala ng 01 sa hex. Matatapos nito ang pagsisimula ng LCD.
lcdCommand (0x0c); lcdCommand (0x06); lcdCommand (0x01);
Pagkatapos tapos na ang pagsisimula ay subukan lamang ang LCD sa pamamagitan ng pagpapadala ng isang string. Narito nagpapadala kami ng isang String na " Interfacing LCD " sa hilera ng 1 st.
lcdString ("Interfacing LCD");
Pagkatapos ay ilipat ang cursor sa susunod na hilera sa pamamagitan ng pagpapadala ng command c0 sa hex. At sa wakas sa posisyon na ito, isulat ang string na "Sa Atmega1 6".
lcdCommand (0xC0); lcdString ("With Atmega16");
Tinatapos nito ang kumpletong tutorial sa Pag- interface ng isang 16x2 LCD sa Atmega16. Tandaan na kung hindi ka nakakakuha ng anumang imahe o mga pixel pagkatapos ay suriin ang iyong mga kable alinsunod sa code at circuit diagram o baguhin ang halaga ng POT na nakakabit sa V0 pin ng LCD. Kung mayroon kang anumang pag-aalinlangan o mungkahi maabot mo kami sa alinman sa pamamagitan ng pagsulat sa aming forum o puna sa ibaba.