Arduino: lcd displeyda matn chiqishi 1602 Mustafoyev A

Arduino: LCD displeyda matn chiqishi 1602
Mustafoyev A
Har bir inson uzoq vaqtdan beri har bir elektron qurilmada ekranga ega bo'lib, uning yordamida odamga barcha foydali ma'lumotlarni beradi. MP3 pleer o'ynayotgan trekning nomini ko'rsatadi, kvadrokopter masofadan boshqarish pulti parvoz telemetriyasini namoyish etadi, hatto kir yuvish mashinasi ham yuvish tugaguniga qadar vaqtni ko'rsatadi va smartfonda umuman shaxsiy kompyuterning butun ish stoli joylashgan!
Ehtimol, sizning keyingi qurilmangiz ham biron bir kichik displeydan zarar ko'rmaydi 🙂 keling, oddiy elektron soatlar yasashga harakat qilaylik! Va tablo sifatida biz 1602 keng tarqalgan va arzon ramziy suyuq kristalli displeydan foydalanamiz. Bu rasmdagi kabi:
16x2 ga qo'shimcha ravishda, 20x4 belgilar displeyi (20 ta belgidan iborat to'rtta satr), shuningdek 128x64 pikselli grafik displey juda mashhur hisoblanadi. Mana ular rasmlarda:
Kerakli komponentlar ro'yxati
Displey modulining o'zidan tashqari, 1602 displeyli oddiy misolni bajarish uchun Arduino-ga mos keladigan kontroller, non paneli, o'zgaruvchan qarshilik va bir nechta vilka-vilka simlari kerak bo'ladi. Kerakli komponentlarni shu yerda Savatga qo'shish mumkin, keyin esa onlayn-do'konimizga buyurtma berish mumkin.
Belgilar LCD displeyini ulash 1602
1602 displeyda 16 ta PIN mavjud. Rasmda bo'lgani kabi, ular odatda chapdan o'ngga raqamlanadi. Ba'zan xulosalar imzolanadi, masalan: DB0, DB1, EN va boshqalar. Qanday bo'lmasin, xulosalar ro'yxati har doim bir xil:
1 - "GND", er (minus quvvat);
2 - "Vcc", quvvat +5v;
3 - "VEE", kontrast;
4 - "RS", registrni tanlash;
5 - "R / W", ma'lumotlarni uzatish yo'nalishi (yozish / o'qish);
6 - "EN", sinxronizatsiya;
7-14 — «DB0», «DB1», .., DB7 ma'lumotlar shinalari;
15-orqa yorug'lik anodi (+5v);
16-orqa yorug'lik katodi (yer).
VI, RS va to'rtta db4, DB5, DB6, DB7 ma'lumotlar liniyalari kontrollerning raqamli pinlariga ulangan. Biz "R/W" chizig'ini kontrollerning "tuprog'iga" ulaymiz (chunki bizga faqat displey xotirasiga yozish funktsiyasi kerak). Biz hali orqa yorug'likni ulamaymiz, menimcha, siz buni o'zingiz osongina bilib olasiz 🙂
Displeyni Arduino Uno-ga ulashning sxematik diagrammasi
ЖК дисплей 1602
|
1
|
2
|
4
|
6
|
11
|
12
|
13
|
14
|
15
|
16
|
Ардуино Уно
|
GND
|
+5V
|
4
|
5
|
6
|
7
|
8
|
9
|
+5V
|
GND
|
Biz "Salom, dunyo!»
Har xil o'lchamdagi va turdagi LCD displeylar bilan ishlash uchun Arduino IDE muharririda maxsus liquidcrystal kutubxonasi mavjud. Kutubxonani ulash uchun dasturimizning birinchi qatorida quyidagi iborani yozamiz:
#include
Keyinchalik, displeyni ulash uchun Arduino-ning qaysi pinlarini ishlatganimizni ko'rsatishimiz kerak. Modulni ishga tushirishda biz ushbu ma'lumotni ko'rsatamiz:
Suyuq kristalli LCD displey(4, 5, 6, 7, 8, 9);
Bu erda dastlabki ikkita dalil RS va En xulosalari, qolgan to'rttasi DB4-DB7 ma'lumotlar avtobuslari.
Keyin, boshlash buyrug'i yordamida displey hajmini ko'rsating.:
lcd.boshlanish (16, 2);
Eslatib o'taman, bizning displeyimizda har biri 16 belgidan iborat ikkita qator mavjud.
Va nihoyat, matnni chiqarish uchun bizga oddiy "chop etish"funktsiyasi kerak bo'ladi. Ushbu funktsiya yordamida ma'lum bir ifodaning chiqishi quyidagicha ko'rinadi:
lcd.print ("Hello, world!" );
T o'liq dastur quyidagicha ko'rinadi:
Biz uni Arduino Uno-ga yuklaymiz va displeyda nima bo'layotganini ko'rib chiqamiz. Uchta asosiy vaziyat bo'lishi mumkin 🙂
1) displeyda " Salom, dunyo!». Shunday qilib, siz hamma narsani to'g'ri uladingiz va kontrast qandaydir mo " jizaviy tarzda dastlab to'g'ri sozlangan. Biz xursand bo'lamiz va keyingi bobga o'tamiz.
2) displeyda bir qator qora to'rtburchaklar ko'rsatiladi-kontrastni sozlash kerak! Buning uchun biz kontaktlarning zanglashiga tutqichli potansiyometrni qo'shdik. Displeyda aniq yozuv paydo bo'lguncha uni bir chetidan ikkinchisiga burang.
3) ikki qator qora to'rtburchaklar. Ehtimol, siz ulanganingizda biror narsani chalkashtirib yuborgansiz. Barcha simlarni uch marta tekshiring. Agar siz xato topmasangiz, mushukni tekshirib ko'ring!
Soatni dasturlash
Endi displey aniq ishlayotganida, oddiy qurilmamizni haqiqiy elektron soatga aylantirishga harakat qilaylik.
Diqqat! Vaqtni chiqarish uchun bizga "vaqt"kutubxonasi kerak bo'ladi. Agar u hali o'rnatilmagan bo'lsa, arxivni havoladan yuklab olishingiz mumkin. Uni ulang:
#include
Keyin "setTime"funktsiyasidan foydalanib joriy sana va vaqtni belgilang:
setTime( 23, 59, 59, 12, 31, 2015 );
Bu erda hamma narsa aniq: soat, daqiqa, soniya, oy, kun, yil.
Sanani ko'rsatish uchun biz bir nechta funktsiyadan foydalanamiz:
yil() — bizga yilni qaytaradi;
oy () oy;
day () kun;
soat () - soat;
minute() — bir daqiqani qaytaradi;
ikkinchi () soniya.
Endi biz bu haqiqatga e'tibor qaratamiz. Agar siz standart sana yozuvidagi belgilar sonini hisoblasangiz: "31.12.2015 23:59:59", biz 19 ni olamiz. Va bizda atigi 16 ta! Biroq, u bir qatorga chiqmaydi.
Muammoni yana bir foydali funktsiya — "setCursor"bilan hal qilishingiz mumkin. Ushbu funktsiya kursorni kerakli joyga qo'yadi. Masalan,:
lcd.setCursor(0,1);
Kursorni ikkinchi qatorning boshiga o'rnatadi. Kursor-bu keyingi "chop etish"buyrug'i bilan matnni chiqarishni boshlaydigan belgi joyi. Biz ushbu funktsiyadan birinchi qatorda sanani, ikkinchisida vaqtni ko'rsatish uchun foydalanamiz.
Sana va vaqt chiqishi bilan endi hamma narsa aniq. Oddiy narsalar qoldi. Masalan, displeyni har bir to'ldirgandan so'ng, biz uni "clear ()" funktsiyasi bilan tozalaymiz.:
lcd.clear();
Va displeyda ma'lumotlarni sekundiga bir martadan ko'proq namoyish qilishning ma'nosi yo'q, shuning uchun ikki takrorlash o'rtasida biz 1000 millisekund pauza qilamiz.
Shunday qilib, hamma narsani bir-biriga qo'shib, biz bunday dasturni olamiz:
#include
#include
LiquidCrystal lcd(4, 5, 6, 7, 8, 9);
void setup(){
lcd.begin(16, 2);
setTime(7,0,0,1,10,2015); // ABETDAN KEYIN 4:30, O’NBESHINCHI NOYABR 2023 YIL
}
void loop(){
lcd.clear();
lcd.print( day() );
lcd.print( "." );
lcd.print( month() );
lcd.print( "." );
lcd.print( year() );
lcd.setCursor(0, 1);
lcd.print( hour() );
lcd.print( ":" );
lcd.print( minute() );
lcd.print( ":" );
lcd.print( second() );
delay(1000);
}
Biz eskizni Arduino Uno-ga yuklaymiz va soatlarning borishini kuzatamiz! 🙂 Olingan bilimlarni mustahkamlash uchun soatimizni to'liq budilnikka pompalashni maslahat beraman. Siz shunchaki bir nechta tugma va signalni qo'shishingiz kerak bo'ladi 🙂
|