az internet ablakok Android

LCD kijelzők programozása I2C az Arduino számára. LCD LCD LCM1602 csatlakoztatása I2C-vel Arduino-hoz

Talán az egyik legnépszerűbb képernyők a piacon. Aláírt a népszerű HD44780U vezérlő. A modell nevétől következik, hogy a képernyő két 16 karakterből áll. Az orosz nyelv támogatása ebben speciális modell nem.

Az SH2S adatbusz lehetővé teszi, hogy két vezeték csatlakozzon akár 127 eszközhöz, és egyszerre. Ezt az I2C-t a PCF8574T chipen hajtják végre.

Kapcsolat diagram:

Kék dolog - változó ellenállás, lehetővé teszi a képernyő kontrasztjának beállítását.

A bal oldali jumper - felelős a képernyő háttérvilágításáért.

A 4 érintkező blokk az Arduino-hoz van csatlakoztatva:

GND - GND.
VCC - 5V.
SDA - A4 (ha Arduino Mega, majd D20-ig)
SCL - A5 (ha Arduino Mega, akkor D21-ig)

Könyvtár

Vázlat

A kijelzőnek lehet egy másik IIC címe, a 0x27 helyett 0x3f. A cím pontos meghatározásához az I2C eszközök szkennerjét használhatja.

#Inlude. #Inlude. // Állítsa be az LCD-címet 0x27, 16 karakter, 2 sor Folyadékkristal_i2c LCD (0x27, 16, 2); Void Setup () (LCD.INIT (); // inicializálja a képernyőt // kapcsolja be a háttérvilágítást lcd.backlight (); // Telepítse a szöveget, amellyel a szöveg jelenik meg. LCD.SetCursor (2, 0); // visszavonja a karakterláncot 1 LCD.Print ("Hello, World!"); // Hasonlóképpen jelenítse meg a második karakterláncot LCD.SetCursor (1, 1); LCD.Print ("www.site"); ) Void Loop () ()

Az LCD I2C modul lehetővé teszi, hogy a karakter kijelzőjét az Arduino-táblára két jelhuzalból csatlakoztassa.

Alkatrészek (Kínában vásárolnék):

. Kezelési díj

. Csatlakozó vezetékek

Alapvető előírások:

Kijelző: 16x02 vagy 20x04 szimbólum
. Megvilágítás: kék fehér szimbólumokkal
. Kontraszt: konfigurált potenciométer
. Tápfeszültség: 5V
. Interfész: I2C.
. I2C cím: 0x27
. Méretek: 82mm x 35mm x 18mm

Csatlakozzon az Arduino-hoz.

A modul négy pólusú 2,54 mm-es szabványos csatlakozóval van felszerelve

SCL.: Soros óra soros óra

SDA: Szekvenciális adatvonal (soros adatok)

VCC.: "+" hatalom

GND.: "-" Erő

Az I2C interfészért felelős következtetések arduino táblák A különböző vezérlők alapján különböznek

A modullal való együttműködésnek telepítenie kell a LibraryStal_i2c1602v1 könyvtárat

Töltse le, kicsomagolja és dobja ki a könyvtárak mappáját az Arduino mappában. Abban az esetben, ha a könyvtár hozzáadásakor az Arduino IDE nyitva állt, újraindítja a környezetet.

Menjen közvetlenül a vázlatba. BAN BEN ez a példa Visszavonja a szabványos "Hello, World!" És közösségünk címére.

minta programkód:

#Inlude. #Inlude. Folyadékkristal_i2c LCD (0x27,16,2); / * Állítsa be a kijelző címét és dimenzióját. Ha az LCD I2C modult 20x04-es kijelzővel használja, a kód nem módosítható, csak a megfelelő dimenziót kell beállítani * / Üres. beállít. () (LCD.Init (); // inicializációs LCD. lcd.backlight (); // kapcsolja be a háttérvilágítást // A kurzor az első sor elején van LCD.Print ("Hello, World!"); // megjeleníti a szöveget LCD.SetCursor (0, 1); // Telepítse a kurzort 2 sor elején lcd.print ("webhely"); // mondani szöveg) érvénytelen hurok. () { }

Saját karakterek létrehozása

A kitalált szöveg megkötésével az angol ábécé betűit a kijelzőn belüli memóriájába varrják, és nincsenek problémák velük. De mit kell tennie, ha a kívánt szimbólum Nincs szabályozó a memóriában?

Nem baj, a kívánt szimbólum kézzel történhet. Ez a módszer Részben a 7 karakteres korlátozás segít megoldani a kimeneti problémát.

A cella, a vizsgált kijelzőkben 5x8 pont felbontása. Minden, amit a szimbólum létrehozásának feladata csökkent, hogy egy kicsit maszkot írjon, és egy olyan helyen, ahol van olyan helyeken, ahol van egy pont és noliki, ahol nincs.

A fenti példában rajzoljon egy smiley-t.

minta programkód:

// az Arduino IDE 1.0.5-en tesztelték // Adja hozzá a szükséges könyvtárakat #Inlude. #Inlude. // bit maszk szimbólum mosoly Bájtos mosoly \u003d (B00010, B00001, B11001, B00001, B11001, B00001, B00010,); Folyadékkristal_i2c LCD (0x27,20,4); // Állítsa be a kijelző címét és dimenzióját. Üres. beállít. () (LCD.Init (); // inicializációs LCD. lcd.backlight (); // kapcsolja be a háttérvilágítást // hozzon létre egy karaktert a 0 számon Lcd.createchar (1, mosoly); lcd.setcursor (0, 0); // Állítsa be a kurzort a Top 1 sorba lcd.print ("\\ 1"); // megjelenítési hangulatjelek (szimbólum az 1. számon) - "\\ 1" ) Void hurok. () { }

Program a karakterek könnyű létrehozásához

A megjegyzésekben a Közösség résztvevője a szimbólumgenerátorhoz kapcsolatot dobott

Itt van jó üzlet Chip ellenállás következő eszköz a tanuláshoz és az alkalmazásokhoz hasznos eszközök. Ez a készülék kiderült, hogy élesítette az LCD kijelzőt, amely a HD44780 vezérlőt futtatja, 4 bites üzemmódban. Ebből a célból egy mikrokircit van telepítve a táblára, amely az I2C busz-átalakító párhuzamos 8 bites porthoz.

A díj elvált, oly módon, hogy az LCD kijelzővel azonnal zúzódhat. A bemenet tápellátást és I2C-sorokat kínál. A tábla azonnal telepítette az SCL-t és az SDA vonalakat, a potenciométert a kontraszt és a kijelző erejének beállításához.

Jumper a jobb oldalon bekapcsolja / leválasztja a háttérvilágítást. Ezután egy tesztelővel fegyveres volt a következő lemezen. A modul tanulmányozása után kiderült. P3 A háttérvilágítás kezelése. Ha a jumper be van állítva, akkor 1 bekapcsolja a háttérvilágítást, és 0 kikapcsol. Amikor a jumper eltávolításra kerül, a háttérvilágítás mindig ki van kapcsolva. Ezután úgy döntöttek, hogy kiegészíti az Axlib könyvtárat az I2C busz (szoftverfejlesztés) és a PCF8574 Microcircuit kezeléséhez. Dióhéjban, hogyan működik a modul. A párhuzamos bájt megjelenítéséhez mikrokircuit címet kell küldenie az I2C buszhoz (ez megegyezik a 0x4E-vel. A címet a fedélzeten átkapcsolhatja, és megváltoztathatja a három fiatalabb cím kibocsátásának értékét), Ezután az ACK fogadása után az adatbájt elküldésre kerül. Miután a chip reagál az ACK-val, a bájt megjelenik a chip párhuzamos portján. Az LCD kijelző vezérléséhez vettem az Axlib könyvtár funkcióit, és egy kicsit újraterveztem őket az I2C buszon. #Inlude. #Inlude. #Inlude. #Inlude. #Define add 0x4e // mikrocircuit cím / * LCD mikrokrokuit RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 A P3 lábán Csatlakoztassa a háttérvilágítást. 1 incl, 0 Ki. * / // Adatkimenet com | \u003d 0x04; // e egy egység Pcf8574_byte_out (com, add); // Adatkimenet Com & \u003d 0xfb; // e nulla Pcf8574_byte_out (com, add); // Adatkimenet ) Void init (üresség) (_delay_ms (30); Com (0x30); _delay_us (40); Com (0x30); // átmenet 4 bites módra _delay_us (40); // késedelem a parancs végrehajtásához Com (0x30); // átmenet 4 bites módra _delay_us (40); // késedelem a parancs végrehajtásához Com (0x20); // átmenet 4 bites módra _delay_us (40); // késedelem a parancs végrehajtásához Com (0x20); // A paraméterek beállítása Com (0x80); // A paraméterek beállítása Com (0x00); // Kapcsold ki a kijelzőt Com (0x80); // Kapcsold ki a kijelzőt Com (0x00); // Tisztítsa meg a kijelzőt Com (0x10); // Tisztítsa meg a kijelzőt Com (0x00); Com (0x60); // Telepítse az adatbeviteli módot Com (0x00); Com (0xc0); // kapcsolja be a kijelzőt a kiválasztott kurzorral ) Void Char_out (byte adatok) (byte Data_H \u003d ((Data & 0xf0) + 0x09); byte data_l \u003d ((adatok // Régebbi 4 bites adatátvitel adat_h | \u003d 0x04; pcf8574_byte_out (Data_H, add); // Senior 4 bit átadása // Senior 4 bit átadása // Junior 4 bit átadása // Junior 4 bit átadása // Junior 4 bit átadása ) Void STR_OUT ((* STR)! \u003d "\\ 0") (Char_out (* STR); str ++;)) int fő (üresség) (init (); str_out ("epґbet mґp!"); Míg (1 ) ()) Valójában mi történik itt. Az I2C és a PCF8574 első csatlakoztatási könyvtárai. Már írtam az i2c-ről, így ismét meg fogom vágni, de elmondom Önnek a PCF8574.H. A könyvtár csak három funkciót tartalmaz.
Byte pcf8574_test (byte add) (BYTE Ask \u003d Ack; add & \u003d 0xfe; I2C_START (); ask \u003d i2c_send_byte (add); i2c_stop (); Az első funkciót írták, hogy ellenőrizzék a busz elérhetőségét a buszon. Elvben alkalmazható a gumiabroncson található bármely eszköz keresésére. A funkció a kívánt eszköz címét veszi igénybe, és ha válaszol, nullát ad vissza. Ha nincs eszköz ezzel a címmel a buszon, akkor visszaadja a készüléket.
BYTE PCF8574_BYTE_OUT (BYTE AKCK \u003d ACK; add & \u003d 0xfe; I2C_START (); ask \u003d i2c_send_byte (add); ha (! Kérdés) Kérdés \u003d I2C_SEND_BYTE (adatok); i2c_stop (); Ez a funkció már élesedett tiszta a chip alatt. Argumentumként a bájtokat továbbítják a gumiabroncsra és a microcircuit címére. A funkció először kéri a chipet a címre, majd elküldi a bájtokat. Ha a chip kapott bájt és válaszol ACK, a függvény befejezi dolgozik mikroáramkörös és vissza nullára, mint a sikeres csomag bájt. A chip ebben az időben megjeleníti ezt a bájtot a párhuzamos portban. Ellenkező esetben NACK és visszatérítési egységeket kapunk, az átvitel sikertelen.
BYTE PCF8574_STR_OUT (BYTE * adatok, byte col, byte hozzáadása) (BYTE Ask \u003d Ack; Add & \u003d 0xfe; i2c_start (); ask \u003d i2c_send_byte (add); mert (byte i \u003d 0; Ez a funkció a kísérlethez jön létre. Elfogad egy mutatót az egybájtos adatok tömbjére, ezeknek a bájtoknak és a mikrocirk-címnek. Valójában megpróbálja átadni az összes adatot egy munkameneten keresztül, és nem egy bájtot az ülésen. A funkció működik, de így az LCD kijelző, és nem illik. És most menjünk vissza a fő programba. A könyvtárak csatlakoztatása után előírjuk a chip címét. Ezután hozzon létre három funkciót analógiával az LCD.H. A különbség csak az adatátvitel elvében van.
Void com (byte com) (com | \u003d 0x08; // P3 egységenként, annak érdekében, hogy ne égesse meg a megvilágítást Pcf8574_byte_out (com, add); // Adatkimenet com | \u003d 0x04; // e egy egység Pcf8574_byte_out (com, add); // Adatkimenet Com & \u003d 0xfb; // e nulla Pcf8574_byte_out (com, add); // Adatkimenet } Ez a funkció csak a megjelenítési parancsokat továbbítja. Innen volt egy első sor, amely a 0x08-as parancs logikus hajtásához volt. Ez a BJAKA szükséges annak a ténynek köszönhetően, hogy az LCD kijelző kikötőjéhez közvetlenül az LCD kijelző kikötőjébe kerülünk, hanem az átjátszónkat. Vagyis, ha egy bájtot futtatunk, akkor csak egy kicsit vissza kell vonnunk, akkor addig fogsz adni az előző bájtnak, és újra elküldjük a kikötőnek. Itt van ilyen zavar. A 0x08-ból származó kiegészítés szükséges a harmadik kibocsátás tartós fenntartásához. Emlékezz a háttérvilágításról? Ez az adagolás és a háttérvilágítás bekapcsolása. Miután hívta a buszátviteli funkciót a buszon. Ezt fent írják. Ezután busszal indulunk a busszal a mikrocircuitában. Ezután egy E-egységbe kell helyezni, mint a 0x04-es bájt logikai hozzáadása. Ebben az értelemben az E. nullazás után csak parancsot küldhet a kijelzőre, ha az utasítást érvként átadja. Void init (Void) (_delay_ms (30); // a tápegység utáni szüneteltetés Com (0x30); // átmenet 4 bites módra _delay_us (40); // késedelem a parancs végrehajtásához Com (0x30); // átmenet 4 bites módra _delay_us (40); // késedelem a parancs végrehajtásához Com (0x30); // átmenet 4 bites módra _delay_us (40); // késedelem a parancs végrehajtásához Com (0x20); // átmenet 4 bites módra _delay_us (40); // késedelem a parancs végrehajtásához Com (0x20); // A paraméterek beállítása Com (0x80); // A paraméterek beállítása Com (0x00); // Kapcsold ki a kijelzőt Com (0x80); // Kapcsold ki a kijelzőt Com (0x00); // Tisztítsa meg a kijelzőt Com (0x10); // Tisztítsa meg a kijelzőt Com (0x00); // Telepítse az adatbeviteli módot Com (0x60); // Telepítse az adatbeviteli módot Com (0x00); // kapcsolja be a kijelzőt a kiválasztott kurzorral Com (0xc0); // kapcsolja be a kijelzőt a kiválasztott kurzorral } Ez a funkció csak a kijelző inicializálásával foglalkozik. A parancsok sorozata az LCD kijelzőn található adatlapból származik. Void Char_out (byte adatok) (byte data_h \u003d ((Data & 0xf0) + 0x09); byte data_l \u003d ((adat // Senior 4 bites adatátvitel): 0x04; PCF8574_BYTE_OUT (DATA_H, Adat); // Senior 4 bit átadása DATA_H & \u003d 0XF9; PCF8574_BYTE_OUT (DATA_H, HOZZÁADÁS); // Senior 4 bit átadása Pcf8574_byt_out (DATA_L, HOZZÁADÁS); // Junior 4 bit átadása DATA_L | \u003d 0x04; Pcf8574_byt_out (DATA_L, HOZZÁADÁS); // Junior 4 bit átadása DATA_L & \u003d 0XF9; Pcf8574_byt_out (DATA_L, HOZZÁADÁS); // Junior 4 bit átadása } Ez a szolgáltatás adat LCD adatokat továbbít. Ugyanúgy történik, mint a parancsok, kivéve, hogy a bájt átadása először a vezető félelem, majd a fiatalabb. És a többi ugyanaz. Void STR_OUT (BYTE * STR) (míg ((* STR)! \u003d "\\ 0") (char_out (* str); str ++;))) Nos, ez a funkció tiszta, hogy továbbítsa a kijelzési karakterláncot. Valójában semmi köze a témánkhoz.

Projekt az AtmelStudio 6.2

Irodalom 01.08.15 17:11

A vesszőt kihagyják. Jobb: "Szia, béke!" És ez az eszköz nem csak a HD44780-ra él. A varázsló meghúzása a varázsló részére kerül. A specifikáció szerint az LCD-vezérlő adatrekordja az E. hanyatlására az E. innen az első funkciót egyszerűsítette: Void Com (byte com) (com | \u003d 0x08; // megvilágítás PCF8574_BYTE_OUT (COM | 0x04, Add) ; // adatkimenet PCF8574_BYTETE_OUT (COM, Hozzáadás); // E nulla), és a többi pedig jelentősen kisebb, mint kevesebb. Például a Void Char_out (byte adatok) csak két hívás lesz, és még inkább további változók nélkül is. Az LCD inicializálása az időzítési specifikáció megsértésével történik.

Alexey 02.08.15 19:11

A vessző hiánya miatt a kijelző nem fog szenvedni. Ez az eszköz csak pontosan élesített, mint az ilyen vagy hasonló vezérlővel. De ez a mikrocircuit, amely egy egyszerű kikötői bővítő. Az e-ről egyetértek. További változókra van szükség. Ha a funkcionális argumentumot valamilyen cselekvéssel továbbítja, akkor a hibák előfordulhatnak. Már találkozott. Az inicializálást a megsértés nélkül végzik. A dokumentáció azt mondja, hogy a csapatok között 40 μs szünet kerül. Annak a ténynek köszönhetően, hogy az átvitel az I2C busz mentén halad, és hogy viszont a szoftver és a lassú, majd az időszakok érdeklődéssel járnak. Ha még mindig nem túl lusta, akkor írja meg saját lehetőséget, és küldjön nekem. Közzéteszem. Végül ez az oldal egy amatőr közönség és mindenki számára készült, aki kifejezni véleményüket és az MK életének elképzelését.

Alexey 06.08.15 09:14

Tyamenga-t adtak hozzá a kijelző inicializálásakor a tiszteletreméltó "illetékes" megjegyzésével

Dmitry 06/14/16 21:57

Hello Alexey. Hozzáadhat egy könyvtárat a PCF8574-es munkához a kódgenerátorba.

Alexey 14.06.16 22:32

Gondolkozni fogok rajta.))

ruslan 12/21/16 19:54
Alexey 21.12.16 21:53

Ó igen. Különösen az ASMA kódja. Az uduries értékelni fogja a teljes))))

Pi.sy.
Még akkor is, ha nem nyalogatsz az AFM-t, akkor ott van a PROG a PIC vezérlő alatt. Az AVRS esetében ez "nagyon" hasznos információ? Különösen kezdő))) Nincs semmi a képen, de az AFM-ben a képen és az AVR-ben is más. És a részleteket a munka az LCD kijelzőn, akkor nézd))) Igaz, még mindig írt alá CVAVR de minden csapat lebomlanak és bontjuk a polcokon. De minden esetben döntse el, hol van tisztább azt mondja))) A szerző írja, az olvasó választja.

Gek 04.01.17 12:52

"I2C Microcircuit Cím (alapértelmezés szerint 0x4E"

A 4 bites címek rögzítve vannak,
PCF8574 előtag 0100, és PCF8574A - 0111
A 3-as bitek az A2-A0 chip bemeneteinek állapotától függenek. Alapértelmezés szerint az összes 3 ugráló nyitva van, a mikrocircuit címe a 0111111 értéket használja.
// A2 A1 A0 PCF8574 PCF8574A
// 1 1 1 0x20 0x38
// 1 1 0 0x21 0x39
// 1 0 1 0x22 0x3a
// 1 0 0 0x23 0x3b
// 0 1 1 0x24 0x3c
// 0 1 0 0x25 0x3d
// 0 0 1 0x26 0x3e
// 0 0 0 0x27 0x3f

Alexey 04.01.17 14:27

Valami összezavarodott.
Kivonja a mikrokircuit dokumentációját

0B01001110 Ez 0x4e
Tehát minden itt van. És ha meg kell változtatnod a címet, akkor csak meg kell változtatnod, hogy meghatározzuk.

Yuri 14.12.17 21:26.

Jó nap! És még mindig kódolhatja az LCDgotoxy és az LCDClear funkciót az adapterrel a PCF8574-en.

Alexander 20.05.18 18:14

Jó nap! Hogyan vonja vissza az orosz szöveget.

Alexey 20.05.18 23:04

Ez az olvadék belföldi kijelzője. Ő a cirill memóriájában.

Alexander 21.05.18 04:55.

Jó nap! Írok, ahogy az Atmelstudio 6.2 "ypґbet mґp!" Ami normál megjelenít
És ha írsz "Hello The World!" A nonszenszet megjeleníti. nekem kettő van
Az egyik cirill varrott megjelenítésének lehetőségei. Második kínai.

Alexey 21.05.18 09:22

Megtenném a tesztprogramot a tesztprogram elindításához. Váltson át az összes memóriát a karakterek és címük megjelenítésével. Majd a probléma kilépése. Valószínűleg a karakterasztal nem egyezik meg az ASCII táblával.

Andrey 03.09.18 08:32

Jó napot!

És nem tudod kidobni a Proteus rendszert?

Andrey 03.09.18 10:22

Vagy senki sem ellenőrizte a proteuse-t?

Andrei 03.09.18 10:56

Használt main_init

Paul 30.05.19 23:35

Kíváncsi dolog, a 0x4e cím megjelenítése, és ha ugyanaz a kijelző kapcsolódik az ARDUUX-hoz, akkor a 0x27-es cím

Paul 31.05.19 11:04.

Nagyon köszönöm a munkádat! Rumpáltam az egész internetet, a fenti példák közül egyik sem, kivéve a megszerzett tiédet. A Project Archívumban a Display inicializálási funkcióban nincs megadva a késleltetés _delay_, és nem működik megfelelően

Alexey 01.06.19 09:52

Nos, ez több demonstrációs projekt. Egy jó, az Axlib könyvtár átírja, de figyelembe véve azt a tényt, hogy az STM32 és az STM8 hét mérföldes lépést mozog, az AVR-ben nincs értelme.

Paul 05.06.19 12:57

Az STM-nek nincs dip-burkolata, nehezebb nyomtatott áramköri lapokat készíteni. A projektjeimhez, az AVR elegendő a margóval, egy atmega 8-on, amit nagyon jól illeszthetsz

Alexey 05.06.19 15:20

Igen, de mennyi az ATMEGA8 és az STM8S003)))))))))))

Dmitry 07.06.19 00:41.

Hello, Alexey.
Mondd meg nekem, kérlek, hogyan kell olvasni a PCF8574 állapotából?
Külső blokkot akarok készíteni, 8 gpio az I2C buszon keresztül - IT Sam.

Dmitry 07.06.19 17:56.

Én magam válaszolok
A függvény a bájtot tartalmazza - a mikrokrokireak állapota
UINT8_T PCF8574_BYTE_RCV (UINT8_T ADDR)
{
UINT8_T Ask \u003d Ack;
Addr | \u003d 0B01; // Olvas.
UINT8_T adatok \u003d 0;
i2c_start ();
Kérdezd meg \u003d i2c_send_byte (ADDR);
Ha (! Kérdezni) adatokat \u003d i2c_read_byte (NACK);
i2c_stop ();

Visszaadási adatok;
}

Paul 07.06.19 20:37

Mennyibe kerül, 150 rubel, általában a Relyushka árán), és hogyan osztja el a díjakat az STM alatt? A LUT megbízhatatlan, a CNC Freser nem biztos abban, hogy ez lesz (nem próbált)

  • Az FC-113 modul a PCF8574T chip alapján történik, amely 8 bites eltolódási regiszter - az I2C soros gumiabroncsának "expanderje". A mikrocirk ábráján DD1 kijelölve.
  • R1 egy gyors ellenállás az LCD kijelző kontrasztjának beállításához.
  • A J1 Jumper a kijelző háttérvilágításának bekapcsolására szolgál.
  • Következtetések 1 ... 16 A modul csatlakoztatására szolgál az LCD kijelző kimeneteihez.
  • Az A1 ... A3 érintkező platformok szükségesek az eszköz I2C-címének megváltoztatásához. A megfelelő jumperek ülése megváltoztathatja az eszköz címét. A táblázat a címek és a jumperek megfelelőségét mutatja: "0" megfelel a lánc megszakításának, "1" - az állítható jumper. Alapértelmezés szerint az összes 3 jumper nyitott és eszköz címe 0x27.

2 Arduino LCD kijelző kapcsolati sémaaz I2C szerint.

A modul csatlakoztatása az Arduino-hoz az I2C buszhoz szabványos: A modul SDA kimenete az A4 analóg portjához van csatlakoztatva, az SCL kimenet az A5 Arduino analóg portjához. A modul az ARDUINO-tól +5 V feszültséggel működik. Maga a modul a következtetések 1 ... 16 Az LCD kijelzőn 1 ... 16-os következtetésekkel vannak összekötve.


3 Könyvtár munkaaz I2C szerint.

Most szüksége van egy könyvtárra, hogy az LCD-vel dolgozzon az I2C interfészen keresztül. Használhatja például ezt (link a "letöltési minta kód és könyvtár" sorban).

Letöltött archívum Folyadékkristal_i2cv1-.rar. Unzip a mappában "Könyvtárak \\amely az Arduino IDE könyvtárban található.

A könyvtár támogatja az LCD képernyők szabványos funkcióját:

FunkcióCélja
Folyékony kristály () a LiquidCrystal típusváltozót hozza létre, és elfogadja a kijelző beállításait (PIN-számok);
kezdődik () az LCD kijelző inicializálása, paraméterek beállítása (sorok és szimbólumok száma);
egyértelmű () a képernyő tisztítása és a kurzor visszaadása a kezdeti helyzetbe;
itthon () tegye vissza a kurzort a kezdeti helyzetbe;
setcursor () a kurzor behelyezése a megadott pozícióba;
Ír () megjeleníti az LCD-képernyő szimbólumát;
nyomtatás () megjeleníti az LCD képernyő szövegét;
kurzor () megmutatja a kurzort, azaz Underlináció a következő szimbólum ülésen;
nocursor () elrejti a kurzort;
pislogás () villogó kurzor;
noblink () törölje villog;
nodisplay () kapcsolja ki a kijelzőt az összes megjelenített információ mentése közben;
kijelző () kapcsolja be a kijelzőt az összes megjelenített információ mentése közben;
scrolldisplayleft () a kijelző tartalmának görgetése az első pozícióban balra;
scrolldisplayright () a kijelző tartalmának görgetése 1 pozícióban jobbra;
automatikus görgetés () az automatikus szerződések bevonása;
noautoscroll () az automatikus lobok kikapcsolása;
balról jobbra () megadja a szöveg irányát balról jobbra;
jobbról balra () a bal oldali jobb oldali szöveg iránya;
createchar () egyéni szimbólumot hoz létre az LCD képernyőhöz.

4 Vázlat a szöveg kimenethezaz LCD képernyőn I2C buszon keresztül

Nyissa meg a mintát: Fájlminták folyadékkristal_i2c Customchars És egy kicsit megváltoztatja. Visszatérünk egy üzenetet, amelynek végén a villogó szimbólum lesz. A kódex észrevételeiben az összes vázlatos árnyalatokat megjegyzünk.

#Inlude. // Csatlakoztassa a vezetéket #include könyvtárat // Csatlakoztatjuk az LCD #define Printbyte (args) írását (args) könyvtárát; // UINT8_T szív \u003d (0x0.0xa, 0x1f, 0x1f, 0xe, 0x4.0x0); // bit maszk szimbólum "szív" folyadékkristal_i2c LCD (0x27, 16, 2); // Állítsa be a 0x27-es címet az LCD kijelzőn 16x2 void Setup () () () () ( LCD.INIT (); // LCD kijelző inicializálása LCD.backlight (); // kapcsolja be az LCD.CREATECHAR kijelző háttérvilágítását (3, szív); // létrehozza a szívszimbólumot 3 lcd.home () memóriacellában; // tegye a kurzort a bal felső sarokban, a pozícióba (0.0) LCD.! "); // Nyomtassa ki az LCD.SETCURCUROR szöveges karakterláncot (0, 1); // Transfer egy kurzort egy 2 karakterláncra, egy szimbólumra 1 LCD.PRINT ("I"); // Nyomtasson üzenetet egy sor 2 LCD.PRINTBYTE (3); // Nyomtassa ki a "szív" szimbólumot, amely a 3. Cell LCD.Print ("Arduino") található; } void hurok () () () ( // villog az utolsó lcd.setcursor szimbólum (13, 1); // áthelyezési kurzor a 2-es karakterlánchoz, az 1 LCD.Print ("\\ t"); Késedelem (500); LCD.SetCursor (13, 1); // átutalási kurzor a 2. sztringhez, az 1 LCD.PRINT szimbólumhoz (""); Késedelem (500); }

By the way, a csapat által rögzített karakterek lCD.CREATECHAR ();, maradjon a kijelzőn a kijelzőn még a kikapcsolás után is, mert A 1602 MFU-ban rögzítették.

5 Saját karakterek létrehozásalCD kijelzőhöz

Kevésebb részletek, fontolja meg a saját karakterek létrehozásának kérdését az LCD képernyők számára. A képernyőn lévő mindegyik szimbólum 35 pontból áll: 5 szélességben és 7 magasságban (+1 biztonsági mentési karakterlánc). Az adott vázlat 6. sorában 7 számú tömböt állítottunk be: (0x0, 0xa, 0x1f, 0x1f, 0xe, 0x4, 0x0). 16-gazdag számot alakítunk ki binárisban: {00000, 01010, 11111, 11111, 01110, 00100, 00000} . Ezek a számok nem más, mint egy kicsit maszk a szimbólum 7 sorához, ahol "0" jelöli egy fénypontot, és "1" - sötét. Például egy bites maszk formájában megadott szívszimbólum a képernyőn megjelenik az ábrán látható módon.

6 Office LCD képernyőaz I2C buszon

Vázlat Vázlat Arduino-ban. A képernyőn megjelenik a Villogó kurzor felirata a végén.


7 Mi az "for"gumiabroncs I2C.

Bónuszként fontolja meg az "A", "B" és "C" latin karakterek kimenetének ideiglenes diagramját az LCD kijelzőn. Ezek a karakterek a Display ROM-ban érhetők el, és egyszerűen a címük továbbításával jelennek meg. Az ábrát eltávolítjuk az Rs, RW, E, D4, D5, D6 és D7 kijelzőn, azaz. Az FC-113 konverter után az "I2C Párhuzamos busz" után. Azt mondhatjuk, hogy egy kicsit "mélyebb" a "vasat".


Ideiglenes diagram a latin karakterek "A", "B" és "C" az LCD kijelzőn 1602

A diagram azt mutatja, hogy a DVLD ROM-ban található karakterek (lásd: 9.11 adatlap, az alábbi hivatkozás) két ghee kerül továbbításra, amelyek közül az első a táblázat oszlopának táblázatát határozza meg, és a második a vonalszám. Ugyanakkor az első fronton "megragad" adatokat E. (Engedélyezés) és vonal Rs. (Regisztráció kiválasztása, Regisztráció kiválasztása) logikai egység állapotában van, ami adatátvitelt jelent. Az RS vonal alacsony állapotállapota azt jelenti, hogy az egyes szimbólumok átvitele előtt látjuk az utasításokat. Ebben az esetben a kocsi visszatérési utasításának kódját továbbítják a pozícióba (0, 0) LCD kijelzőn, amint azt a kijelző műszaki leírásának tanulmányozásával is megtudhatja.

És még egy példa. Ezen az idő alatt a diagram megjeleníti a "szív" szimbólum kimenetét az LCD kijelzőn.


Ismét az első két impulzus Engedélyezze Megfelelő utasítások Itthon () (0000 0010 2) - A kocsi visszaküldése a helyzetbe (0; 0) és a második kettő - a memóriacellában tárolt LCD kijelző kimenete 3 10 (0000 0011 2) A "szív" szimbólum (utasítás) lCD.CREATECHAR (3, szív); Vázlat).

LCD kijelzö - Gyakori vendég az Arduino-projektekben. De a kifinomult sémákban problémát okozhat az Arduino portok hiánya miatt, mivel szükség van egy olyan képernyő csatlakoztatására, amely nagyon sok kapcsolattartóval rendelkezik. Kilépés ebben a helyzetben I2C / IIC. Az adapter, amely szinte szabványosítja az Arduino Screen 1602-et az Uno, Nano vagy Mega-fizetésekhez, csak 4 csap. Ebben a cikkben meglátjuk, hogyan lehet csatlakoztatni az LCD-képernyőt az I2C interfésszel, amelyet használhat a könyvtárak, írhat egy rövid vázlatot, és vizsgálja meg a tipikus hibákat.

Folyadékkristályos kijelző (folyadékkristályos kijelző) LCD 1602. Jó választás a karaktervonalak különböző projektekben történő megjelenítésére. Olcsó, különböző módosítások vannak különböző háttérvilágítású színekkel, könnyedén letölthetők a kész könyvtárakat az Arduino vázlatokhoz. A képernyő legfontosabb hátránya azonban az a tény, hogy a kijelzőn 16 digitális következtetéssel rendelkezik, amelyek közül legalább 6 kötelező. Ezért az LCD képernyő használata I2C nélkül komoly korlátozásokat ad az Arduino UNO vagy NANO lapokhoz. Ha a névjegyek hiányoznak, akkor meg kell vásárolnia az Arduino Mega-díjat, vagy mentse a névjegyeket, beleértve a kijelzőt az I2C-n keresztül történő csatlakoztatásával.

Rövid leírás Pins LCD 1602

Nézzük meg az LCD1602 eredményeit közelebb:

A következtetések mindegyike célja:

  1. GND föld;
  2. Táplálkozás 5 V;
  3. A monitor kontrasztjának felszerelése;
  4. Parancs, adatok;
  5. Rögzítési és olvasási adatok;
  6. Engedélyezze;

7-14. Adatvonalak;

  1. Plusz háttérvilágítás;
  2. Mínusz háttérvilágítás.

Műszaki megjelenítési előírások:

  • Szimbólum kijelző típusa, a karakterek betöltése lehetséges;
  • Neonfények;
  • HD44780 vezérlő;
  • 5V tápfeszültség;
  • Formátum 16x2 karakter;
  • Működési hőmérséklet -20CD-tól + 70 ° C-ig, tárolási hőmérséklet-tartomány -30 ° C és +80 között;
  • A látószög 180 fok.

LCD csatlakozó áramkör az Arduino fórumon I2C nélkül

A Standard Monitor Connection Diagram közvetlenül az Arduino Microcontroller I2C nélkül a következő.

A kapcsolódó kapcsolatok nagy száma miatt előfordulhat, hogy nincs elegendő hely a kívánt elemek rögzítéséhez. Az I2C használata csökkenti a huzalok számát 4, és a megszállt csapok legfeljebb 2-ig.

Hol lehet megvásárolni az LCD képernyőket és pajzsokat az Arduino számára

Az LCD-képernyő 1602 (és 2004 opció) nagyon népszerű, így könnyen megtalálhatja mind a belföldi online áruházakban, mind a külföldi helyeken. Íme néhány link a legmegfelelőbb lehetőségekhez:

LCD1602 + I2C modul kék képernyővel, kompatibilis az Arduino-val Egyszerű LCD1602 kijelző (zöld háttérvilágítás) olcsóbb, mint 80 rubel Nagy képernyő LCD2004 I2C HD44780 az Arduino (kék és zöld háttérvilágítás)
1602 kijelző ICIC adapterrel és kék háttérvilágítással Egy másik lehetőség LCD1602 I2C I2C modullal Port IIC / I2C / TWI / SPI adapter modul 1602 képernyőjén, kompatibilis az Arduino-val
Kijelző RGB háttérvilágítással! LCD 16 × 2 + billentyűzet + buzzer pajzs az Arduino számára Shield az Arduino-hoz gombokkal és képernyővel LCD1602 LCD 1602 LCD kijelző 3D nyomtatóhoz (Smart Controller for ramps 1.4, LCD 20 × 4), SD és microSD Cardrider modul

Az I2C protokoll leírása

Mielőtt megvitatta az Arduino kijelzőn az I2C-adapteren keresztül, beszéljünk az I2C protokollról.

I2C / IIC.(Inter integrált áramkör) az eredetileg létrehozott protokoll, amely az integrált áramkörök kommunikációját az elektronikus eszközön belül kommunikálja. A fejlesztés a Philips-hoz tartozik. Az I2C protokoll egy 8 bites busz használatán alapul, amelyre szükség van a blokkok kontrollelektronikájában és a címzési rendszer kommunikálásához, amely ugyanazon vezetékekkel kommunikálható több eszközzel. Egyszerűen átadjuk az adatokat, majd egy másik eszközt, hozzáadjuk a kívánt elem azonosítóját az adatcsomagokhoz.

A legegyszerűbb I2C-séma tartalmazhat egy meghajtóeszközt (leggyakrabban ez egy Arduino mikrokontroller) és több rabszolgát (például LCD kijelzőt). Minden eszköznek van egy címe a 7-től 127-ig terjedő tartományban. Két eszköz ugyanazzal a címen, amely egy rendszerben nem lehet.

Az Arduino hardver szinten támogatja az I2C-t. Az A4-es és A5 PIN-kódok segítségével csatlakozhat az eszközök ehhez a protokollhoz.

Az I2C-ben számos előnyt választhat:

  • Működés esetén csak 2 sor szükséges - SDA (adatvonal) és SCL (szinkronizálási vonal).
  • Nagyszámú meghajtóeszköz csatlakoztatása.
  • A fejlesztési idő csökkentése.
  • A teljes eszközkészlet vezérléséhez csak egy mikrokontroller szükséges.
  • Az egy buszhoz csatlakoztatott mikrokrokiák lehetséges száma csak a maximális kapacitásra korlátozódik.
  • Nagyfokú adatbiztonság miatt az áramkörbe ágyazott túlterhelt burst speciális szűrője miatt.
  • Egyszerű eljárás a feltörekvő kudarcok diagnosztizálására, a gyors hibát.
  • A gumiabroncs már be van építve az Arduinoba, így nem kell további buszfelületet fejlesztenie.

Hátrányok:

  • Van egy kapacitív korlátozás a vonalon - 400 pf.
  • Az I2C-vezérlő nehéz programozása Ha a buszon több különböző eszköz van.
  • Számos eszközzel a hiba lokalizálásának nehézsége akkor következik be, ha az egyikük hibásan állítja be az alacsony szint állapotát.

I2C modul az LCD 1602 Arduino számára

Az I2C-kijelző leggyorsabb és legkényelmesebb módja az Arduino-ban az Arduino-ban a beépített támogatási protokoll megvásárlása. De nincs ilyen képernyők sok hatással, hogy nem olcsóak. De a különféle szabványos képernyők már hatalmas összeget jelentenek. Ezért a leginkább kedvezőbb és legnépszerűbb opció egy külön I2C modul vásárlása és használata - olyan adapter, amely így néz ki:

A modul egyik oldalán látjuk az I2C - Föld, az étkezés és a 2 adatátvitel következtetéseit. Egy másik adapterrel látjuk a külső tápcsatlakozókat. És természetesen sok láb van a táblán, amelynek segítségével a modul forrasztja a képernyő szokásos kimeneteit.


Az I2C kimeneteket az Arduino-kártya csatlakoztatására használják. Ha szüksége van, összekapcsolunk külső táplálkozást egy összehúzódásra. A beépített vágási ellenállás használatával konfigurálhatjuk az egyéni kontrasztértékeket J

A piacon megtalálható LCD 1602 modulok már forrasztott adapterekkel, azok használatuk leginkább érzékeny. Ha külön adaptert vásárolt, akkor a modulra kell előzetesen forrasztani.

Az LCD-képernyő csatlakoztatása Arduino-hoz az I2C-n keresztül

Arduino, kijelző, csatorna, összekötő vezetékek és potenciométer szükséges a kapcsolathoz.

Ha speciális különálló I2C adaptert használ, először forrasztja a képernyőmodulba. Nehéz elvégezni a hibákat, akkor vezethet ilyen rendszert.


Az I2C-támogatott folyadékkristályos monitor négy vezetékkel csatlakozik a táblához - két adathálózat, két vezeték a tápegységhez.

  • A GND kimenet csatlakozik a GND-hez a táblán.
  • VCC kimenet - 5V.
  • Az SCL csatlakozik az A5 tűhöz.
  • Az SDA csatlakozik a Pina A.-hez.

És ez minden! Nincs olyan huzalok, amelyekben nagyon könnyű összezavarni. Ugyanakkor az I2C-jegyzőkönyv végrehajtásának nehézsége egyszerűen csak a könyvtárakat bízhatja meg.

A könyvtárak az I2C LCD kijelzővel dolgoznak

Az Arduino C LCD 1602 interakciójához az I2C buszon keresztül legalább két könyvtárra van szüksége:

  • Az I2C-vel való munkavégzési könyvtár már elérhető a Standard Arduino IDE programban.
  • A folyadékkristal_i2c.h könyvtár, amely számos parancsot tartalmaz, hogy ellenőrizze a monitort az I2C buszon keresztül, és lehetővé teszi, hogy könnyebb és rövidebb vázlatot készítsen. A könyvtárat a kijelző csatlakoztatása után kell telepítenie, hogy telepítse a folyadékkristal_i2c.h könyvtárat

Miután csatlakozott az összes szükséges könyvtár vázlatához, létrehozunk egy objektumot, és használhatja az összes funkcióját. A teszteléshez vezetjük a következő szabványos vázlatot a példából.

#Inlude. #Inlude. // könyvtári kapcsolat // # tartalmazza // Csatlakoztassa az alternatív könyvtárat a folyadékkristal_i2c LCD (0x27,16,2); // jelölje meg az I2C-címet (a leggyakoribb értéket), valamint a képernyő paramétereit (az LCD 1602 - 2 sor 16 karakteres, mindegyik // liquidcrystal_pcf8574 LCD (0x27); // opció a PCF8574 Void beállításhoz könyvtár () (LCD.Init (); // az LCD.backlight () kijelző inicializálása; // az LCD.SETCursor háttérvilágítás (0,0) csatlakoztatása; // a kurzor beállítása az első LCD elejére. Nyomtatás ("Hello"); // Szövegkészlet az első sorban az első sorban LCD.Setcursor (0,1); // A kurzor telepítése a második vonal elejére LCD.PRINT ("Arduinomaster"); // szövegkészlet a második sorban) Void Loop () ()

A folyadékkristal_i2c könyvtár funkcióinak és módszereinek leírása:

  • home () és tiszta () - Az első funkció lehetővé teszi, hogy a kurzort a képernyő elejére visszaküldhesse, a második is, de ugyanakkor eltávolítja a monitoron lévő összeset.
  • Írás (CH) - Lehetővé teszi, hogy egyetlen CH szimbólumot adjon ki a képernyőn.
  • a kurzor () és a nocursor () - mutatja / elrejti a kurzort a képernyőn.
  • blink () és Noblink () - A kurzor villog / nem villog (ha be van kapcsolva a megjelenítéshez).
  • kijelző () és Nodisplay () - Lehetővé teszi a kijelző csatlakoztatását / letiltását.
  • scrollDisplayLeft () és scrolldisplayright () - görgeti a képernyőt egy balra / jobbra.
  • autoScroll () és Noautoscroll () - Lehetővé teszi az automatikus forgási mód engedélyezését / letiltását. Ebben az üzemmódban mindegyik új karaktert ugyanabban a helyen írják, amelyek korábban a képernyőn íródtak.
  • leftoright () és jobbtoll () - A kimeneti szöveg irányának beállítása - balról jobbra vagy jobbra balra.
  • createChar (CH, BITMAP) - létrehoz egy szimbólumot CH (0 - 7) kóddal a bitmap bitmasse tömb segítségével fekete-fehér pontok létrehozásához.

Alternatív könyvtár az I2C kijelzővel való munkavégzéshez

Bizonyos esetekben, amikor a megadott könyvtárat használja a PCF8574 vezérlőkkel felszerelt eszközökkel, hibák fordulhatnak elő. Ebben az esetben, mint alternatívaként felajánlhatja a LIQUILARCRYSTAL_PCF8574.H. oldalt. Ez kibővíti a folyadékkristal_i2c-t, így a használatával nincs probléma.

I2C LCD kijelző kapcsolati problémák

Ha a vázlat letöltése után nem volt felirat a kijelzőn, próbálja meg a következő lépéseket.

Először is növelheti vagy csökkentheti a monitor kontrasztját. Gyakran szimbólumok egyszerűen nem láthatóak a kontraszt és a háttérvilágítás mód miatt.

Ha ez nem segít, akkor ellenőrizze a helyes névjegyeket, hogy csatlakozzon-e a háttérvilágításhoz. Ha külön I2C adaptert használt, akkor ellenőrizze a kapcsolattartó forrasztás minőségét.

A képernyőn megjelenő szöveg hiányának másik gyakori oka lehet helytelen I2C-cím. Próbálja meg először megváltoztatni a készülék címét a vázlatban 0x27 0x20 vagy 0x3F. A különböző gyártók különböző alapértelmezett címeket varrhatnak. Ha nem segített, futtathatja az I2C szkenner vázlatát, amely megtekintheti az összes csatlakoztatott eszközt, és meghatározza címét az oltás módszerével. Példa vázlat I2C szkenner.

Ha a képernyő továbbra is nem működik, próbálja meg eltüntetni az adaptert és csatlakoztassa az LCD-t a szokásos módon.

Következtetés

Ebben a cikkben áttekintettük az LCD-képernyő használatának alapvető kérdéseit az Arduino komplex projektekben, amikor meg kell mentenünk a szabadrúgást a táblán. Az egyszerű és olcsó I2C adapter lehetővé teszi az LCD-képernyő 1602-et, csak 2 analóg csapot foglal el. Sok helyzetben nagyon fontos lehet. Kényelem díja - az opcionális modul - átalakító és könyvtár használata. Véleményünk szerint, egyáltalán nem a kényelem érdekében, és rendkívül javasoljuk ezt a lehetőséget a projektekben.