Povezovanje LCD 1602 z Arduinom: opis, značilnosti, navodila, značilnosti, problemi in njihove rešitve

Vsak radijski amater po določenem številu preprostih ohrovtov doseže cilj konstruirati nekaj veličastnega pri uporabi senzorjev in gumbov. Bolj zanimivo je prikazati podatke kot vrata monitorja. Ampak potem se postavlja vprašanje: kateri zaslon izbrati? In na splošno, kako ga povezati, kaj je potrebno za povezavo? Odgovori na ta vprašanja bodo obravnavani v tem članku.

LCD 1602

Med številnimi možnostmi med zasloni, je zaželeno, da se na zaslonu kontrolerja HD4478 prikaže zaslon LCD1602. Ta zaslon je v dveh barvah: bela črka na modrem ozadju, črne črke na rumenem ozadju. Priključitev LCD 1602 na Arduino tudi ne bo povzročila nobenih težav, saj je vgrajena knjižnica in ni potreben dodaten prenos. Prikazi se razlikujejo ne samo po ceni, ampak tudi po velikosti. Najpogosteje jih uporabljajo radioamaterji 16 x 2 oz. 2 vrstici s 16 znaki. Obstaja pa tudi 20 x 4, kjer so 4 vrstice po 20 znakov. Dimenzije in barva nimata nobene vloge pri povezovanju zaslona lcd 1602 z Arduno, povezujejo se na enak način. Kot gledanja je 35 stopinj, odzivni čas prikaza je 250 ms. Deluje lahko pri temperaturah od -20 do 70 stopinj Celzija. Pri delu uporablja 4 mA za zaslon in 120 mA za osvetlitev ozadja.


Kje se uporablja?

Ta zaslon ima svojo priljubljenost ne samo v radioamaterjih, ampak tudi v velikih proizvajalcih. Na primer, tiskalniki, aparati za kavo uporabljajo tudi LCD1602. To je posledica njegove nizke ravnicena je vredna tega prikaza na kitajskih jardov 200-300 rubljev. Nakup je tam, kot v naših trgovinah, oznake na tem zaslonu so zelo visoke.

Povezovanje z Arduino

Povezovanje LCD 1602 z Arduino Nano in Uno se ne razlikuje. Zaslon lahko deluje v dveh načinih: 4 bitov in 8. Ko delate z 8-bitnimi in mlajšimi in starejšimi bitovi, in s 4-bitnim samo juniorom. Ni posebnega smisla za delo z 8-bitnim, saj bo dodan še priključek za še 4 kontakte, kar ni primerno, saj hitrost ne bo višja, meja posodobitev zaslona - 10-krat na sekundo. Na splošno se veliko kablov uporablja za povezavo lcd 1602 z Arduinom, kar prinaša nekaj neprijetnosti, vendar obstajajo posebne šilde, vendar o tem kasneje. Slika prikazuje povezavo zaslona z Arduino Uno:


Primer programske kode:

# vključi //Dodaj zahtevano knjižnico
LiquidCrystal lcd (765 432); //(RS, E, DB4 DB5 DB6 DB7)

void setup () {
lcd.bg (16 2); //Nastavite velikost zaslona

lcd.setCursor (0 0); //Nastavite kazalec na začetek prve vrstice
lcd.print ("Zdravo, svet!"); //Izhodno besedilo
lcd.setCursor (0 1); //Namestite kazalko na začetek vrstice 2
lcd.print ("fb.ru"); //Izpišite besedilo
}

void loop () {
}

Kaj naredi koda? Prva naloga je povezati knjižnico za delo z zaslonom. Kot je že bilo omenjeno, je ta knjižnica že del Arduino IDE in ni potrebno dodatno nalaganje in namestitev. Določite kontakte, ki so povezani z naslednjima: RS, E, DB4 DB5 DB6 DB7. Po tem se določi velikost zaslona. Ker delamo na različici s 16 znaki in dvema vrsticama, pišemo takopomena. Kazalko postavimo na začetek prve vrstice in izpišemo prvo besedilo Hello World. Nato postavite kazalko na drugo vrstico in prikažite ime mesta. To je vse! Upoštevana je bila povezava lcd 1602 z Arduino Uno.


& lt; script type = "text /javascript" & gt;
lahko blockSettings2 = {blockId: "R-A-271049-5", renderTo: "yandex_rtb_R-A-70350-39", async:! 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings2.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings2)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");

Kaj je I2C in zakaj je potreben?

Kot je bilo že omenjeno, povezava zaslona zajema veliko stikov. Na primer, pri delu z več senzorji in LCD-prikazovalnikom 1602 stiki morda ne bodo dovolj. Pogosto radioamaterji uporabljajo različice Uno ali Nano, kjer ni veliko stikov. Potem so ljudje prišli do posebne šilde. Na primer, I2C. Omogoča povezavo zaslona s samo 4 stiki. To je dvakrat manj. Modul I2C se prodaja ločeno, kjer ga je potrebno spajati in že spajkati na LCD zaslon 1602.

Priključitev preko modula I2C

Priključitev LCD 1602 na Arduino Nano z I2C zavzema malo prostora, samo 4 kontakti: ozemljitev, moč in 2 izhoda za prenos podatkov. Napajanje in ozemljitev sta povezana na 5V in GND na Arduino. Obstajata dva kontakta: SCL in SDA sta povezana z analognimi zatiči. Na sliki si lahko ogledate primer povezovanja lcd 1602 z arduino z modulom I2C:

Programska koda

Če delate z zaslonom brez modulabilo je potrebno uporabiti samo eno knjižnico, nato pa za delo z modulom potrebujemo dve knjižnici. Eden od njih je že v Arduino IDE-Wire. Še eno knjižnico, LiquidCrystal I2C, je treba prenesti ločeno in namestiti. Če želite namestiti knjižnico Arduino, morate vsebino prenesenega arhiva prenesti v korenski imenik knjižnic. Primerna koda, ki uporablja I2C:


& lt; script type = "text /javascript" & gt;
lahko blockSettings3 = {blockId: "R-A-271049-6", renderTo: "yandex_rtb_R-A-70350-44", async:! 0};
if (document.cookie.indexOf ("abmatch =") & gt; = 0) blockSettings3.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings3)}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");
# vključi
# vključi
LiquidCrystal_I2C lcd (0x27162); //Namestite zaslon
void setup ()
{
lcd.init ();
lcd.backlight (); //vklopite osvetlitev zaslona
lcd.print ("FB.ru");
lcd.setcursor (8 1);
lcd.print ("LCD 1602");
}
void loop ()
{
//Nastavite kazalec na drugo vrstico in ničelni znak.
lcd.setCursor (0 1);
//Prikazujemo število sekund od začetka arudui
lcd.print (millis () /1000);
}

Kot lahko vidite, je koda skoraj enaka.

Kako dodati svoj lik?

Težava pri teh zaslonih je, da ni podprta za cirilske črke in simbole. Na primer, potrebujete znak za prenos zaslona, ​​da ga lahko prikaže. Zaslon vam omogoča, da ustvarite do 7 vaših znakov. Predstavljajte si tabelo:

0 0 0 1 0
0 0 0 0 1
1 1 0 0

Če 0 - ni nič, če je 1 pobarvano območje. V zgornjem primeru si lahko ogledate ustvarjanje smeška nasmejanega nasmeha. Na primer, program Arduino bo izgledal takole:

#include
#include //Potrebujemo knjižnico
//Bitmap maska ​​nasmeh
byte smile
=
{
B00010
B00001
B11001
B00001
B11001
B00001
B00010
};
LiquidCrystal lcd (765 432); //(RS, E, DB4 DB5 DB6 DB7)

void setup () {
lcd.bg (16 2); //Nastavite velikost zaslona

lcd.createChar (1 nasmeh); //Ustvari znak na številko 1

lcd.setCursor (0 0); //Postavimo kazalec na začetek vrstice 1
lcd.print ("1"); //Odstrani smeška (simbol pod številko 1) - "1"
}

void loop () {
}

Kot lahko vidite, je bila ustvarjena bitna maska. enako kot tabela. Ko je izdelan, ga lahko prikažete kot spremenljivko na zaslonu. Ne pozabite, da lahko v pomnilnik shranite samo 7 znakov. Načeloma je to dovolj. Če želite na primer prikazati znak v stopinjah.

& lt; skript async = "//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

& lt; skript & gt; (adsbygoogle = window.adsbygoogle || []). push ({});

Težave, s katerimi zaslon morda ne bo deloval

Obstajajo primeri, ko zaslon ne deluje. Vključi se na primer, vendar ne prikaže znakov. Ali sploh neje vklopljen. Najprej preverite, ali ste pravilno povezali stike. Če ste uporabili povezavo lcd 1202 z Arduino brez I2C, je zelo enostavno zapletiti se v žice, kar lahko povzroči napačno delovanje zaslona. Prav tako se prepričajte, da je kontrast zaslona povečan, saj tudi z minimalnim kontrastom ni viden, ali je LCD 1602 vključen ali ne. Če to ne pomaga, je morda težava v spajanju kontaktov, to je pri uporabi modula I2C. Pogost razlog, zakaj zaslon morda ne deluje, je, da je naslov I2C napačno nastavljen. Dejstvo je, da je treba številne proizvajalce, ki lahko dajo drug naslov, popraviti tukaj:


& lt; script type = "text /javascript" & gt;
lahko blockSettings = {blockId: "R-A-70350-45", renderTo: "yandex_rtb_R-A-70350-45", async:! 0};
if (document.cookie.indexOf ("abmatch ="))> = 0) blockSettings.statId = 70350;
Funkcija (a, b, c, d, e) {a [c] = a [c] || [], a [c] .push (funkcija () {Ya.Context.AdvManager.render (blockSettings}), e = b.getElementsByTagName ("script") , d = b.createElement ("script"), d.type = "text /javascript", d.src = "//an.yandex .ru /system /context.js ", d.async =! 0e.parentNode.insertBefore (d, e)} (ta, ta.dokument," yandexContextAsyncCallbacks ");
LiquidCrystal_I2C lcd (0x27162);

V oklepajih lahko vidite dve vrednosti, 0x27 in 162 (16 2 je velikost zaslona, ​​0x27 pa je enak naslovu I2C). Namesto teh vrednosti lahko poskusite postaviti 0x37 ali 0x3F. Drug razlog je preprosto napačen LCD 1602. Glede na to, da je skoraj vse za Arduino na Kitajskem, ne morete biti prepričani 100%, da kupljeni artikel ni zakon.

Prednosti in slabosti LCD 1602

Upoštevajte prednosti in slabosti prikaza LCD 1602. Pros
  • Cena. Ta modul lahko kupite po zelo ugodni ceni v kitajskih trgovinah. Cena je200-300 rubljev. Včasih se prodaja tudi z modulom I2C.
  • Enostavna povezava. Verjetno nihče zdaj ne poveže LCD 1602 brez I2C. In s tem modulom, povezava traja le 4 kontakte, noben "pajek" iz žic ne bo.
  • Programiranje. Zahvaljujoč pripravljenim knjižnicam je s tem modulom enostavno delati, vse funkcije so že registrirane. In če morate dodati svoj simbol, traja le nekaj minut.
  • Cons
  • Med uporabo tisočih radioamaterjev niso bile odkrite nobene večje slabosti, vendar obstajajo primeri nakupa poroke, saj se uporabljajo predvsem kitajske prikazne različice.
  • Ta članek obravnava povezavo LCD 1602 z Arduinom, kot tudi primere programov za delo z zaslonom. Res je eden najboljših v svoji kategoriji, ne samo zato, ker je za svoje projekte izbral na tisoče radioamaterjev!

    Sorodne publikacije