Guruh
|
FISH
|
Ball
|
631-18
|
Matmurodov D
|
|
15- Laboratoriya mashg’uloti.
Mavzu: 74NS595 suruvchi registr mikrosxemasi. 4 razradli matrisani boshqarish.
Ishdan maqsad: 74HC595 suruvchi registr mkrosxemasi bilan tanishish.
Nazariy qism
Ushbu amaliyot 74HC595 ga asoslangan. Ma'lumotlar varag'i 74HC595-ni "8-bitli ketma-ket, ketma-ket yoki chiqish mandallari bilan ketma-ket chiqib ketadigan siljish registri; 3-holat" deb ataydi. Boshqacha qilib aytadigan bo'lsak, siz uni bir vaqtning o'zida 8 ta chiqishni boshqarish uchun ishlatishingiz mumkin, shu bilan birga mikrokontrolleringizda bir nechta pin mavjud. O'zingizning natijangizni yanada kengaytirish uchun bir nechta registrlarni bir-biriga bog'lashingiz mumkin. (Shuningdek, foydalanuvchilar o'zlarining raqamlarida "595" yoki "596" yozilgan boshqa haydovchilar chiplarini qidirishni xohlashlari mumkin, ular juda ko'p. STP16C596, masalan, 16 LEDni boshqaradi va doimiy oqim manbalari o'rnatilgan ketma-ket qarshiliklarni yo'q qiladi.)
"3 holat" siz chiqish pinlarini yuqori, past yoki " yuqori impedans " sifatida o'rnatishingiz mumkinligini anglatadi . HIGH va LOW holatlaridan farqli o'laroq, pinlarni yuqori impedans holatiga birma-bir o'rnatishingiz mumkin emas. Siz faqat butun chipni birlashtira olasiz. Bu juda yaxshi ixtisoslashgan ish - Boshqarish kerak bo'lishi mumkin bo'lgan LED qatori haqida o'ylab ko'ring. Sizning loyihangizga o'rnatilgan aniq rejim sozlamalariga qarab, butunlay boshqa mikrokontrollerlar tomonidan amalga oshiriladi. Ikkala misol ham ushbu funktsiyadan foydalanmaydi va siz odatda unga ega bo'lgan chip olish haqida qayg'urmasligingiz kerak.
Endi eskizni yozishni boshlaymiz.
Setup () pastki dasturida biz LED ulanish pinlarini chiqishlar sifatida sozlaymiz
void setup() {
// initialize I/O pins
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
// generate characters to display for hexidecimal numbers 0 to F
for (int i = 0; i <= 15; i++) {
byte bits = myfnNumToBits(i) ;
myfnUpdateDisplay(bits); // display alphanumeric digit
delay(500); // pause for 1/2 second
}}
byte myfnNumToBits(int someNumber) {
switch (someNumber) {
case 0:
return B11111100;
break;
case 1:
return B01100000;
break;
case 2:
return B11011010;
break;
case 3:
return B11110010;
break;
case 4:
return B01100110;
break;
case 5:
return B10110110;
break;
case 6:
return B10111110;
break;
case 7:
return B11100000;
break;
case 8:
return B11111110;
break;
case 9:
return B11110110;
break;
case 10:
return B11101110; // Hexidecimal A
break;
case 11:
return B00111110; // Hexidecimal B
break;
case 12:
return B10011100; // Hexidecimal C or use for Centigrade
break;
case 13:
return B01111010; // Hexidecimal D
break;
case 14:
return B10011110; // Hexidecimal E
break;
case 15:
return B10001110; // Hexidecimal F or use for Fahrenheit
break;
default:
return B10010010; // Error condition, displays three vertical bars
break;
}
Hulosa:
Ushbu sozlash barcha chiqish pinlarini har doim faol va manzilli qiladi. O'rnatishning bitta kamchiliklari shundaki, siz dasturni ishga tushirishdan oldin har safar sxemani birinchi marta yoqsangiz, chiroqlarning so'nggi holatiga o'tishi yoki o'zboshimchalik bilan tugashi kerak. Arduino doskangizdagi MR va OE pinlarini boshqarish orqali siz bu yo'ldan o'tishingiz mumkin, ammo bu sizga ishlaydi va sizni ko'proq ochiq pinlar bilan qoldiradi.
Do'stlaringiz bilan baham: |