جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
تم تصنيع وحدة التحكم 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 في السلسلة وإظهار أي أمر كان الأخير.