Guruh talabasi Ostanaquov Muxammadmirzo Laboratoriya ishi №13. Yetti segmentli bitta raqamli k


Download 172.85 Kb.
Pdf ko'rish
bet4/6
Sana17.06.2023
Hajmi172.85 Kb.
#1547572
1   2   3   4   5   6
Laboratoriya ishi № 16. 
Shift registri 74HC595. 
Laboratoriya ishining maqsadi: 74HC595 smenali registr bilan tanishish va undan 
loyihalarda foydalanish. 
Laboratoriyaning nazariy qismi. 
74HC595 - ketma -ket IN - Parallel OUT printsipi bo‘yicha ishlaydigan 8 -
bitli smenali registr. Ya'ni, bu o‘zgarish registri kirish ma'lumotlarini ketma -ket 
oladi va bu ma'lumotni 8 pinli parallel chiqarilishini ta'minlaydi. Uning yordami 
bilan siz ishlatiladigan mikrokontroller pinlarini (bizning holatda, Arduino platasi) 
sonini sezilarli darajada kamaytirishingiz mumkin. 
74HC595 mikrokontrolerga ulanish uchun 3 ta pinni (Clock, Data & Latch) 
ishlatadi va uning 8 chiqish pinini kuzatishga imkon beradi. Soat pimi 
sinxronlashtiruvchi impulslarni uzluksiz etkazib berish uchun ishlatiladi va 


Ma'lumot pinasi unga kerakli ma'lumotlarni yetkazib berish uchun ishlatiladi. 
74HC595 smenali registr SPI interfeysida ishlaydi. 
74HC595 uchun pin vazifalari quyidagi ikkita rasmda ko‘rsatilgan. 
74HC595 smenali registr kontaktlarining rus tilidagi belgilarining 
dekodlanishi quyidagicha. 
Q0 -Q7 - sakkizta umumiy maqsadli parallel chiqish. Bu chiqishlar SPI orqali 
olingan ma'lumotlarni qandaydir tarzda ishlatishimiz uchun kerak - LED chizig‘ini, 
yoki indikator segmentlarini, dekoderni va boshqalarni ulash. 
VCC - bu quvvat kuchlanishi. 
GND - umumiy sim. 
Q7 '- ketma-ket ma'lumotlar chiqishi. Aslida, bu MISO. 
DS - ketma -ket ma'lumotlarni kiritish yoki MOSI. 
MR - asosiy sozlamalarni tiklash. Barcha chiqishlarni 0 ga qaytaradi. Shift 
registrining to‘g‘ri ishlashi uchun uning mantig‘i 1 bo‘lishi kerak. 
SH_CP - bizning holatimizda bu chip tanlash bo‘ladi. 


ST_CP - bu registrni ushlab turuvchi boshqaruv pimi, bizning holatimizda u 
soat impulslari qo‘llanilishi kerak bo‘lgan sinxronizatsiya pimi bo‘ladi. Ammo 
Arduino tegishli buyruqni ishlatganda buni biz uchun avtomatik ravishda bajaradi. 
OE - chiqishni faollashtirish. Salbiy qiymat bilan ketma -ket chiqish yoqiladi, 
ijobiy qiymat bilan o‘chiriladi. 
Shift registri qanday ishlaydi? 
Chipni ulashni boshlashdan oldin, keling, bu jarayon qanday ishlashini ko‘rib 
chiqaylik. 
Aniqlash kerak bo‘lgan birinchi narsa, ikkilik kodni bilmaganlar uchun "bit" 
tushunchasi. Biz "bit" haqida gapirganda, biz ikkilik qiymatni tashkil etuvchi 
raqamlardan birini nazarda tutamiz. Oddiy raqamlardan farqli o‘laroq, biz odatda 
birinchi bitni eng katta deb hisoblaymiz. Shunday qilib, agar biz 10100010 ikkilik 
qiymatini olsak, birinchi bit aslida 0 va sakkizinchi bit 1 ga teng. Shuni ham 
ta'kidlash kerakki, agar bu nazarda tutilmagan bo‘lsa, har bir bit faqat 0 yoki 1 
bo‘lishi mumkin. 
Chipda biz chiqish uchun ishlatilishi mumkin bo‘lgan sakkizta pin bor
ularning har biri registrda bir oz bog‘liq. 74HC595 smenali registrda biz ularni 
QAdan QHgacha ko‘rib chiqamiz. 
Bu chiqishlarni Arduino orqali yozish uchun biz smenali registrga ikkilik 
qiymatni yuborishimiz kerak va shu raqamdan smenali registr qaysi chiqishlardan 
foydalanish kerakligini aniqlay oladi. Masalan, agar biz 10100010 ikkilik qiymatini 
yuborsak, yuqoridagi rasmda yashil rangda ajratilgan kontaktlar faol bo‘ladi, qizil 
rangda ajratilganlar esa faol bo‘lmaydi. 
Bu shuni anglatadiki, eng o‘ng bit QH va eng chap bit QA ga mos keladi. 
Chiqish, agar u bilan bog‘liq bo‘lgan bit 1 ga o‘rnatilsa, faol deb hisoblanadi. Buni 
yodda tutish kerak, aks holda qaysi pinlardan foydalanayotganingizni bilish juda 
qiyin bo‘ladi. 
Endi biz qanday pinlarni ishlatishni ko‘rsatish uchun bit ofsetni qanday 
ishlatishni bilib olsak, biz uni Arduinoga ulashni boshlashimiz mumkin. 


int latchPin = 12; 
int clockPin = 11; 
int dataPin = 13; 
byte leds = 0; 
int currentLED = 0; 
void setup() 

pinMode(latchPin, OUTPUT); 
pinMode(dataPin, OUTPUT); 
pinMode(clockPin, OUTPUT); 
leds = 0; 

void loop() 

leds = 0; 
if (currentLED == 7) 



currentLED = 0; 

else 

currentLED++; 

bitSet(leds, currentLED); 
digitalWrite(latchPin, LOW); 
shiftOut(dataPin, clockPin, LSBFIRST, leds); 
digitalWrite(latchPin, HIGH); 
delay(250); 


Download 172.85 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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