Мазмуну:
- 1 -кадам: Аппараттык
- 2 -кадам: Pinout жана сигналдар
- 3 -кадам: Протокол
- 4 -кадам: Программалык камсыздоо
Video: ATtiny85 микроконтроллери менен MAX7219 жетектелген LED Matrix 8x8 менен кантип интерфейс түзүү керек: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:40
MAX7219 контроллери Maxim Integrated тарабынан чыгарылган, чакан, сериялык киргизүү/чыгаруу жалпы катоддук дисплей драйвери, ал микроконтроллерди 64 жеке LEDге, 7 сегменттүү сандык LED дисплейлерине чейин, 8 цифраларга чейин, бар-графикалык дисплейлерге ж. -чип-бул BCD коду-В декодери, мультиплекс сканерлөө схемасы, сегмент жана цифралык драйверлер жана ар бир цифраны сактаган 8 × 8 статикалык RAM.
MAX7219 модулдары ATtiny85, же биздин учурда Tinusaur Board сыяктуу микроконтроллерлер менен колдонууга абдан ыңгайлуу.
1 -кадам: Аппараттык
MAX7219 модулдары көбүнчө ушундай көрүнөт. Алардын бир жагында кириш автобусу, экинчи жагында чыгыш автобусу бар. Бул татаал орнотууларды түзүү үчүн 2 же андан көп модулдарды, б.а. биринин артынан бирин чайкап алууга мүмкүндүк берет.
Биз колдонуп жаткан модулдар 5 кичинекей секиргичти колдонуп, чынжырга туташа алат. Төмөндөгү сүрөттү караңыз.
2 -кадам: Pinout жана сигналдар
MAX7219 модулунда 5 төөнөгүч бар:
- VCC - кубат (+)
- GND-жер (-)
- DIN - маалыматтарды киргизүү
- CS - Чип тандоо
- CLK - Саат
Бул бизге модулду башкаруу үчүн ATtiny85 микроконтроллери тарабында 3 төөнөгүч керек экенин билдирет. Булар:
- PB0 - CLKга туташкан
- PB1 - CSге туташкан
- PB2 - DINге туташкан
Бул MAX7219 модулуна туташуу жана аны программалоо үчүн жетиштүү.
3 -кадам: Протокол
MAX7219 менен байланышуу салыштырмалуу оңой - бул синхрондуу протоколду колдонот, демек биз жөнөткөн ар бир маалымат бит үчүн ошол маалымат битинин бар экенин билдирген саат цикли бар.
Башкача айтканда, биз биттерге 2 параллелдүү ырааттуулукту жөнөтөбүз - бири саат үчүн, экинчиси маалымат үчүн. Бул программа эмне кылат.
4 -кадам: Программалык камсыздоо
Бул MAX7219 модулунун иштөө жолу мындай:
- Биз анын ички реестрине байт жазабыз.
- MAX7219 маалыматтарды чечмелейт.
- MAX7219 матрицада LED диоддорун башкарат.
Бул ошондой эле, биз аларды жарык кылуу үчүн дайыма LED диапазонун айланып өтүүнүн кажети жок дегенди билдирет - MAX7219 контролери муну карайт. Ал ошондой эле LEDдин интенсивдүүлүгүн башкара алат.
Ошентип, 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 деп кой, эгерде (data & 0x80) // PORTB маалыматтын MSB маскасын | = (1 << MAX7219_DIN); // DINди башкага коюңуз PORTB & = ~ (1 << MAX7219_DIN); // DINди LOW PORTB деп коюңуз | = (1 << MAX7219_CLK); // CLKти Жогорку маалыматка коюңуз << = 1; // Солго жылдыруу}}
Эми биз MAX7219га байт жөнөтө алабыз, биз буйруктарды жөнөтө баштайбыз. Бул 2 байсты жөнөтүү менен ишке ашат - 1чи ички реестрдин дареги үчүн, экинчиси биз жибергибиз келген маалыматтар үчүн.
MAX7219 контроллеринде ондон ашык реестр бар.
Команданы же сөздү жөнөтүү негизинен удаалаш 2 байтты жөнөтөт. Муну ишке ашыруу функциясы абдан жөнөкөй.
жараксыз max7219_word (uint8_t дареги, uint8_t маалыматы) {PORTB & = ~ (1 << MAX7219_CS); // CSди LOW max7219_byte деп коюңуз (дарек); // max7219_byte дарегин жөнөтүү (маалыматтар); // маалыматтарды жөнөтүү PORTB | = (1 << MAX7219_CS); // CSди ЖОГОРКУ ПОРТБОго орнотуу & = ~ (1 << MAX7219_CLK); // CLKти ТӨМӨНгө коюу}
Бул жерде биз CS сигналын кайра ЖОГОРУГА алып келген сапты белгилеп кетүү маанилүү - бул ырааттуулуктун бүтүшүн билдирет - бул учурда буйруктун аягы. Окшош ыкма чынжырга туташкан бирден көп матрицаны көзөмөлдөөдө колдонулат. Кийинки кадам, диоддорду күйгүзүп жана өчүрүүдөн мурун, MAX7219 контроллерин баштоо. Бул белгилүү бир реестрлерге белгилүү бир баалуулуктарды жазуу аркылуу жасалат. Ыңгайлуулук үчүн, аны коддоодо биз инициализация тизмегин массивге коё алмакпыз.
uint8_t initseq = {0x09, 0x00, // Декоддоо режиминин реестри, 00 = 0x0a, 0x01, // Интенсивдүүлүк реестри, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 бардык саптарды көрсөтүү үчүн 0x0c, 0x01, // Өчүрүү реестри, 0x01 = Кадимки иш 0x0f, 0x00, // Дисплей-Тест Реестри, 0x00 = Кадимки Иш};
Биз жөн гана дарек/маалымат түгөйү катары 5 буйрукту ырааттуу түрдө жөнөтүшүбүз керек. Кийинки кадам - LED диапазонун жарыктандыруу.
Бул абдан жөнөкөй - биз жөн гана бир буйрук жазабыз, анда 1 -байт дарек (0дон 7ге чейин) жана 2 -байт катардагы 8 LEDди билдирген 8 бит.
жараксыз max7219_row (uint8_t дареги, uint8_t маалыматы) {if (address> = 1 && address <= 8) max7219_word (address, data); }
Бул 1 матрицада гана иштей турганын белгилей кетүү маанилүү. Эгерде биз дагы матрицаларды чынжырча туташтырсак, анда алар бир эле маалыматты көрсөтүшөт. Мунун себеби, буйрукту жөнөткөндөн кийин, CS сигналын кайра ЖОГОРУГА алып келебиз, бул чынжырдагы бардык MAX7219 контроллерлеринин кармалышына жана акыркы буйруктун бардыгын көрсөтүшүнө алып келет.
Сунушталууда:
Linux жүктөө дискин кантип түзүү керек (жана аны кантип колдонуу керек): 10 кадам
Linux жүктөө дискин кантип түзүү керек (жана аны кантип колдонуу керек): Бул Linuxту кантип баштоо керектиги жөнүндө жөнөкөй маалымат, тактап айтканда Ubuntu
8x8 BIG LED матрицасын кантип куруу керек (MAX7219 LED 10мм): 9 кадам (сүрөттөр менен)
8x8 BIG LED матрицасын кантип куруу керек (MAX7219 LED 10мм): Сиз даяр 8x8 LED матрицасы менен дисплей катары иштедиңиз беле? Алар ар кандай өлчөмдө келет жана алар менен иштөө абдан кызыктуу. Чоң даяр өлчөм 60х60мм тегерегинде. Бирок, эгер сиз алда канча чоңураак даяр LED матрицасын издесеңиз
Dot Matrix LED дисплейи 8051 микроконтроллери менен интерфейс: 5 кадам
Dot Matrix LED дисплейи 8051 микроконтроллери менен интерфейс: Бул долбоордо биз 8051 микроконтроллери менен бир чекиттүү LED дисплейин иштетебиз. Бул жерде протеуста симуляцияны көрсөтөбүз, сиз дагы ошол нерсени аппараттык колдонууга колдоно аласыз. Ошентип, бул жерде биз адегенде бир тамга басып чыгарабыз, айталы, бул дисплейде "А" дейли
Өзгөчө белгилерди ЖКга кантип 8051 микроконтроллери менен басып чыгаруу керек: 4 кадам
8051 Микроконтроллери менен ЖКда Өзгөчөлөштүрүлгөн Белгилерди Кантип Басуу керек: Бул долбоордо биз 8051 микроконтроллерди колдонуп, 16 * 2 ЖКда бажы тамгасын кантип басып чыгаруу керектигин айтып бермекчибиз. Биз LCDди 8 бит режиминде колдонобуз. Биз дагы 4 бит режиминде ушундай кыла алабыз
Чоң ата жана чоң эненин календарын кантип түзүү керек & Scrapbook (скрепбукту кантип жасоону билбесеңиз да): 8 кадам (сүрөттөрү менен)
Чоң ата жана чоң эненин календарын кантип түзүү керек & Scrapbook (Скрепбукту кантип жасоону билбесеңиз дагы): Бул чоң энелер үчүн абдан үнөмдүү (жана абдан бааланган!) Майрамдык белек. Мен бул жылы ар бири 7 доллардан төмөн 5 календар жасадым. Материалдар: Сиздин балаңыздын, балдарыңыздын, жээндериңиздин, жээндериңиздин, иттериңиздин, мышыктарыңыздын же башка туугандарыңыздын 12 сонун сүрөтү