O’zbekiston respublikasi axborot texnologiyalari va kommunikatsiyalarni rivojlantirish vazirligi
Muhammad al-xorazmiy nomidagi toshkent axborot texnologiyalari universiteti samarqand filiali
Telekommunikatsiya texnologiyalari va kasb ta’limi fakulteti
“O`rnatilgan tizimlar”
4-5-LABARATORIYA ISHI
Bajaruvchi: Habibullayev S
Tekshiruvchi: Xaqberdiyev S
Samarqand-2022
REJA:
1. 74NS595 suruvchi registr mikrosxemasi. 4 razryadli matrisani boshqarish.
2. 8x8 yorug‘lik diodili matritsani Arduino da boshqarish.
Biz ushbu labaratoriya topshirigimizda ardunioga 7 segmentli 4 razryadli diodni uladik va ishga tushurdik
ISHLATILGAN KODLAR
int latchPin = 12;
int clockPin = 11;
int dataPin = 13;
byte numbers[11] = {
0b00000011,
0b10011111,
0b00100101,
0b00001101,
0b10011001,
0b01001001,
0b01000001,
0b00011111,
0b00000001,
0b00001001,
0b11111110
};
byte current = 0;
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop()
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, numbers[current%11]);
digitalWrite(latchPin, HIGH);
current++;
delay(500);
}
2. 8x8 yorug‘lik diodili matritsani Arduino da boshqarish.
Biz ushbu labaratoriya ishida 8x8 diodlarni yigilganini korishimiz mumkin va uni ishga tushurdik
ISHLATILGAN KODLAR
int CLOCK_1 = 12;
int LATCH_1 = 11;
int DATA_1 = 10;
int CLOCK_2 = 9;
int LATCH_2 = 8;
int DATA_2 = 7;
int i=0;
int b=0;
int rep=10;
int time=500;
const byte F[9] ={
B11111110,
B11111101,
B11111011,
B11110111,
B11101111,
B11011111,
B10111111,
B01111111,
B11111111,
};//Filas
void setup(){
pinMode(LATCH_1, OUTPUT);
pinMode(CLOCK_1, OUTPUT);
pinMode(DATA_1, OUTPUT);
pinMode(LATCH_2, OUTPUT);
pinMode(CLOCK_2, OUTPUT);
pinMode(DATA_2, OUTPUT);
}
void loop(){
for (b = 0;b < rep ; b++){
LH();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LO();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LL();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LA();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LE();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LM();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LM();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LA();
}
borrar();
delay(time);
}
/*for (b = 0;b < rep ; b++){
LA();
}
borrar();
delay(time);
for (b = 0; b < rep ; b++){
LB();
}
borrar();
delay(time);
for (b = 0; b < rep ; b++){
LC();
}
borrar();
delay(time);
for (b = 0; b < rep ; b++){
LD();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LE();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LF();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LG();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LH();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LI();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LJ();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LK();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LL();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LM();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LN();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LNH();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LO();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LP();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LQ();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LR();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LS();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LT();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LU();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LV();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LW();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LX();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LY();
}
borrar();
delay(time);
for (b = 0;b < rep ; b++){
LZ();
}
borrar();
delay(time);
}//Fin del Loop*/
void borrar(){
const byte CBorrar[9] = {
B00000000,//Columna Q7 a Q0
B00000000,//Columna Q7 a Q0
B00000000,//Columna Q7 a Q0
B00000000,//Columna Q7 a Q0
B00000000,//Columna Q7 a Q0
B00000000,//Columna Q7 a Q0
B00000000,//Columna Q7 a Q0
B00000000,//Columna Q7 a Q0
};//Columnas
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CBorrar[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}//Fin del for
}
void LA(){
const byte CA[9] = {
B00000000,//Columna Q7 a Q0
B00111100,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01111110,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CA[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LB(){
const byte CB[9] = {
B00000000,//Columna Q7 a Q0
B00111110,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B00111110,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B00111110,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CB[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LC(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B00111100,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B00111100,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LD(){
const byte CD[9] ={
B00000000,//Columna Q7 a Q0
B00111110,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B00111110,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CD[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LE(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B01111110,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B01111110,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B01111110,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LF(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B01111110,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00011110,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LG(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B00111100,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00110010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B01000010,//Columna Q7 a Q0
B00111100,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LH(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B10000010,//Columna Q7 a Q0
B10000010,//Columna Q7 a Q0
B10000010,//Columna Q7 a Q0
B11111110,//Columna Q7 a Q0
B10000010,//Columna Q7 a Q0
B10000010,//Columna Q7 a Q0
B10000010,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LI(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B11111110,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B11111110,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LJ(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B11111110,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010000,//Columna Q7 a Q0
B00010010,//Columna Q7 a Q0
B00001100,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LK(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B00100010,//Columna Q7 a Q0
B00010010,//Columna Q7 a Q0
B00001010,//Columna Q7 a Q0
B00000110,//Columna Q7 a Q0
B00001010,//Columna Q7 a Q0
B00010010,//Columna Q7 a Q0
B00100010,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LL(){
const byte CC[9] ={
B00000000,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B00000010,//Columna Q7 a Q0
B01111110,//Columna Q7 a Q0
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LM(){
const byte CC[9] ={
B00000000,
B01000010,
B01100110,
B01011010,
B01000010,
B01000010,
B01000010,
B01000010,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LN(){
const byte CC[9] ={
B00000000,
B00000010,
B01000110,
B01001010,
B01001010,
B01010010,
B01100010,
B01000010,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LNH(){
const byte CC[9] ={
B00111100,
B01000010,
B01000110,
B01001010,
B01001010,
B01010010,
B01100010,
B01000010,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LO(){
const byte CC[9] ={
B00000000,
B00111100,
B01000010,
B01000010,
B01000010,
B01000010,
B01000010,
B00111100,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LP(){
const byte CC[9] ={
B00000000,
B00111110,
B01000010,
B01000010,
B00111110,
B00000010,
B00000010,
B00000000,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LQ(){
const byte CC[9] ={
B00000000,
B00111100,
B01000010,
B01000010,
B01000010,
B01000010,
B01111100,
B10000000,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LR(){
const byte CC[9] ={
B00000000,
B00111110,
B01000010,
B01000010,
B00111110,
B00001010,
B00010010,
B00100000,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LS(){
const byte CC[9] ={
B00000000,
B11111100,
B00000010,
B00000010,
B01111100,
B10000000,
B10000000,
B01111110,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LT(){
const byte CC[9] ={
B00000000,
B11111110,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
B00010000,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LU(){
const byte CC[9] ={
B00000000,
B01000010,
B01000010,
B01000010,
B01000010,
B01000010,
B01000010,
B00111100,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LV(){
const byte CC[9] ={
B00000000,
B10000010,
B10000010,
B10000010,
B10000010,
B01000100,
B00101000,
B00010000,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LW(){
const byte CC[9] ={
B00000000,
B10000010,
B10000010,
B10010010,
B10010010,
B01010100,
B00101000,
B00000000,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LX(){
const byte CC[9] ={
B00000000,
B10000010,
B01000100,
B00101000,
B00010000,
B00101000,
B01000100,
B10000010,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LY(){
const byte CC[9] ={
B00000000,
B10000010,
B01000100,
B00101000,
B00010000,
B00010000,
B00010000,
B00010000,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
void LZ(){
const byte CC[9] ={
B00000000,
B11111110,
B01000000,
B00100000,
B00010000,
B00001000,
B00000100,
B11111110,
};
for (i = 0; i < 9; i++){
digitalWrite(LATCH_1, LOW);
digitalWrite(LATCH_2, LOW);
shiftOut(DATA_1, CLOCK_1, MSBFIRST, F[i]);
shiftOut(DATA_2, CLOCK_2, MSBFIRST, CC[i]);
digitalWrite(LATCH_1, HIGH);
digitalWrite(LATCH_2, HIGH);
delay(1);
}
}
Dostları ilə paylaş: |