Агуулгын хүснэгт:

ATtiny85 микроконтроллертой MAX7219 хөтлөгчтэй LED матриц 8x8 -тэй хэрхэн холбогдох вэ: 7 алхам
ATtiny85 микроконтроллертой MAX7219 хөтлөгчтэй LED матриц 8x8 -тэй хэрхэн холбогдох вэ: 7 алхам

Видео: ATtiny85 микроконтроллертой MAX7219 хөтлөгчтэй LED матриц 8x8 -тэй хэрхэн холбогдох вэ: 7 алхам

Видео: ATtiny85 микроконтроллертой MAX7219 хөтлөгчтэй LED матриц 8x8 -тэй хэрхэн холбогдох вэ: 7 алхам
Видео: Dosimeter (MAX7219, Atmega8, SBM20U) 2024, Долдугаар сарын
Anonim
ATtiny85 микроконтроллертой MAX7219 хөтлөгчтэй LED матриц 8x8 -тэй хэрхэн холбогдох вэ?
ATtiny85 микроконтроллертой MAX7219 хөтлөгчтэй LED матриц 8x8 -тэй хэрхэн холбогдох вэ?

MAX7219 хянагчийг Maxim Integrated үйлдвэрлэдэг бөгөөд микроконтроллерыг 64 тусдаа LED, 8 хүртэлх оронтой 7 сегментийн тоон LED дэлгэц, бар график дэлгэц гэх мэт интерфейс бүхий авсаархан, цуваа оролт/гаралтын нийтлэг катодын дэлгэцийн драйвер юм. -чип бол 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 болгож тохируулаарай (хэрэв өгөгдөл & 0x80) // Өгөгдлийн MSB -ийг маск хийвэл PORTB | = (1 << MAX7219_DIN); // DIN -ийг HIGH өөрөөр тохируулна уу PORTB & = ~ (1 << MAX7219_DIN); // DIN -ийг LOW PORTB | = (1 << MAX7219_CLK) болгож тохируулна уу; // CLK -ийг HIGH data болгож тохируул << = 1; // Зүүн тийш шилжүүлэх}}

Одоо бид MAX7219 руу байт илгээх боломжтой болсон тул бид команд илгээж болно. Үүнийг 2 байс илгээх замаар хийдэг - 1 -рт дотоод бүртгэлийн хаяг, 2 -рт бидний илгээхийг хүссэн өгөгдөл.

MAX7219 хянагчийн арав гаруй бүртгэл байдаг.

Команд эсвэл үг илгээх нь үндсэндээ дараалсан 2 байт илгээх явдал юм. Үүнийг хэрэгжүүлэх функц нь маш энгийн.

хүчингүй 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 дохиог HIGH руу буцааж авчрах мөрийг энд тэмдэглэх нь чухал юм - энэ нь дарааллын төгсгөлийг илэрхийлдэг - энэ тохиолдолд командын төгсгөл болно. Гинжин хэлхээнд холбогдсон нэгээс илүү матрицыг удирдахад ижил төстэй аргыг ашигладаг бөгөөд дараагийн алхам бол LED асаах, унтраахаас өмнө MAX7219 хянагчийг эхлүүлэх явдал юм. Үүнийг тодорхой бүртгэлд тодорхой утгуудыг бичих замаар хийдэг. Тохиромжтой болгохын тулд үүнийг кодлохдоо эхлүүлэх дарааллыг массивт оруулах боломжтой.

uint8_t initseq = {0x09, 0x00, // Код тайлах горимын бүртгэл, 00 = 0x0a, 0x01, // Эрчим хүчний бүртгэл, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 нь бүх мөрийг харуулна. 0x0c, 0x01, // Shutdown Register, 0x01 = хэвийн ажиллагаа 0x0f, 0x00, // Display-Test Register, 0x00 = Normal Operation};

Дээрх 5 тушаалыг дарааллаар нь хаяг/өгөгдлийн хос болгон илгээх шаардлагатай байна.

Энэ бол маш энгийн зүйл бөгөөд бид зөвхөн нэг тушаалыг бичдэг бөгөөд 1 -р байт нь хаяг (0 -ээс 7 хүртэл), 2 -р байт нь 8 LED -ийг илэрхийлдэг 8 бит юм.

хүчингүй max7219_row (uint8_t хаяг, uint8_t өгөгдөл) {if (address> = 1 && address <= 8) max7219_word (хаяг, өгөгдөл); }

Энэ нь зөвхөн 1 матриц дээр ажиллах болно гэдгийг анхаарах нь чухал юм. Хэрэв бид илүү олон матрицыг гинжээр холбовол бүгд ижил өгөгдлийг харуулах болно. Үүний шалтгаан нь командыг илгээсэний дараа бид CS дохиог HIGH руу буцааж өгдөг бөгөөд энэ нь гинжин хэлхээний бүх MAX7219 хянагчийг түгжиж, хамгийн сүүлд өгсөн тушаалыг харуулдаг.

Зөвлөмж болгож буй: