Mundarija:

ATtiny85 mikrokontrolerli MAX7219 boshqariladigan LED matritsasi 8x8 bilan qanday bog'lanish mumkin: 7 qadam
ATtiny85 mikrokontrolerli MAX7219 boshqariladigan LED matritsasi 8x8 bilan qanday bog'lanish mumkin: 7 qadam

Video: ATtiny85 mikrokontrolerli MAX7219 boshqariladigan LED matritsasi 8x8 bilan qanday bog'lanish mumkin: 7 qadam

Video: ATtiny85 mikrokontrolerli MAX7219 boshqariladigan LED matritsasi 8x8 bilan qanday bog'lanish mumkin: 7 qadam
Video: Знакомство с Digispark ATtiny85. "Arduino для чайников" 2024, Iyul
Anonim
ATtiny85 mikrokontroller bilan MAX7219 boshqariladigan LED matritsasi 8x8 bilan qanday bog'lanish mumkin
ATtiny85 mikrokontroller bilan MAX7219 boshqariladigan LED matritsasi 8x8 bilan qanday bog'lanish mumkin

MAX7219 tekshirgichi Maxim Integrated tomonidan ishlab chiqarilgan bo'lib, u mikrokontrolderlarni 64 ta alohida LED, 8 ta raqamli 7 segmentli raqamli LED displeylar, bar-grafikli displeylar va boshqalarga ulashadigan ixcham, ketma-ket kirish/chiqish umumiy katodli displey drayveri. -chip-bu BCD kod-B dekoderi, multipleksli skanerlash sxemasi, segment va raqamli drayverlar va har bir raqamni saqlaydigan 8 × 8 statik RAM.

MAX7219 modullari ATtiny85 yoki bizning holatimizda Tinusaur platasi kabi mikrokontrollerlar bilan ishlashda juda qulaydir.

1 -qadam: Uskuna

Uskuna
Uskuna
Uskuna
Uskuna

MAX7219 modullari odatda shunday ko'rinadi. Ularning bir tomonida kirish avtobusi, ikkinchi tomonida chiqish avtobuslari bor. Bu sizga murakkabroq sozlamalarni yaratish uchun 2 yoki undan ortiq modullarni, ya'ni birin -ketin zanjirband qilish imkonini beradi.

Biz foydalanadigan modullar 5 ta kichik o'tish moslamasi yordamida zanjirda ulanishi mumkin. Quyidagi rasmga qarang.

2 -qadam: Pinout va signallar

MAX7219 moduli 5 ta pinli:

  • VCC - quvvat (+)
  • GND-tuproq (-)
  • DIN - ma'lumotlarni kiritish
  • CS - Chip tanlash
  • CLK - soat

Bu shuni anglatadiki, modulni boshqarish uchun ATtiny85 mikrokontroller tomonida 3 ta pin bor. Ular shunday bo'ladi:

  • PB0 - CLK ga ulangan
  • PB1 - CS ga ulangan
  • PB2 - DIN -ga ulangan

Bu MAX7219 moduliga ulanish va uni dasturlash uchun etarli.

3 -qadam: Protokol

Protokol
Protokol

MAX7219 bilan aloqa qilish nisbatan oson - u sinxron protokoldan foydalanadi, ya'ni biz yuborgan har bir ma'lumot biti uchun ma'lumot bitining mavjudligini bildiruvchi soat tsikli mavjud.

Boshqacha qilib aytganda, biz bitlarga 2 parallel ketma -ketlikni yuboramiz - biri soat uchun, ikkinchisi ma'lumotlar uchun. Bu dasturiy ta'minot nima qiladi.

4 -qadam: dasturiy ta'minot

Dasturiy ta'minot
Dasturiy ta'minot

Ushbu MAX7219 moduli qanday ishlaydi:

  • Biz uning ichki registriga bayt yozamiz.
  • MAX7219 ma'lumotlarni sharhlaydi.
  • MAX7219 matritsadagi LEDlarni boshqaradi.

Bu shuni anglatadiki, biz ularni yoritish uchun doimo LEDlar qatorini aylanib o'tishimiz shart emas - MAX7219 tekshiruvi bu haqda g'amxo'rlik qiladi. Shuningdek, u LEDlarning intensivligini boshqarishi mumkin.

Shunday qilib, MAX7219 modullaridan qulay tarzda foydalanish uchun bizga shu maqsadga xizmat qiladigan funktsiyalar kutubxonasi kerak.

Birinchidan, MAX7219 registrlariga yozish uchun bizga ba'zi asosiy funktsiyalar kerak.

  • MAX7219 ga bayt yozish.
  • MAX7219 ga so'z (2 bayt) yozish.

Tekshirgichga bitta bayt yozadigan funksiya shunday ko'rinadi:

void max7219_byte (uint8_t ma'lumotlari) {uchun (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // CLK ni LOW holatiga qo'ying, agar (ma'lumotlar & 0x80) // Ma'lumotlar MSB -ni niqoblang PORTB | = (1 << MAX7219_DIN); // DINni HIGH holatiga qo'ying PORTB & = ~ (1 << MAX7219_DIN); // DINni LOW PORTB | = (1 << MAX7219_CLK) ga o'rnating; // CLK ni HIGH ma'lumotlariga o'rnating << = 1; // chapga siljitish}}

Endi biz MAX7219 ga bayt yuborishimiz mumkin, biz buyruqlarni yuborishni boshlashimiz mumkin. Bu 2 bayt yuborish orqali amalga oshiriladi - 1 -chi ichki registr manzili uchun, 2 -chi biz yubormoqchi bo'lgan ma'lumotlar uchun.

MAX7219 tekshirgichida o'ndan ortiq registr mavjud.

Buyruq yoki so'zni yuborish, asosan, ketma -ket 2 baytni yuborishdir. Buni amalga oshirish funktsiyasi juda oddiy.

max7219_word void (uint8_t manzili, uint8_t ma'lumotlari) {PORTB & = ~ (1 << MAX7219_CS); // CS ni LOW max7219_byte ga sozlang (manzil); // max7219_byte manzilini yuborish (ma'lumotlar); // ma'lumotlarni yuborish PORTB | = (1 << MAX7219_CS); // CS -ni HIGH PORTB ga o'rnating & = ~ (1 << MAX7219_CLK); // CLK -ni LOW -ga o'rnating}

Bu erda biz CS signalini "HIGH" ga qaytaradigan qatorni ta'kidlash muhim - bu ketma -ketlikning oxiri - bu holda, buyruqning oxiri. Shunga o'xshash usul zanjirga ulangan bir nechta matritsani boshqarishda qo'llaniladi, keyingi bosqichda, biz LEDlarni yoqish va o'chirishni boshlashdan oldin, MAX7219 tekshirgichini ishga tushirish. Bu ma'lum registrlarga ma'lum qiymatlarni yozish orqali amalga oshiriladi. Qulaylik uchun, uni kodlashda biz ishga tushirish ketma -ketligini qatorga qo'yishimiz mumkin edi.

uint8_t initseq = {0x09, 0x00, // Dekodlash rejimining registri, 00 = 0x0a, 0x01, // intensivlik registri, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit reestri, 0x07 barcha satrlarni ko'rsatish uchun. 0x0c, 0x01, // O'chirish registri, 0x01 = Oddiy ishlash 0x0f, 0x00, // Displey-test registri, 0x00 = Oddiy ishlash};

Biz yuqoridagi 5 ta buyruqni ketma -ket manzil/ma'lumotlar jufti sifatida yuborishimiz kerak. Keyingi qadam - LEDlar qatorini yoritish.

Bu juda oddiy - biz faqat bitta buyruqni yozamiz, bu erda 1 -bayt - manzil (0 dan 7 gacha) va 2 -bayt - 8 bitli LEDlar qatoridagi 8 bit.

void max7219_row (uint8_t manzil, uint8_t ma'lumotlar) {if (manzil> = 1 && manzil <= 8) max7219_word (manzil, ma'lumotlar); }

Shuni ta'kidlash kerakki, bu faqat bitta matritsa uchun ishlaydi. Agar biz ko'proq matritsalarni zanjirda bog'lasak, ularning hammasi bir xil ma'lumotlarni ko'rsatadi. Buning sababi shundaki, biz buyruqni yuborganimizdan so'ng, biz CS signalini "HIGH" ga qaytaramiz, bu esa MAX7219 zanjiridagi barcha kontrollerlarning qulflanishiga olib keladi va oxirgi buyruq nima bo'lishini ko'rsatadi.

Tavsiya: