ዝርዝር ሁኔታ:

አንድ MAX7219 የሚነዳ LED ማትሪክስ 8x8 ን ከ ATtiny85 ማይክሮ መቆጣጠሪያ ጋር እንዴት ማገናኘት እንደሚቻል -7 ደረጃዎች
አንድ MAX7219 የሚነዳ LED ማትሪክስ 8x8 ን ከ ATtiny85 ማይክሮ መቆጣጠሪያ ጋር እንዴት ማገናኘት እንደሚቻል -7 ደረጃዎች

ቪዲዮ: አንድ MAX7219 የሚነዳ LED ማትሪክስ 8x8 ን ከ ATtiny85 ማይክሮ መቆጣጠሪያ ጋር እንዴት ማገናኘት እንደሚቻል -7 ደረጃዎች

ቪዲዮ: አንድ MAX7219 የሚነዳ LED ማትሪክስ 8x8 ን ከ ATtiny85 ማይክሮ መቆጣጠሪያ ጋር እንዴት ማገናኘት እንደሚቻል -7 ደረጃዎች
ቪዲዮ: Светодиодный DVD-дисплей и Arduino Nano (основы семисегментного светодиодного дисплея) 2024, ሀምሌ
Anonim
MAX7219 የሚነዳ LED ማትሪክስ 8x8 ን ከ ATtiny85 ማይክሮ መቆጣጠሪያ ጋር እንዴት ማገናኘት እንደሚቻል
MAX7219 የሚነዳ LED ማትሪክስ 8x8 ን ከ ATtiny85 ማይክሮ መቆጣጠሪያ ጋር እንዴት ማገናኘት እንደሚቻል

የ MAX7219 ተቆጣጣሪው በማክስም ኢንተግሬትድ የተሰራ ነው ፣ ማይክሮ መቆጣጠሪያዎችን ወደ 64 ነጠላ ኤልኢዲዎች ፣ እስከ 7 አሃዞች ፣ የባር-ግራፍ ማሳያዎች ፣ ወዘተ ድረስ እስከ 7 አሃዞች ፣ የባር-ግራፍ ማሳያዎች ፣ ወዘተ የመሳሰሉትን ማይክሮ መቆጣጠሪያዎችን ሊያገናኝ የሚችል የታመቀ ፣ ተከታታይ ግቤት/ውፅዓት የጋራ ካቶድ ማሳያ ነጂ ነው። -ቺፕ የ BCD ኮድ-ቢ ዲኮደር ፣ ባለ ብዙክስ ቅኝት ወረዳ ፣ ክፍል እና አሃዝ ነጂዎች እና እያንዳንዱ አሃዝ የሚያከማች 8 × 8 የማይንቀሳቀስ ራም ናቸው።

የ MAX7219 ሞጁሎች እንደ ATtiny85 ካሉ ማይክሮ መቆጣጠሪያዎች ጋር ለመጠቀም በጣም ምቹ ናቸው ፣ ወይም በእኛ ሁኔታ የ Tinusaur ቦርድ።

ደረጃ 1 - ሃርድዌር

ሃርድዌር
ሃርድዌር
ሃርድዌር
ሃርድዌር

የ MAX7219 ሞጁሎች ብዙውን ጊዜ እንደዚህ ይመስላሉ። በአንድ በኩል የግብዓት አውቶቡስ አላቸው ፣ በሌላ በኩል ደግሞ የውጤት አውቶቡስ አላቸው። ይህ ይበልጥ የተወሳሰቡ ቅንብሮችን ለመፍጠር 2 ወይም ከዚያ በላይ ሞጁሎችን ማለትም አንድ አንዱን ከሌላው ጋር ለማገናኘት ያስችልዎታል።

እኛ የምንጠቀምባቸው ሞጁሎች 5 ትናንሽ ዝላይዎችን በመጠቀም በሰንሰለት ውስጥ ማገናኘት ይችላሉ። ከታች ያለውን ስዕል ይመልከቱ።

ደረጃ 2 - ጠቋሚ እና ምልክቶች

MAX7219 ሞጁል 5 ፒኖች አሉት

  • ቪሲሲ - ኃይል (+)
  • GND-መሬት (-)
  • ዲን - የውሂብ ግብዓት
  • CS - ቺፕ መምረጥ
  • CLK - ሰዓት

ያ ማለት ሞጁሉን ለመቆጣጠር በ ATtiny85 ማይክሮ መቆጣጠሪያ ጎን ላይ 3 ፒኖች ያስፈልጉናል ማለት ነው። እነዚያ ይሆናሉ ፦

  • PB0 - ከ CLK ጋር ተገናኝቷል
  • PB1 - ከሲኤስ ጋር ተገናኝቷል
  • PB2 - ከ DIN ጋር ተገናኝቷል

ይህ ከ MAX7219 ሞዱል ጋር ለመገናኘት እና እሱን ለማቀድ በቂ ነው።

ደረጃ 3 ፕሮቶኮል

ፕሮቶኮል
ፕሮቶኮል

ከ MAX7219 ጋር መገናኘት በአንፃራዊነት ቀላል ነው - የተመሳሰለ ፕሮቶኮል ይጠቀማል ማለት ለእያንዳንዱ የላክነው የውሂብ ቢት ያንን የውሂብ ቢት መኖሩን የሚያመለክት የሰዓት ዑደት አለ ማለት ነው።

በሌላ አነጋገር ፣ 2 ትይዩ ቅደም ተከተሎችን ወደ ቢት እንልካለን - አንዱ ለሰዓት እና ሌላ ለዳታ። ሶፍትዌሩ የሚያደርገው ይህ ነው።

ደረጃ 4 - ሶፍትዌሩ

ሶፍትዌሩ
ሶፍትዌሩ

ይህ MAX7219 ሞዱል የሚሠራበት መንገድ ይህ ነው

  • ወደ ውስጣዊ መዝገቡ ባይት እንጽፋለን።
  • MAX7219 ውሂቡን ይተረጉመዋል።
  • MAX7219 በማትሪክስ ውስጥ ያሉትን LED ዎች ይቆጣጠራል።

ያ ማለት እነሱን ለማብራት ሁል ጊዜ በኤልዲዎች ድርድር ውስጥ መዞር የለብንም ማለት ነው - MAX7219 ተቆጣጣሪው ያንን ይንከባከባል። እንዲሁም የ LEDs ጥንካሬን ማስተዳደር ይችላል።

ስለዚህ ፣ MAX7219 ሞጁሎችን ምቹ በሆነ መንገድ ለመጠቀም ይህንን ዓላማ ለማገልገል የተግባር ቤተ -መጽሐፍት ያስፈልገናል።

በመጀመሪያ ፣ ለ MAX7219 መመዝገቢያዎች ለመጻፍ አንዳንድ መሠረታዊ ተግባራት ያስፈልጉናል።

  • ወደ MAX7219 ባይት መጻፍ።
  • አንድ ቃል (2 ባይት) ወደ MAX7219 መጻፍ።

አንድ ባይት ለተቆጣጣሪው የሚጽፈው ተግባር እንደዚህ ይመስላል

ባዶ max7219_byte (uint8_t ውሂብ) {ለ (uint8_t i = 8; i> = 1; i--) {PORTB & = ~ (1 << MAX7219_CLK); // CLK ን ወደ LOW ያቀናብሩ (ውሂብ እና 0x80) // የውሂብ MSB ን ጭምብል PORTB | = (1 << MAX7219_DIN); // ዲአይንን ወደ ከፍተኛ ሌላ PORTB & = ~ (1 << MAX7219_DIN) ያዘጋጁ ፤ // DIN ን ወደ ዝቅተኛ PORTB | = (1 << MAX7219_CLK) ያዘጋጁ ፤ // CLK ን ወደ ከፍተኛ ውሂብ ያቀናብሩ << = 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 ን ወደ ከፍተኛ PORTB & = ~ (1 << MAX7219_CLK) ያዘጋጁ ፤ // CLK ን ወደ LOW ያቀናብሩ}

የሲኤስኤስ ምልክትን ወደ ከፍተኛ የምንመልሰውበትን መስመር እዚህ መገንዘብ አስፈላጊ ነው - ይህ የተከታታይን መጨረሻ ያመለክታል - በዚህ ሁኔታ ፣ የትእዛዙ መጨረሻ። በሰንሰለት ውስጥ የተገናኘውን አንድ ማትሪክስ የበለጠ በሚቆጣጠርበት ጊዜ ተመሳሳይ ዘዴ ጥቅም ላይ ይውላል። ቀጣዩ ደረጃ ፣ ኤልኢዲዎችን ማብራት እና ማጥፋት ከመጀመራችን በፊት የ MAX7219 መቆጣጠሪያውን ማስጀመር ነው። ይህ የሚከናወነው ለተወሰኑ መመዝገቢያዎች የተወሰኑ እሴቶችን በመጻፍ ነው። ለምቾት ፣ ኮድ በሚሰጥበት ጊዜ የመነሻ ቅደም ተከተሉን በአንድ ድርድር ውስጥ ማስቀመጥ እንችላለን።

uint8_t initseq = {0x09, 0x00, // Decode-Mode Register, 00 = 0x0a 0 000, // Intensity Register, 0x00.. 0x0f 0x0b ፣ 0x07 ፣ // ሁሉንም መስመሮች ለማሳየት 0X07 ን ይቃኙ። 0x0c ፣ 0x01 ፣ // የመዝጊያ መዝጊያ ፣ 0x01 = መደበኛ አሠራር 0x0f ፣ 0x00 ፣ // የማሳያ-ሙከራ መዝገብ ፣ 0x00 = መደበኛ ሥራ};

እኛ ከላይ ያሉትን 5 ትዕዛዞችን በቅደም ተከተል እንደ አድራሻ/የውሂብ ጥንዶች መላክ አለብን። ቀጣዩ ደረጃ - የኤልዲዎችን ረድፍ ማብራት።

ይህ በጣም ቀላል ነው - እኛ 1 ኛ ባይት አድራሻው (ከ 0 እስከ 7) እና 2 ኛ ባይት 8 ረድፎችን በተከታታይ 8 ኤልዲዎችን የሚወክልበት አንድ ትእዛዝ እንጽፋለን።

ባዶ max7219_row (uint8_t አድራሻ ፣ uint8_t ውሂብ) {ከሆነ (አድራሻ> = 1 && አድራሻ <= 8) max7219_word (አድራሻ ፣ ውሂብ) ፤ }

ይህ ለ 1 ማትሪክስ ብቻ እንደሚሰራ መገንዘብ አስፈላጊ ነው። ብዙ ማትሪክቶችን በሰንሰለት ውስጥ ካገናኘን ሁሉም ተመሳሳይ ውሂብ ያሳያሉ። ይህ የሆነበት ምክንያት ትዕዛዙን ከላክን በኋላ የሲኤስኤስ ምልክቱን ወደ ከፍተኛ እናመጣለን ፣ ይህም በሰንሰሉ ውስጥ ያሉት ሁሉም MAX7219 ተቆጣጣሪዎች እንዲቆለፉ እና የመጨረሻው ትእዛዝ የነበረበትን እንዲያሳዩ ያደርጋል።

የሚመከር: