Arduino va belgilar LCD displey. I2c displey bilan ishlash uchun muqobil kutubxona

Arduino va belgilar LCD displey. I2c displey bilan ishlash uchun muqobil kutubxona
Belgilaringizni va oddiy rasmlaringizni LCD 1602/LCD2004 da ko'rsating. I qism

Salom, aziz o'quvchi! Bugungi mavzu sizning belgilaringiz va oddiy rasmlarni ramzlar displeyida ko'rsatishdir. Agar siz displeyda mavjud bo'lgan standart katalogda kerakli belgini topa olmasangiz yoki oddiy grafiklarni ko'rsatmoqchi bo'lsangiz, ushbu maqola foydali bo'ladi.

Birinchi qism mahalliy belgilarning oddiy ko'rinishini ko'rib chiqadi.

Sxemani yig'ish

LCD1602/LCD2004 displeyini Arduino-ga qanday ulash haqida bir necha bor eslatib o'tilgan, biz kichik diagrammani joylashtiramiz; Agar sizda potansiyometr bo'lmasa, uni sxemadan chiqarib tashlashingiz mumkin. Qolganlari uchun faqat kerakli kontaktlarni simlar bilan ulang.

Belgilarni yaratish

Bizning oldimizda turgan navbatdagi vazifa o'z belgilar to'plamini yaratishdir. Siz sezganingizdek, displeydagi belgilar hali ham piksellardan iborat. Va oldindan o'rnatilgan piksellar o'rniga o'zingizning piksellar to'plamini ko'rsatishga imkon beradigan usul mavjud.

Har bir displey katakchasida ko'rsatilgan rasm 7 (yoki ba'zi hollarda 8) bayt sifatida kodlangan. Har bir baytda faqat eng past 5 bit ma'noga ega. Siz allaqachon tushunganingizdek, massivning har bir elementi satr va undagi har bir bit alohida pikseldir.

Endi chizamiz! Yaxshiyamki, siz xohlagan tasvirning bitmap tasvirini olishingiz mumkin bo'lgan sayt mavjud. (http://www.quinapalus.com/hd44780udg.html)

Rasmni bosish orqali siz kerakli pikselni yaratishingiz mumkin, masalan:

Bunday semiz mushuk yuzini yaratishga nima imkon beradi:

Keling, ushbu ma'lumotlarni eslaylik va dasturlashni boshlaymiz.

Dasturlash

Displey 1602 bir vaqtning o'zida 8 tadan ko'p bo'lmagan o'z belgilaringizni ko'rsatishga imkon beradi (o'zingiz xohlagancha o'rnatilgan).

Belgini yaratish uchun createChar(num, data), bu yerda buyrug'idan foydalanish kerak

  • num - o'z belgingizning raqami (0 dan 7 gacha)
  • ma'lumotlar 7(8) baytdan iborat bir xil massivdir.

Har bir belgini aniqlash uchun uni yozib olish kifoya.

Bayt l = (0, 2, 5, 24, 24, 0, 0);

Bayt m = (0, 0, 0, 14, 14, 0, 0);

Bayt r = (0, 8, 20, 3, 3, 0, 0);

Va displeyni ishga tushirgandan so'ng siz quyidagilarni yozishingiz kerak:

lcd.createChar(0, l);

lcd.createChar(1, m);

lcd.createChar(2, r);

Va, aslida, buyruq bilan belgilarni ko'rsating:

lcd.write(bayt(0));

lcd.write(bayt(1));

lcd.write(bayt(2));

Ifoda bayti(x) – x sonini bayt turiga o'zgartiradi.

Va nihoyat, (5x8) belgilar o'lchamiga ega LCD1602 da Arduino belgisini ko'rsatish kodini ko'rib chiqaylik.

// Displey bilan ishlash uchun kutubxonani ulang

#o'z ichiga oladi

// Displey ulangan pinlarni o'rnating (maqola boshidagi rasmga ko'ra)

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

// Belgilarimizni o'rnating. Bu erda "B" prefiksi keyingi nima yozilishini bildiradi

// ikkilik koddagi raqam, ya'ni. B00011 = 5

bayt a3 = ( B00011,

bayt a2= (B00000,

bayt a1=(B11000,

bayt a4=( B00000,

bayt a5=( B00000,

bayt a6=( B00000,

bayt a7=( B00000,

bayt a8=(B00100,

// Initsializatsiya tartibi

lcd.begin(16, 2); // Displeyni ishga tushiring.

lcd.print ("Arduino"); // Oddiy qatorni chiqaring

lcd.setCursor(1,1); // Ikkinchi qatorga o'tkazing

lcd.print ("Logo"); // Boshqa juda oddiy qatorni chiqaring

Ko'k yorug'lik bilan LCD2004 belgilar displeyi - suyuq kristall displey (Suyuq kristall displey), uning ekrani bir vaqtning o'zida 80 tagacha belgilarni (20 ta ustun, 04 qator) ko'rsatishga qodir. Ulanish sinxron 8-bitli parallel interfeys orqali amalga oshiriladi. Belgilarni ko'rsatish bilan ishlash misollari bo'limda tasvirlangan.

Xususiyatlari

  • Chiqish ma'lumotlarining turi: ramziy.
  • Displeydagi ROM tili: lotin, yapon.
  • O'z belgilaringizni yuklash imkoniyati: ha.
  • Chiqish axboroti formati: 20×04 belgi;
  • Displey turi: LCD.
  • Displey texnologiyasi: STN.
  • Ko'rish burchagi: 180 °.
  • Orqa yorug'lik turi: LED.
  • Orqa yorug'lik rangi: ko'k.
  • Belgi rangi: oq.
  • Nazoratchi: HD44780.
  • Interfeys: sinxron, 8-bit, parallel.
  • Ta'minot kuchlanishi 5 V.
  • Ishlash harorati: -20 ... +70 ° S.
  • Saqlash harorati -30 ... +80 ° S.

Ulanish

LCD2004 displeyini parallel interfeys orqali ulash I2C avtobusiga qaraganda biroz murakkabroq va kontrastni sozlash uchun qo'shimcha element ham talab qilinadi.

Displey ma'lumotlar shinasi 8 qatordan iborat (D0-D7), lekin rasmda ko'rsatilganidek, faqat yuqoriroq 4 liniyani (D4-D7) ulasangiz, bu displey tezligini kamaytirmaydi. Qulaylik uchun biz displeyning D4-D7 pinlarini bir xil nomdagi D4-D7 pinlariga uladik. . Displeyning D0-D7, E va RS pinlarini kutubxona ob'ektini e'lon qilishda ularni eskizda ko'rsatib, istalgan pinlarga ulashingiz mumkin.

№: Displey: Arduino: Maqsad:
16 K(LED-) GND LED yoritgichining katodi (minus).
15 A(LED+) 5V LED yoritgichining anod (ortiqcha).
14...7 D7...D0(DB7...DB0) Har qanday 8 qatordan iborat ma'lumotlar avtobusi. Yuqoridagi diagrammada faqat katta 4 ta chiziq ishlatiladi, chunki bu displey tezligiga ta'sir qilmaydi.
6 E Har qanday Signalni yoqish.
5 RW GND Ma'lumot uzatish yo'nalishini tanlash (O'qish / yozish): "1" - displeydan o'qish / "0" - displeyga yozish. PIN GND ga ulangan, chunki Ma'lumotlar faqat displeyga yoziladi.
4 R.S. Har qanday Registr Axborot oluvchini tanlash: “1” – ma’lumotlar reestri / “0” – ko‘rsatma registri.
3 V0(VEE)
Displey kontrastini sozlash: 0 ... +5 V DC.
2 VDD(VCC) 5V Displey mantiqiy quvvati: +5 VDC.
1 VSS(GND) GND Umumiy quvvat manbai (tuproq).

Oziqlanish

5 VDC displeyning mantiqiy ta'minot kuchlanishi displeyning VDD (VCC) va VSS (GND) pinlariga beriladi.

5 VDC orqa yorug'lik manbai kuchlanishi displeyning A (anod) va K (katod) terminallariga beriladi.

Displeyning V0 piniga 0 ... +5 V DC kontrastini o'rnatish uchun potentsial qo'llaniladi.

Displey haqida batafsil

Belgilar displeyi HD44780 kontrolleri tomonidan boshqariladigan STN (Super Twisted Nematic) LCD displeyga asoslangan va sinxron parallel 8 bitli interfeysga ega. Displey ko'k rangli LED yoritgichi bilan jihozlangan va bir vaqtning o'zida 80 tagacha belgilarni (20 ta ustun, 04 qator) ko'rsatishga qodir, bu displeyning nomi: LCD2004. HD44780 boshqaruvchisida raqamlar, lotin belgilar va ularni displeyda ko'rsatish uchun ba'zi yapon belgilarni saqlaydigan ROM mavjud. Yo'qolgan belgilar, shu jumladan. va rus tilidagi yoki nostandart belgilar (masalan, “ko'ngilochar” belgilar) yozuvlarini ko'rsatish uchun kirillcha belgilar kontrollerning RAM xotirasiga yuklanishi mumkin.

Ushbu darsda biz suyuq kristall ko'rsatkichlarni xarakterli sintez qilish, ularni Arduino platasiga ulash va LiquidCrystal va LiquidCrystalRus kutubxonalari yordamida indikatorlarni boshqarish haqida gapiramiz.

Etti segmentli LED ko'rsatkichlari elektron qurilmalar uchun eng arzon displey varianti bo'lsa-da, ulardan foydalanish ikkita muhim kamchilik bilan cheklangan.

  • Mikrokontrollerga LED ko'rsatkichlarining 8 dan ortiq raqamini ulash amalda qiyin. Ko'p sonli pinlar, muhim indikator oqimlari, murakkab kalitlar, past regeneratsiya chastotasi va boshqalar talab qilinadi.
  • Etti segmentli ko'rsatkichlar bo'yicha ramziy ma'lumotlarni ko'rsatish mumkin emas.

Matn ma'lumotlarini yoki 4 ta raqamdan katta raqamlarni ko'rsatish uchun suyuq kristalli belgilarni sintezlovchi ko'rsatkichlardan (displeylardan) foydalanish ancha amaliydir. Ularning afzalliklari quyidagilardan iborat:

  • mikrokontrollerlarga ulanish uchun qulay interfeys;
  • kam quvvat iste'moli;
  • past kuchlanish kuchlanishi;
  • chidamlilik.

Bozorda turli ishlab chiqaruvchilarning ko'plab turli xil suyuq kristalli displey (LCD) ko'rsatkichlari mavjud. Ularning deyarli barchasi parametrlari, interfeys signallari va boshqaruv buyruqlari bo'yicha o'xshashdir. Ayni paytda Rossiya bozorida eng keng tarqalgan LCD ko'rsatkichlari Winstar, Tayvan tomonidan ishlab chiqarilgan qurilmalardir. Men ushbu kompaniyaning ko'rsatkichlariga murojaat qilaman. Ammo ma'lumotlar boshqa ishlab chiqaruvchilarning LCD displeylari uchun ham juda mos keladi.

Umumiy ma'lumot.

Belgilarni sintez qiluvchi yoki ramziy ko'rsatkichlar ma'lumotni ma'lum sig'imdagi belgilar shaklida aks ettiradi. Bitta tanishlik bitta belgini ko'rsatadi. Tanish joylar soni indikatorning raqamli sig'imini aniqlaydi. Ko'rsatkichlar to'g'risidagi ma'lumotlar bir nechta satrlarda ko'rsatilishi mumkin, shuning uchun ushbu turdagi ko'rsatkichlar uchun har bir satrdagi belgilar soni va qatorlar soni ko'rsatiladi.

Ma'lumot LED yoritgichli suyuq kristalli matritsada ko'rsatiladi. Orqa yorug'lik turli xil ranglarda bo'ladi, bu monoxrom matn ma'lumotlarini sezilarli darajada jonlantiradi.

Suyuq kristall matritsani boshqarish va indikator interfeysini tashkil qilish uchun o'rnatilgan HD44780 boshqaruvchisi yoki uning to'liq analoglari ishlatiladi. Ushbu kontroller indikator interfeysi signallari va boshqaruv buyruqlarini aniqlaydi.

HD44780 suyuq kristall displey (LCD) displeylari uchun de-fakto standartga aylandi. PDF formatidagi HD44780 kontrolleri uchun texnik hujjatlarni ushbu havolada ko'rish mumkin -. Ehtimol, kimdir ushbu kontrollerning analoglaridan biri - SPLC780D hujjatlarini yoqtirishi mumkin. PDF formatidagi havola -.

Winstar'dan LCD belgilar ko'rsatkichlari.

Men ushbu kompaniyaning LCD ko'rsatkichlari uchun quyidagi variantlarni bilaman.

Ko'rsatkich turi Displey formati, belgilar x satr Olchamlari, mm Ko'rinadigan maydonning o'lchamlari, mm Hujjatlarga havola, PDF formati
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

LCD indikatorni mikrokontrollerga ulash.

Ulanish diagrammalari, vaqt diagrammalari, signal parametrlari, boshqaruv buyruqlari va belgilar kodlari HD44780 kontroller uchun hujjatlarda batafsil tavsiflangan. Men ko'rsatkichlarni mikrokontrollerlarga ulash bo'yicha faqat eng kerakli ma'lumotlarni taqdim etaman.

Odatda, LCD ko'rsatkichlari 16 pinga ega.

Pin raqami Signal I - kirish O - chiqish Signal maqsadi
1 Vs - Yer (umumiy)
2 Vdd - Quvvat manbai +5V
3 Vo - Displey kontrastini boshqarish. Voltaj bo'luvchining o'rta chiqishini ulash uchun kirish + 5 V. 10-20 kOhm qarshilikka ega trimmer qarshiligidan foydalanishingiz mumkin.
4 R.S. I Registrni tanlash: 0 – buyruq registri; 1 - ma'lumotlar registri. Signalning past darajasi ma'lumotlar shinasida buyruq yaratilganligini bildiradi, yuqori daraja esa ma'lumotlar shinasida buyruq yaratilganligini bildiradi.
5 R/W I Ma'lumot uzatish yo'nalishi:

0 - rekord;

1 - o'qish.

Ko'pgina ilovalarda o'qish funktsiyasi ishlatilmaydi, shuning uchun signal ko'pincha erga ulanadi.

6 E I Avtobusning ishlashi strobi (salbiy chetida).
7 DB0 I/U Sakkiz bitli rejimning past tartibli bitlari. To'rt bitli interfeys bilan ishlatilmaydi.
8 DB1 I/U
9 DB2 I/U
10 DB3 I/U
11 DB4 I/U Sakkiz bitli rejimning eng muhim bitlari yoki to'rt bitli interfeysning ma'lumotlar bitlari.
12 DB5 I/U
13 DB6 I/U
14 DB7 I/U
15 A - Orqa yorug'lik quvvati anod (+).
16 K - Orqa yorug'lik quvvati katodi (-). Oqim cheklangan bo'lishi kerak.

PIN raqami (birinchi ustun) eng keng tarqalgan variant uchun. Oldingi bo'limdagi jadvaldan ko'rsatkich turi uchun hujjatlarni yuklab olish orqali tekshirish yaxshiroqdir.

Belgilar LCD displeylari mikrokontrollerga ikkita ulanish variantini qo'llab-quvvatlaydi:

  • 8 bitli ma'lumotlar avtobusidan foydalanish. DB0-DB7 barcha avtobus signallari ulangan. Bitta ayirboshlash siklida bir bayt axborot uzatiladi.
  • 4-bitli ma'lumotlar shinasidan foydalanish. Faqat 4 ta eng muhim DB4-DB7 bitlari ulangan. Ma'lumot har bir avtobus soat siklida to'rt bit uzatiladi.

Birinchi variant displeyga yuqori tezlikda ma'lumotlarni uzatishni ta'minlaydi. Ikkinchisi indikatorni ulash uchun 4 ta kamroq pinni talab qiladi. Shubhasiz, almashinuv tezligini oshirishdan ko'ra, ulanish pinlarining sonini kamaytirish muhimroqdir. Bundan tashqari, LCD ko'rsatkichlari 10-20 ms regeneratsiya davriga ega bo'lgan juda sekin qurilmalardir.

Belgili LCD displeyni Arduino platasiga ulash.

Men WH2004A indikatorini (har biri 20 belgidan iborat 4 qator) to'rt bitli almashinuv rejimida Arduino UNO R3 platasiga ulayman. WH2004 LCD displey uchun hujjatlarni ushbu havolada ko'rishingiz mumkin.

Diagramma shunday ko'rinadi.

R2 va R3 rezistorlari indikatorning kontrastini aniqlaydi. Siz trim rezistorini ulashingiz va kerakli tasvir ravshanligini o'rnatishingiz mumkin. Men tez-tez WH2004 ko'rsatkichlaridan foydalanaman va sxemalarimda men ushbu qarshilik qiymatlarini tanlayman.

Men rezistor R1 (30 Ohm) orqali indikatorning orqa yorug'lik LEDlarini 5 V quvvat manbaiga uladim. Shu bilan men oqimni taxminan 25 mA ga o'rnatdim. Xira, ammo yorqin. Siz qorong'uda yaxshi ko'rishingiz mumkin. WH2004 ko'rsatkichlari orqa yorug'lik oqimini 580 mA gacha bo'lishiga imkon beradi.

Arduino LiquidCrystal tizimidagi LCD ko'rsatkichlarini boshqarish uchun kutubxona.

HD44780 boshqaruvchisiga asoslangan LCD ko'rsatkichlarini boshqarish uchun standart kutubxona mavjud. Men uning usullarini batafsil tasvirlab beraman.

Suyuq kristall(…)

Sinf konstruktori. Turli xil argumentlar soni bo'lishi mumkin.

  • LiquidCristal(rs, en, d4, d5, d6, d7) - to'rt bitli interfeys, RW signali ishlatilmaydi (yerga ulangan).
  • LiquidCristal(rs,rw, en, d4, d5, d6, d7) - to'rt bitli interfeys, RW signali ishlatiladi.
  • LiquidCristal(rs, en, d0, d1, d2, d3, d4, d5, d6, d7) - sakkiz bitli interfeys, RW signali ishlatilmaydi (yerga ulangan).
  • LiquidCristal(rs, rw, en, d0, d1, d2, d3, d4, d5, d6, d7) – sakkiz bitli interfeys, RW signali ishlatiladi.

Argumentlar:

  • rs - RS signal PIN raqami;
  • rw - RW signalining chiqish raqami;
  • en – signal chiqish raqami E;
  • d0, d1, d2, d3, d4, d5, d6, d7 - ma'lumotlar shinasining pin raqamlari.

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

bekor boshlash (ko'nikma, qatorlar)

Indikator interfeysini ishga tushiradi. Ko'rsatkich o'lchamini o'rnatadi. Boshqa sinf funktsiyalaridan foydalanishdan oldin usul birinchi bo'lib chaqirilishi kerak.

Argumentlar:

  • cols - qatordagi belgilar soni;
  • qatorlar - qatorlar soni.

disp.begin(20, 4); // biz displeydan foydalanamiz - 20 belgidan iborat 4 qator

bekor qilish ()

Ekranni tozalash, kursorni yuqori chap burchakka qo'yish.

disp.clear(); // displeyni tiklash

uyni bekor qilish()

Kursorni yuqori chap burchakka qo'ying.

disp.home(); // ekran boshiga

void setCursor(col, satr)

Kursorni belgilangan joyga qo'yadi.

  • col – X koordinatasi, 0 dan raqamlash;
  • qator - Y koordinatasi, 0 dan raqamlash.

setCursor(0,1); // kursorni ikkinchi qatorning boshiga olib boring

bayt yozish (ma'lumotlar)

Ekranda belgini ko'rsatadi. O'tkazilgan baytlar sonini qaytaradi.

Quyidagi eskiz ketma-ket portdan olingan ma'lumotlarni ko'rsatadi. Ma'lumotlar Arduino IDE port monitori orqali uzatilishi mumkin.

// LCD indikatorda seriyali port ma'lumotlarining chiqishi
#o'z ichiga oladi


char ma'lumotlari;

bekor o'rnatish()
{
Serial.begin(9600); // ketma-ket portni ishga tushiring
disp.begin(20, 4); //
}

void loop()
{
agar (Serial.available()) ( // ma'lumotlar mavjud bo'lsa
ma'lumotlar = Serial.read(); // belgini o'qing
if((ma'lumotlar != 0xd) && (ma'lumotlar != 0xa)) ( // qator tasmasi
disp.write(ma'lumotlar); // belgisini ekranda ko'rsating
}
}
}

Menda katta ko'rsatkich bor - 20 belgidan iborat 4 qator. Unda ikkita HD44780 kontrolleri mavjud. Shuning uchun, ketma-ket uzatiladigan belgilar birinchi navbatda birinchi qatorni, keyin uchinchisini, keyin ikkinchi va to'rtinchisini to'ldiradi. Bular. chiziq orqali. Bu xususiyat ma'lum turdagi ko'rsatkichlar uchun hisobga olinishi kerak. Har bir LCD indikator uchun hujjatlar belgilarni manzillash ketma-ketligini ko'rsatadi.

bayt bosib chiqarish (ma'lumotlar)

Ekranda matnni ko'rsatadi. O'tkazilgan baytlar sonini qaytaradi.

Funktsiyada turli formatlar va ma'lumotlar turlari uchun turli chaqiruv shakllari mavjud.

chop etish (char d) Agar char argumenti belgilar kodini chiqarsa

char d= 83;
disp.print(d); // S belgisini chop etadi
disp.print('S'); // S belgisini chop etadi

chop etish (int d) Agar argument butun son turi bo'lsa, u holda raqamning o'nli ko'rinishi bilan qatorni chop etadi

int d= 83;
disp.print(d); // "83" qatorini chop etadi
disp.print(83); // "83" qatorini chop etadi

chop etish (suzuvchi) Haqiqiy tiplar ASCII belgilar, ikki kasrli belgilar sifatida chiqariladi

float d= 7,65432;
disp.print(d); // "7.65" qatorini chop etadi
disp.print(7.65432); // satrni chop etadi “7.65”

chop etish (*str) Agar argument satrga ko'rsatgich bo'lsa, u holda matn satri chop etiladi.

char harflari= (65, 66, 67);
disp.print (“Harflar”); // "Harflar" qatorini chop etadi
disp.print(harflar); // 65, 66, 67 kodlari bilan 3 ta belgidan iborat qatorni chiqaradi

chop etish (int d, DEC) ASCII qatorni chop etadi - sonning o'nli ko'rinishi

int d= 83;
disp.print(d, DEC); // "83" qatorini chiqaring

chop etish (int d, HEX) ASCII qatorini chiqaradi - sonning o'n oltilik ko'rinishi

int d= 83;
disp.print(d, HEX); // "53" qatorini chiqaring

chop etish (int d, OCT) ASCII qatorini chop etadi - sonning sakkiztalik ko'rinishi

int d= 83;
disp.print(d, OCT); // "123" qatorini chiqaring

chop etish (int d, BIN) ASCII qatorini chiqaradi - sonning ikkilik ko'rinishi

int d= 83;
disp.print(d, BIN); // "01010011" qatorini chiqaring

chop etish (float d, N) Haqiqiy sonlar uchun N parametri kasrdan keyingi raqamlar sonini belgilaydi.

disp.print(7.65432, 0); // “7” qatorini chop etadi
disp.print(7.65432, 2); // "7.65" qatorini chop etadi
disp.print(7.65432, 4); // "7.6543" qatorini chiqaradi

Displeyda matn qatorini chop etuvchi dasturga misol.

// LCD indikatorida matn chizig'ini ko'rsatish
#o'z ichiga oladi

LiquidCrystal disp(6, 7, 2, 3, 4, 5); // ob'ekt yaratish

bekor o'rnatish()
{
disp.begin(20, 4); // displeyni 20 ta belgidan iborat 4 qatorni ishga tushiring
disp.print("Sinov qatori");
}

void loop()
{ }

bekor kursor()

Kursorni ko'rsatish rejimini yoqadi. Keyingi belgi chiqadigan joyning tagiga chizilgan.

disp.cursor(); // kursorni ko'rsatishga ruxsat bering

void noCursor()

Kursorni ko'rsatishni o'chiradi.

disp.noCursor(); // kursor ko'rinishini o'chiring

void miltillash()

Miltillovchi kursor rejimini yoqadi. Kursor() funksiyasi bilan birgalikda ishlatiladi. Natija aniq ko'rsatkich modeliga bog'liq.

disp.blink(); // kursorni miltillashiga ruxsat bering

bekor noBlink()

Miltillovchi kursor rejimini o'chiradi.

disp.noBlink(); // miltillovchi kursorni o'chiring

bekor displey()

Ekran noDisplay() tomonidan o'chirilgandan keyin yoqiladi. Ekran o'chirishdan oldin mavjud bo'lgan ma'lumotlarni ko'rsatadi.

display.display(); // displeyni yoqing

bekor noDisplay()

Ekranni o'chiradi. Ma'lumotlar xotirada saqlanadi va displey yoqilganda paydo bo'ladi.

disp.noDisplay(); // displeyni o'chiring

void scrollDisplayLeft()

Displey mazmunini bir belgi chapga aylantiradi.

disp. scrollDisplayLeft(); // hamma narsani chapga siljiting

void scrollDisplayRight()

Displey mazmunini bir belgi o'ngga aylantiradi.

disp. scrollDisplayRight(); // hamma narsani o'ngga siljiting

void autoscroll()

Matnni avtomatik aylantirish rejimini yoqing. Har bir belgi ko'rsatilganda, ekrandagi barcha matn bitta belgiga siljiydi. leftToRight() va rightToLeft() funksiyalari axborotning qaysi tomonga siljishini aniqlaydi.

disp. autoscroll())(; // avtomatik aylantirishni yoqing

void noAutoscroll()

Matnni avtomatik aylantirishni o'chiring.

disp. noAutoscroll())(; // avtomatik aylantirishni o'chiring

void leftToRight()

Sinov chiqish rejimini chapdan o'ngga o'rnatadi. Oldingi belgilarning o'ng tomonida yangi belgilar paydo bo'ladi.

leftToRight(); // chapdan o'ngga rejimi

void rightToLeft()

Sinov chiqish rejimini o'ngdan chapga o'rnatadi. Oldingi belgilarning chap tomonida yangi belgilar paydo bo'ladi.

rightToLeft(); // o'ngdan chapga rejimi

void createChar(son, ma'lumotlar)

Maxsus belgi yaratish usuli. Tekshirish moslamasi 5x8 pikselli 8 tagacha belgi (0...7) yaratish imkonini beradi. Belgi tasviri 8 baytlik massiv bilan belgilanadi. Har bir baytning eng kam ahamiyatli 5 biti qatordagi piksellar holatini aniqlaydi.

Maxsus belgini chiqarish uchun siz belgilar raqami bilan write() funksiyasidan foydalanishingiz mumkin.

// maxsus belgi yaratish
#o'z ichiga oladi

LiquidCrystal disp(6, 7, 2, 3, 4, 5); // ob'ekt yaratish

bayt tabassum = (
B00000000,
B00010001,
B00000000,
B00000000,
B00010001,
B00001110,
B00000000,
B00000000
};

bekor o'rnatish()
{
disp.createChar(0, tabassum); // belgi yarating
disp.begin(20, 4); // displeyni 20 ta belgidan iborat 4 qatorni ishga tushiring
disp.print("Tabassum");
disp.write(bayt(0)); // belgini ko'rsatish
}

void loop()
{ }

Mana, rus alifbosini ko'rsatadigan dasturning namunasi.

// Rus alifbosi chiqishi
#o'z ichiga oladi

LiquidCrystalRus disp(6, 7, 2, 3, 4, 5); // ob'ekt yaratish

bekor o'rnatish()
{
disp.begin(20, 4); // displeyni 20 ta belgidan iborat 4 qatorni ishga tushiring
disp.print("abvgdeezhziyklmnoprst");
disp.print("ABVGDEYOZHIYKLMNOPRST");
disp.print("uffhhhhhhhhhhhhhhhhhhhhhh");
disp.print("UFHTSCHSHSHSHYYYYYYYYYYYYYYYYYYYYYYYYY");
}

void loop()
{ }

Ramziy Arduino displeyining o'zaro ta'siri loyihaga o'qishning yoqimli elementini qo'shadi. Dunyo bo'ylab ko'plab eng yaxshi loyihalarda sport namoyishlari mavjud. Ushbu LCD displeylar mikrokontrollerdan yoki unga ulangan har qanday sensordan ma'lumotlarni ko'rsatish uchun ishlatiladi. Masalan, Arduino-da ushbu ko'rsatkichni ko'rsatadigan tizimni yaratishingiz mumkin. Ekranda tezlikni ko'rsatadigan o'z spidometringizni loyihalashingiz mumkin.

Ushbu Arduino LCD qo'llanmasida siz Arduino LCD i2c ramzi interfeysini topasiz. Siz ushbu matndagi ma'lumotlardan o'zingizning LCD monitor loyihalaringizni yaratish uchun foydalanishingiz mumkin.

Arduino uchun displey loyihalar natijalarini ko'rsatish uchun ishlatilishi mumkin bo'lgan eng oddiy qurilmalardan biridir. Biroq, ushbu qurilmaning ikki xil turi mavjud: grafik va xarakter. Ushbu maqola shaxsiy ekrandan foydalanadi, chunki u eng oson ishlaydi. Bundan tashqari, ekran o'lchamiga qarab, turli xil turlari mavjud:

  • 16x2 belgi - 16 ustun va 2 qator;
  • 20x4 belgi - 20 ustun va 4 qator.

Ular turli xil ranglarda ham mavjud:

  1. Qora belgilar bilan yashil.
  2. Oq belgilar bilan ko'k.
  3. Qora belgilar bilan qizil.

Biroq, yashil va ko'k ekranlar eng keng tarqalgan. Boshqa ranglar kam uchraydi. Ushbu qo'llanmada ko'k 20x4 belgisi bo'lgan Arduino displeyi ishlatiladi. Mikroprotsessor to'rtta ma'lumot liniyasi orqali ekran bilan o'zaro ta'sir qiladi. Displey bilan o'zaro aloqada bo'lish va unda biz xohlagan narsani ko'rsatish uchun biz mikrokontrollerdagi raqamli pinlardan foydalanamiz.

Mikrokontrollerdan monitordagi 15 ga 5V quvvat berilganda LCD displeydagi orqa yorug'lik faollashadi va tuproqli pin 16. Shuningdek, sensorli displeyning kontrastini sozlash uchun Arduino 10K potansiyometrga muhtoj.

Kerakli komponentlar

Arduino uchun displey yaratish uchun sizga quyidagi uskunalar kerak bo'ladi:

  1. Arduino yoki Genuino mikrokontrolleri.
  2. Hitachi HD44780 drayveri bilan mos keladigan LCD displey.
  3. LCD pinlariga lehimlash uchun pin sarlavhalari.
  4. Potansiyometr 10 kOhm.
  5. 220 Ohm qarshilik.
  6. Ulanish simlari.
  7. Tartib.

Hitachi-ga mos keluvchi LCD monitorlar; ularni ikkita rejimda boshqarish mumkin: 4-bit yoki 8-bit. 4-bitli rejim Arduino LCD-dan yettita kiritish/chiqarish pinini, 8-bitli rejim esa 11 pinni talab qiladi. Ekranda matnni ko'rsatish uchun siz 4-bitli rejimda hamma narsani qilishingiz mumkin, shuning uchun misol 4-bitli rejimda 2x16 LCD displeyni qanday boshqarishni ko'rsatadi.

Dasturlash

Endi biz Arduino ssd1306 orqali displeyda biror narsani ko'rsatishga harakat qilishimiz mumkin. Buni amalga oshirishdan oldin Arduino kutubxonasini havoladan yuklab olishingiz kerak - . Keyin yuklab olish faylidan "LiquidCrystal" jildini chiqarib olishingiz kerak. Va keyin "LiquidCrystal" jildidan nusxa ko'chiring va mikroprotsessor katalogiga joylashtiring, yakuniy natijalar katalogining namunasi quyidagicha ko'rinishi kerak: arduino-1.0.5librariesLiquidCrystal.

Keyin rivojlanish muhitini oching va quyidagi manzilga o'ting:

Fayl -> Misollar -> LiquidCrystal -> HelloWorld

Kodni mikrokontrollerga yuklang. Foydalanuvchi quyidagi ma'lumotlarni ko'radi:

E'tibor bering, agar siz 16x2 ekrandan foydalansangiz, lcd.begin(20,4) ni lcd.begin(16,2) ga tahrirlang.

Qurilish jarayoni

Birinchi qadam 16 pinli sarlavhalarni Arduino displeyiga lehimlashdir. Keyin Arduino-ga ulanish uchun 16 pinli sarlavhadan foydalanishingiz mumkin yoki shunchaki ayoldan ayolga sarlavhadan foydalanishingiz mumkin. Agar siz mikrokontrollerga birinchi marta ulanayotgan bo'lsangiz, eng oson yo'li - non panelidan foydalanish.

LCD bilan ishlashdan oldin qilishingiz kerak bo'lgan birinchi narsa uni sinab ko'rishdir. Buning uchun yuqoridagi diagrammada ko'rsatilganidek, ulanishlarni amalga oshiring.

  • Monitordagi 15-pinni Arduino 128x64 lcd spi-ning 5V piniga ulang.
  • Keyin qurilmadagi 16-pinni GND chiqishiga ulang.

Ushbu pinlar LCD orqa yorug'likni yoqish uchun ishlatiladi. Keyinchalik, qurilma uchun mantiqiy operatsiyalarni sozlashingiz kerak.

  • Buning uchun monitordagi 1-pinni Arduino-ning GND chiqishiga ulang. Keyin ekrandagi 2-pinni Arduino-ning 5V chiqishiga ulang.
  • Keyin kontrastni sozlash potansiyometrini sozlashingiz kerak.

10K potansiyometrni oling va birinchi terminalni Arduinoning 5V chiqishiga, ikkinchisini 3-pinga va uchinchi terminalni GND chiqishiga ulang.

Keyin mikroprotsessorni yoqing. LCD displeydagi orqa yorug'lik yoqilganligini sezasiz. Bundan tashqari, potansiyometrdagi tugmani aylantirganingizda, LCD displeydagi belgilar bloklari yorqin/xira bo'lib qoladi. Men nima haqida gapirayotganimni bilish uchun quyidagi rasmga qarang. Agar sizning monitoringiz quyidagi rasmda ko'rsatilgan narsani ko'rsatsa, ekraningiz to'g'ri sozlangan! Agar bunga erisha olmasangiz, ulanishlaringizni va potansiyometrni tekshiring.


Endi biz ma'lumotlar liniyalarini va ekran bilan ishlaydigan boshqa pinlarni ulashimiz kerak. Quyidagi ulanish sxemasiga qarang.


LCD displey uchun boshqaruv simlarini ulashdan boshlaylik. Monitorning 5-pinini (RW) Arduino-ning GND piniga ulang. Ushbu pin ishlatilmaydi va o'qish/yozish uchun ishlatiladi. Keyin qalqonning 4-pinini (RS) Arduino-ning 7-raqamli chiqishiga ulang. RS PIN LCD displeyda biz ma'lumot yoki buyruq yuborayotganimizni ko'rsatish uchun ishlatiladi (kursor o'rnini o'zgartirish uchun).

Keyinchalik, LCD displeyning 6-pinini (EN) Arduino 8-ning raqamli chiqishiga ulang. EN qurilmadagi pinli rozetka bo'lib, monitorga ma'lumotlarni o'qishga tayyorligini bildirish uchun ishlatiladi.

Keyin qurilmadagi to'rtta ma'lumot pinini ulashimiz kerak. Qalqonning 14-pinini (DB7) Arduino-ning 12-raqamli piniga ulang. Keyin monitorning 13-pinini (DB6) Arduino-ning 11-raqamli chiqishiga ulang. Keyin monitor pin 12 (DB5) raqamli pin 10, keyin LCD PIN №11 (DB4) raqamli pin 9.

Mana, siz LCD-ni Arduino-ga ulashni tugatdingiz. Quyida ko'rsatilganidek, LCD displeydagi boshqaruv pinlari va ma'lumotlar pinlari o'rtasida to'rtta ulanmagan pin borligini sezasiz.


Ishga tushirish va sinovdan o'tkazish

Sensorli qurilma uchun kodni qaytadan kiritib ko‘ring. Asosan, LCD displeyda matnni boshqarish uchun uchta asosiy funktsiya mavjud:

  1. boshlanishi(jami ustunlar, jami satrlar). Bu funksiyadan foydalanish uchun displey hajmini ishga tushirish uchun setup() ichida foydalaniladi. Agar u 20x4 bo'lsa, u holda: lcd.begin(20,4), agar 16x2 bo'lsa, u holda: lcd.begin(16,2).
  2. setCursor(ustun raqami, qator raqami) - bu funksiya kursorni qurilmaga kerakli joyga qo'yadi. Ushbu funktsiyadan keyin ko'rsatilgan har qanday matn siz ko'rsatgan joydan boshlanadi. Misol uchun, foydalaning: lcd.setCursor(4,0), ya'ni beshinchi ustun va birinchi qator (0,0 dan boshlanadi).
  3. chop etish(“matn”) – Bu funksiya matnni LCD displeyda chop etish uchun ishlatiladi. "" ichidagi satr nima bo'lishidan qat'i nazar, u displeyda ko'rsatiladi.

Hammasi shu, endi siz olingan qurilmani loyihalaringizga qo'shishingiz mumkin.

Belgilar displeyi LCD 2004 IIC/I2C Blue Arduino uchun (LCD-2004B-IIC)

Suyuq kristall displey LCD 2004 yil(Suyuq kristall displey) 20 x 4 ko'k yorug'lik bilan va o'rnatilgan I2C/SPI konvertori.
LCD-2004B-IIC displeyi turli Arduino loyihalarini yaratish, turli mexatronika tizimlari va dasturlashni loyihalashni o'rganish, shuningdek, dizayn sevimli mashg'ulotlari uchun tavsiya etiladi.

  • LCD2004 displey parallel 8-bitli displey interfeysini I2C shinasiga aylantirish uchun konvertor platasi bilan jihozlangan, u orqali u Arduino-ga 0x3F yoki 0x27 manzilida ulanadi. Seriyali interfeysning mavjudligi Arduino kontrolleri bilan 2 simli aloqa orqali bog'lanish imkonini beradi, bu qo'shimcha tashqi qurilmalarni ulash uchun kontrollerning raqamli pinlarini tejashga yordam beradi.
  • Shuningdek, I2C/SPI konvertorida orqa yorug'likning yorqinligini sozlash uchun potansiyometr mavjud.
  • LCD-2004B-IIC displeyi bir vaqtning o'zida 80 tagacha belgini (20 ta belgi, 4 qator) ko'rsatishi mumkin.
  • Displey ko'k rangli LED yoritgich bilan jihozlangan.
  • HD44780 displey boshqaruvchisi displeyda ko'rsatish uchun raqamlar, lotin harflari va ba'zi yapon belgilarni saqlaydigan ROMga ega. Yo'qolgan belgilar, shu jumladan. va kirillcha belgilar kontrollerning RAM xotirasiga yuklanishi mumkin.
Xususiyatlari
Displey turi: suyuq kristall belgisi (lotin)
Har bir satrdagi belgilar soni: 20
Qatorlar soni: 4
Orqa yorug'lik rangi: ko'k
Belgi rangi: oq
Ko'rish burchagi: 180 °
Interfeyslar: IIC/I2C/TWI
Ta'minot kuchlanishi: 5V
Ishlash harorati: -20 °C dan +70 °C gacha
Olchamlari: 98 x 60 x 12 mm
Og'irligi: 80 gr.

LCD2004 suyuq kristalli monitori i2c qo‘llab-quvvatlashi bilan Arduino platasiga to‘rtta sim yordamida ulangan – ma’lumotlar uchun ikkita sim, quvvat uchun ikkita sim.

GND pin - platadagi GND ga ulanadi
VCC pin - 5V da
SCL pin - Arduino Uno va Nano A5 (SCL), Arduino Mega 21 (SCL) ga ulanadi
SDA chiqishi - Arduino Uno va Nano A4 (SDA), Arduino Mega 20 (SDA) ga ulanadi.

Arduino va LCD 2004 bilan I2C avtobusi orqali o'zaro ishlash uchun sizga kamida ikkita kutubxona kerak bo'ladi:
1. I2C bilan ishlash uchun Wire.h kutubxonasi allaqachon standart Arduino IDE dasturida mavjud.
2. LiquidCrystal_I2C.h kutubxonasi, u I2C shinasi orqali monitorni boshqarish uchun turli xil buyruqlarni o'z ichiga oladi va eskizni sodda va qisqaroq qilish imkonini beradi. Displeyni ulaganingizdan so'ng, siz qo'shimcha ravishda LiquidCrystal_I2C.h kutubxonasini o'rnatishingiz kerak.

Displeyni ulaganingizdan so'ng sizga kerak bo'ladi qo'shimcha ravishda LiquidCrystal_I2C.h kutubxonasini o'rnating.

Bu kutubxonaning turli versiyalari mavjud, joriy versiya NewliquidCrystal_1.3.4.

2. “NewliquidCrystal” kutubxonasi boʻlgan papkani “Arduino IDE” dasturlash muhiti oʻrnatilgan papkaga oching (masalan: C: Program FilesArduinolibraries)

3. “NewliquidCrystal” kutubxona papkasini “LiquidCrystal_I2C” deb o‘zgartiring.

4. Arduino IDE dasturlash muhitini qayta ishga tushiring

5. Eskizni Arduino platasiga yuklang

Barcha kerakli kutubxonalarni eskizga ulaganingizdan so'ng siz ishlashni boshlashingiz mumkin.

Agar displeyda belgilar ko‘rinmasa yoki ular juda xira bo‘lsa, displeyning orqa tarafidagi trim rezistorini (potentsiometr) burish orqali kontrastni sozlang.

Agar displeyda hech qanday belgilar ko'rsatilmasa, yuqori satr to'liq to'ldirilgan va pastki qator bo'sh bo'lsa, ob'ekt yaratish satrida (0x27 yoki 0x3F) displey manzilini o'zgartiring.

Displeyning orqa yorug'ligi yoqilmagan bo'lsa, VCC va GND pinlaridagi quvvat manbaini va displeyning orqa tomonida o'tish moslamasi mavjudligini tekshiring.