Inaunganisha onyesho la LSD. Tabia ya LCD na Arduino

Kuna idadi kubwa ya aina za maandishi, au kama zinavyoitwa pia usanifu wa tabia, skrini za kioo kioevu. Maonyesho ya kawaida zaidi yanatokana na chipsi za HD44780 kutoka Hitachi, KS0066 kutoka Samsung au zinazooana nazo. Kufanya kazi na skrini kama hizo, kuna maktaba ya kawaida ya Arduino Liquid Crystal.

Maonyesho hayo yanajumuisha, hasa, skrini za maandishi kutoka kwa Melt. Makala hii inaelezea kwa undani mchoro wa uunganisho wa skrini hii, lakini pia inafaa kwa maonyesho mengine mengi ya maandishi.

Nakala hiyo inaelezea kanuni za jumla. Unaweza kwenda kwa maelezo ya kina ya onyesho lako:

Vipengele vinavyohitajika

Uhusiano

Ambatanisha skrini kwenye ubao wa mkate na uunganishe nishati ya +5 V na ardhi kutoka Arduino hadi reli za nguvu za breaboard.

Utahitaji nguvu na ardhi zaidi ya mara moja, kwa hivyo ni rahisi zaidi kuzitupa kwenye reli.

Washa taa ya nyuma

Mwangaza wa nyuma wa onyesho ni mzunguko tofauti, haujaunganishwa na wengine. Unaweza kuiwasha kwa kutumia +5 V kwenye pini ya 15 ya onyesho na kuunganisha pini ya 16 chini. Kwa kuunganisha pini hizi mbili kwenye reli zinazolingana, unaweza kuwasha Arduino na kuona mwangaza wa onyesho.

Tafadhali kumbuka kuwa kwa mifano fulani nambari za anwani sio tu kutoka kulia kwenda kushoto kutoka kwanza hadi kumi na sita, lakini ni ujanja zaidi. Kwa hivyo, kwa mfano, kwenye skrini ya 16 × 2 kutoka kwa Melt, mawasiliano ya kwanza iko katika nafasi ya 14, ya pili katika nafasi ya 13 na kadhalika kutoka kulia kwenda kushoto hadi 14 katika nafasi ya kwanza, na ya 15 na 16 ziko upande wa kulia. Kuweka nambari karibu na waasiliani wa skrini kutakusaidia kuepuka kuchanganyikiwa.

Inawasha nguvu ya kisanishi cha herufi

    Ya kwanza ni ardhi. Unganisha kwenye reli ya chini.

    Ya pili ni lishe. Iunganishe kwenye reli ya +5V.

    Ya tatu ni tofauti. Kwa tofauti ya juu, iunganishe kwenye reli ya chini. Unaweza kutumia voltage ya kiholela kutoka 0 hadi 5 V kwa mawasiliano haya ya juu, picha ya dimmer itakuwa, lakini wakati huo huo matumizi ya nguvu yatapungua. Ili kuweza kurekebisha utofautishaji vizuri, unaweza kutumia ishara ya pato la potentiometer kwa mwasiliani huyu.

Baada ya unganisho, ikiwa unawasha Arduino, unaweza kuona nafasi za kawaida za mstatili. Kulingana na mchanganyiko wa rangi za maandishi na taa za nyuma, zinaweza kuwa angavu na zinazoonekana wazi au hazionekani sana. Hii ni ya kawaida: kwa hali yoyote, maandishi yataonekana kuwa mazuri.

Uunganisho wa basi ya data

Kwa mawasiliano kati ya Arduino na skrini, mistari kadhaa ya mawasiliano lazima itumike:

    2 au 3 kuamuru onyesho

    4 au 8 kwa usambazaji wa data (misimbo ya wahusika na amri)

Kwa hivyo, kutoka kwa mawasiliano 6 hadi 11 kutoka kwa vifaa vyote viwili vitachukuliwa. Ikiwa hauitaji soma kutoka kwa onyesho, ambalo linalingana na hali nyingi za utumiaji, amri zitahitaji mistari 2.

Ikiwa kasi ya sasisho la data pia sio tatizo, mistari 4 inatosha kuhamisha data.

Kwa hiyo, ili kuunganisha maonyesho, inatosha kutumia mistari 6, pini 6 kwenye Arduino. Hebu tuzingatie hali hii hasa.

Kama ilivyotajwa, hatuna chochote cha kusoma kutoka kwa onyesho, tutaiandikia tu. Kwa hiyo, tunaunganisha pini ya 5 ya maonyesho, ambayo ni wajibu wa kuchagua kusoma / kuandika, kwenye reli ya chini. Hii ina maana "daima kuandika."

Kisha, tunaunganisha Arduino na skrini na mistari yetu 6 ya mawasiliano. Haijalishi ni anwani gani zitachaguliwa kwenye Arduino: tutazitaja kwenye programu, lakini kwa mfano tulichagua usanidi ufuatao:

    Onyesho pin 6 ni Arduino pin 5. Huu ni mstari wa ruhusa ya ufikiaji wa data. Inajulikana kama E au Wezesha. Wakati mstari huu unakuwa mmoja, onyesho linatoa amri au kutoa herufi kutoka kwa safu ya data.

    Pini ya onyesho ya 11, 12, 13, 14 ni ya 10, ya 11, ya 12, ya 13 ya Arduino mtawalia. Hizi ni mistari ya data. Inajulikana kama DB4, DB5, DB6, DB7.

Skrini imeunganishwa na iko tayari kupokea data. Kilichobaki ni kuandika programu ya Arduino.

Kupanga programu

Ili kutoa maandishi kutoka kwa Arduino, ni rahisi zaidi kutumia maktaba ya Liquid Crystal iliyojengewa ndani. Ili kuonyesha salamu na kipima muda, tumia nambari kama hii:

Habari.pde #pamoja na lcd.anza(16, 2); // chapisha mstari wa kwanza lcd.print("Hujambo ulimwengu!"); // weka mshale kwenye safu 0, mstari wa 1. Hiyo ni, juu // hii ni kweli mstari wa pili, kwa sababu kuhesabu huanza kutoka sifuri lcd.setCursor(0, 1); // chapisha mstari wa pili lcd.print ("foo bar baz" ); ) kitanzi tupu() ()

Kila kitu ni rahisi sana na kinapaswa kuwa wazi kutoka kwa maoni.

Kisiriliki

Taarifa katika sehemu hii inatumika hasa kwa maonyesho kutoka kwa Melt. Wenzake wa Uchina na Uropa hawana uwezekano wa kuwa na herufi za Kisirilli katika seti zao za wahusika; tafadhali rejelea hati za onyesho ili kujua zaidi kuhusu hili.

Kuchapisha barua za Kirusi sio ndogo kabisa: huwezi kuandika tu lcd.print("Vasya") . Hii inahusiana na dhana ya encodings. Unajua kuwa kila herufi ina msimbo unaolingana na wakati wa kuunda programu, ikiwa kamba ina Cyrillic, itabadilishwa kuwa nambari kwa kutumia utf-8, cp-1251 au jedwali lingine, kulingana na mipangilio ya mkusanyaji. Skrini, kwa upande wake, inatarajia kuona data katika usimbaji wake yenyewe.

Kwa mfano, barua "I" inafanana na kanuni B1 katika mfumo wa hexadecimal. Ili kusambaza kamba "Yandex" kwenye skrini, lazima upachike kwa uwazi msimbo wa herufi kwenye mfuatano ukitumia mfuatano \x##:

Lcd.print(" \xB1 ndex") ;

Unaweza kuchanganya herufi za kawaida na misimbo wazi katika mstari mmoja upendavyo. Tahadhari pekee ni kwamba baada ya mkusanyaji kuona mlolongo \x katika mstari, inasoma herufi zote nyuma yake ambazo zinaweza kuwa nambari za mfumo wa hexadecimal, hata ikiwa kuna zaidi ya mbili kati yao. Kwa sababu hii, huwezi kutumia vibambo katika safu 0-9, a-f ikifuatiwa na msimbo wa herufi mbili: itasababisha hitilafu ya utungaji. Ili kuzunguka hatua hii, unaweza kutumia ukweli kwamba mistari miwili iliyoandikwa karibu na kila mmoja imeunganishwa pamoja. Kwa hivyo, ikiwa unataka kuandika "Yeee":

Lcd.print(" \xB1 eee"); // kosa lcd.print(" \xB1""eee"); // Haki

Kwa mfano, kuandika "Salamu kutoka kwa Amperka", nambari ilitumiwa:

cyrillic.pde #pamoja na LiquidCrystal lcd(4, 5, 10, 11, 12, 13); usanidi utupu() ( lcd.begin(16, 2); lcd.print(" \xA8 p\xB8 \xB3 ""e \xBF"); lcd.setCursor(0, 1); lcd.print(" o \xBF A\xBC \xBE ""ep \xBA\xB8"); ) kitanzi tupu() ()

Kubadilisha kurasa za jenereta za herufi

Moduli ya kuonyesha huhifadhi kurasa mbili za jenereta za herufi kwenye kumbukumbu. Chaguo msingi ni sifuri kwenye ukurasa. Ili kubadilisha ukurasa tumia njia ya amri (0x101010), na kinyume chake - amri (0x101000).

Skrini haiwezi kuonyesha vibambo kutoka kurasa tofauti kwa wakati mmoja.

Hebu tuangalie mfano ambao mstari huo utabadilika kulingana na ukurasa uliochaguliwa.

badilisha_ukurasa.ino // Jumuisha maktaba ya kawaida ya LiquidCrystal#pamoja na // Anzisha kitu cha skrini, uhamishe iliyotumiwa // kuunganisha pini kwenye Arduino ni kwa mpangilio:// RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); usanidi utupu () ( // weka saizi (idadi ya safu wima na safu) ya skrini lcd.anza(16, 2); ) kitanzi tupu() ( // weka ukurasa wa jenereta wa herufi hadi 0 (hii ndio chaguo msingi) lcd.command(0b101000); // chapisha mstari wa kwanza lcd.print(" \x9b \x9c \x9d \x9e \x9f "); // subiri kuchelewa kwa sekunde 1 (1000); // sasisha ukurasa wa jenereta wa herufi 1 lcd.command(0b101010); // subiri kuchelewa kwa sekunde 1 (1000); // futa onyesho lcd.wazi(); )

Onyesho la LCD la Arduino hukuruhusu kuonyesha data ya kihisi. Tutakuambia jinsi ya kuunganisha vizuri ufuatiliaji wa LCD kwa Arduino kupitia I2C na uangalie amri za msingi za kuanzisha na kudhibiti LCD 1602. Pia tutaangalia kazi mbalimbali katika lugha ya programu ya C++ kwa ajili ya kuonyesha maelezo ya maandishi kwenye onyesho. , ambayo mara nyingi inahitajika kutumika katika miradi ya Arduino.

Video. Arduino LCD Display I2C 1602

Muunganisho wa LCD 1602 I2C kwa Arduino

I2C ni basi la pili la waya mbili kwa ajili ya kuwasiliana na saketi zilizounganishwa ndani ya vifaa vya kielektroniki, vinavyojulikana kama I²C au IIC (Inter-Integrated Circuit). I²C iliundwa na Philips mwanzoni mwa miaka ya 1980 kama basi rahisi ya 8-bit kwa mawasiliano ya ndani kati ya saketi zinazodhibiti kielektroniki (km ubao mama za kompyuta, simu za rununu, n.k.).

Katika mfumo rahisi wa I²C kunaweza kuwa na vifaa kadhaa vya watumwa na kifaa kimoja kikuu ambacho huanzisha uhamishaji wa data na kusawazisha mawimbi. Vifaa vingi vya watumwa vinaweza kuunganishwa kwenye mistari ya SDA (laini ya data) na SCL (saa). Mara nyingi kifaa kikuu ni kidhibiti cha Arduino, na vifaa vya watumwa ni saa ya wakati halisi au Onyesho la LCD.

Jinsi ya kuunganisha LCD 1602 kwa Arduino kupitia I2C

Onyesho la LCD 1602 na moduli ya I2C imeunganishwa kwenye ubao wa Arduino na waya 4 pekee - waya 2 za data na waya 2 za nguvu. Muunganisho wa onyesho la 1602 unafanywa kama kawaida kwa basi la I2C: pin S.D.A. inaunganisha kwa bandari A4, pato SCL- kwa bandari A5. Onyesho la LCD linawezeshwa kutoka kwa lango la +5V kwenye Arduino. Tazama mchoro wa muunganisho wa LCD 1602 kwenye picha hapa chini kwa maelezo zaidi.

Kwa somo hili tutahitaji maelezo yafuatayo:

  • Arduino Uno / Arduino Nano / Arduino Mega bodi;
  • LCD kufuatilia 1602;
  • Waya 4 za kiume-kike.

Baada ya kuunganisha kufuatilia LCD kwa Arduino kupitia I2C, utahitaji kufunga maktaba LiquidCrystal_I2C.h kwa kufanya kazi na onyesho la LCD kupitia kiolesura cha I2C na maktaba Waya.h(inapatikana katika mpango wa kawaida wa Arduino IDE). Unaweza kupakua maktaba inayofanya kazi LiquidCrystal_I2C.h ya LCD 1602 na moduli ya I2C kwenye ukurasa wa Maktaba za Arduino kwenye tovuti yetu kupitia kiungo cha moja kwa moja kutoka Hifadhi ya Google.

Mchoro wa onyesho la 1602 na I2C

#pamoja na // maktaba ya kudhibiti vifaa kupitia I2C#pamoja na // unganisha maktaba ya LCD 1602 LiquidCrystal_I2C lcd(0x27,20,2); // toa jina kwa lcd kwa onyesho la 20x2 usanidi wa utupu () // usanidi wa utaratibu ( lcd.init (); // anzisha onyesho la LCD lcd.backlight(); // wezesha taa ya nyuma ya kuonyesha lcd.setCursor(0,0); // weka mshale kwa herufi 1 ya mstari wa kwanza lcd.print("NINAPENDA"); // chapisha ujumbe kwenye mstari wa kwanza lcd.setCursor(0,1); // weka mshale kwa herufi 1 ya mstari wa pili lcd.print("ARDUINO"); // chapisha ujumbe kwenye mstari wa pili) kitanzi tupu () // kitanzi cha utaratibu ( /* haya ni maoni ya mistari mingi // mwanzoni utaratibu wa void loop() hautumiki kwenye mchoro lcd.noDisplay(); // zima ucheleweshaji wa taa ya nyuma ya onyesho la LCD (500); // pause lcd.display(); // washa ucheleweshaji wa taa ya nyuma ya onyesho la LCD (500); // sitisha */ }

Maelezo ya kanuni:

  1. maktaba ya LiquidCrystal_I2C.h ina amri nyingi za kudhibiti onyesho la LCD kupitia basi la I²C na hukuruhusu kurahisisha mchoro kwa kiasi kikubwa;
  2. Mchoro una maoni ya safu nyingi /* ... */, ambayo hukuruhusu kutoa maoni kwa mistari kadhaa kwenye programu mara moja.
  3. Kabla ya kuonyesha habari kwenye onyesho, lazima uweke nafasi ya mshale kwa amri setCursor(0,1) , ambapo 0 ni nambari ya herufi kwenye mstari, 1 ndio nambari ya mstari.

Maagizo haya yanaonyesha jinsi ya kuunganisha kwa Arduino na kutumia skrini za LCD 16x2 na 20x4.

Skrini hizi zina backlight iliyojengewa ndani kulingana na LED yenye nguvu ya chini na hufanya kazi kutoka +5 V. Ili kuunganisha skrini hizi za LCD utahitaji pini 6. Unaweza kutumia pini zozote kwenye Arduino yako!

Maagizo yameandikwa kulingana na skrini za LCD kutoka Adafruit - bluu&nyeupe 16x2, RGB 16x2 LCD, na bluu&nyeupe 20x4, RGB 20x4. Ikiwa unatumia skrini ya LCD kutoka kwa mtengenezaji mwingine, hakuna uhakika wa 100% kwamba itafanya kazi (ingawa inafanya kazi 99% ya muda).

LCD za tabia na picha - ni tofauti gani?

Kuna idadi kubwa ya skrini tofauti za LCD. Katika makala hii tutaangalia LCD za wahusika. Skrini kama hizi ni chaguo nzuri kwa kuonyesha maandishi. Unaweza pia kubinafsisha onyesho la ikoni, lakini saizi ya ikoni hizi haipaswi kuzidi saizi 7 (ndogo sana!).

Picha hapa chini inaonyesha mfano wa kifuatiliaji cha LCD chenye herufi 16 na mistari miwili:

Ikiwa unatazama kwa karibu, utaona rectangles ndogo ambazo alama zinaonyeshwa. Kila mstatili ni gridi tofauti ya saizi. Kwa kulinganisha, skrini ya LCD ya picha imeonyeshwa hapa chini:

Onyesho la kioo kioevu la picha lina gridi moja kubwa ya saizi (katika mfano huu, 128x64). Unaweza kuonyesha maandishi juu yake, lakini ni bora kuonyesha picha. LCD za picha kwa kawaida huwa kubwa, zina pini nyingi za kuunganishwa, na ni ngumu zaidi kutumia kuliko LCD za maandishi.

Katika makala hii tutafunika skrini za maandishi/wahusika pekee!

Aina tofauti za skrini za LCD

Baada ya kupunguza aina ya skrini zinazozingatiwa, hebu tuangalie ni nini.


Ingawa zinatumika tu kuonyesha maandishi, kuna miundo tofauti na vipengele vya umbo: LCD ya juu kushoto ni 20x4 yenye maandishi meupe kwenye mandharinyuma ya samawati, juu kulia ni 16x4 yenye maandishi meusi kwenye mandharinyuma ya kijani, chini kushoto ni 16x2 na maandishi meupe kwenye usuli wa samawati na 16x1 yenye maandishi meusi kwenye mandharinyuma ya kijivu.

Habari njema ni kwamba skrini hizi zote zinaweza kubadilishana. Ikiwa umesanidi mmoja wao, unaweza kuibadilisha na mfano mwingine. Mchoro wa Arduino itabidi ubadilike kidogo, lakini unganisho ni sawa!


Katika sehemu hii tunatumia skrini za LCD na reli moja na pini 16 kwa uunganisho (tazama picha hapo juu). Pia kuna LCD yenye reli 2 za mawasiliano 8 kwa uunganisho (katika takwimu hapa chini).


Kuunganisha mfano wa pili kwa bodi ya mzunguko isiyo na solder ni ngumu zaidi.

Kuunganisha skrini ya LCD ya herufi kwenye Arduino

Kufunga reli za mawasiliano


Mbali na skrini ya LCD, utahitaji wiring ya ziada. Kwanza, 10 kOhm potentiometer. Kutumia potentiometer tutarekebisha tofauti ya maonyesho. Kila skrini ya LCD ina mipangilio tofauti ya utofautishaji, kwa hivyo marekebisho ni lazima. Zaidi ya hayo, utahitaji reli ya mawasiliano ya inchi 0.1.


Ikiwa reli iliyo na anwani ni ndefu sana, unaweza tu kukata mawasiliano ya ziada!

Unahitaji solder pini kwa kuonyesha LCD.

Wakati wa kuuza, kuwa mwangalifu sana usiharibu Ubao wako wa mkate! Unaweza kwanza "kunyakua" waasiliani wa kwanza na 16, na kisha kuuza wengine.


Nguvu na taa

Kuunganisha nguvu na taa

Maelezo


Tunaanza kupata mambo ya kuvutia! Sakinisha LCD yako kwenye ubao wa mkate.


Tunawasha ubao wa chakula kutoka kwa Arduino yetu. Unganisha +5V kwenye reli nyekundu na Gnd kwenye reli ya bluu.


Baada ya hayo, tutaunganisha backlight ya skrini yetu ya LCD. Unganisha pin 16 kwenye gnd na ubonyeze 15 hadi +5V. Skrini nyingi za LCD zina vipingamizi vya taa ya nyuma.

Ikiwa hakuna vipinga kwenye moduli yako, itabidi uongeze moja kati ya 5V na pini 15. Ili kuhesabu maadili ya kupinga, angalia kiwango cha juu cha sasa cha kuimarisha backlight na thamani ya takriban ya kushuka kwa voltage kutoka kwa hifadhidata. Ondoa thamani ya kushuka kwa voltage kutoka 5V, kisha ugawanye kwa kiwango cha juu cha amperage na pande zote hadi thamani ya juu ya upinzani wa kiwango cha juu. Kwa mfano, ikiwa kushuka kwa voltage ni 3.5V na ya sasa ni 16mA, thamani ya kupinga itakuwa: (5 - 3.5)/0.016 = 93.75 ohms, au ohms 100 baada ya kuzunguka kwa thamani ya kawaida. Ikiwa huwezi kupata hifadhidata, tumia kipingamizi cha ohm 220. Kweli, katika kesi hii backlight inaweza kuwa rangi kabisa.


Unganisha Arduino yako kwa nguvu. Taa ya nyuma inapaswa kuwaka.

Kwa njia, skrini zingine za bei nafuu za LCD hazina taa za nyuma!

Mzunguko wa kurekebisha tofauti

Mzunguko wa kurekebisha tofauti

Maelezo


Weka potentiometer. Katika picha iko upande wa kulia wa pini 1.


Unganisha upande mmoja wa potentiometer hadi +5V na mwingine kwa Gnd. Unganisha mguso wa kati wa potentiometer ili kubandika 3 kwenye LCD.


Sasa tunaunganisha mantiki ya skrini yetu - hii ni mzunguko tofauti na backlight! Pin 1 huenda kwa Gnd na pin 2 huenda kwa +5V.


Washa Arduino yako. Ikiwa LCD Monitor yako ina backlight, inapaswa kuwaka. Zungusha kifundo cha kipima nguvu ili kuona mstatili wa kwanza wa saizi kwenye mstari wa kwanza.

Ikiwa kila kitu kilifanya kazi, pongezi. Hii ina maana kwamba mantiki, taa na kazi ya kulinganisha! Ikiwa haifanyi kazi, usiendelee kwa hatua zinazofuata katika maagizo hadi ujue kosa ni nini!

Uunganisho wa mwisho

D0 hadi D7, RS, EN, na RW. D0-D7 ni pini zinazohifadhi maadili yaliyotumwa kwenye onyesho. Pini ya RS humwambia kidhibiti iwapo tutaonyesha data (km herufi ya ASCII) au ikiwa ni baiti ya kudhibiti (km kubadilisha nafasi ya kishale). Pini ya EN ni kifupi cha "kuwezesha" na kwa pini hii tunaiambia LCD wakati data iko tayari kusomwa. Pini ya RW inatumiwa kuweka mwelekeo - tunataka kuonyesha (kawaida) au kusoma data (isiyotumiwa sana) kutoka kwenye onyesho.

Sio pini hizi zote zinahitaji kuunganishwa na Arduino. Kwa mfano, hakuna haja ya kutumia RW ikiwa tunaonyesha data kwenye skrini tu, kwa hiyo inatosha "kuivuta" kwenye pini ya Gnd. Kwa kuongeza, unaweza kuwasiliana na skrini ya LCD kwa kutumia pini 4 badala ya 8. Swali la asili labda linatokea, katika hali gani pini 8 hutumiwa? Hii ina uwezekano mkubwa huathiri kasi ya uhamishaji data. Hiyo ni, kwa kutumia anwani 8 badala ya 4, unaweza kuongeza kasi ya kubadilishana habari kwa mara 2. Katika kesi hii, kasi sio muhimu, kwa hiyo tunatumia pini 4 ili kuunganisha LCD kwenye Arduino.

Kwa hivyo, tunahitaji pini 6: RS, EN, D7, D6, D5, na D4.

Kufanya kazi na skrini ya LCD, tutatumia maktaba ya LiquidCrystal, ambayo hurahisisha sana mchakato wa kuanzisha pini. Moja ya faida za maktaba hii ni kwamba unaweza kutumia pini zozote kwenye Arduino kuunganisha pini za LCD. Kwa hivyo kufikia mwisho wa mwongozo huu utaweza kubadilisha anwani kwa urahisi ikiwa ni muhimu kwa mradi wako.

Muunganisho wa mwisho wa onyesho

Maelezo


Kama ilivyotajwa hapo juu, hatutatumia pini ya RW, kwa hivyo tutaivuta chini. Hii ni pini 5.


Kisha tunaunganisha RS - hii ni pini # 4. Tunatumia waya wa kahawia kuiunganisha na pini ya dijitali #7 kwenye Arduino.


Tumia waya mweupe kuunganisha pini ya EN - bandika #6 kwenye pini ya dijitali #8 kwenye Arduino.


Sasa ni wakati wa anwani za data. DB7 ni pini #14 kwenye LCD. Imeunganishwa kwa waya wa chungwa kubandika #12 kwenye Arduino.


Zimesalia pini tatu za data, DB6 (pini #13 ya manjano), DB5 (pini #12 ya kijani) na DB4 (pini #11 ya bluu). Zinaunganishwa na pini #11, 10 na 9 kwenye Arduino mtawalia.


Kama matokeo ya Muunganisho, utapata kitu sawa na picha iliyo upande wa kushoto.

Tunatumia LCD ya herufi

Ni wakati wa kupakia mchoro kwenye Arduino ili kudhibiti skrini ya LCD. Maktaba ya LiquidCrystal imewekwa kwenye IDE ya Arduino kwa chaguo-msingi. Kwa hiyo tunahitaji tu kupakua moja ya mifano na kurekebisha kidogo kwa mujibu wa pini ambazo tulitumia kuunganisha.

Fungua Faili ya mchoro→Mifano→LiquidCrystal→HelloWorld.

Tunasasisha habari kuhusu pini. Tunatafuta mstari ufuatao:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Na ubadilishe kuwa:

Sasa unaweza kukusanya na kupakia mchoro kwenye Arduino.


Ikiwa ni lazima, rekebisha tofauti


Kwa kawaida, unaweza kutumia onyesho la LCD na saizi yoyote. Kwa mfano, picha hapa chini inaonyesha uendeshaji wa LCD 20x4.


Au maandishi meusi kwenye mandharinyuma ya kijani kibichi:


Moja ya faida za skrini zilizo na maandishi nyeusi kwenye mandharinyuma ya kijani ni uwezo wa kuzima taa ya nyuma.


Hebu tumia mistari ngapi

Hebu tuelewe jinsi skrini ya LCD inavyoshughulikia ujumbe mrefu na mistari mingi. Kwa mfano, ukibadilisha mstari ufuatao:

lcd.print("hello, dunia!");

Kwa inayofuata:

lcd.print("jambo, dunia! huu ni ujumbe mrefu");

Onyesho la LCD la 16x2 litakata kila kitu baada ya herufi ya 16:


Lakini LCD 20x4 itabeba wahusika ambao hawajaonyeshwa kutoka mstari wa kwanza hadi wa tatu (mstari wa pili utaendelea hadi wa nne). Sio rahisi sana, lakini katika hatua hii itabidi uivumilie. Kwa hivyo unapoonyesha nyuzi ndefu, hesabu herufi ili usizidi urefu unaoruhusiwa.


LCD iliyo na taa ya nyuma ya RGB

Skrini hizi hufanya kazi kama skrini za kawaida, lakini kuna taa tatu za LED (nyekundu, kijani, bluu) za kuangaza nyuma, kwa hivyo unaweza kutumia rangi tofauti za taa.

Baada ya kuunganisha LCD na kuikagua kulingana na maagizo yaliyo hapo juu, unganisha LED kwenye pini za analogi za PWM za Arduino yako ili kurekebisha rangi vizuri. Ikiwa unatumia Arduino Uno, unapaswa kuwa na pini tatu za PWM zisizolipishwa zilizosalia. unganisha LED nyekundu (pini 16 kwenye LCD) kwa Digital 3, LED ya kijani (pini 17) hadi Digital 5, na LED ya bluu (pini 18 kwenye LCD) kwa digital 6. Moduli ya LCD tayari ina vipinga, hivyo wewe hawana haja ya kuunganisha zile za ziada zinazohitajika.


Sasa pakia mchoro ulio hapa chini kwenye Arduino yako.

// ni pamoja na kwenye mchoro wa maktaba:

#pamoja na

#pamoja na

#fafanua REDLITE 3

#fafanua GREENLITE 5

#fafanua BLUELITE 6

// kutangaza idadi ya anwani tunazotumia

// kwa uhamisho wa data

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

// mwangaza unaweza kubadilishwa katika safu 0 -> 255

mwangaza wa int = 255;

// weka idadi ya safu na safu kwenye LCD:

lcd.anza(16, 2);

// onyesha ujumbe kwenye LCD.

lcd.print("Onyesho la RGB 16x2");

lcd.setCursor(0,1);

lcd.print(" Multicolor LCD");

pinMode(REDLITE, OUTPUT);

pinMode(GREENLITE, OUTPUT);

pinMode(BLUELITE, OUTPUT);

mwangaza = 100;

kwa (int i = 0; i< 255; i++) {

setBacklight(i, 0, 255-i);

kwa (int i = 0; i< 255; i++) {

setBacklight(255-i, i, 0);

kwa (int i = 0; i< 255; i++) {

setBacklight(0, 255-i, i);

utupu setBacklight(uint8_t r, uint8_t g, uint8_t b) (

// kuanzisha LED nyekundu - ni mkali zaidi kuliko wengine!

r = ramani(r, 0, 255, 0, 100);

g = ramani(g, 0, 255, 0, 150);

r = ramani(r, 0, 255, 0, mwangaza);

g = ramani(g, 0, 255, 0, mwangaza);

b = ramani(b, 0, 255, 0, mwangaza);

// anode ya kawaida, kwa hivyo geuza!

r = ramani(r, 0, 255, 255, 0);

g = ramani(g, 0, 255, 255, 0);

b = ramani(b, 0, 255, 255, 0);

Serial.print("R = "); Serial.print(r, DEC);

Serial.print(" G = "); Serial.print(g, DEC);

Serial.print(" B = "); Serial.println(b, DEC);

analogWrite(REDLITE, r);

analogiAndika(GREENLITE, g);

analogAndika(BLUELITE, b);

Matokeo ya mchoro huu yanaonyeshwa kwenye video hapa chini.

createChar amri

Labda utataka kutumia herufi maalum. Kwa mfano, ikiwa unatengeneza mradi kwa kutumia sensor ya joto (thermocouple), ishara (°) itakuwa muhimu.

Hii inaweza kupatikana kwa kutumia amri ya createChar. Vinginevyo, unaweza kupata tovuti nzuri ambayo itafanya kazi chafu ya kuunda alama mpya kwa ajili yako!

Acha maoni yako, maswali na ushiriki uzoefu wako wa kibinafsi hapa chini. Mawazo mapya na miradi mara nyingi huzaliwa katika majadiliano!

Arduino Nano imefika, seti imefika, iliyo na ubao wa mkate (breadboard) na onyesho la LCD. Onyesho kwenye ubao linasema - 1602A, chini - QAPASS. Nilianza kuchonga kifaa cha kwanza, na kwa kweli, nilitaka kuonyesha habari kwenye onyesho, na sio taa za LED.

Google ilisaidia, iliniambia kuwa hii ni onyesho la wahusika; Ikiwa hautaipotosha, basi uwezekano mkubwa wa herufi za ASCII zinapatikana - nambari, Kilatini, baadhi ya herufi za kimsingi.

Nyenzo zifuatazo zilisaidia kuzindua onyesho: Kuendesha aina ya LCD ya herufi kutoka kwa bandari ya kichapishi cha Kompyuta; Jinsi ya kuunganisha Arduino na LCD ya mhusika; Pwm Servo Driver Motor Control PDF.

Onyesho ni la kawaida kabisa, na ngao tayari zimevumbuliwa kwa ajili yake - kuna chaguzi na SPI, kama, na/au na I2C, na mtandao umejaa mapishi ya kesi hizi. Lakini nilikuwa na onyesho la asili la 16x2 na Arduino ambayo nilitaka kuiambatanisha.

Uonyesho una hali ya uendeshaji na upitishaji wa data katika nibbles, bits 4 kila moja, wakati bits za chini za basi hazitumiwi. Kuunganisha nusu tu ya basi ya data imeelezewa katika maeneo mengi, na sikufikiria jinsi ya kuunganisha onyesho na kufanya kazi nayo zaidi ya mistari 8. Nimefurahiya sana jinsi inavyofanya kazi.

Nilipata maelezo mazuri ya maonyesho ya aina hii hapa - http://greathard.ucoz.com/44780_rus.pdf. Na hapa (http://arduino.ru/forum/programmirovanie/lcd-i2c-partizanit#comment-40748) ni mfano wa kutaja jenereta ya tabia.

Uhusiano

Onyesho langu lilikuja na anwani ambazo hazijauzwa. Tangu mwanzo nilitaka solder cable, kukata waya 16 na duponts, na kusafisha yao. Na kisha nikachimba karibu na nyangumi na nikapata sega ya DuPont ya kuuzwa kwenye ubao. Kutoka hapo nilivunja mawasiliano 16 na kuyauza.
Onyesho langu lilionekana kitu kama hiki (kabla ya kuuza anwani):

Kwanza niliunganisha pini 15 (A) hadi +5V, 16 (K) chini, na kuhakikisha kuwa taa ya nyuma ilifanya kazi. Kwa ujumla, ni sahihi kuunganisha cathode chini kwa njia ya 220 Ohm resistor, ambayo ni nini mimi basi.

Kisha nikaunganisha ardhi (1) na nguvu (2). Arduino inaweza kuwa na nguvu kutoka kwa USB, kutoka kwa voltage iliyoimarishwa ya 5V na kutoka kwa 6-12V isiyo na utulivu, voltage ya juu zaidi huchaguliwa moja kwa moja. Sasa Arduino inaendeshwa kutoka USB, na nilikuwa nikijiuliza nipate wapi Volts 5. Ilibadilika kuwa 5V iko kwenye pini ya Arduino, ambapo 5V iliyoimarishwa ya nje imeunganishwa. Au tuseme, ikawa 4.7V, lakini hiyo ilikuwa ya kutosha kwangu.

Baada ya kuunganisha nguvu, ikiwa kila kitu ni sawa, basi mstari wa juu huwaka na rectangles imara ya ujuzi.

Kisha tunaunganisha potentiometer tofauti (pin 3 V0). Tunatupa moja ya vituo vilivyokithiri vya potentiometer chini, ya pili hadi +5V, ya kati ili kubandika 3 ya onyesho. Kipimo cha potentiometer cha 10K kinapendekezwa. Nilikuwa na 50K kutoka kwa nyangumi, niliitumia kwanza. Marekebisho yalikuwa kwenye makali moja tu; Kisha nikapata sawa na 5K kwenye nyangumi mwingine na kuiweka. Mpangilio ulienea kutoka kwa makali moja hadi nusu zamu. Inaonekana, unaweza kuchukua potentiometer ndogo zaidi. 10K labda inapendekezwa ili mzunguko utumie kidogo. Ndio, ilibidi nifanye soldering kidogo;

Mchoro wa mtihani

Tunachukua mchoro wa majaribio kutoka kwa mifano kutoka kwa Studio ya Arduino - "C:\Program Files (x86)\Arduino\libraries\LiquidCrystal\ex amples\HelloWorld\HelloWorld.ino", tunahitaji tu kubadilisha anwani ziwe zetu - LiquidCrystal lcd( 7, 6, 5, 4, 3, 2);

Kimsingi, mchoro huu pia una maelezo ya nini cha kuunganisha wapi. Unaweza kuiunganisha kama ilivyoonyeshwa hapo, basi hauitaji kubadilisha chochote hata kidogo.

// ni pamoja na msimbo wa maktaba: #include // anzisha maktaba na nambari za pini za kiolesura LiquidCrystal lcd(7, 6, 5, 4, 3, 2); usanidi utupu() ( // sanidi nambari ya safu wima na safu za LCD: lcd.begin(16, 2); // Chapisha ujumbe kwa LCD. lcd.print("hello, world!");) void kitanzi() (// weka mshale kwa safuwima 0, mstari wa 1 // (kumbuka: mstari wa 1 ni safu ya pili, kwani kuhesabu huanza na 0): lcd.setCursor(0, 1); // chapisha nambari ya sekunde tangu kuweka upya: lcd.print(millis() / 1000);

Inageuka kitu kama hiki:

Kwa njia, onyesho lililokuja mikononi mwangu haifanyi kazi bila taa za nyuma. Ninamaanisha, inafanya kazi, lakini huwezi kuona chochote.

1602A Onyesha Anwani

Anwani # Jina Jinsi ya kuunganisha
1 VSS GND
2 VDD +5V
3 V0 Tofauti - kwa terminal ya kati ya potentiometer
4 RS (Sajili chagua) D7 Arduino
5 R/W (Soma au andika) GND
6 E (Washa mawimbi) D6 Arduino
7-14 D0-D7 D0-D3 - haijaunganishwa; D4-D7 - iliyounganishwa na pini D5-D2 ya Arduino
15 A Anode ya taa ya nyuma, iliyounganishwa kwa +5V
16 K Cathode ya taa ya nyuma, iliyounganishwa chini kupitia kontena ya 220 Ohm

Katika somo hili tutazungumza juu ya viashiria vya kusanisi vya kioo kioevu, tukiunganisha kwenye ubao wa Arduino na kudhibiti viashiria kwa kutumia maktaba ya LiquidCrystal na LiquidCrystalRus.

Ingawa viashiria vya LED vya sehemu saba ni chaguo la bei nafuu zaidi la vifaa vya elektroniki, matumizi yao ni mdogo na vikwazo viwili muhimu.

  • Ni kivitendo vigumu kuunganisha zaidi ya tarakimu 8 za viashiria vya LED kwa microcontroller. Idadi kubwa ya pini, mikondo ya kiashiria muhimu, swichi ngumu, mzunguko mdogo wa kuzaliwa upya, nk.
  • Haiwezekani kuonyesha maelezo ya mfano kwenye viashiria vya sehemu saba.

Ili kuonyesha maelezo ya maandishi au nambari kubwa zaidi ya tarakimu 4, ni vyema zaidi kutumia viashirio vya kusanisi tabia ya kioo kioevu (maonyesho). Faida zao ni pamoja na:

  • interface rahisi ya kuunganisha kwa microcontrollers;
  • matumizi ya chini ya nguvu;
  • voltage ya chini ya usambazaji;
  • kudumu.

Kuna idadi kubwa ya viashiria tofauti vya kuonyesha kioo kioevu (LCD) kutoka kwa wazalishaji tofauti kwenye soko. Karibu zote zinafanana katika vigezo, ishara za kiolesura, na amri za udhibiti. Kwa sasa, viashiria vya kawaida vya LCD kwenye soko la Kirusi ni vifaa vinavyotengenezwa na Winstar, Taiwan. Nitarejelea viashiria vya kampuni hii. Lakini habari pia inatumika kwa maonyesho ya LCD ya wahusika kutoka kwa wazalishaji wengine.

Habari za jumla.

Viashirio vya kuunganisha wahusika au ishara huonyesha taarifa katika mfumo wa herufi za uwezo fulani. Ujuzi mmoja unaonyesha mhusika mmoja. Idadi ya maeneo yanayojulikana huamua uwezo wa tarakimu wa kiashiria. Taarifa juu ya viashiria inaweza kuonyeshwa kwenye mistari kadhaa, hivyo kwa viashiria vya aina hii idadi ya wahusika kwa kila mstari na idadi ya mistari huonyeshwa daima.

Taarifa huonyeshwa kwenye matrix ya kioo kioevu yenye taa ya nyuma ya LED. Mwangaza wa nyuma unakuja kwa rangi mbalimbali, ambayo huongeza sana habari ya maandishi ya monochrome.

Ili kudhibiti tumbo la kioo kioevu na kupanga kiolesura cha kiashiria, kidhibiti kilichojengwa ndani cha HD44780 au analogi zake kamili hutumiwa. Kidhibiti hiki huamua ishara za kiolesura cha kiashiria na amri za udhibiti.

HD44780 imekuwa kiwango halisi cha maonyesho ya kioo kioevu (LCD). Nyaraka za kiufundi za kidhibiti cha HD44780 katika umbizo la PDF zinaweza kutazamwa kwenye kiungo hiki -. Labda mtu atapenda nyaraka za mojawapo ya analogi za mtawala huyu - SPLC780D. Kiungo katika umbizo la PDF - .

Viashiria vya LCD vya tabia kutoka Winstar.

Ninajua chaguo zifuatazo za viashiria vya LCD kutoka kwa kampuni hii.

Aina ya kiashiria Umbizo la kuonyesha, wahusika x mistari Vipimo, mm Vipimo vya eneo linaloonekana, mm Unganisha kwa hati, umbizo la PDF
WH0802A1 8 x 2 58 x 32 38 x 16
WH1202A 12 x 2 55.7 x 32 46 x 14.5
WH1601A 16 x 1 80 x 36 66 x 16
WH1601B 16 x 1 85 x 28 66 x 16
WH1601L 16 x 1 122 x 33 99 x 13
WH1602A 16 x 2 84 x 44 66 x 16
WH1602B 16 x 2 80 x 36 66 x 16
WH1602C 16 x 2 80 x 36 66 x 16
WH1602D 16 x 2 85 x 30 66 x 16
WH1602J 16 x 2 80 x 36 66 x 16
WH1602L1 16 x 2 122 x 44 99 x 24
WH1602M 16 x 2 85 x 32.6 66 x 16
WH1602O 16 x 2 85 x 25.2 66 x 16
WH1602P 16 x 2 85 x 25.2 66 x 16
WH1602S 16 x 2 59 x 29.3 52 x 15
WH1602T 16 x 2 65.4 x 28.2 54.8 x 19
WH1602W 16 x 2 80 x 36 66 x 16
WH1602V2 16 x 2 66.7 x 23.3 61 x 15.9
WH1604A 16 x 4 87 x 60 62 x 26
WH1604B 16 x 4 70.6 x 60 60 x 32.6
WH2002A 20 x 2 116 x 37 85 x 18.6
WH2002D 20 x 2 89 x 21.5 75 x 15
WH2002L 20 x 2 180 x 40 149 x 23
WH2002M 20 x 2 146 x 43 123 x 23
WH2004A 20 x 4 98 x 60 77 x 25.2
WH2004B 20 x 4 98 x 60 77 x 25.2
WH2004D 20 x 4 77 x 47 60 x 22
WH2004G 20 x 4 87 x 58 74.4 x 24.8
WH2004H 20 x 4 87 x 58 74.4 x 24.8
WH2004L 20 x 4 146 x 62.5 123.5 x 43
WH2402A 24 x 2 118 x 36 94.5 x 16
WH4002A 40 x 2 182 x 33.5 154.4 x 16.5
WH4004A 40 x 4 190 x 54 147 x 29.5

Kuunganisha kiashiria cha LCD kwa microcontroller.

Michoro ya uunganisho, michoro ya saa, vigezo vya ishara, amri za udhibiti, na misimbo ya ishara zimeelezwa kwa kina katika nyaraka za kidhibiti cha HD44780. Nitatoa tu data muhimu zaidi juu ya viashiria vya kuunganisha kwa microcontrollers.

Kwa kawaida, viashiria vya LCD vina pini 16.

Nambari ya siri Mawimbi I - pembejeo O - pato Kusudi la ishara
1 Vss - Ardhi (ya kawaida)
2 Vdd - Ugavi wa nguvu +5V
3 Vo - Onyesha udhibiti wa utofautishaji. Pembejeo ya kuunganisha pato la kati la mgawanyiko wa voltage + 5 V. Unaweza kutumia upinzani wa trimming na upinzani wa 10-20 kOhm.
4 R.S. I Uteuzi wa usajili: 0 - rejista ya amri; 1 - rejista ya data. Kiwango cha chini cha ishara kinamaanisha kuwa amri imetolewa kwenye basi ya data, kiwango cha juu kinamaanisha kuwa amri imetolewa kwenye basi ya data.
5 R/W I Mwelekeo wa uhamishaji data:

0 - rekodi;

1 - kusoma.

Katika programu nyingi kazi ya kusoma haitumiki, hivyo ishara mara nyingi huunganishwa chini.

6 E I Strobe ya operesheni ya basi (kwenye makali hasi).
7 DB0 I/O Biti za mpangilio wa chini wa modi ya biti nane. Haitumiki na kiolesura cha biti nne.
8 DB1 I/O
9 DB2 I/O
10 DB3 I/O
11 DB4 I/O Biti muhimu zaidi za modi ya biti nane au biti za data za kiolesura cha biti nne.
12 DB5 I/O
13 DB6 I/O
14 DB7 I/O
15 A - Anode ya nguvu ya taa ya nyuma (+).
16 K - Kathodi ya nguvu ya taa ya nyuma (-). Ya sasa lazima iwe na kikomo.

Nambari ya pini (safu wima ya kwanza) ni ya chaguo la kawaida zaidi. Ni bora kuangalia kwa kupakua hati za aina ya kiashirio chako kutoka kwa jedwali katika sehemu iliyotangulia.

Maonyesho ya LCD ya herufi inasaidia chaguzi mbili za unganisho kwa kidhibiti kidogo:

  • Kwa kutumia basi ya data ya biti 8. Ishara zote za basi DB0-DB7 zimeunganishwa. Katika mzunguko mmoja wa kubadilishana, byte ya habari hupitishwa.
  • Kwa kutumia basi ya data 4-bit. Biti 4 pekee muhimu zaidi DB4-DB7 zimeunganishwa. Taarifa hupitishwa biti nne kwa kila mzunguko wa saa ya basi.

Chaguo la kwanza hutoa uhamisho wa data kwenye maonyesho kwa kasi ya juu. Ya pili inahitaji pini 4 chache ili kuunganisha kiashiria. Bila shaka, ni muhimu zaidi kupunguza idadi ya pini za uunganisho kuliko kuongeza kasi ya kubadilishana. Kwa kuongezea, viashiria vya LCD ni vifaa vya polepole na wakati wa mzunguko wa kuzaliwa upya wa 10-20 ms.

Kuunganisha onyesho la LCD la herufi kwenye ubao wa Arduino.

Nitaunganisha kiashiria cha WH2004A (mistari 4 ya herufi 20 kila moja) katika hali ya ubadilishaji wa biti nne kwenye ubao wa Arduino UNO R3. Unaweza kutazama hati za onyesho la WH2004 LCD kwenye kiungo hiki.

Mchoro unaonekana kama hii.

Resistors R2 na R3 huamua tofauti ya kiashiria. Unaweza kuunganisha upinzani wa trim na kuweka uwazi wa picha unaohitajika. Mara nyingi mimi hutumia viashiria vya WH2004, na katika mizunguko yangu mimi huchagua maadili haya ya kupinga.

Niliunganisha LED za taa za nyuma za kiashiria kwenye chanzo cha nguvu cha 5 V kupitia resistor R1 (30 Ohm). Kwa hili niliweka sasa kwa karibu 25 mA. Dim, lakini inang'aa. Unaweza kuona vizuri gizani. Ingawa viashiria vya WH2004 vinaruhusu sasa taa ya nyuma hadi 580 mA.

Maktaba ya kudhibiti viashiria vya LCD katika mfumo wa Arduino LiquidCrystal.

Kuna maktaba ya kawaida ya kudhibiti viashiria vya LCD kulingana na kidhibiti cha HD44780. Nitaelezea mbinu zake kwa undani.

LiquidCrystal (…)

Mjenzi wa darasa. Inaweza kuwa na idadi tofauti ya hoja.

  • LiquidCristal(rs, en, d4, d5, d6, d7) - kiolesura cha nne-bit, ishara ya RW haitumiwi (imeunganishwa chini).
  • LiquidCristal(rs,rw, en, d4, d5, d6, d7) - kiolesura cha biti nne, mawimbi ya RW hutumiwa.
  • LiquidCristal(rs, en, d0, d1, d2, d3, d4, d5, d6, d7) - interface ya nane-bit, ishara ya RW haitumiwi (imeunganishwa chini).
  • LiquidCristal(rs, rw, en, d0, d1, d2, d3, d4, d5, d6, d7) - interface ya nane-bit, ishara ya RW hutumiwa.

Hoja:

  • rs - nambari ya siri ya ishara ya RS;
  • rw - nambari ya pato la ishara ya RW;
  • sw - nambari ya pato la ishara E;
  • d0, d1, d2, d3, d4, d5, d6, d7 - nambari za siri za basi za data.

LiquidCrystal disp(6, 7, 2, 3, 4, 5);

kuanza utupu (safu, safu)

Huanzisha kiolesura cha kiashirio. Huweka kipimo cha kiashirio. Njia lazima iitwe kwanza, kabla ya kazi zingine za darasa kutumika.

Hoja:

  • cols - idadi ya wahusika kwenye mstari;
  • safu - idadi ya safu.

disp.anza(20, 4); // tunatumia onyesho - mistari 4 ya herufi 20

utupu wazi ()

Kusafisha skrini, kuweka mshale kwenye kona ya juu kushoto.

disp.clear(); // weka upya onyesho

nyumba tupu ()

Weka mshale kwenye kona ya juu kushoto.

disp.nyumbani(); // hadi mwanzo wa skrini

utupu setCursor(safu, safu mlalo)

Huweka mshale katika nafasi maalum.

  • col - X kuratibu, nambari kutoka 0;
  • safu - Y kuratibu, kuhesabu kutoka 0.

setCursor(0,1); // mshale hadi mwanzo wa mstari wa pili

kuandika byte (data)

Inaonyesha ishara kwenye skrini. Hurejesha idadi ya baiti zilizohamishwa.

Mchoro ufuatao unaonyesha data kutoka kwa mlango wa mfululizo. Data inaweza kusambazwa na kichunguzi cha bandari cha Arduino IDE.

// Pato la data ya bandari ya serial kwenye kiashiria cha LCD
#pamoja na


data ya char;

usanidi utupu ()
{
Serial.begin(9600); // anzisha bandari ya serial
disp.anza(20, 4); //
}

kitanzi utupu()
{
ikiwa (Serial.inapatikana()) (// kama kuna data
data= Serial.read(); // soma alama
if((data != 0xd) && (data != 0xa)) ( // mlisho wa mstari
disp.write(data); // onyesha ishara kwenye skrini
}
}
}

Nina kiashiria kikubwa - mistari 4 ya wahusika 20. Ina vidhibiti viwili vya HD44780. Kwa hivyo, herufi zinazopitishwa kwa mpangilio hujaza kwanza mstari wa kwanza, kisha wa tatu, kisha wa pili na wa nne. Wale. kupitia mstari. Mali hii lazima izingatiwe kwa aina fulani za viashiria. Nyaraka kwa kila kiashirio cha LCD huonyesha mfuatano wa kuhutubia wahusika.

uchapishaji wa baiti (data)

Inaonyesha maandishi kwenye skrini. Hurejesha idadi ya baiti zilizohamishwa.

Hoja:

data - data ya kuonyeshwa kwenye skrini. Inaweza kuwa na aina char, byte, int, ndefu, kamba.

Kunaweza kuwa na hoja ya pili, ya hiari.

uchapishaji wa baiti(data, BASE)

  • BASE - inabainisha mfumo wa nambari:
  • BIN - binary;
  • DEC - decimal;
  • OCT - octal:
  • HEX - hexadecimal.

Mfano wa programu inayochapisha mfuatano wa maandishi kwenye onyesho.

// kuonyesha mstari wa maandishi kwenye kiashiria cha LCD
#pamoja na

LiquidCrystal disp(6, 7, 2, 3, 4, 5); // tengeneza kitu

usanidi utupu ()
{
disp.anza(20, 4); // anzisha onyesho la mistari 4 ya herufi 20
disp.print("Kamba ya majaribio");
}

kitanzi utupu()
{ }

kishale batili ()

Huwasha hali ya kuonyesha mshale. Nafasi ambayo herufi inayofuata itatolewa imepigiwa mstari.

disp.cursor(); // ruhusu onyesho la mshale

noCursor batili()

Huzima onyesho la mshale.

disp.noCursor(); // zima onyesho la mshale

blink utupu ()

Huwasha hali ya kielekezi kumeta. Inatumika pamoja na kitendakazi cha mshale (). Matokeo inategemea mfano maalum wa kiashiria.

disp.blink(); // ruhusu mshale unaometa

utupu noBlink()

Huzima hali ya kishale inayofumbata.

disp.noBlink(); // zima kielekezi kinachofumba

onyesho tupu ()

Huwasha skrini baada ya kuzimwa na noDisplay(). Skrini itaonyesha habari iliyokuwepo kabla ya kuzima.

display.display(); // washa onyesho

utupu noDisplay()

Huzima skrini. Taarifa huhifadhiwa kwenye kumbukumbu na inaonekana wakati onyesho limewashwa.

disp.noDisplay(); // zima onyesho

utupu scrollDisplayLeft()

Hutembeza yaliyomo kwenye onyesho herufi moja kwenda kushoto.

disp. tembezaDisplayLeft(); // sogeza kila kitu kushoto

void scrollDisplayRight()

Husogeza yaliyomo kwenye onyesho herufi moja kwenda kulia.

disp. scrollDisplayRight(); // sogeza kila kitu kulia

utupu otomatiki ()

Washa hali ya kusogeza maandishi kiotomatiki. Kila herufi inapoonyeshwa, maandishi yote kwenye skrini yatahama kwa herufi moja. Vitendaji vya leftToRight() na rightToLeft() huamua ni mwelekeo gani maelezo yanahamishwa.

disp. kusogeza otomatiki())(; // wezesha kusogeza kiotomatiki

void noAutoscroll()

Zima usogezaji wa maandishi kiotomatiki.

disp. noAutoscroll())(; // Lemaza kusogeza kiotomatiki

utupu leftToRight()

Huweka hali ya pato la jaribio kutoka kushoto kwenda kulia. Alama mpya zitaonekana upande wa kulia wa zile zilizopita.

leftToRight(); // hali ya kushoto kwenda kulia

utupu kuliaKushoto()

Huweka hali ya pato la jaribio kutoka kulia kwenda kushoto. Alama mpya zitaonekana upande wa kushoto wa zile zilizopita.

kuliaKushoto(); // hali ya kulia kwenda kushoto

batili createChar(nambari, data)

Njia ya kuunda ishara maalum. Kidhibiti kinaruhusu uundaji wa hadi herufi 8 (0...7) za saizi 5x8. Picha ya ishara imebainishwa na safu ya baiti 8. Biti 5 angalau muhimu za kila baiti huamua hali ya saizi kwenye safu mlalo.

Ili kutoa herufi maalum, unaweza kutumia kitendakazi cha write() na nambari ya herufi.

// kuunda ishara maalum
#pamoja na

LiquidCrystal disp(6, 7, 2, 3, 4, 5); // tengeneza kitu

tabasamu kidogo = (
B00000000,
B00010001,
B00000000,
B00000000,
B00010001,
B00001110,
B00000000,
B00000000
};

usanidi utupu ()
{
disp.createChar(0, tabasamu); // tengeneza ishara
disp.anza(20, 4); // anzisha onyesho la mistari 4 ya herufi 20
disp.print("Tabasamu");
disp.write(byte(0)); // chapisha ishara
}

kitanzi utupu()
{ }

Hapa kuna mfano wa programu inayoonyesha alfabeti ya Kirusi.

// Pato la alfabeti ya Kirusi
#pamoja na

LiquidCrystalRus disp(6, 7, 2, 3, 4, 5); // tengeneza kitu

usanidi utupu ()
{
disp.anza(20, 4); // anzisha onyesho la mistari 4 ya herufi 20
disp.print("abvgdeezhziyklmnoprst");
disp.print("ABVGDEYOZHIYKLMNOPRST");
disp.print("ughhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");

Jamii:. Unaweza kualamisha.