Ushbu o'quv qo'llanma siz 7 segmentli led displeylar bilan biroz tanish ekanligingizni taxmin qiladi va 7


Download 142.44 Kb.
Sana06.10.2023
Hajmi142.44 Kb.
#1693416
Bog'liq
Ushbu o\'quv qo\'llanma siz 7 segmentli led displeylar bilan biroz


Kirish
Ushbu o'quv qo'llanma siz 7 segmentli LED displeylar bilan biroz tanish ekanligingizni taxmin qiladi va 7 segmentli LED displeylar 101 -- Bitta ishni qanday qilish bo'yicha o'quv qo'llanmasiga asoslanadi. Ushbu qo'llanmani bajarish uchun siz foydalanayotgan 7 segmentli LED displey uchun pinout kerak bo'ladi. Agar sizda bu ma'lumot bo'lmasa, avvalgi qo'llanmani ko'ring.
Loyihangizga bir yoki bir nechta siljish registrlarini qo'shish 7 segmentli LED displeylarni boshqarish uchun zarur bo'lgan Arduino-ga mos keladigan kiritish/chiqarish pinlari sonini tejaydi va bir nechta raqamli displeylar uchun zarur bo'lgan quvvatni sezilarli darajada kamaytiradi.
Loyiha qurilishi
Quyidagi Frizing diagrammasida ko'rsatilganidek, bitta non taxtasini ikkinchisining ustiga qo'ying. Ba'zi non taxtalarida ularni bir-biriga yopish uchun ishlatilishi mumkin bo'lgan mos keladigan uyalar va yorliqlar mavjud, ammo bu muhim emas.


MAVZU: 7 SEGMENT USTIDA AMALLAR BAJARISH


REJA:
1- Arduino Uno yoki Nano taraqqiyot kengashi. 2- 74HC595 Shift registry haqida
3- Arduino bilan mos keladigan ishlab chiqish platasini 74HC595 ga ulashish tartibi.
Arduino Uno yoki Nano taraqqiyot kengashi
ATMega328 mikroprotsessoriga ega 5VDC Arduino Uno yoki Nano ushbu qo'llanmani ishlab chiqishda foydalanilgan 74HC595 Shift Register va Toplite 5161BS 7 segmentli LED displeyni boshqarib, ushbu loyihani xavfsiz quvvatlantirishi mumkin. Boshqa har qanday bitta raqamli 7 segmentli LED displey, agar umumiy oqim 200 mA dan oshmasa, xavfsiz bo'lishi kerak. Loyihani qurish jarayonida ishlab chiqish panelini o'chirilgan holda qoldiring.
Rivojlanish platasining 5V pinini yuqori non panelining yuqori quvvat relslariga ulang. Keyin o'sha quvvat rayidan o'tish moslamasini pastki non panelining pastki quvvat rayiga ulang. Quvvat relslariga ulangan simlar qizil rangda ko'rsatilgan. Endi zaminlarni ishlab chiqish taxtasidan yuqori non taxtasining yuqori va pastki relslarigacha ulang. Tuproqli relslarga ulangan simlar qora rangda.
74HC595 Shift registri
74HC595 Shift Register integral mikrosxema (IC) komponenti boʻlib, bir uchida aniq tirqish yoki chuqurchaga ega. 74HC595-ni cho'qqisini chap tomonga qo'ying, shunda ikkita qator pinlar o'rta gorizontal bo'linishning qarama-qarshi tomonidagi non paneliga ulanadi. IC yuqoridagi Fritzing diagrammasida ko'rsatilganidek, non paneliga ulanganda 74HC595 ustki qismidagi har qanday chop etish tik holatda ko'rinishi kerak.
IC pinlari odatda soat miliga teskari yo'nalishda raqamlanadi, u 1-pindan boshlab, chapda yoki bir uchida nuqta yoki tirqish ostida joylashgan. 74HC595 ushbu konventsiyaga amal qiladi. O'tish moslamalarini (qizil rangda ko'rsatilgan) yuqori panelning yuqori quvvat rayidan 74HC595 ning 10 (MR) va 16 (Vcc) pinlariga ulang. 16-pin Shift registrini 5VDC quvvat bilan ta'minlaydi va 10 (MR) YUQORI pinini 5V bilan ushlab turish registrni tozalashni oldini oladi.

O'tish moslamalarini (qora rangda ko'rsatilgan) 8 (GND) va 13 (OE) pinlaridan yuqori panelning pastki va yuqori tuproqli relslariga ulang. 8-pin 74HC595 tuproq pinidir va yerga ulash pin 13 orqali Shift registridan chiqishni yoqish uchun LOW ushlab turiladi.
Biz Arduino-ga mos keluvchi Uno yoki Nano mikroprotsessorlarini ishlab chiqish platasida 4, 7 va 8- pinlardan foydalanamiz, ammo agar xohlasangiz, boshqa mavjud I/U pinlaridan har qanday foydalanish mumkin. Shift registrlari uchun 4, 7 va 8 pinlaridan foydalanishimning sababi shundaki, bu pinlar Raqamli kiritish-chiqarishdan boshqa hech qanday xususiyatga ega emas, shuning uchun ularni tanlash orqali men ko'p qirrali pinlarni uzilishlar, PWM yoki boshqa maqsadlar uchun zahiralashim mumkin. turli seriyali va shinali aloqa protokollari.
Arduino bilan mos keladigan ishlab chiqish platasini 74HC595 ga quyidagicha ulang:
Arduino pin 4 dan 74HC595 pin 14 (DS) ko'k sim bilan ketma-ket ma'lumotlarni kiritish Arduino pin 7 dan 74HC595 pin 12 (ST_CP) Yashil simli mandal pin
Arduino pin 8 dan 74HC595 pin 11 (SH_CP) sariq simli soat pin 7 segmentli LED displey (bitta raqamli)

Ushbu qo'llanmada ishlatiladigan maxsus displey umumiy anodli TopLite 5161BS. Ushbu qo'llanmani iloji boricha umumiy qilish uchun men alohida segmentlar (A-G va Dp) bo'yicha Displey pinlariga murojaat qilaman. Ba'zi displeylar 5161BS bilan bir xil tarzda mahkamlangan, ammo ko'plari bunday emas, boshqalari Common Cathode xilma-xil bo'lishi mumkin. Displeyingizni 74HC595 siljish registriga ulashda Fritzing loyihasi diagrammasiga amal qilmang. Agar siz qaysi displey pinlari qaysi segmentlarga o'tishini bilmasangiz, endi mening oldingi qo'llanmani ko'rib chiqish uchun yaxshi vaqt bo'ladi.





Displey pinlarini yuqoridagi segment xaritasi bilan taqqoslaganingizdan so'ng, quyidagi ulanishlarni amalga oshiring:


74HC595 pin 15 (Q0) 74HC595 pin 1 yonidagi foydalanilmagan panel ustuniga (to'q sariq sim)
Siz o'rnatgan o'tkazgich simidan 330 Ohm rezistor yordamida A segmentiga mos keladigan Displey piniga ulang. 180 Ohm dan 1000 Ohm gacha bo'lgan har qanday qarshilik qiymati ishlashi kerak, chunki g'oya oqimni cheklash orqali Displey segmentini himoya qilishdir.
330 Ohm rezistorlar va jumperlardan foydalanib, qolgan displey segmentlarini ulang:
74HC595 pin 1 (Q1) rezistorga, keyin B segmenti uchun displey piniga o'tish 74HC595 pin 2(Q2) rezistorga, keyin C segmenti uchun displey piniga o'tish 74HC595 pin 3(Q3) rezistorga, keyin D segmenti uchun displey piniga o'tish 74HC595 pin 4(Q4) rezistorga, keyin E segmenti uchun displey piniga o'tish 74HC595 pin 5(Q5) rezistorga, so'ngra F segmenti uchun displey piniga o'tish 74HC595 pin 6(Q6) rezistorga, keyin esa G segmenti uchun displey piniga o'tish 74HC595 pin 7(Q7) rezistorga, keyin Dp segmenti uchun Displey piniga o'tish
Ushbu loyihaning qurilish bosqichining so'nggi bosqichi displeydagi umumiy pinni non taxtasidagi quvvat yoki tuproqli relsga ulashdir. Agar sizda umumiy anodli displey bo'lsa, elektr tarmog'iga qizil o'tish moslamasidan foydalaning, aks holda umumiy katodli displeyni qora o'tish moslamasi yordamida erga ulang. Ishingizni ikki marta tekshiring va ishlab chiqish panelini o'chirilgan holda qoldiring.
Arduino IDE eskizini dasturlash
Eskiz to'rtta asosiy bo'limga bo'lingan; Global deklaratsiyalar, o'rnatish va asosiy tsikl, undan keyin foydalanuvchi tomonidan belgilangan ikkita funksiya.
Global deklaratsiyalar
Doimiy butun sonlarga dataPin, latchPin va clockPin tavsiflovchi teglar beriladi va mos ravishda 4, 7 va 8 qiymatlari beriladi. Agar siz loyihani ishlab chiqish taxtasida turli xil pin topshiriqlaridan foydalansangiz, qiymatlarni mos ravishda o'zgartiring.
Umumiy yorliqli doimiy belgi (bitta belgi)ga umumiy anodli displeylar uchun "a" yoki umumiy katod uchun "c" qiymati beriladi. Yozilganidek, Sketch umumiy anodli displeylar uchun sozlangan. Agar sizning displeyingiz umumiy katod turiga tegishli bo'lsa, umumiy anod deklaratsiyasi qatoriga izoh bering yoki o'chiring va umumiy katod qatorini izohlang. Ko'pgina hollarda, bu Sketch to'g'ri ishlashi uchun zarur bo'lgan yagona o'zgarish bo'ladi.
Mantiqiy o'zgaruvchi, decPt, rost deb ishga tushiriladi. Bu o'zgaruvchi o'nlik nuqta segmenti (Dp) yoqilishi kerakligini ko'rsatish uchun ishlatiladi.
Sozlash; o'rnatish
O'rnatish kodi bloki faqat OUTPUT uchun dataPin, latchPin va clockPin doimiy qiymatlari bilan bog'liq bo'lgan ishlab chiqish loyihasi taxtasi pinlarini ishga tushiradi.
Loop
Loop kod bloki quvvat o'chirilgunga qadar yoki loyiha komponenti ishlamay qolguncha yoki uzilib qolguncha cheksiz takrorlanadi.
Har safar Loop boshlanganda Global o'zgaruvchining qiymati, decPt, rost yoki noto'g'ri bo'ladi. Qiymat qanday bo'lishidan qat'iy nazar, u "to'g'ri" dan "false" ga yoki aksincha o'zgartiriladi, shunda Displeyning o'nlik nuqta segmenti faqat Loop orqali boshqa har bir o'tishda yonadi.
A for loop kod bloki keyin 16 marta ishlaydi va mahalliy tamsayı o'zgaruvchisi qiymatini 0 dan 15 gacha oshiradi. i ning har bir qiymati Foydalanuvchi tomonidan belgilangan funktsiyaga o'tkaziladi, myfnNumToBits mahalliy bayt qiymatini, bitlarni, anni qaytaradi. i o'zgaruvchisining O'n oltilik qiymatini ko'rsatish uchun zarur bo'lgan barcha Displey segmentlarining sakkiz bitli tasviri.
Agar decPt rost bo'lsa, bitlar qiymati Bitwise OR operatoridan foydalangan holda Least Significant Bit (LSB) ni 1 ga o'rnatish orqali o'zgartiriladi.
Foydalanuvchi tomonidan belgilangan funktsiya, myfnUpdateDisplay argument sifatida o'zgaruvchi, bit bilan chaqiriladi. Displey myfnUpdateDisplay funksiyasi tomonidan yangilanganda, dastur i qiymatini oshirishdan va i qiymati 15 dan katta bo'lguncha for tsiklini takrorlashdan oldin 1/2 soniya kutadi; keyin butun Loop kod bloki qaytadan boshlanadi.
Foydalanuvchi tomonidan belgilangan funksiya
myfnUpdateDisplay bayt argumenti bilan Loop kod blokidagi for tsiklidan chaqiriladi. Baytdagi 8 bitning har biri A dan Dp gacha bo'lgan Displey segmentlaridan birini ifodalaydi.
Umumiy katodli displeylar uchun, agar bit qiymati 1 bo'lsa, tegishli segment yonishi kerak, aks holda bit 0 bo'ladi va segment o'chiriladi. Bitlarni Common Anode displeylari uchun teskari aylantirish kerak, shuning uchun agar Global o'zgaruvchi, umumiy "a" ga teng bo'lsa, BitWise XOR (^) operatori yordamida 1s ni 0 ga va 0 ni 1 ga o'zgartirsa, baytdagi barcha 8 bit qiymatlar aylantiriladi. B11111111 bitli niqob.
Bitlar 74HC595 registrlariga yuborilishidan oldin Arduino bilan mos keladigan ishlab chiqish platasi latchPin LOW o'rnatiladi. Keyin bitlarni uzatish uchun shiftOut(dataPin, clockPin, LSBFIRST, bayt) funksiyasi chaqiriladi. Nihoyat, latchPin YUQORI o'rnatiladi va Displey tegishli harf-raqamli belgini ko'rsatishi kerak.
Keyin dastur boshqaruvi Loop kod blokidagi for sikliga qaytariladi.
myfnNumToBits
Ushbu foydalanuvchi tomonidan aniqlangan funktsiya 0 dan 15 gacha bo'lgan raqamlarni qabul qilib, qidirish jadvali vazifasini bajaradi va bitlar ko'rsatiladigan o'n oltilik alfanumerik belgilar uchun xarita bo'lgan baytni qaytaradi. Agar kutilmagan raqam olinsa, uchta vertikal chiziq ko'rsatiladi. myfnNumToBits haqida batafsilroq tushuntirishni oldingi qo'llanmada topish mumkin, 7 segmentli LED displeylar 101 -- Qanday qilib ishlash kerak.
Tutun sinovi
Arduino-ga mos keladigan ishlab chiqish platasini yoqishdan va ushbu qo'llanmaning Kod bo'limidan eskizni yuklashdan oldin oxirgi marta loyiha simlarini tekshiring.
ARDUINOGA SHU DASTURNI O`RNATAMIZ
/* SevenSegmentLEDdisplay102a.ino
* 2017-02-20

  • Mel Lester Jr.

  • Simple example of using Shift Register with a

  • Single Digit Seven Segment LED Display

*/
// Globals
const int dataPin = 4; // blue wire to 74HC595 pin 14 const int latchPin = 7; // green to 74HC595 pin 12 const int clockPin = 8; // yellow to 74HC595 pin 11

/* uncomment one of the following lines that describes your display



  • and comment out the line that does not describe your display */ const char common = 'a'; // common anode

//const char common = 'c'; // common cathode bool decPt = true; // decimal point display flag
void setup() {
// initialize I/O pins pinMode(dataPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT);
}

void loop() {


decPt = !decPt; // display decimal point every other pass through loop

// generate characters to display for hexidecimal numbers 0 to F for (int i = 0; i <= 15; i++) {


byte bits = myfnNumToBits(i) ; if (decPt) {
bits = bits | B00000001; // add decimal point if needed
}
myfnUpdateDisplay(bits); // display alphanumeric digit delay(500); // pause for 1/2 second
}
}

void myfnUpdateDisplay(byte eightBits) {


if (common == 'a') { // using a common anonde display?
eightBits = eightBits ^ B11111111; // then flip all bits using XOR
}
digitalWrite(latchPin, LOW); // prepare shift register for data shiftOut(dataPin, clockPin, LSBFIRST, eightBits); // send data digitalWrite(latchPin, HIGH); // update display
}

byte myfnNumToBits(int someNumber) { switch (someNumber) {


case 0:
return B11111100; break;
case 1:
return B01100000; break;
case 2:
return B11011010;

bars



}
}
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 break;

SHU BUYRUQLARNI AMALDA SINAB KURAMAN?


Download 142.44 Kb.

Do'stlaringiz bilan baham:




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