|
segmentli displeylardan foydalanadi
|
bet | 2/2 | Sana | 31.05.2024 | Hajmi | 1,64 Mb. | | #258448 |
Bog'liq o\'rnatilgan tizimlar 3-amaliy ish7 segmentli displeylardan foydalanadi. Bu ma'lumotlar ko'pincha raqamlar, belgilar va belgilar ko'rinishidagi raqamli ma'lumotlardir. Umumiy anodli va umumiy katodli etti segmentli displeylar alohida segmentlarni turli kombinatsiyalarda yoritish orqali kerakli sonni ishlab chiqaradi.
LED asosidagi 7-segmentli displeylar elektronika ishqibozlari orasida juda mashhur, chunki ulardan foydalanish oson va tushunish oson. Ko'pgina amaliy ilovalarda 7 segmentli displeylar 4 bitli BCD kirishidan CMOS 4511 yoki TTL 7447 kabi mos dekoder/drayv IC tomonidan boshqariladi. Bugungi kunda LED asosidagi 7-segmentli displeylar asosan kamroq oqim sarflaydigan suyuq kristall displeylar (LCD) bilan almashtirildi.
Quyida sizlar bilan 7 segment monitorni arduino bilan bosqarishni ko‘rib chiqamiz. Biz tajtiba ishimizda yetti segment monitorni katodli ulash usulidan foydalanib 1 dan 4 gacha bo‘lgan sonlarni bir sekund vatqt oralig‘i bilan 7 segment monitorda namoyish etishni ko‘rib chiqamiz.
Ishning bajarilish tartibi.
Dastlab tinkercad dasturiga kiramiz va tajriba ishimiz uchun kerak bo‘gan arduino uno, yetti segment monitor va rezistrlarni ishchi oynaga olib o‘tib olamiz.
Ishchi oynaga olib o‘tilgan elementlarni(8-rasm)da keltirilgan sxema asosida biri biriga bo‘g‘lab olamiz. Biz bu tajriba ishimizda umumiy katodli segment monitordan foydalanyapmiz. Shuning uchun dastlab segment monitorni rejimini umumiy katodga o‘tgazib qo‘yamiz(7-rasm).
7-rasm.Tinkercad dasturida segment monitorni turini o‘zgartirish.
To‘g‘ridan to‘g‘ri ulanishni amalga oshirsak segment monitorimiz kuyib qolish ehtimoli yuqori. Shuning biz bog‘lashda 200 om lik rezistorlardan foydalanamiz.
8-rasm.Arduino Uno va 7 segment monitor ulanish sxemasi.
9-rasm. Arduino uno va 7 segment display bog‘lanishi.
Mana Arduino Uno va segment monitorni bo‘g‘lab oldik. Endi bu tajriba ishimiz uchun dasturni yaratmiz. Dastur quydagida bo‘ladi.
// C++ code
//
void setup()
{
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);
}
void loop()
{
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
digitalWrite(10, HIGH);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
digitalWrite(7, HIGH);
delay(1000); // Wait for 1000 millisecond(s)
digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
digitalWrite(8, HIGH);
digitalWrite(7, LOW);
delay(1000); // Wait for 1000 millisecond(s)
}
Natijani tekshiramiz. Biz dasturni ishga tushirganimizda segment monitorda 1 sekund vaqt oralig‘i bilan 1 va 2 raqamlari ko‘rinadi.
9- rasm. Tajriba ishi natijasi.
10-rasm.7 segmentli display wokwi dasturida qilinishi.
11-rasm.tajribada sxemaning ishlashi.
Dastur kodi:
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
void setup() {
// Barcha segmentlar uchun pinlar OUTPUT qilib belgilanadi
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void loop() {
// F harfi
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
delay(1000);
// A harfi
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
delay(1000);
// R harfi
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH); // R harfi uchun o'zgartirish
delay(1000);
// R harfi (ikkinchi marta)
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, HIGH); // R harfi uchun o'zgartirish
delay(1000);
// U harfi
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW); // U harfi uchun o'zgartirish
delay(1000);
// H harfi
digitalWrite(a, HIGH);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW); // H harfi uchun o'zgartirish
delay(1000);
}
R harfi uchun g segmentini LOW dan HIGH ga o'zgartirdim.
U harfi uchun g segmentini HIGH dan LOW ga o'zgartirdim.
Bu kod orqali sonlar ketma ketligini hosil qildik
int a = 2;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
int f = 7;
int g = 8;
void setup() {
// Barcha segmentlar uchun pinlar OUTPUT qilib belgilanadi
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
}
void loop() {
// Raqamlarni ketma-ket chiqarish
for (int i = 0; i <= 9; i++) {
showDigit(i);
delay(1000);
}
}
void showDigit(int digit) {
// Barcha segmentlarni o'chirish
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, HIGH);
switch (digit) {
case 0:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
break;
case 1:
digitalWrite(b, LOW);
digitalWrite(c, LOW);
break;
case 2:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(g, LOW);
digitalWrite(e, LOW);
digitalWrite(d, LOW);
break;
case 3:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(g, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
break;
case 4:
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
break;
case 5:
digitalWrite(a, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
break;
case 6:
digitalWrite(a, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(e, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
break;
case 7:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
break;
case 8:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
case 9:
digitalWrite(a, LOW);
digitalWrite(b, LOW);
digitalWrite(c, LOW);
digitalWrite(d, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
break;
}
}
|
| |