جدول المحتويات:

كيفية واجهة MAX7219 بقيادة مصفوفة LED 8x8 مع متحكم ATtiny85: 7 خطوات
كيفية واجهة MAX7219 بقيادة مصفوفة LED 8x8 مع متحكم ATtiny85: 7 خطوات

فيديو: كيفية واجهة MAX7219 بقيادة مصفوفة LED 8x8 مع متحكم ATtiny85: 7 خطوات

فيديو: كيفية واجهة MAX7219 بقيادة مصفوفة LED 8x8 مع متحكم ATtiny85: 7 خطوات
فيديو: How to Use Arduino NANO Expansion Adapter Breakout Board - I/O Shield | Part -1 2024, يوليو
Anonim
كيفية واجهة MAX7219 مدفوعة LED مصفوفة 8x8 مع متحكم ATtiny85
كيفية واجهة MAX7219 مدفوعة LED مصفوفة 8x8 مع متحكم ATtiny85

تم تصنيع وحدة التحكم MAX7219 بواسطة Maxim Integrated ، وهي عبارة عن برنامج تشغيل عرض كاثود مشترك مدمج ومدخل تسلسلي يمكن أن يتعامل مع ميكروكنترولر إلى 64 مصباح LED فرديًا وشاشات 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 سهلًا نسبيًا - فهو يستخدم بروتوكولًا متزامنًا مما يعني أنه لكل بت بيانات نرسلها ، توجد دورة ساعة تشير إلى وجود بت البيانات.

بمعنى آخر ، نرسل تسلسلين متوازيين إلى البتات - أحدهما للساعة والآخر للبيانات. هذا ما يفعله البرنامج.

الخطوة 4: البرنامج

البرنامج
البرنامج

طريقة عمل وحدة MAX7219 هذه هي:

  • نكتب بايت في سجلها الداخلي.
  • يفسر MAX7219 البيانات.
  • يتحكم MAX7219 في المصابيح في المصفوفة.

هذا يعني أيضًا أنه لا يتعين علينا الدوران عبر مجموعة مصابيح LED طوال الوقت لإضاءةها - وحدة التحكم MAX7219 تعتني بذلك. يمكنه أيضًا إدارة شدة مصابيح LED.

لذلك ، لاستخدام وحدات MAX7219 بطريقة مناسبة ، نحتاج إلى مكتبة من الوظائف لخدمة هذا الغرض.

أولاً ، نحتاج إلى بعض الوظائف الأساسية من أجل الكتابة إلى سجلات MAX7219.

  • كتابة بايت إلى MAX7219.
  • كتابة كلمة (2 بايت) إلى MAX7219.

تبدو الوظيفة التي تكتب بايت واحد إلى وحدة التحكم كما يلي:

باطل 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 else PORTB & = ~ (1 << MAX7219_DIN) ؛ // تعيين DIN على LOW PORTB | = (1 << MAX7219_CLK) ؛ // ضبط CLK على بيانات عالية << = 1 ؛ // التحول إلى اليسار}}

الآن بعد أن أصبح بإمكاننا إرسال وحدات البايت إلى MAX7219 يمكننا البدء في إرسال الأوامر. يتم ذلك عن طريق إرسال 2 byes - الأول لعنوان السجل الداخلي والثاني للبيانات التي نرغب في إرسالها.

هناك أكثر من اثني عشر من المسجلين في وحدة تحكم 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 ، // تسجيل إيقاف التشغيل ، 0x01 = عملية عادية 0x0f ، 0x00 ، // Display-Test Register ، 0x00 = عملية عادية} ؛

نحتاج فقط إلى إرسال الأوامر الخمسة أعلاه بالتسلسل كأزواج عنوان / بيانات. الخطوة التالية - إضاءة صف من المصابيح.

هذا بسيط للغاية - نكتب أمرًا واحدًا حيث يكون البايت الأول هو العنوان (من 0 إلى 7) والبايت الثاني هو 8 بتات تمثل 8 مصابيح LED في الصف.

void max7219_row (uint8_t address، uint8_t data) {if (address> = 1 && address <= 8) max7219_word (address، data)؛ }

من المهم ملاحظة أن هذا سيعمل مع مصفوفة واحدة فقط. إذا قمنا بتوصيل المزيد من المصفوفات في سلسلة ، فستظهر جميعها نفس البيانات. والسبب في ذلك هو أنه بعد إرسال الأمر ، نعيد إشارة CS إلى HIGH مما يؤدي إلى تثبيت جميع وحدات التحكم MAX7219 في السلسلة وإظهار أي أمر كان الأخير.

موصى به: