Acest articol se bazează pe modul de utilizare a unui modul de interfață I2C pentru conectarea unui afișaj LCD (2x16/20x4) folosind un Arduino. Acest modul vă permite să schimbați numărul de circuite de controler, înlocuind conexiunile de 8 sau 4 biți, necesitând doar 2 intrări (SDA și SCL).

Caracteristici tehnice

Suport display: LCD 16×02/20×04
Dodatkovo: ajustarea contrastului
Tensiunea este plină de viață. 5V
Interfață: I2C
Dimensiuni: 54mm x 19mm x 15mm

Detalii despre modulul de interfață I2C

Un număr mare de contacte de pe controlerele Arduino sunt interconectate și, de multe ori, atunci când diferiți senzori și module se epuizează, este nevoie să le salvați, pentru aceste tipuri de cazuri modulul este rupt, pentru care este posibil un ajutor suplimentar Studiați transmisia peste două contacte (SDA și SCL).

Acum puțin despre modul în sine, despre microcircuitul PCF8574T. Rezistoarele R8 (4.7k) și R9 (4.7k) sunt necesare pentru a trage în sus liniile SDA și SCL, în mod ideal, atunci când două sau mai multe dispozitive sunt conectate prin magistrala I2C, este necesar să trageți în sus numai pe un dispozitiv Da, eu; Voi scrie despre ce mai târziu. Pe placa de transfer sunt trei jumperi (în spatele diagramei puteți vedea că liniile A0, A1, A2 sunt trase în sus prin rezistențele R4, R5, R6), necesare pentru schimbarea adresei dispozitivului, există 8 opțiuni în total. Modificarea adresei face posibilă conectarea a până la opt dispozitive prin magistrala IC2 cu microcircuitul PCF8574T, opțiunea este de a afișa adresa dispozitivului (după schimbarea adresei dispozitivului 0x27); Modulul este echipat și cu un potențiometru R11, cu ajutorul căruia poți modifica și contrastul afișajului LCD.

Există trei grupuri de contacte pentru conectare pe modul:

Grupul Persha:
SCL: linie de ceas (Serial Clock)
SDA: linie de date (Serial Data)
VCC: mâncare „+”.
GND: „-” mâncare

Un alt grup:
VSS: „-” mâncare
VDD: mâncare „+”.
VO: Vividednya keruvannya prin contrast
RS: Selectați înregistrare
RW: Citire/Scriere (modul de scriere atunci când este conectat la masă)
E: Activare (stroboscop în declin)
DB0-DB3: Biți mai tineri pentru interfață
DB4-DB7: Biți înalți de interfață
R: „+” suport de viață
K: „-” suport de viață

Al treilea grup: (un jumper a fost instalat în spatele bătăliilor)
VCC:
O vizualizare LCD:

Conexiuni la Arduino

Detalii necesare:
Arduino UNO R3 x 1 buc.
Display LCD 1602A (2×16, 5V, Albastru) x 1 buc.
Modul de interfață I2C, IIC, TWI pentru LCD x 1 buc.
Sârmă DuPont, 2,54 mm, 20 cm, F-M (femă - masculin) x 1 buc.
Cablu USB 2.0 A-B x 1 buc.

Conexiune:
Mai întâi lipim modulul I2C la afișajul LCD, apoi trebuie să conectăm afișajul la Arduino UNO. Pentru cei care folosesc cabluri DuPont, conexiunile sunt prezentate în tabelul de mai jos.

Pentru a fi mai specific, vă voi mai oferi o diagramă.

Pentru acest experiment trebuie să descărcați și să instalați biblioteca „LiquidCrystal_I2C”. Apoi copiați și inserați acest cod în programul Arduino IDE și atașați-l la controler.

/* Testat pe Arduino IDE 1.6.11 Data testului 15/09/2016. */ #include #include LiquidCrystal_I2C lcd(0x27,16,2); // Setați adresa și dimensiunea afișajului void setup() ( lcd.init(); // Inițializați lcd lcd.backlight(); // Activați iluminarea de fundal lcd.setCursor(0,0); // Instalați cursorul pe cap din primul rând lcd .print("Bună, lume" // Textul afișat lcd.setCursor(0,1) // A plasat cursorul pe al 2-lea rând lcd.print("www.site"); Text afișat) bucla nulă ( ) ( )

Dacă ați făcut totul corect, dar afișajul nu are simbolurile necesare, încercați să măriți contrastul cu potențiometrul.


Posilannya
Încântă-ți biblioteca
Documentatie pentru microcircuit
Documentatie pana la

Cumpărați de pe Aliexpress

Probabil unul dintre cele mai populare ecrane de pe piață. Selecții pe popularul controler HD44780U. Numele modelului indică faptul că ecranul este format din două rânduri a câte 16 caractere fiecare. Acest model special nu are influențe din limba rusă.

Busul de date sh2s vă permite să conectați până la 127 de dispozitive în două moduri și în același timp. Aceste implementări I2C se bazează pe cipuri PCF8574T.

Schema de conectare:

Lucrul albastru este un suport schimbător care vă permite să reglați contrastul ecranului.

Jumper Evil – indică iluminarea de fundal a ecranului.

Un bloc cu 4 contacte este conectat la arduino astfel:

GND - GND
VCC - 5V
SDA - A4 (ca Arduino MEGA, apoi până la D20)
SCL - A5 (Arduino MEGA, apoi până la D21)

Bibliotecă

Schiță

Afișajul poate avea o adresă IIC diferită, în loc de 0x27, poate apărea 0x3F. Pentru a determina cu exactitate adresa, puteți scana rapid dispozitivele i2c cu un scaner.

#include #include // setați adresa ecranului LCD la 0x27, 16 caractere, 2 rânduri LiquidCrystal_I2C lcd(0x27, 16, 2); void setup()(lcd.init(); //Inițializează ecranul //porniți lumina de fundal lcd.backlight(); //Setați poziția în care va fi afișat textul. lcd.setCursor(2, 0); //afișează rândul 1 lcd.print("Bună, lume!"); //un alt rând este afișat în același mod lcd.setCursor(1, 1); lcd.print("www.site"); ) buclă goală () ( )

Adăugând aici la magazinul alimentar, Chip Resistor este un dispozitiv cu vierme pentru instalare și stagnare în dispozitive maro. Acest dispozitiv a fost conceput pentru a fi utilizat cu un afișaj LCD sub controlerul HD44780, în modul pe 4 biți. În acest scop, pe placă este instalat un microcircuit, care transformă magistrala I2C într-un port paralel de 8 biți.

Placa este conectată în așa fel încât să poată fi combinată imediat cu afișajul PK. Linia I2C live este furnizată la intrare. Placa este echipată cu rezistențe pull-up pe liniile SCL și SDA, un potențiometru pentru reglarea contrastului și durata de viață a afișajului în sine.

Jumperul din dreapta clipește/clipește. Apoi, după ce a folosit testerul, a fost pliat un semn. După instalarea modulului s-a dezvăluit că P3îi pasă de lumânări. Ca jumper, 1 aprinde lumina de fundal, iar 0 se stinge. Când jumperul este scos, comutatorul se va opri întotdeauna. În continuare, s-a luat decizia de a completa biblioteca axlib cu funcții de funcționare cu magistrală I2C (implementare software) și funcții pentru alimentare cu microcircuit PCF8574. În două cuvinte, cum funcționează modulul. Pentru a scoate un octet în paralel, pentru care trebuie să trimiteți adresa microcircuitului către magistrala I2C (în mod implicit este 0x4E. Puteți schimba adresa și prin lipirea unui jumper pe placă și modificarea valorilor) dintre cele trei adrese de biți de ordin inferior), apoi după ce ACK-ul este respins, octetul de date este trimis. După ce microcircuitul răspunde cu ACK, octetul apare pe portul paralel al microcircuitului. Pentru a controla afișajul PK, am luat funcții din biblioteca axlib și le-am modificat ușor pentru a funcționa cu magistrala I2C. #include #include #include #include #define ADD 0x4E // Adrese de microcircuit /* LCD Chip RS P0 RW P1 EN P2 D4 P4 D5 P5 D6 P6 D7 P7 O lumină este conectată la partea de jos a P3. 1 pe, 0 vik. */ // Videdennya tributuri com | = 0x04; // E la unu pcf8574_byte_out(com, ADD); // Videdennya tributuri com &= 0xFB; // Є la zero pcf8574_byte_out(com, ADD); // Videdennya tributuri) void init (void) (_delay_ms (30); com(0x30); _delay_us(40); com(0x30); // Trecerea la modul pe 4 biți _delay_us(40); // Decuparea la comanda Vikonannya com(0x30); // Trecerea la modul pe 4 biți _delay_us(40); // Decuparea la comanda Vikonannya com(0x20); // Trecerea la modul pe 4 biți _delay_us(40); // Decuparea la comanda Vikonannya com(0x20); // Setarea parametrilor com(0x80); // Setarea parametrilor com(0x00); // Afișare vizibilă com(0x80); // Afișare vizibilă com(0x00); // Şterge afişajul com(0x10); // Şterge afişajul com(0x00); com(0x60); // Setați modul de introducere a datelor com(0x00); com(0xC0); // Porniți afișajul cu cursorul selectat) void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Transferați cei mai semnificativi 4 biți de date_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // Transferați cei mai mari 4 biți // Transferați cei mai mari 4 biți // Transferul celor 4 biți mai tineri // Transferul celor 4 biți mai tineri // Transferul celor 4 biți mai tineri) void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) int main(void) ( init(); str_out("ЁPҐBET MҐP!" ;în timp ce(1) ( ) ) Vlasna, ce se întâmplă aici? De acum încolo putem conecta biblioteci pentru I2C și PCF8574. După ce am scris deja despre I2C, vă voi spune din nou despre asta și vă voi spune despre axa din PCF8574.h. Doar trei funcții au fost adăugate depozitului bibliotecii.
BYTE pcf8574_test(BYTE add) (BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); i2c_stop(); return ask; ) Prima funcție a fost scrisă pentru a verifica prezența dispozitivului pe magistrală. În principiu, ele pot fi folosite pentru a găsi orice dispozitiv care se află în autobuz. Funcția acceptă adresa dispozitivului și dacă se potrivește, devine zero. Dacă nu există niciun dispozitiv cu o astfel de adresă pe autobuz, întoarceți unul.
BYTE pcf8574_byte_out(BYTE data, BYTE add) (BYTE ask = ACK; adăugați &= 0xFE; i2c_start(); ask = i2c_send_byte(add); if(!ask) ask = i2c_send_byte(date); ) Această funcție este deja adaptată acestui microcircuit. Ca argument, un octet este trimis magistralei la adresa microcircuitului. Funcția este de a solicita mai întâi microcircuitul pentru adresa și apoi de a găsi octetul. Dacă microcircuitul a primit un octet și a trimis un ACK, atunci funcția termină de lucru cu microcircuitul și returnează zero, deoarece a trimis un octet. Și microcircuitul scoate acum acest octet în portul său paralel. În caz contrar, NACK este respins și apoi înapoi la unul, transmisia a eșuat.
BYTE pcf8574_str_out(BYTE *data, BYTE col, BYTE adăugare) (BYTE ask = ACK; add &= 0xFE; i2c_start(); ask = i2c_send_byte(add); for (BYTE i=0; i Această funcție este destinată experimentării. Indicatorul primește o serie de date pe un singur octet, numărul de octeți și adresa microcircuitului. Vă rugăm să încercați să transferați toate datele într-o singură sesiune, și nu un octet pe sesiune. Funcția funcționează, dar nu este potrivită pentru afișajul PK. Acum să revenim la programul principal. După conectarea bibliotecilor, scrieți adresa microcircuitului. În continuare, creăm trei funcții similare cu lcd.h. Principiul transferului are mai puțină semnificație.
void com (BYTE com) (com | = 0x08; // P3 la unu, astfel încât comutatorul să ardă pcf8574_byte_out(com, ADD); // Videdennya tributuri com | = 0x04; // E la unu pcf8574_byte_out(com, ADD); // Videdennya tributuri com &= 0xFB; // Є la zero pcf8574_byte_out(com, ADD); // Videdennya tributuri } Această funcție transmite doar comenzile pe afișaj. Primul rând a apărut din completările logice ale comenzii din 0x08. Acest lucru este necesar prin faptul că transmitem octetul nu direct către portul afișajului RK, ci prin repetorul nostru. Dacă am trimis un octet și apoi trebuie să scoatem doar un bit, atunci vă rugăm să acceptați bitul necesar până la ultimul octet și apoi să-l trimiteți din nou la port. Aceasta este problema. Adăugând de la 0x08 este necesară reducerea permanentă a unității la a treia categorie. Îți amintești de lumina lumânărilor? Axa în sine este adăugată și include iluminarea. După aceasta, este apelată funcția de transfer a unui octet către magistrală. S-au scris multe despre ea. Apoi transferăm octetul peste autobuz către microcircuit. Apoi puneți urma în unitatea E, care se face prin adăugarea logică a octetului din 0x04. După ștergerea E. În acest fel, puteți trimite o comandă pe afișaj fără a trece comanda în sine ca argument. void init(void) (_delay_ms(30); // Pauza dupa servirea mancarii com(0x30); // Trecerea la modul pe 4 biți _delay_us(40); // Decuparea la comanda Vikonannya com(0x30); // Trecerea la modul pe 4 biți _delay_us(40); // Decuparea la comanda Vikonannya com(0x30); // Trecerea la modul pe 4 biți _delay_us(40); // Decuparea la comanda Vikonannya com(0x20); // Trecerea la modul pe 4 biți _delay_us(40); // Decuparea la comanda Vikonannya com(0x20); // Setarea parametrilor com(0x80); // Setarea parametrilor com(0x00); // Afișare vizibilă com(0x80); // Afișare vizibilă com(0x00); // Şterge afişajul com(0x10); // Şterge afişajul com(0x00); // Setați modul de introducere a datelor com(0x60); // Setați modul de introducere a datelor com(0x00); // Porniți afișajul cu cursorul selectat com(0xC0); // Porniți afișajul cu cursorul selectat } Această funcție nu face altceva decât să inițialeze afișajul. Secvența comenzilor este preluată din foaia de date de pe afișajul RK. void char_out(BYTE data) ( BYTE data_h = ((data & 0xF0) + 0x09); BYTE data_l = ((data // Transferați cei mai semnificativi 4 biți de date_h |= 0x04; pcf8574_byte_out(data_h, ADD)); // Transferați cei mai mari 4 biți data_h &= 0xF9; pcf8574_byte_out(data_h, ADD); // Transferați cei mai mari 4 biți pcf8574_byte_out(data_l, ADD); // Transferul celor 4 biți mai tineri data_l | = 0x04; pcf8574_byte_out(data_l, ADD); // Transferul celor 4 biți mai tineri data_l &= 0xF9; pcf8574_byte_out(data_l, ADD); // Transferul celor 4 biți mai tineri } Această funcție transmite date RC pe afișaj. Se dovedește la fel ca și comenzile din spatele faptului că octetul este transferat mai întâi cu octetul mai vechi și apoi cu cel mai tânăr. Și reshta la fel. void str_out(BYTE *str) ( while((*str) != "\0") ( char_out(*str); str++; ) ) Ei bine, această funcție este doar pentru transferul rândului pe afișaj. Vlasne până la ai noștri, cei care nu vor primi o sută de cenți.

Proiect pentru AtmelStudio 6.2 

Alfabetizat 01.08.15 17:11

Coma ratată. Așa este: „ALO, SWIT!” Acest accesoriu nu este doar pentru HD44780. Rezistoarele de tragere sunt plasate pe partea de master. Conform specificației, datele sunt înregistrate de controlerul LCD în urma declinului lui E. Se va scrie prima funcție: void com (BYTE com) (com | = 0x08; // comutare pcf8574_byte_out (com | 0x04, ADD); // Date afișate pcf8574_byte_out , ADD);// E la zero) Același lucru poate fi făcut mai puțin. De exemplu, void char_out(BYTE data) va necesita doar două clicuri și mai ales fără modificări suplimentare. Inițializarea LCD-ului a fost dezactivată din cauza specificațiilor de sincronizare nereglementate.

Oleksiy 02.08.15 19:11

Prin absența comei, afișajul nu este afectat. Acest dispozitiv este situat sub afișaj cu același controler sau unul similar. Și axa microcircuitului în sine este într-adevăr o simplă extindere a portului. Bun, sunt destul de bun. Sunt necesare modificări suplimentare. Dacă transmiteți un argument unei funcții folosind logica, pot apărea erori. Am rămas blocat așa. Inițializarea se termină fără a întrerupe timpul. Documentația spune că între comenzi este plasată o pauză de 40 µs. Deoarece transmisia se realizează prin magistrala i2c și aceasta este programată în felul său, atunci trebuie să vă faceți prea multe griji. Dacă tot nu ești leneș, atunci scrie-ți versiunea și trimite-mi-o. O voi publica. Zreshtoyu acest site de întâlniri pentru publicul amator și pielea, oricine doriți, vă poate exprima gândurile și ideile pentru viața lui MK.

Oleksiy 06.08.15 09:14

Adăugarea de timpi la inițializarea afișajului la respectarea „Competent”

Dmitro 14.06.16 21:57

Bună seara Oleksiy. Puteți adăuga o bibliotecă pentru roboți cu PCF8574 la generatorul de cod.

Oleksiy 14.06.16 22:32

ma voi gandi.))

ruslan 21.12.16 19:54
Oleksiy 21.12.16 21:53

Oh, păi. Mai ales codul din ASMI. Inginerii Arduin îl vor aprecia din nou)))

P.C.
Ei bine, nu fi surprins de ASM, programul acolo este scris pentru controlerul PIC. Aceste informații sunt „și mai utile” pentru specialiștii AVR? mai ales pentru oamenii începători))) Nu am nimic împotriva PIC, dar adevărul este că PIC și AVR sunt diferite. Și din drive sunt detalii despre funcționarea afișajului RC, puteți arunca o privire))) Adevărat, am scris și sub CVAVR și toate comenzile pentru sortare și sortare în rafturi. Dacă se întâmplă să ai o urgență, ar trebui să vezi singur ce este scris atât de clar))) Autorul scrie, cititorul colecționează.

GeK 01/04/17 12:52

„Adresele I2C ale microcircuitelor (în mod implicit este 0x4E”)

Cei mai înalți 4 biți ai adresei sunt fixați,
prefixul lui PCF8574 este 0100, iar PCF8574A este 0111
Cei 3 biți mai tineri se află la intrările microcircuitelor A2-A0. Când sunt conectate, toate cele 3 jumperi sunt deschise, indicând adresa microcircuitului, este afișată valoarea 0111111.
// 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

Oleksiy 01/04/17 14:27

Se pare că te-ai încurcat.
Vityag cu documentație pentru microcircuit

0b01001110 ce 0x4E
Deci totul este corect aici. Și dacă trebuie să schimbați adresa, atunci trebuie doar să o schimbați în Define.

Yuri 14.12.17 21:26

O zi plăcută! Și puteți găsi, de asemenea, codul pentru funcțiile lcdgotoxy și lcdclear pentru a lucra cu un adaptor pentru PCF8574.

Oleksandr 20.05.18 18:14

O zi plăcută! Cum scoateți textul în limba rusă?

Oleksiy 20.05.18 23:04

Acesta este un afișaj nou-nouț realizat de MELT. Are alfabetul chirilic conectat în memorie.

Oleksandr 21.05.18 04:55

O zi plăcută! Scriu că aveți un proiect pentru AtmelStudio 6.2 „ЁPҐBET MҐP!” atunci e normal sa vezi
si daca scrii "HELLO SWIT!" scoate la iveală tot felul de prostii. am doua
Variantele de afișaj într-unul sunt scrise în chirilic. un alt chinez.

Oleksiy 21.05.18 09:22

Prefer să scriu un program de testare. Iterează prin toată memoria cu simbolurile afișate și adresa lor. Și atunci vom înțelege care este problema. Cel mai important, tabelul de simboluri nu se potrivește cu tabelul ASCII.

Andriy 03.09.18 08:32

O zi buna!

Îmi puteți trimite o schemă de circuit pentru Proteus?

Andriy 03.09.18 10:22

Ai verificat pe cineva în Proteuse?

Andriy 03.09.18 10:56

Rozіbravsya main_init

Pavlo 30.05.19 23:35

Tsikava bogat, adresele afișajului sunt 0x4E, iar dacă conectați același afișaj la Arduino, atunci adresele sunt 0x27

Pavlo 31.05.19 11:04

Vă mulțumim pentru munca dvs.! Se așteaptă întreruperea întregului Internet din aplicațiile vizate, cu excepția ta, fără a câștiga bani. Un lucru, în funcția de proiect arhivată a inițializării afișajului, întârzierea _delay_ nu este înregistrată și, prin urmare, nu funcționează

Oleksiy 06/01/19 09:52

Ei bine, acesta este mai mult un proiect demonstrativ. Este bine că biblioteca axlib trebuie rescrisă, dar având în vedere că STM32 și STM8 se prăbușesc vertiginos, simțul din AVR nu mai este în aer.

Pavlo 06/05/19 12:57

STM nu necesită pachete DIP, ceea ce facilitează utilizarea altor plăci. Pentru proiectele mele, AVR-ul iese din stoc un Atmega 8 poate găzdui foarte mult

Oleksiy 06/05/19 15:20

Deci, cât costă Atmega8 și stm8s003)))

Dmitro 06/07/19 00:41

Bună, Oleksia.
Spune-mi, cu amabilitate, cum este necesar să citești de la pcf8574 la port?
Vreau să creez un bloc extern, 8 GPIO prin magistrala i2c - asta este.

Dmitro 06/07/19 17:56

Sunt sigur de mine
Funcția rotește octetul - portul portului microcircuitului
uint8_t pcf8574_byte_rcv(adresă uint8_t)
{
uint8_t ask = ACK;
adresa | = 0b01; //CITIT
uint8_t data=0;
i2c_start();
ask = i2c_send_byte(addr);
if(!ask) data = i2c_read_byte(NACK);
i2c_stop();

Datele returnate;
}

Pavlo 06/07/19 20:37

Cât costă, 150 de ruble, pentru prețul unui baston) și cum plătiți pentru STM? LUT nu este de încredere, mașina de frezat CNC nu funcționează, ce pot lua (fără să o încerc)

Ecran LCD- Invitat frecvent al proiectelor Arduino. Totuși, în circuitele pliabile este posibil să avem o problemă cu lipsa porturilor Arduino din cauza necesității de a conecta un ecran, care are o mulțime de contacte. Ieșirea din această situație poate fi I2C/IIC Un adaptor care conectează un ecran Arduino 1602 practic standard la plăcile Uno, Nano sau Mega cu încă 4 pini. Acest articol arată cum puteți conecta un ecran LCD cu o interfață I2C, cum puteți accesa biblioteci, cum puteți scrie un scurt exemplu și cum puteți privi aplicațiile tipice.

Ecran cu cristale lichide LCD 1602 Este prima alegere pentru afișarea șirurilor de simboluri în diferite proiecte. Este ieftin, cu diverse modificări cu diferite culori de iluminare de fundal, puteți crea cu ușurință biblioteci gata făcute pentru schița Arduino. Ale de scurtă durată Tsoogo Ekran є faptul că, afișarea din 16 mai a digiribrus-ului Visnovkiv, cu Yakiki -Ism cel puțin 6. Vicoristanul LCD-ului Tsoogo fără I2C SERYOZHEND la Arduino UNO Poen Nano. Dacă nu există contacte, va trebui să cumpărați o placă Arduino Mega sau să protejați contactele, inclusiv pentru conectarea display-ului prin i2c.

Scurtă descriere a LCD 1602 pini

Să aruncăm o privire mai atentă la tehnologia LCD1602:

Pielea din viță de vie are propriul ei sens:

  1. Pământ GND;
  2. Kharchuvannya 5;
  3. Setarea contrastului monitorului;
  4. Echipa, date;
  5. Scrierea și citirea datelor;
  6. Permite;

7-14. linii de date;

  1. Plus suport;
  2. Iluminare minus.

Specificații afișaj:

  • Tip simbolic de afișare - posibilitatea de a introduce simboluri;
  • iluminare din spate cu LED;
  • Controler HD44780;
  • Tensiune curentă 5V;
  • Format 16x2 caractere;
  • Interval de temperatură de funcționare: -20°С până la +70°С, interval de temperatură de depozitare: -30°С până la +80°С;
  • Lasă-mă să mă uit în jur de 180 de grade.

Schema de conectare a LCD-ului la placa Arduino fără i2C

Schema standard pentru conectarea unui monitor direct la un microcontroler Arduino fără I2C arată astfel.

Datorită numărului mare de contacte care sunt conectate, este posibil să nu existe suficient spațiu pentru a primi elementele necesare. Comutatorul I2C schimbă numărul de săgeți la 4 și numărul de pini ocupați la 2.

De unde să cumpărați ecrane LCD și scuturi pentru Arduino

Ecranul LCD 1602 (și versiunea 2004) este foarte popular, așa că îl puteți găsi cu ușurință atât în ​​magazinele online locale, cât și pe piețele externe. Să aruncăm o privire la opțiunile disponibile:

Modul LCD1602+I2C cu ecran albastru, combinat cu Arduino Un afișaj LCD1602 simplu (iluminare de fundal verde) mai ieftin de 80 de ruble Ecran LCD2004 mare cu I2C HD44780 pentru Arduino (iluminare de fundal albastră și verde)
Display 1602 cu adaptor IIC și lumini albastre O altă versiune a LCD1602 cu un modul I2C lipit Modul adaptor Port IIC/I2C/TWI/SPI pentru ecran 1602, potrivit pentru Arduino
Display cu comutatoare RGB! LCD 16×2 + tastatură + Buzzer Shield pentru Arduino Shield pentru Arduino cu butoane și ecran LCD1602 LCD 1602 Afișaj LCD pentru imprimantă 3D (controller inteligent pentru RAMPS 1.4, LCD text 20×4), modul cititor de carduri SD și MicroSD

Descrierea protocolului I2C

Mai întâi, să vorbim pe scurt despre conectarea afișajului la Arduino printr-un adaptor i2c. Să vorbim pe scurt despre protocolul i2C în sine.

I2C/IIC(Inter-Integrated Circuit) este un protocol care a fost creat inițial pentru a conecta circuite integrate în mijlocul unui dispozitiv electronic. Designul se bazează pe compania Philips. Protocolul i2c se bazează pe o magistrală vicorstan pe 8 biți, care este necesară pentru conectarea blocurilor din electronica care îl controlează și a sistemului de adresare, care poate fi conectat de-a lungul acelorași fire la dispozitivele coma. Pur și simplu furnizăm date unuia sau altui dispozitiv, adăugând la pachetele de date identificatorul elementului necesar.

Cel mai simplu circuit I2C poate găzdui un dispozitiv cu fir (de obicei un microcontroler Arduino) și multe dispozitive (de exemplu, un afișaj LCD). Fiecare dispozitiv are o adresă în intervalul de la 7 la 127. Nu este necesar ca două dispozitive cu aceeași adresă să fie în același circuit.

Placa Arduino acceptă i2c la nivel hardware. Puteți utiliza pini A4 și A5 pentru a conecta dispozitive folosind acest protocol.

În robotul I2C puteți vedea o serie de avantaje:

  • Lucrarea necesită cel puțin 2 linii – SDA (linie de date) și SCL (linie de sincronizare).
  • Conectarea unui număr mare de dispozitive cu fir.
  • Schimbarea orei tulburărilor.
  • Pentru a controla întregul set de dispozitive, este necesar un singur microcontroler.
  • Orice număr de microcircuite care sunt conectate la o magistrală sunt înconjurate numai de o capacitate de limită.
  • Un nivel ridicat de economisire a datelor printr-un filtru special suprimă stropirile generate în circuite.
  • O procedură simplă pentru diagnosticarea defecțiunilor care apar și remedierea defecțiunilor.
  • Autobuzul este deja integrat în Arduino în sine, deci nu este nevoie să extindeți în continuare interfața de magistrală.

Nedoliky:

  • Deviația de bază pe linie este de 400 pF.
  • Este important să programați controlerul I2C, deoarece există o serie de dispozitive diferite pe magistrală.
  • Cu un număr mare de dispozitive, devine dificilă localizarea eșecului, deoarece unul dintre ele instalează ușor un factor de nivel scăzut.

Modul i2c pentru LCD 1602 Arduino

Cel mai bun și mai ușor mod de a instala un afișaj i2c în Arduino este să achiziționați un ecran gata făcut cu un protocol încorporat. Dar astfel de ecrane nu suportă mirosul, nu este ieftin. Și axa diferitelor ecrane standard a produs deja o mare rezistență. Prin urmare, cea mai accesibilă și cea mai populară opțiune astăzi este achiziționarea și înlocuirea unui modul I2C adiacent - un adaptor, care arată astfel:

Pe o parte a modulului există pini i2c - masă, viață și 2 pentru transferul de date. Din alt adaptor, vom folosi trandafirii vieții externe. Și, desigur, există un fund gol pe placă, în plus față de care modulul este lipit la componentele standard ale ecranului.


Pentru a vă conecta la plata Arduino, utilizați deconectarea i2c. Dacă este necesar, conectăm o sursă externă pentru iluminare. Cu ajutorul unui rezistor de reglare încorporat, putem regla setările de contrast J

Pe piata gasesti module LCD 1602 cu adaptoare lipite, instalarea acestora este pe cat posibil simplificata. Dacă ați cumpărat același adaptor, va trebui să-l lipiți la modul în prealabil.

Conectarea ecranului RK la Arduino prin I2C

Pentru a vă conecta, aveți nevoie de placa Arduino în sine, un afișaj, o placă de breadboard, conectori și un potențiometru.

Dacă utilizați un adaptor special i2c, mai întâi va trebui să îl lipiți la modulul ecran. Este important să ai milă acolo, te poți implica într-o astfel de schemă.


Un monitor RCD cu suport i2c este conectat înainte de a plăti pentru cele patru săgeți suplimentare - două săgeți pentru date, două săgeți pentru viață.

  • Conexiunea GND este conectată la GND de pe placă.
  • VCC este la 5V.
  • SCL este conectat la pinul A5.
  • SDA este conectat la pinul A.

Asta e tot! Pânze lungi de călătorii, în care este ușor să te pierzi. În acest caz, pur și simplu putem încredința bibliotecilor toată complexitatea implementării protocolului i2C.

Biblioteci pentru roboți cu afișaj LCD i2c

Pentru a comunica între Arduino și LCD 1602 prin magistrala I2C, veți avea nevoie de cel puțin două biblioteci:

  • Biblioteca Wire.h pentru lucrul cu I2C este deja inclusă în programul standard Arduino IDE.
  • Biblioteca LiquidCrystal_I2C.h, care include o mare varietate de comenzi pentru controlul unui monitor prin intermediul magistralei I2C, vă permite să creați o schiță mai simplă și mai scurtă. Este necesar să instalați biblioteca în plus După conectarea ecranului, trebuie să instalați biblioteca LiquidCrystal_I2C.h

După ce conectăm toate bibliotecile necesare la schiță, creăm un obiect și îi putem personaliza funcțiile. Pentru testare, este important să folosiți o schiță standard pe fund.

#include #include // Conexiuni la bibliotecă //#include // Conectarea unei biblioteci alternative LiquidCrystal_I2C lcd(0x27,16,2); // Adresa Pokazum I2C (Night -shine), eu sunt parametrul Ekran (în LCD 1602 - 2 rânduri ale celui de-al 16-lea simbol în piele // Liquidcrystal_pf8574 LCD (0x27); // Wareant pentru configurarea Bigblastic PCF8574 VOOID (LCD) (LCD .init ( ); // Inițializați afișajul lcd.backlight(); // Conectați afișajul lcd.setCursor(0,0); // Plasați cursorul pe capul primului rând lcd.print („Salut”);

Descrierea funcțiilor și metodelor bibliotecii LiquidCrystal_I2C:

  • home() și clear() – prima funcție vă permite să rotiți cursorul în partea de sus a ecranului, afișând tot ce era pe monitor înainte.
  • write(ch) – vă permite să scrieți un singur caracter ch pe ecran.
  • cursor() și noCursor() – arată/ascunde cursorul pe ecran.
  • blink() și noBlink() – cursorul clipește/nu clipește (dacă afișarea sa a fost activată anterior).
  • display() și noDisplay() – vă permite să conectați/porniți afișajul.
  • scrollDisplayLeft() și scrollDisplayRight() – derulează ecranul după un semn pentru stânga/dreapta.
  • autoscroll() și noAutoscroll() – vă permite să activați/dezactivați modul de autoscroll. Pentru ce mod de piele, un nou simbol este înregistrat în același loc care a fost scris anterior pe ecran.
  • leftToRight() și rightToLeft() – Inserarea directă a textului afișat – stânga la dreapta sau dreapta la stânga.
  • createChar(ch, bitmap) – creează un caracter cu codul ch (0 – 7), folosind o matrice de bitmap pentru a crea puncte alb-negru.

Bibliotecă alternativă pentru roboți cu afișaj i2c

În unele cazuri, atunci când biblioteca alocată cu dispozitive echipate cu controlere PCF8574 este deteriorată, pot apărea erori. O alternativă la această opțiune este biblioteca LiquidCrystal_PCF8574.h. Ea extinde LiquidCrystal_I2C, ceea ce nu este cauza problemelor pentru victoriani.

Probleme la conectarea ecranului LCD i2c

Dacă după ce faceți clic pe o schiță nu vedeți mesajul dorit pe afișaj, încercați să faceți clic pe aceste acțiuni.

În primul rând, puteți crește sau modifica contrastul monitorului. Adesea, personajele pur și simplu nu sunt vizibile prin modurile de contrast și de iluminare.

Dacă acest lucru nu ajută, verificați dacă contactele sunt conectate corect și dacă sursa de alimentare este conectată. Dacă ați folosit un adaptor i2c compatibil, verificați din nou punctul de lipit al contactelor.

Un alt motiv comun pentru lipsa textului de pe ecran poate fi adresele i2c incorecte. Încercați să vă amintiți în schițe adresa dispozitivului cu 0x27 0x20 sau 0x3F. Diferiți distribuitori pot avea adrese diferite pentru plată. Dacă acest lucru nu ajută, puteți rula schița scanerului i2c, care analizează toate conexiunile dispozitivului și le determină adresele folosind o metodă de forță brută. Schiță la cap a unui scaner i2c.

Dacă ecranul încă nu funcționează, încercați să lipiți adaptorul și să conectați LCD-ul ca de obicei.

Visnovok

În acest articol, ne-am uitat la sursa de alimentare principală pentru ecranul LCD în proiectele Arduino pliabile, dacă trebuie să economisim bani în plus pe placă. Un adaptor i2c simplu și ieftin vă permite să conectați un ecran LCD 1602 folosind doar 2 pini analogici. În mai multe situații, poți fi și mai important. Taxă pentru disponibilitate - necesitatea de a utiliza un modul suplimentar - un convertor și o bibliotecă. În opinia noastră, prețul pentru flexibilitate nu este deloc mare și vă recomandăm să profitați de această flexibilitate în proiecte.

Acest articol se bazează pe modul de utilizare a unui modul de interfață I2C pentru conectarea unui afișaj LCD (2x16/20x4) folosind un Arduino. Acest modul vă permite să schimbați numărul de circuite de controler, înlocuind conexiunile de 8 sau 4 biți, necesitând doar 2 intrări (SDA și SCL).

Caracteristici tehnice

Suport display: LCD 16×02/20×04
Dodatkovo: ajustarea contrastului
Tensiunea este plină de viață. 5V
Interfață: I2C
Dimensiuni: 54mm x 19mm x 15mm

Detalii despre modulul de interfață I2C

Un număr mare de contacte de pe controlerele Arduino sunt interconectate și, de multe ori, atunci când diferiți senzori și module se epuizează, este nevoie să le salvați, pentru aceste tipuri de cazuri modulul este rupt, pentru care este posibil un ajutor suplimentar Studiați transmisia peste două contacte (SDA și SCL).

Acum puțin despre modul în sine, despre microcircuitul PCF8574T. Rezistoarele R8 (4.7k) și R9 (4.7k) sunt necesare pentru a trage în sus liniile SDA și SCL, în mod ideal, atunci când două sau mai multe dispozitive sunt conectate prin magistrala I2C, este necesar să trageți în sus numai pe un dispozitiv Da, eu; Voi scrie despre ce mai târziu. Pe placa de transfer sunt trei jumperi (în spatele diagramei puteți vedea că liniile A0, A1, A2 sunt trase în sus prin rezistențele R4, R5, R6), necesare pentru schimbarea adresei dispozitivului, există 8 opțiuni în total. Modificarea adresei face posibilă conectarea a până la opt dispozitive prin magistrala IC2 cu microcircuitul PCF8574T, opțiunea este de a afișa adresa dispozitivului (după schimbarea adresei dispozitivului 0x27); Modulul este echipat și cu un potențiometru R11, cu ajutorul căruia poți modifica și contrastul afișajului LCD.

Există trei grupuri de contacte pentru conectare pe modul:

Grupul Persha:
SCL: linie de ceas (Serial Clock)
SDA: linie de date (Serial Data)
VCC: mâncare „+”.
GND: „-” mâncare

Un alt grup:
VSS: „-” mâncare
VDD: mâncare „+”.
VO: Vividednya keruvannya prin contrast
RS: Selectați înregistrare
RW: Citire/Scriere (modul de scriere atunci când este conectat la masă)
E: Activare (stroboscop în declin)
DB0-DB3: Biți mai tineri pentru interfață
DB4-DB7: Biți înalți de interfață
R: „+” suport de viață
K: „-” suport de viață

Al treilea grup: (un jumper a fost instalat în spatele bătăliilor)
VCC:
O vizualizare LCD:

Conexiuni la Arduino

Detalii necesare:
Arduino UNO R3 x 1 buc.
Display LCD 1602A (2×16, 5V, Albastru) x 1 buc.
Modul de interfață I2C, IIC, TWI pentru LCD x 1 buc.
Sârmă DuPont, 2,54 mm, 20 cm, F-M (femă - masculin) x 1 buc.
Cablu USB 2.0 A-B x 1 buc.

Conexiune:
Mai întâi lipim modulul I2C la afișajul LCD, apoi trebuie să conectăm afișajul la Arduino UNO. Pentru cei care folosesc cabluri DuPont, conexiunile sunt prezentate în tabelul de mai jos.

Pentru a fi mai specific, vă voi mai oferi o diagramă.

Pentru acest experiment trebuie să descărcați și să instalați biblioteca „LiquidCrystal_I2C”. Apoi copiați și inserați acest cod în programul Arduino IDE și atașați-l la controler.

/* Testat pe Arduino IDE 1.6.11 Data testului 15/09/2016. */ #include #include LiquidCrystal_I2C lcd(0x27,16,2); // Setați adresa și dimensiunea afișajului void setup() ( lcd.init(); // Inițializați lcd lcd.backlight(); // Activați iluminarea de fundal lcd.setCursor(0,0); // Instalați cursorul pe cap din primul rând lcd .print("Bună, lume" // Textul afișat lcd.setCursor(0,1) // A plasat cursorul pe al 2-lea rând lcd.print("www.robotchip.ru"); // Textul afișat) void loop() ( )

Distrați programul

Dacă ați făcut totul corect, dar afișajul nu are simbolurile necesare, încercați să măriți contrastul cu potențiometrul.


Posilannya
Încântă biblioteca LiquidCrystal_I2C
Documentația pentru cipul PCF8574T
Documentație până la LCD1602A

Cumpărați de pe Aliexpress