4-laboratoriya ishi Mikrokontrollerga diodli matritsani bog'lash



Yüklə 19,58 Kb.
tarix22.03.2024
ölçüsü19,58 Kb.
#181386
4-lab MKUDA


4-laboratoriya ishi
Mikrokontrollerga diodli matritsani bog'lash.

Biz allaqachon bilganimizdek, segment ko'rsatkichlari, o'lchovlar yoki raqamlar bo'ladimi, bir-biriga ulangan alohida LEDlardan iborat. Misol uchun, LEDlar guruhida barcha katodlar ulangan bo'lishi mumkin. Bunday ko'rsatkich "umumiy katod bilan" prefiksiga ega, aks holda - "umumiy anod bilan".
Agar biz LEDlarni raqam yoki shkala shaklida emas, balki panjara shaklida joylashtirsak nima bo'ladi? Endi sizda juda grafik ko'rsatkich bo'ladi. Ya'ni, siz nafaqat raqamni, balki qandaydir tasvirni ham ko'rsatishingiz mumkin.
Bunday panjara matritsa ko'rsatkichi deb ataladi va LEDlarni ishlatganda, LED matritsasi. Matritsa ko'rsatkichining o'lchamlari gorizontal va vertikal nuqtalar sonidir. Misol uchun, eng keng tarqalgan ko'rsatkichlar 8x8 piksel o'lchamiga ega.

Agar yuqori aniqlikdagi LED matritsasi kerak bo'lsa, u oddiygina bir nechta 8x8 ko'rsatkichlardan iborat. Buni qanday qilishni keyinroq ko'rib chiqamiz. Ayni paytda, keling, matritsa ichidagi barcha 64 LED qanday ulanganligini aniqlaylik.
Albatta, etti segmentli indikatorda bo'lgani kabi, barcha LEDlarni umumiy katod yoki anod bilan ulash mumkin bo'ladi. Bunday holda, bizga 64 ta kontroller pinlari yoki 8 ta siljish registrlari kerak bo'ladi. Ikkala variant ham juda behuda.
Yana to'g'ri variant - LEDlarni umumiy katodli 8 qismdan iborat guruhlarga birlashtirish. Bular matritsaning ustunlari bo'lsin. Keyinchalik, bu ustunlardagi parallel LEDlar yana umumiy anodli 8 qismdan iborat guruhlarga birlashtiriladi. Siz ushbu diagrammani olasiz:

#define ROW1 13
#define ROW2 12
#define ROW3 11
#define ROW4 10
#define ROW5 9
#define ROW6 8
#define ROW7 7
#define ROW8 6

#define COL1 5


#define COL2 4
#define COL3 3
#define COL4 2
#define COL5 A4
#define COL6 A3
#define COL7 A2
#define COL8 A1

const int row[] = {ROW1, ROW2, ROW3, ROW4, ROW5, ROW6, ROW7, ROW8};


const int col[] = {COL1,COL2, COL3, COL4, COL5, COL6, COL7, COL8};

int A[8][8] = {{1,1,1,1,1,1,1,1},


{1,1,1,0,0,1,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,0,0,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,1,1,1,1,1,1}};

int B[8][8] = {{1,1,1,1,1,1,1,1},


{1,0,0,0,0,0,0,1},
{1,1,0,1,1,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,0,0,0,1,1},
{1,1,0,1,1,0,1,1},
{1,1,0,1,1,0,1,1},
{0,0,1,1,1,1,0,0}};

void setup() {


Serial.begin(9600);
for (int i = 2; i <= 13; i++) {
pinMode(i, OUTPUT);
digitalWrite(i, LOW);
}
pinMode(A1, OUTPUT);
digitalWrite(A1, LOW);
pinMode(A2, OUTPUT);
digitalWrite(A2, LOW);
pinMode(A3, OUTPUT);
digitalWrite(A3, LOW);
pinMode(A4, OUTPUT);
digitalWrite(A4, LOW);
}

void loop() {


delay(10);


yaz(B);

}


void yaz(int matrix[8][8]){
for (int c=0; c<8; c++){

digitalWrite(col[c], HIGH);


for (int r = 0; r < 8; r++){
digitalWrite(row[r], 255*matrix[r][c]);
delay(1);
}
for (int r = 0; r < 8; r++){
digitalWrite(row[r], HIGH);
delay(1);
}
digitalWrite(col[c], LOW);
}
}
Yüklə 19,58 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©www.genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə