Мазмұны:

ATtiny85 микроконтроллері бар MAX7219 жетекші 8x8 жарықдиодты матрицамен қалай байланысуға болады: 7 қадам
ATtiny85 микроконтроллері бар MAX7219 жетекші 8x8 жарықдиодты матрицамен қалай байланысуға болады: 7 қадам

Бейне: ATtiny85 микроконтроллері бар MAX7219 жетекші 8x8 жарықдиодты матрицамен қалай байланысуға болады: 7 қадам

Бейне: ATtiny85 микроконтроллері бар MAX7219 жетекші 8x8 жарықдиодты матрицамен қалай байланысуға болады: 7 қадам
Бейне: Как прошить Digispark Attiny85. Обзор платы Digispark Attiny85. Установка драйверов. 2024, Шілде
Anonim
ATtiny85 микроконтроллері бар MAX7219 жетекші 8x8 жарықдиодты матрицамен қалай байланысуға болады
ATtiny85 микроконтроллері бар MAX7219 жетекші 8x8 жарықдиодты матрицамен қалай байланысуға болады

MAX7219 контроллерін Maxim Integrated шығарады, бұл микроконтроллерлерді 64 жеке жарықдиодты, 8 цифрға дейінгі 7 сегментті сандық жарықдиодты дисплейлерге, штрих-графикалық дисплейлерге және т.б. қосуға болатын ықшам, сериялық кіріс/шығыс жалпы катодты дисплей драйвері. -чип-бұл BCD код-В декодері, мультиплексті сканерлеу схемасы, сегменттік және цифрлық драйверлер және әр цифрды сақтайтын 8 × 8 статикалық жедел жады.

MAX7219 модульдері ATtiny85 немесе біздің жағдайда Tinusaur Board сияқты микроконтроллерлермен қолдануға өте ыңғайлы.

1 -қадам: аппараттық құрал

Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал

MAX7219 модульдері әдетте осылай көрінеді. Олардың бір жағында кіріс шинасы, екінші жағында шығыс шинасы бар. Бұл сізге күрделі қондырғылар жасау үшін 2 немесе одан да көп модульдерді тізбектеуге мүмкіндік береді.

Біз қолданатын модульдер 5 кіші секіргішті пайдаланып тізбекке қосыла алады. Төмендегі суретті қараңыз.

2 -қадам: түйреу және сигналдар

MAX7219 модулінде 5 түйреуіш бар:

  • VCC - қуат (+)
  • GND-жер (-)
  • DIN - мәліметтерді енгізу
  • CS - чипті таңдау
  • CLK - Сағат

Бұл дегеніміз, ATtiny85 микроконтроллерінде модульді басқару үшін бізге 3 түйреуіш қажет. Олар болады:

  • PB0 - CLK қосылған
  • PB1 - CS -ге қосылған
  • PB2 - DIN -ге қосылған

Бұл MAX7219 модуліне қосылу және оны бағдарламалау үшін жеткілікті.

3 -қадам: Хаттама

Хаттама
Хаттама

MAX7219 -мен байланысу салыстырмалы түрде оңай - ол синхронды протоколды қолданады, яғни біз жіберген әрбір деректер биті үшін бұл деректер битінің болуын білдіретін сағаттық цикл болады.

Басқаша айтқанда, біз биттерге 2 параллель тізбекті жібереміз - біреуі сағат үшін, екіншісі деректер үшін. Бағдарламалық жасақтама осылай жасайды.

4 -қадам: Бағдарламалық қамтамасыз ету

Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету

Бұл MAX7219 модулінің жұмыс әдісі:

  • Біз оның ішкі регистріне байт жазамыз.
  • MAX7219 деректерді түсіндіреді.
  • MAX7219 матрицадағы жарық диодтарын басқарады.

Бұл сонымен қатар жарық диодты жарықтандыру үшін біз үнемі айналып өтудің қажеті жоқ дегенді білдіреді - MAX7219 контроллері бұл туралы қамқорлық жасайды. Ол сонымен қатар жарық диодтарының қарқындылығын басқара алады.

Сонымен, MAX7219 модульдерін ыңғайлы пайдалану үшін бізге осы мақсатқа қызмет ететін функциялардың кітапханасы қажет.

Біріншіден, MAX7219 регистрлеріне жазу үшін бізге кейбір негізгі функциялар қажет.

  • MAX7219 -ге байт жазу.
  • MAX7219 -ға сөз (2 байт) жазу.

Контроллерге бір байтты жазатын функция келесідей:

void max7219_byte (uint8_t data) {for (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // CLK параметрін LOW күйіне орнатыңыз, егер (деректер & 0x80) // PORTB | | (1 << MAX7219_DIN) MSB мәліметтерінің маскасын жасырыңыз; // DIN мәнін HIGH күйіне орнатыңыз PORTB & = ~ (1 << MAX7219_DIN); // DIN параметрін LOW PORTB | = (1 << MAX7219_CLK) күйіне орнатыңыз; // CLK параметрін HIGH деректеріне орнатыңыз << = 1; // Солға жылжу}}

Енді біз MAX7219 -ға байт жібере алатын болсақ, біз командаларды жіберуді бастай аламыз. Бұл 2 байсты жіберу арқылы жүзеге асады - 1 -ші ішкі регистрдің мекен -жайы бойынша және 2 -ші біз жібергіміз келетін деректер үшін.

MAX7219 контроллерінде оннан астам регистр бар.

Пәрменді немесе сөзді жіберу негізінен 2 байт қатарынан жіберіледі. Оны жүзеге асыратын функция өте қарапайым.

void max7219_word (uint8_t мекен -жайы, uint8_t деректері) {PORTB & = ~ (1 << MAX7219_CS); // CS параметрін LOW max7219_byte (адрес) етіп орнатыңыз; // max7219_byte адресін жіберу (деректер); // Деректерді жіберу PORTB | = (1 << MAX7219_CS); // CS орнатыңыз HIGH PORTB & = ~ (1 << MAX7219_CLK); // CLK параметрін LOW параметріне орнатыңыз}

Бұл жерде CS сигналын ЖОҒАРЫ деңгейге қайтаратын сызықты атап өту маңызды - бұл тізбектің аяқталуын білдіреді - бұл жағдайда команданың аяқталуы. Ұқсас әдіс тізбекке қосылған бірнеше матрицаны басқару кезінде қолданылады. Келесі қадам, светодиоды қосуды және өшіруді бастамас бұрын, MAX7219 контроллерін инициализациялау болып табылады. Бұл белгілі бір регистрлерге белгілі бір мәндерді жазу арқылы жүзеге асады. Ыңғайлы болу үшін оны кодтау кезінде инициализация ретін массивке қоюға болады.

uint8_t initseq = {0x09, 0x00, // декодтау режимінің регистрі, 00 = декодталмаған 0x0a, 0x01, // қарқындылық регистрі, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 барлық жолдарды көрсету үшін 0x0c, 0x01, // Өшіру регистрі, 0x01 = Қалыпты жұмыс 0x0f, 0x00, // Display-Test Register, 0x00 = Қалыпты жұмыс};

Біз жоғарыдағы 5 пәрменді адрес/деректер жұбы ретімен жіберуіміз керек. Келесі қадам - жарық диодты жарықтандыру.

Бұл өте қарапайым - біз тек 1 пәрменді жазамыз, онда бірінші байт - адрес (0 -ден 7 -ге дейін), ал 2 -байт - жолдағы 8 жарықдиодты білдіретін 8 бит.

void max7219_row (uint8_t мекен -жайы, uint8_t деректері) {if (address> = 1 && address <= 8) max7219_word (мекен -жай, деректер); }

Бұл тек 1 матрица үшін жұмыс істейтінін ескеру маңызды. Егер біз басқа матрицаларды тізбекке қосатын болсақ, олардың барлығы бірдей деректерді көрсетеді. Мұның себебі, пәрменді жібергеннен кейін біз CS сигналын ЖОҒАРЫ күйге қайтарамыз, бұл тізбектегі барлық MAX7219 контроллерлерінің ілінуіне және соңғы команданың қандай болғанын көрсетеді.

Ұсынылған: