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




Download 213.53 Kb.
Pdf ko'rish
Sana11.05.2022
Hajmi213.53 Kb.
#20867
Bog'liq
7 SEGMENT USTIDA AMALLAR BAJARISH-конвертирован
4-лаборатория, 1 мавзу Статистика фани предмети, 2590 1 5D68A4018E2A472DBAE3D23726945F49086053A5, Corel draw dasturi va uning imkoniyatlari, 2-Elementary-WB (1), 13-Amaliy Temir yo‘l sisternasidan yuqori qovushqoq neft maxsulotini, Standartlarning turlari va toifalari-fayllar.org, Mustaqil-ish, Begaliyeva Shahzoda tayyor1, Xolmuminova Gulchehra, HISOBOT yuzi., Ochiq dars materiallari


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



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
;




SHU BUYRUQLARNI AMALDA SINAB KURAMAN? 

Download 213.53 Kb.




Download 213.53 Kb.
Pdf ko'rish

Bosh sahifa
Aloqalar

    Bosh sahifa



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

Download 213.53 Kb.
Pdf ko'rish