Guruh talabasi Ostanaquov Muxammadmirzo Laboratoriya ishi №13. Yetti segmentli bitta raqamli k
Download 172.85 Kb. Pdf ko'rish
|
Laboratoriya ishi № 15.
7 -segmentli displeylardan tashkil topgan 4 -bitli matritsa. Laboratoriya ishining maqsadi: Yetti segmentli 4 bitli matritsa bilan tanishish va uni loyihalarda qo‘llash. Laboratoriyaning nazariy qismi. Arduino to‘rt raqamli yetti segmentli LED indikatori Arduinoda hisoblagichlar yoki taymerlarni yaratish uchun ishlatiladi, tayyor loyihalarda sensorlardan raqamli qiymatlarni chiqaradi. Keling, to‘rt belgili LED indikatorining pinoutini, modulni Arduino kartasiga qanday ulashni ko‘rib chiqaylik va dasturlarning batafsil tavsifi bilan indikatordan foydalanishning bir nechta misollarini ko‘rib chiqaylik. To‘rt belgidan iborat indikator segmentlarining pinouti Arduinoning bir belgili yetti segmentli ko‘rsatkichidan farq qilmaydi. Modul o‘rtasidagi farq raqamlar (belgilar) sonida - har bir raqam mos keladigan katoddan quvvat manbasini uzish orqali yoqiladi. Shunday qilib, raqamlardagi bitta segmentning barcha LEDlari (masalan, A-A-A-A) umumiy katodga parallel ravishda ulanadi. Segmentni yoqish juda oson. Keling, kichik bir misolni ko‘rib chiqaylik. Dastlab, barcha 4 ta raqam (D1, D2, D3, D4) quvvatlanadi. Ikkinchi belgidagi A segmentini yoqish uchun siz A oyog‘iga (anod) kuchlanish qo‘llashingiz kerak. Ammo segment D2 oyog‘idagi kuchlanishni o‘chirmagunimizcha yonmaydi. Shu tarzda siz 7 segmentli displey modulidagi har qanday LEDni yoqishingiz mumkin. Ko‘rsatkichni Arduino -ga ulash muammosi shundaki, bortdagi ko‘plab pinlar bir vaqtning o‘zida ishlatiladi. Bundan tashqari, indikatorda bir vaqtning o‘zida faqat bitta raqam ko‘rsatilishi mumkin. Shuning uchun, juda qisqa vaqt ichida har bir raqam bo‘yicha navbat bilan kerakli raqamni chiqarish kerak. Inson ko‘rish qobiliyatini o‘zgartirishga vaqt topolmaydi va sizga hamma tushirishlar bir vaqtning o‘zida yonayotganga o‘xshaydi. const int cathodePins[4] = {10,11,12,13}; const int ssdPins[7] = {3,4,5,6,7,8,9}; const int dotPin = 2; static int gCounter = 0; static int buttonPin = 2; bool state = true; byte numbers[10] = { B00111111, // 0 "0" AAA B00000110, // 1 "1" F B B01011011, // 2 "2" F B B01001111, // 3 "3" GGG B01100110, // 4 "4" E C B01101101, // 5 "5" E C B01111101, // 6 "6" DDD B00000111, // 7 "7" B01111111, // 8 "8" B01101111, // 9 "9" }; void setup(){ for (int i = 0 ; i < 4 ; ++i) pinMode(cathodePins[i],OUTPUT); for (int i = 0; i < 7; ++i) pinMode(ssdPins[i],OUTPUT); pinMode(dotPin,OUTPUT); TCCR1A = 0; TCCR1B = 0; TCNT1 = 0; OCR1A = 15624; TCCR1B |= (1< pinMode(buttonPin,INPUT); attachInterrupt(digitalPinToInterrupt(buttonPin),buttonTapped,RISING); } void findDigits(int digits[4],int counter) { int digitCounter = 0; while(counter > 0) { digits[digitCounter] = counter % 10; counter = counter / 10; digitCounter++; } } void displayNumber(int counter) { int digits[4] = {0}; findDigits(digits,counter); //D4 digitalWrite(cathodePins[0],LOW); digitalWrite(cathodePins[1],HIGH); digitalWrite(cathodePins[2],HIGH); digitalWrite(cathodePins[3],HIGH); for(int j = 0 ; j < 7; ++j) { if(numbers[digits[3]] & 1< else digitalWrite(ssdPins[j],LOW); } // delay(5); //D3 digitalWrite(cathodePins[0],HIGH); digitalWrite(cathodePins[1],LOW); digitalWrite(cathodePins[2],HIGH); digitalWrite(cathodePins[3],HIGH); for(int j = 0; j<7; ++j) { if(numbers[digits[2]]& 1< else digitalWrite(ssdPins[j],LOW); } // delay(5); //D2 digitalWrite(cathodePins[0], HIGH); digitalWrite(cathodePins[1], HIGH); digitalWrite(cathodePins[2], LOW); digitalWrite(cathodePins[3], HIGH); for(int j = 0; j<7; ++j) { if(numbers[digits[1]]& 1< else digitalWrite(ssdPins[j], LOW); } // delay(5); //D1 digitalWrite(cathodePins[0], HIGH); digitalWrite(cathodePins[1], HIGH); digitalWrite(cathodePins[2], HIGH); digitalWrite(cathodePins[3], LOW); for(int j = 0; j<7; ++j) { if(numbers[digits[0]]& 1< else digitalWrite(ssdPins[j], LOW); } // delay(5); } void loop(){ displayNumber(gCounter); } ISR(TIMER1_COMPA_vect){ if(state){ gCounter++; if(gCounter == 10000) gCounter = 0; } } void buttonTapped(){ state=!state; delay(10); } Download 172.85 Kb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling