- 16x2 Dot Matrix LCD Controller IC HD44780:
- Nagpapakita ng isang Pasadyang Character sa 16x2 LCD:
- Programming at Paggawa ng Paliwanag:
- Mga Koneksyon sa Circuit at Pagsubok:
Sa aming nakaraang tutorial, natutunan namin Kung Paano Mag-interface ng isang 16 * 2 LCD sa PIC Microcontroller. Inirerekumenda namin sa iyo na dumaan ito bago magpatuloy, kung nagsisimula ka sa PIC microcontroller. Dati natutunan din natin ang mga pangunahing kaalaman ng PIC gamit ang LED blinking Program at Timers sa PIC Microcontroller. Maaari mong suriin dito ang lahat ng mga tutorial sa Pag-aaral ng PIC Microcontrollers gamit ang MPLABX at XC8 compiler.
Sa tutorial na ito, gawin itong mas kawili-wili sa pamamagitan ng paglikha ng aming sariling pasadyang mga character at pagpapakita ng mga ito sa aming LCD screen gamit ang PIC16F877A PIC Microcontroller. Gayundin mayroong ilang paunang natukoy na kadalasang ginagamit na mga pasadyang character na ibinigay ng HD44780A IC mismo, makikita rin natin kung paano namin magagamit ang mga ito. Tulad ng ipinaliwanag sa aming nakaraang tutorial ang aming LCD ay may Hitachi HD44780 controller na naka-embed dito na makakatulong sa amin na ipakita ang mga character. Ang bawat character na ipinapakita namin ay paunang natukoy sa loob ng ROM ng HD44780 IC. Malalaman natin ang tungkol sa LCD controller IC HD44780, bago ipakita ang character sa LCD.
16x2 Dot Matrix LCD Controller IC HD44780:
Upang maipakita ang isang pasadyang character, kailangan nating sabihin sa IC na paano ang hitsura ng pasadyang character. Upang gawin iyon dapat nating malaman ang tungkol sa Tatlong uri ng Mga Alaala na naroroon sa loob ng HD44780 LCD controller IC:
Character Generator ROM (CGROM): Ito ang nabasa lamang na memorya na, tulad ng sinabi nang mas maaga, ay naglalaman ng lahat ng mga pattern ng mga character na paunang natukoy sa loob nito. Ang ROM na ito ay mag-iiba mula sa bawat uri ng Interface IC, at ang ilan ay maaaring magkaroon ng ilang paunang natukoy na pasadyang karakter sa kanila.
Display Data RAM (DDRAM): Ito ay isang random memory memory. Sa tuwing magpapakita kami ng isang character ang pattern nito ay kukuha mula sa CGROM at maililipat sa DDRAM at pagkatapos ay mailalagay sa screen. Upang mailagay itong simple, magkakaroon ang DDRAM ng mga pattern ng lahat ng mga character na kasalukuyang ipinapakita sa LCD Screen. Sa ganitong paraan para sa bawat pag-ikot ang IC ay hindi kailangang kumuha ng data mula sa CGROM, at makakatulong sa pagkuha ng isang maikling dalas ng pag-update
Character generator RAM (CGRAM): Ito rin ay isang memorya ng Random na pag-access, upang maaari kaming magsulat at mabasa ang data mula rito. Tulad ng ipinapahiwatig ng pangalan ng memorya na ito ay ang isa na maaaring magamit upang makabuo ng pasadyang character. Kailangan naming bumuo ng isang pattern para sa character at isulat ito sa CGRAM, ang pattern na ito ay maaaring mabasa at maipakita sa Screen kapag kinakailangan.
Ngayon, dahil nakakuha kami ng pangunahing pag-unawa sa mga uri ng memorya na naroroon sa HD44780 interface IC. Tingnan natin ang datasheet nito upang maunawaan nang kaunti pa.
Tulad ng ipinahihiwatig ng datasheet, ang HD44780 IC ay nagbigay ng 8 Lokasyon upang maiimbak ang aming mga pasadyang pattern sa CGRAM, sa kanan din makikita natin na may ilang mga paunang natukoy na character na maaari ding ipakita sa aming LCD Screen. Tingnan natin kung paano natin ito magagawa.
Nagpapakita ng isang Pasadyang Character sa 16x2 LCD:
Upang maipakita ang isang pasadyang character kailangan muna nating bumuo ng isang pattern para dito at pagkatapos ay i-save ito sa CGRAM. Dahil mayroon na kaming mga pagpapaandar ng library sa amin, dapat madali itong gawin sa ilang simpleng mga utos. Narito ang Library para sa mga pagpapaandar ng LCD, ngunit narito namin na-paste ang lahat ng mga pag-andar ng Library sa mismong programa, kaya hindi na kailangang isama ang header file na ito sa aming programa. Suriin din ang artikulong ito para sa Batayang LCD na gumagana at ang mga Pinout nito.
Ang unang hakbang ay upang makabuo ng isang pattern o ang pasadyang character. Tulad ng alam natin ang bawat character ay isang kumbinasyon ng 5 * 8 tuldok. Kailangan nating piliin kung aling tuldok (pixel) ang dapat na mataas at alin ang dapat manatiling mababa. Gumuhit lamang ng isang kahon tulad ng sa ibaba at lilim ang mga rehiyon batay sa iyong karakter. Ang tauhan ko rito ay isang stick man (sana mukhang isa ito). Kapag na-shade, simpleng isulat ang katumbas na binary halaga ng bawat byte tulad ng ipinakita sa ibaba.
Maglagay lamang ng isang '1' sa may lilim na rehiyon at isang '0' sa hindi shaded na rehiyon para sa bawat byte, at iyon na ang aming pasadyang pattern na handa na. Katulad nito ay gumawa ako ng 8 pasadyang mga code ng pattern para sa aming 8 mga puwang sa memorya na ipinakita ito sa CGROM. Nakalista ang mga ito sa talahanayan sa ibaba.
S.NO: |
Pasadyang Katangian |
Pattern ng code |
1 |
|
0b01110, 0b01110, 0b00100, 0b01110, 0b10101, 0b00100, 0b01010, 0b01010 |
2 |
|
0b00000, 0b00000, 0b01010, 0b00100, 0b00100, 0b10001, 0b01110, 0b00000 |
3 |
|
0b00100, 0b01110, 0b11111, 0b11111, 0b01110, 0b01110, 0b01010, 0b01010 |
4 |
|
0b01110, 0b10001, 0b10001, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
5 |
|
0b01110, 0b10000, 0b10000, 0b11111, 0b11011, 0b11011, 0b11111, 0b00000 |
6 |
|
0b00000, 0b10001, 0b01010, 0b10001, 0b00100, 0b01110, 0b10001, 0b00000 |
7 |
|
0b00000, 0b00000, 0b01010, 0b10101, 0b10001, 0b01110, 0b00100, 0b00000 |
8 |
|
0b11111, 0b11111, 0b10101, 0b11011, 0b11011, 0b11111, 0b10001, 0b11111 |
Tandaan: Hindi sapilitan na i-load ang lahat ng 8 mga puwang na ibinigay sa CGRAM.
Programming at Paggawa ng Paliwanag:
Ngayon ang aming mga pattern code ay handa na, kailangan lang namin i-load ang mga ito sa CGRAM ng LCD at ipakita ang mga ito gamit ang PIC microcontroller. Upang mai-load ang mga ito sa sa CGRAM maaari kaming bumuo ng isang 5 * 8 na hanay ng mga elemento at i-load ang bawat byte sa pamamagitan ng paggamit ng isang ' para sa loop '. Ang array ng pattern code ay ipinapakita sa ibaba:
const unsigned short Custom_Char5x8 = {0b01110,0b01110,0b00100,0b01110,0b10101,0b00100,0b01010,0b01010, // Code for space ng memorya ng CGRAM 1 0b00000,0b00000,0b01010,0b00100,0b00100,0b1000 //01 CGRAM memory space 2 0b00100,0b01110,0b11111,0b11111,0b01110,0b01110,0b01010,0b01010, // Code para sa CGRAM memory space 3 0b01110,0b10001,0b10001,0b11111,0b11011,0b11011,0b11111,0b00000, // Code para sa CGRAM memory space 4 0b01110,0b10000,0b10000,0b11111,0b11011,0b11011,0b11111,0b00000, // Code for space ng memorya ng CGRAM 5 0b00000,0b10001,0b01010,0b10001,0b00100,0b01110,0b10001,0b00100 0b00000,0b00000,0b01010,0b10101,0b10001,0b01110,0b00100,0b00000, // Code para sa puwang ng memorya ng CGRAM 7 0b11111,0b11111,0b10101,0b11011,0b11011,0b11111,0b10001,0b11 memory
Ang bawat puwang ng memorya ay puno ng respetadong pattern ng character. Upang mai-load ang pattern na ito sa HD44780 IC, ang data-sheet ng HD44780 ay dapat na mag-refer, ngunit ito ay mga linya lamang ng utos na maaaring magamit upang maitakda ang address ng CGRAM
// *** I-load ang pasadyang char sa CGROM *** ////// Lcd_Cmd (0x04); // Itakda ang CGRAM Address Lcd_Cmd (0x00); //.. itakda ang CGRAM Address para sa (i = 0; i <= 63; i ++) Lcd_Print_Char (Custom_Char5x8); Lcd_Cmd (0); // Return to Home Lcd_Cmd (2); //.. bumalik sa Home // *** Naglo-load ang pasadyang char kumpleto *** // ///
Dito, sa loob ng ' para sa loop' bawat halaga ng binary ay ikinakarga sa CGROM. Kapag na-load ang pattern, ang mga pasadyang character ay maaaring gawin upang ipakita sa pamamagitan ng simpleng pagtawag sa lokasyon ng pattern gamit ang walang bisa na Lcd_Print_Char (char data) na function tulad ng ipinakita sa ibaba.
Lcd_Print_Char (0); // Ipakita ang Pasadyang Tauhan 0 Lcd_Print_Char (1); // Ipakita ang Pasadyang Tauhan 1 Lcd_Print_Char (2); // Ipakita ang Pasadyang Character 2 Lcd_Print_Char (3); // Display Custom Character 3 Lcd_Print_Char (4); // Ipakita ang Pasadyang Tauhan 4 Lcd_Print_Char (5); // Ipakita ang Pasadyang Tauhan 5 Lcd_Print_Char (6); // Ipakita ang Pasadyang Character 6 Lcd_Print_Char (7); // Ipakita ang Pasadyang Katangian 7
I-print ang Naunang Natukoy na Espesyal na Character:
Ang HD44780 IC ay may ilang paunang natukoy na mga espesyal na character na nakaimbak sa DDROM. Ang mga character na ito ay maaaring direktang mai-print sa screen sa pamamagitan ng pag-refer sa binary halaga nito sa datasheet.
Halimbawa: Ang binary halaga ng character na "ALPHA" ay 0b11100000. Kung paano makuha ito ay mauunawaan mula sa pigura sa ibaba, gayun din maaari kang makakuha ng halaga para sa anumang espesyal na character na paunang natukoy sa IC.
Kapag nalalaman ang halagang binary, ang kaukulang character ay maaaring mai-print sa screen sa pamamagitan lamang ng paggamit ng walang bisa na Lcd_Print_Char (char data) na ipinapakita sa ibaba, Lcd_Print_Char (0b11100000); // binary halaga ng alpha mula sa data-sheet
Ang kumpletong code ng proyektong ito ay ibinibigay sa ibaba sa seksyon ng Code, suriin din ang detalye ng paliwanag sa Video sa pagtatapos ng tutorial na ito.
Mga Koneksyon sa Circuit at Pagsubok:
Ang proyektong ito ay walang anumang karagdagang kinakailangan sa hardware, ginamit namin ang parehong mga koneksyon mula sa nakaraang LCD interfacing tutorial at ginamit ang parehong board na nilikha namin sa LED blinking Tutorial. Gaya ng lagi nating gayahin ang programa gamit ang Proteus upang mapatunayan ang aming output.
Sa sandaling mayroon kaming simulation na tumatakbo tulad ng inaasahan, direktang hinahayaan na sunugin ang code sa aming set-up ng Hardware. Ang output ng programa ay dapat na tulad nito:
Kaya't paano mo maipapakita ang anumang Pasadyang Karakter sa 16x2 LCD gamit ang PIC Microcontroller na may MPLABX at XC8 compiler. Suriin din dito ang aming kumpletong PIC Microcontroller Learning Series.