Shift registri 74HC595



Download 288,95 Kb.
bet1/2
Sana03.06.2022
Hajmi288,95 Kb.
#633187
  1   2
Bog'liq
Shift registri 74HC595


Shift registri 74HC595
Arduino taxtasi cheklangan miqdordagi pinlarni o'z ichiga oladi va murakkab loyiha bilan ular to'liq ish uchun etarli emas. Misol uchun, segment indikatorini ulash uchun siz sakkiz pinni ishlatishingiz kerak, ikkita ko'rsatkich 16 pinni egallaydi. Shift registri sizga pinlarni boshqarishning bir qismini o'zingizga olib, ishlatiladigan pinlar sonini saqlashga imkon beradi.
Shift registr nima
Elektronikada registr - bu tez kirish uchun kichik hajmdagi ma'lumotlarni saqlashi mumkin bo'lgan qurilma. Ular har bir kontroller va mikroprotsessorda, shu jumladan Arduino Uno platasining bir qismi bo'lgan Atmega328 mikrokontrollerida joylashgan. Qoidaga ko'ra, registrlar D-flip-floplar yig'indisi - elementar xotira hujayralari. Siz registrga ma'lumotlarni ketma-ket yoki parallel yozishingiz mumkin. Birinchi turdagi registrlar siljish, ikkinchi tur - parallel deb ataladi.

Siz registrdagi ma'lumotlarni bir vaqtning o'zida barcha hujayralardan o'qishingiz mumkin. Aynan shu xususiyat bizga bir nechta LEDlar bilan ishlashga yordam beradi.


Registr siljish registri deb ataladi, chunki unga har bir yangi bit qo'shilsa, biz qolgan qismini yon tomonga siljitamiz. Eslatib o'tamiz, bitta bit bizga nol yoki bitta, rost yoki yolg'onni saqlashga imkon beradi. Bu qanday sodir bo'lishini ko'rish uchun diagrammani ko'rib chiqaylik.

Dastlabki holatda registr allaqachon sakkiz bit bilan to'ldirilgan bo'lsin. Keling, sakkizta yangi bitni "itarish" ga harakat qilaylik: 11011010.




Ko'rib turganingizdek, ikkita takrorlashdan so'ng, registrning boshida ikkita yangi bit bor edi va oxirgi kataklardagi ikkita bit chetidan "tushib" yo'qoldi. Sakkizinchi bosqichda butun registr yangi bitlar bilan to'ldirildi.

Registrlar zanjirlangan bo'lishi mumkin. Bunday holda, oldindan olingan bit izsiz yo'qolmaydi, balki keyingi registrning boshiga o'tadi. Bu mavjud chiqishlar sonini oshiradi.




Eng ommabop sakkiz bitli (8 ta boshqariladigan chiqish) siljish registrlari 74HC595 (KR1564IR52 ning mahalliy analogi), uni boshlang'ich to'plamlarda topish yoki alohida sotib olish mumkin.

Sxema


Q0 - Q7 pinlari (15 va 1..7)
GND (8) - tuproq
Q7' (9) - zanjir hosil qilish uchun keyingi registrning Q0 ga ulanishi kerak bo'lgan registrning chiqishi.
MR (10) - registr qiymatlarini tiklash. Qayta tiklash LOW qabul qilinganda sodir bo'ladi
SH_CP (SRCLK) (11) - DS dan ichki hujayralarga ma'lumotlarni uzatish uchun soat chizig'i (soatni kiritish). SH - siljish, CP - soat pin
ST_CP (RCLK) (12) - ichki hujayralardan tashqi hujayralarga ma'lumotlarni uzatish uchun impuls chizig'ini sinxronlash (chiqishlarni sinxronlashtirish). ST - saqlash, CP - soat pin
OE (13) - teskari, tashqi hujayralardan ma'lumotlarni chiqarishga ruxsat (chiqish holatini yuqori qarshilikdan ish holatiga o'tkazish uchun kirish)
DS (SER) (14) - ketma-ket ma'lumotlar liniyasi (ma'lumotlar seriyasi)
VCC (16) - quvvat, 5V
74HC595 - ketma-ket kirish, ma'lumotni ketma-ket yoki parallel chiqarish, mandal va chiqishda uchta holatga ega bo'lgan sakkiz bitli siljish registridir. Boshqacha qilib aytganda, ushbu registr sizga kontrollerning o'zida bir nechta chiqishlardan foydalangan holda 8 ta chiqishni boshqarish imkonini beradi. Bundan tashqari, bir nechta bunday registrlarni kaskadlash uchun ketma-ket birlashtirish mumkin.

74HC595 signallarni nafaqat parallel, balki ketma-ket ravishda ham chiqarishi mumkin. Bu 16 yoki undan ortiq chiqishni olish uchun bir nechta registrlarni birlashtirganda kerak. Bunday holda, signalning dastlabki 8 biti unga parallel chiqish uchun keyingi registrga o'tkaziladi.

Keling, kontaktlarning zanglashiga olib keladigan registrni va rezistorli sakkizta LEDni talab qiladigan sxemani yig'amiz. Shu bilan birga, shuni yodda tutingki, bizda LEDlar uchun sakkizta registr pinlari bor va taxtada biz faqat uchta raqamli pinni ishlatamiz (beshta pinni tejash).

O'zgartirish registrini non taxtasining o'rtasiga joylashtiring, shunda oyoqlar markaziy ajratuvchi yo'l bilan ajratiladi.

16 (VCC) va 10 (MR) pinlarini Arduino-ning 5V piniga ulang.

8 (GND) va 13 (OE) pinlarini Arduino-dagi GND piniga ulang.

Shift registrini boshqaradigan uchta kontaktni ulaymiz:


  • 11-pin (SH_CP, SRCLK) Arduino-dagi 11-pinga (soat)

  • 12-pin (ST_CP, RCLK) Arduino-ning 12-piniga (latch)

  • 14-pin (DS, SER) Arduino 9-piniga (ma'lumotlar)

Keyinchalik, barcha sakkizta LEDni rezistorlar bilan bog'laymiz. E'tibor bering, registrning bir tomonida ketma-ket ettita pin bor, sakkizinchisi esa 15-pinda.

Ulanish opsiyasi (boshqa taxta pinlari ishlatiladi).

Bitta LEDni yoqing
Keling, bitta LEDni yoqishga harakat qilaylik. Birinchidan, biz ishlatiladigan taxta pinlarini ko'rsatamiz (soat chizig'i - clockPin, ma'lumotlar - dataPin, latch - latchPin).

Setup() da biz ular uchun OUTPUT rejimini o'rnatamiz va registr signallarni qabul qilmasligi uchun mandalni baland qilib qo'yamiz.

Loop() da keling, registrga biror narsa yuborishga harakat qilaylik. Avval mandalga LOW qo'yamiz (ma'lumotlar uzatishni boshlaymiz. Endi registr Arduinodan signallarni oladi). Keyinchalik, biz ma'lumotlarni ikkilik shaklda yuboramiz. Misol uchun, 0b10000000 baytini yuboramiz (birinchi LED yonishi kerak). Oxirida biz mandalga HIGH ni o'rnatamiz (ma'lumotlarni uzatishni tugatamiz).
Bitta LEDni yoqing
Keling, bitta LEDni yoqishga harakat qilaylik. Birinchidan, biz ishlatiladigan taxta pinlarini ko'rsatamiz (soat chizig'i - clockPin, ma'lumotlar - dataPin, latch - latchPin).

Setup() da biz ular uchun OUTPUT rejimini o'rnatamiz va registr signallarni qabul qilmasligi uchun mandalni baland qilib qo'yamiz.

Loop() da keling, registrga biror narsa yuborishga harakat qilaylik. Avval mandalga LOW qo'yamiz (ma'lumotlar uzatishni boshlaymiz. Endi registr Arduinodan signallarni oladi). Keyinchalik, biz ma'lumotlarni ikkilik shaklda yuboramiz. Misol uchun, 0b10000000 baytini yuboramiz (birinchi LED yonishi kerak). Oxirida biz mandalga HIGH ni o'rnatamiz (ma'lumotlarni uzatishni tugatamiz).
int dataPin = 9; // к выводу 14 регистра SD
int clockPin = 11; // к выводу 11 регистра (SH_CP)
int latchPin = 12; // к выводу 12 регистра (ST_CP)

void setup() {


pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
}

void loop() {


digitalWrite(latchPin, LOW); // начинаем передачу данных
shiftOut(dataPin, clockPin, LSBFIRST, 0b10000000);
digitalWrite(latchPin, HIGH); // прекращаем передачу данных
}

ShiftOut() da LSBFIRST ni MSBFIRST ga o'zgartirsangiz, zanjirdagi birinchi emas, balki oxirgi LED yonadi.

Bir nechta LEDlar bilan ishlaganda, har bir LED uchun alohida-alohida doimiy ravishda uchta qator kod yozish juda qulay emas. Shuning uchun biz kodni funksiya shaklida chiqaramiz va biz uchinchi LEDni miltillaymiz.
int dataPin = 9; // к выводу 14 регистра SD
int clockPin = 11; // к выводу 11 регистра (SH_CP)
int latchPin = 12; // к выводу 12 регистра (ST_CP)

void setup() {


pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW);
}

void loop() {


setByte(0b00100000);
delay(1000);
setByte(0b00000000);
delay(1000);
}

void setByte(byte value) {


digitalWrite(latchPin, LOW); // начинаем передачу данных
// устанавливаем нужный байт
shiftOut(dataPin, clockPin, LSBFIRST, value);
digitalWrite(latchPin, HIGH); // прекращаем передачу данных
}
Анимация светодиодов
Другой скетч.

int dataPin = 9; // к выводу 14 регистра


int clockPin = 11; // к выводу 11 регистра (SH_CP)
int latchPin = 12; // к выводу 12 регистра (ST_CP)

byte path[4] = {


B11000011,
B00111100,
B00100100,
B00011000
};

void setup() {


pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}

void loop() {


for (int i = 0; i < 4; i++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, path[i]);
digitalWrite(latchPin, HIGH);
delay(250);
}
for (int i = 0; i < 4; i++) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, path[3 - i]);
digitalWrite(latchPin, HIGH);
delay(250);
}
}
В path[] мы указываем последовательность включённых и выключенных светодиодов. Между этими последовательностями будет происходит анимация.
Для анимации бегущих огней можно реализовать задачу через функцию 
Download 288,95 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish