สารบัญ:

วิธีเชื่อมต่อ MAX7219 LED Matrix 8x8 ที่ขับเคลื่อนด้วยไมโครคอนโทรลเลอร์ ATtiny85: 7 ขั้นตอน
วิธีเชื่อมต่อ MAX7219 LED Matrix 8x8 ที่ขับเคลื่อนด้วยไมโครคอนโทรลเลอร์ ATtiny85: 7 ขั้นตอน

วีดีโอ: วิธีเชื่อมต่อ MAX7219 LED Matrix 8x8 ที่ขับเคลื่อนด้วยไมโครคอนโทรลเลอร์ ATtiny85: 7 ขั้นตอน

วีดีโอ: วิธีเชื่อมต่อ MAX7219 LED Matrix 8x8 ที่ขับเคลื่อนด้วยไมโครคอนโทรลเลอร์ ATtiny85: 7 ขั้นตอน
วีดีโอ: How to make a 16x16x16 LED CUBE at home with Arduino platform 2024, กรกฎาคม
Anonim
วิธีการเชื่อมต่อ MAX7219 LED Matrix 8x8 ที่ขับเคลื่อนด้วยไมโครคอนโทรลเลอร์ ATtiny85
วิธีการเชื่อมต่อ MAX7219 LED Matrix 8x8 ที่ขับเคลื่อนด้วยไมโครคอนโทรลเลอร์ ATtiny85

คอนโทรลเลอร์ MAX7219 ผลิตโดย Maxim Integrated เป็นไดรเวอร์การแสดงผลแคโทดอินพุต/เอาต์พุตแบบอนุกรมที่มีขนาดกะทัดรัดซึ่งสามารถเชื่อมต่อไมโครคอนโทรลเลอร์กับไฟ LED แต่ละตัว 64 ดวง, จอแสดงผล LED ตัวเลข 7 ส่วนที่มีตัวเลขสูงสุด 8 หลัก, การแสดงกราฟแท่ง ฯลฯ รวมอยู่ใน - ชิปเป็นตัวถอดรหัส BCD code-B วงจรสแกนมัลติเพล็กซ์ ไดรเวอร์เซ็กเมนต์และตัวเลข และ RAM แบบคงที่ 8 × 8 ที่เก็บตัวเลขแต่ละหลัก

โมดูล MAX7219 นั้นสะดวกมากที่จะใช้กับไมโครคอนโทรลเลอร์ เช่น ATtiny85 หรือในกรณีของเราคือ Tinusaur Board

ขั้นตอนที่ 1: ฮาร์ดแวร์

ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์
ฮาร์ดแวร์

โมดูล MAX7219 มักจะมีลักษณะเช่นนี้ พวกเขามีอินพุทบัสด้านหนึ่งและเอาท์พุทบัสที่อีกด้านหนึ่ง สิ่งนี้ทำให้คุณสามารถต่อเดซี่เชน 2 โมดูลขึ้นไป กล่าวคือ ทีละโมดูล เพื่อสร้างการตั้งค่าที่ซับซ้อนยิ่งขึ้น

โมดูลที่เราใช้สามารถเชื่อมต่อแบบโซ่โดยใช้จัมเปอร์ขนาดเล็ก 5 ตัว ดูภาพด้านล่าง

ขั้นตอนที่ 2: Pinout และสัญญาณ

โมดูล MAX7219 มี 5 พิน:

  • VCC – กำลัง (+)
  • GND – กราวด์ (-)
  • DIN – อินพุตข้อมูล
  • CS – เลือกชิป
  • CLK – นาฬิกา

นั่นหมายความว่าเราต้องการ 3 พินที่ด้านไมโครคอนโทรลเลอร์ ATtiny85 เพื่อควบคุมโมดูล เหล่านั้นจะเป็น:

  • PB0 – เชื่อมต่อกับCLK
  • PB1 – เชื่อมต่อกับ CS
  • PB2 – เชื่อมต่อกับ DIN

เท่านี้ก็เพียงพอแล้วที่จะเชื่อมต่อกับโมดูล MAX7219 และตั้งโปรแกรม

ขั้นตอนที่ 3: โปรโตคอล

พิธีสาร
พิธีสาร

การสื่อสารกับ MAX7219 นั้นค่อนข้างง่าย - ใช้โปรโตคอลแบบซิงโครนัส ซึ่งหมายความว่าสำหรับทุกบิตข้อมูลที่เราส่งจะมีวงจรนาฬิกาที่บ่งบอกถึงการมีอยู่ของบิตข้อมูลนั้น

กล่าวอีกนัยหนึ่ง เราจะส่ง 2 ลำดับขนานไปยังบิต – หนึ่งสำหรับนาฬิกาและอีกชุดสำหรับข้อมูล นี่คือสิ่งที่ซอฟต์แวร์ทำ

ขั้นตอนที่ 4: ซอฟต์แวร์

ซอฟต์แวร์
ซอฟต์แวร์

วิธีการทำงานของโมดูล MAX7219 นี้คือ:

  • เราเขียนไบต์ไปยังการลงทะเบียนภายใน
  • MAX7219 ตีความข้อมูล
  • MAX7219 ควบคุม LED ในเมทริกซ์

นั่นหมายความว่าเราไม่ต้องวนรอบอาร์เรย์ของ LED ตลอดเวลาเพื่อให้สว่างขึ้น – ตัวควบคุม MAX7219 จะดูแลเรื่องนี้เอง นอกจากนี้ยังสามารถจัดการความเข้มของไฟ LED ได้อีกด้วย

ดังนั้น ในการใช้โมดูล MAX7219 ในวิธีที่สะดวก เราจำเป็นต้องมีไลบรารีของฟังก์ชันเพื่อตอบสนองวัตถุประสงค์นั้น

อันดับแรก เราต้องการฟังก์ชันพื้นฐานบางอย่างเพื่อเขียนลงในรีจิสเตอร์ MAX7219

  • กำลังเขียนไบต์ไปยัง MAX7219
  • การเขียนคำ (2 ไบต์) ถึง MAX7219

ฟังก์ชันที่เขียนหนึ่งไบต์ไปยังคอนโทรลเลอร์มีลักษณะดังนี้:

เป็นโมฆะ max7219_byte (ข้อมูล uint8_t) { สำหรับ (uint8_t i = 8; i >= 1; i--) { PORTB &= ~ (1 << MAX7219_CLK); // ตั้งค่า CLK เป็น LOW ถ้า (data & 0x80) // ปิดบัง MSB ของข้อมูล PORTB |= (1 << MAX7219_DIN); // ตั้งค่า DIN เป็น HIGH อย่างอื่น PORTB &= ~(1 << MAX7219_DIN); // ตั้งค่า DIN เป็น LOW PORTB |= (1 << MAX7219_CLK); // ตั้งค่า CLK เป็นข้อมูลสูง <<= 1; // เลื่อนไปทางซ้าย } }

ตอนนี้เราสามารถส่งไบต์ไปยัง MAX7219 ได้แล้ว เราก็เริ่มส่งคำสั่งได้ ทำได้โดยส่ง 2 byes – ที่ 1 สำหรับที่อยู่ของการลงทะเบียนภายในและที่ 2 สำหรับข้อมูลที่เราต้องการส่ง

มีการลงทะเบียนมากกว่าหนึ่งโหลในคอนโทรลเลอร์ MAX7219

การส่งคำสั่งหรือคำโดยทั่วไปคือการส่ง 2 ไบต์ต่อเนื่องกัน ฟังก์ชั่นการใช้งานที่ง่ายมาก

เป็นโมฆะ max7219_word (ที่อยู่ uint8_t, ข้อมูล uint8_t) { PORTB &= ~ (1 << MAX7219_CS); // ตั้งค่า CS เป็น LOW max7219_byte (ที่อยู่); // กำลังส่งที่อยู่ max7219_byte(data); // กำลังส่งข้อมูล PORTB |= (1 << MAX7219_CS); // ตั้งค่า CS เป็น HIGH PORTB &= ~ (1 << MAX7219_CLK); // ตั้งค่า CLK เป็น LOW }

สิ่งสำคัญที่ควรทราบคือบรรทัดที่เรานำสัญญาณ CS กลับมาที่ HIGH ซึ่งเป็นจุดสิ้นสุดของลำดับ ในกรณีนี้คือจุดสิ้นสุดของคำสั่ง เทคนิคที่คล้ายกันนี้ใช้เมื่อควบคุมเมทริกซ์มากกว่าหนึ่งเมทริกซ์ที่เชื่อมต่อกันในสายโซ่ ขั้นต่อไป ก่อนที่เราจะเริ่มเปิดและปิดไฟ LED คือการเริ่มต้นคอนโทรลเลอร์ MAX7219 ทำได้โดยการเขียนค่าบางอย่างลงในรีจิสเตอร์บางตัว เพื่อความสะดวก ในขณะที่เข้ารหัส เราสามารถใส่ลำดับการเริ่มต้นในอาร์เรย์

uint8_t initseq = { 0x09, 0x00, // Decode-Mode Register, 00 = ไม่มีการถอดรหัส 0x0a, 0x01, // Intensity Register, 0x00.. 0x0f 0x0b, 0x07, // Scan-Limit Register, 0x07 เพื่อแสดงบรรทัดทั้งหมด 0x0c, 0x01, // Shutdown Register, 0x01 = การทำงานปกติ 0x0f, 0x00, // Display-Test Register, 0x00 = การทำงานปกติ };

เราแค่ต้องส่งคำสั่ง 5 คำสั่งด้านบนตามลำดับเป็นคู่ที่อยู่/ข้อมูล ขั้นตอนต่อไป – ให้ไฟ LED แถวหนึ่งสว่างขึ้น

มันง่ายมาก เราแค่เขียนคำสั่งหนึ่งคำสั่งโดยที่ไบต์ที่ 1 คือที่อยู่ (จาก 0 ถึง 7) และไบต์ที่ 2 คือ 8 บิตที่แทน LED 8 ดวงในแถว

เป็นโมฆะ max7219_row (ที่อยู่ uint8_t, ข้อมูล uint8_t) { ถ้า (ที่อยู่ >= 1 && ที่อยู่ <= 8) max7219_word (ที่อยู่, ข้อมูล); }

สิ่งสำคัญคือต้องสังเกตว่าสิ่งนี้จะใช้ได้กับ 1 เมทริกซ์เท่านั้น หากเราเชื่อมต่อเมทริกซ์มากขึ้นในสายโซ่ พวกมันทั้งหมดจะแสดงข้อมูลเดียวกัน เหตุผลก็คือหลังจากส่งคำสั่ง เรานำสัญญาณ CS กลับมาที่ HIGH ซึ่งทำให้ตัวควบคุม MAX7219 ทั้งหมดในสายโซ่ล็อคและแสดงคำสั่งสุดท้าย

แนะนำ: