- المواد المطلوبة
- مخطط الدائرة والاتصال
- برمجة STM32 لشاشات الكريستال السائل باستخدام Arduino
- تحميل البرنامج على STM32F103C8T6
بالنسبة إلى أي مشروع متحكم دقيق ، فإن ربط وحدة العرض به سيجعل المشروع أسهل كثيرًا ويجذب المستخدم للتفاعل معه. وحدة العرض الأكثر استخدامًا للميكروكونترولر هي شاشات عرض رقمية بحجم 16 × 2. هذه الأنواع من شاشات العرض ليست مفيدة فقط لعرض المعلومات الحيوية للمستخدم ولكن يمكنها أيضًا أن تعمل كأداة لتصحيح الأخطاء أثناء مرحلة التطوير الأولية للمشروع. لذلك ، في هذا البرنامج التعليمي سوف نتعلم كيف يمكننا توصيل شاشة LCD مقاس 16 × 2 مع لوحة تطوير STM32F103C8T6 STM32 وبرمجتها باستخدام Arduino IDE. بالنسبة للأشخاص الذين هم على دراية بـ Arduino ، سيكون هذا البرنامج التعليمي مجرد نزهة على شكل كعكة لأن كلاهما متشابهان للغاية. لمعرفة المزيد حول STM32 Blue Pill Board ، اتبع البرنامج التعليمي للبدء.
المواد المطلوبة
- مجلس تطوير الحبة الزرقاء STM32
- شاشة عرض LCD مقاس 16 × 2
- مبرمج FTDI
- توصيل الأسلاك
- شاشة LCD
مقدمة موجزة لشاشة LCD ذات مصفوفة نقطية مقاس 16 × 2
كما ذكرنا سابقًا ، يوفر Energia IDE مكتبة جميلة تجعل الواجهة قطعة من الكعكة ، وبالتالي ليس من الضروري معرفة أي شيء عن وحدة العرض. لكن ، ألم يكن من المثير للاهتمام إظهار ما نستخدمه !!
يشير الاسم 16 × 2 إلى أن الشاشة بها 16 عمودًا وصفين ، والتي تشكل معًا (16 * 2) 32 صندوقًا. سيبدو مربع واحد مثل هذا في الصورة أدناه
يحتوي الصندوق الفردي على 40 بكسل (نقاط) بترتيب مصفوفة من 5 صفوف و 8 أعمدة ، وتشكل هذه الـ 40 بكسل معًا حرفًا واحدًا. وبالمثل ، يمكن عرض 32 حرفًا باستخدام كل المربعات. الآن دعونا نلقي نظرة على pinouts.
تحتوي شاشة LCD على إجمالي 16 دبوسًا ، كما هو موضح أعلاه ، يمكن تصنيفها إلى أربع مجموعات كما يلي
دبابيس المصدر (1 و 2 و 3): هذه الدبابيس مصدر الطاقة ومستوى التباين للشاشة
دبابيس التحكم (4 و 5 و 6): تقوم هذه المسامير بتعيين / التحكم في السجلات الموجودة في IC (المزيد من هذا يمكن العثور عليه في الرابط أدناه)
دبابيس البيانات / الأوامر (من 7 إلى 14): توفر هذه الدبابيس بيانات المعلومات التي يجب عرضها على شاشة LCD.
دبابيس LED (15 و 16): تستخدم هذه المسامير لتوهج الإضاءة الخلفية لشاشة LCD إذا لزم الأمر (اختياري).
من بين كل هذه الدبابيس الستة عشر ، يجب استخدام 10 دبابيس فقط بشكل إلزامي للعمل الصحيح لشاشة LCD إذا كنت تريد معرفة المزيد عن شاشة LCD هذه ، انتقل إلى مقالة LCD مقاس 16 × 2.
مخطط الدائرة والاتصال
يظهر أدناه مخطط الدائرة للواجهة 16 * 2 مصفوفة نقطية LCD مع STM32F103C8T6 STM32 Blue Pill board. وهي مصنوعة باستخدام برنامج Fritzing.
كما ترى ، يتم الاتصال الكامل عبر لوح التجارب. نحن بحاجة إلى لوحة FTDI لبرمجة متحكم STM32. على غرار برنامجنا التعليمي السابق ، قمنا بتوصيل لوحة FTDI بـ STM32 ، حيث تم توصيل دبوس Vcc والدبوس الأرضي لمبرمج FDTI بالدبوس 5V والدبوس الأرضي الخاص بـ STM32 على التوالي. يستخدم هذا لتشغيل لوحة STM32 وشاشة LCD حيث يمكن لكليهما قبول can + 5V. يتم توصيل دبوس Rx و Tx بلوحة FTDI بالدبوس A9 و A10 في STM32 حتى نتمكن من برمجة اللوحة مباشرة بدون أداة تحميل التمهيد.
بعد ذلك ، يجب توصيل شاشة LCD بلوحة STM32. سنستخدم شاشة LCD في وضع 4 بت ، لذلك يتعين علينا توصيل دبابيس بتات البيانات الأربعة (DB4 إلى DB7) ودبوس التحكم (RS و EN) بلوحة STM32 كما هو موضح في دائرة واجهة LCD STM32F103C8T6 الرسم البياني أعلاه. علاوة على ذلك ، سيساعدك الجدول أدناه في إجراء الاتصال.
رقم دبوس LCD |
اسم دبوس LCD |
اسم دبوس STM32 |
1 |
الأرض (Gnd) |
مطحون (G) |
2 |
VCC |
5 فولت |
3 |
VEE |
مطحون (G) |
4 |
اختيار التسجيل (RS) |
PB11 |
5 |
قراءة / كتابة (RW) |
مطحون (G) |
6 |
تمكين (بالإنكليزية) |
PB10 |
7 |
بت البيانات 0 (DB0) |
لا يوجد اتصال (NC) |
8 |
بت البيانات 1 (DB1) |
لا يوجد اتصال (NC) |
9 |
بت البيانات 2 (DB2) |
لا يوجد اتصال (NC) |
10 |
بت البيانات 3 (DB3) |
لا يوجد اتصال (NC) |
11 |
بت البيانات 4 (DB4) |
PB0 |
12 |
بت البيانات 5 (DB5) |
PB1 |
13 |
بت البيانات 6 (DB6) |
PC13 |
14 |
بت البيانات 7 (DB7) |
PC14 |
15 |
LED إيجابي |
5 فولت |
16 |
سلبي LED |
مطحون (G) |
بمجرد الانتهاء من الاتصالات ، يمكننا فتح Arduino IDE والبدء في برمجته.
برمجة STM32 لشاشات الكريستال السائل باستخدام Arduino
كما قيل في هذا البرنامج التعليمي ، سنستخدم Arduino IDE لبرمجة وحدة التحكم الدقيقة STM32 الخاصة بنا. ولكن ، لن يتم تثبيت لوحة STM32 افتراضيًا في Arduino IDE ، وبالتالي يتعين علينا تنزيل حزمة وإعداد Arduino IDE لنفسه. هذا هو بالضبط ما فعلناه في البرنامج التعليمي السابق الذي بدأناه مع STM32F103C8T6 باستخدام Arduino IDE. لذلك إذا لم تكن قد قمت بتثبيت الحزم المطلوبة ، فارجع إلى هذا البرنامج التعليمي واتبعه قبل المتابعة هنا.
بمجرد تثبيت STM32 Board في Arduino IDE ، يمكننا بدء البرمجة. البرنامج مشابه جدًا لبرنامج لوحة Arduino ، والشيء الوحيد الذي سيتغير هو أسماء الدبوس لأن الرموز مختلفة بالنسبة لـ STM32 و Arduino. يتم تقديم البرنامج الكامل في نهاية هذه الصفحة ، ولكن لشرح البرنامج ، قمت بتقسيمه إلى مقتطفات صغيرة ذات معنى كما هو موضح أدناه.
إحدى الميزات الملحوظة لاستخدام Arduino لبرمجة وحدات التحكم الدقيقة الخاصة بنا هي أن Arduino يحتوي على مكتبات جاهزة لكل أجهزة الاستشعار والمشغلات الشهيرة تقريبًا. لذلك نبدأ برنامجنا بتضمين مكتبة LCD مما يجعل البرمجة أسهل كثيرًا.
#تضمن
في السطر التالي ، يتعين علينا تحديد دبابيس GPIO الخاصة بـ STM32 التي قمنا بتوصيل التحكم في شاشة LCD وخطوط البيانات بها. للقيام بذلك ، يتعين علينا التحقق من أجهزتنا ، وللتيسير ، يمكنك أيضًا الرجوع إلى الجدول الوارد في الأعلى والذي يسرد أسماء أطراف شاشة LCD مقابل دبوس GPIO الخاص بـ STM32. بعد ذكر المسامير ، يمكننا تهيئة شاشة LCD باستخدام وظيفة LiquidCrystal . نقوم أيضًا بتسمية شاشة LCD الخاصة بنا باسم " LCD " كما هو موضح أدناه.
const int rs = PB11 ، en = PB10 ، d4 = PB0 ، d5 = PB1 ، d6 = PC13 ، d7 = PC14 ؛ // اذكر أسماء المسامير التي يتم توصيلها مع LCD بـ LiquidCrystal LCD (rs، en، d4، d5، d6، d7) // تهيئة شاشة LCD
بعد ذلك ندخل في وظيفة الإعداد . هنا أولاً نذكر نوع شاشة LCD التي نستخدمها. نظرًا لأنها شاشة LCD مقاس 16 * 2 ، فإننا نستخدم خط lcd.begin (16،2). يتم تنفيذ الكود الموجود داخل وظيفة الإعداد الباطل مرة واحدة فقط. لذلك نستخدمه لعرض نص مقدمة يظهر على الشاشة لمدة ثانيتين ثم يتم مسحه. لذكر الموضع الذي يجب أن يظهر فيه النص ، نستخدم الوظيفة lcd.setcursor ولطباعة النص نستخدم وظيفة lcd.print . على سبيل المثال ، lcd.setCursor (0،0) سيضبط المؤشر في الصف الأول والعمود الأول حيث نطبع " Interfacing LCD " والوظيفة lcd.setCursor (0،1) يحرك المؤشر إلى الصف الثاني العمود الأول حيث نطبع السطر “ CircuitDigest ”.
إعداد باطل () {lcd.begin (16، 2)؛ // نحن نستخدم شاشة LCD 16 * 2 LCD.setCursor (0 ، 0) ؛ // في الصف الأول في العمود الأول lcd.print ("واجهة LCD") ؛ // اطبع هذا lcd.setCursor (0 ، 1) ؛ // في الصف الثاني في العمود الأول lcd.print ("- CircuitDigest") ؛ // اطبع هذا التأخير (2000) ؛ // انتظر ثانيتين lcd.clear () ؛ // مسح الشاشة}
بعد عرض نص المقدمة ، نحتفظ بالبرنامج لمدة ثانيتين عن طريق إنشاء تأخير حتى يتمكن المستخدم من قراءة رسالة المقدمة. يتم إنشاء هذا التأخير عن طريق تأخير السطر (2000) حيث 2000 هي قيمة التأخير بالثواني المطحنة. بعد التأخير نقوم بمسح شاشة LCD باستخدام وظيفة lcd.clear () التي تمسح شاشة LCD عن طريق إزالة كل النص الموجود على شاشة LCD.
أخيرًا داخل الحلقة الفارغة ، نعرض "STM32 –Blue Pill" في السطر الأول وقيمة الثواني في السطر الثاني. يمكن الحصول على قيمة الثانية من دالة ميلي () . و بالمللي () هو توقيت الذي يحصل على تزايد الحق من الوقت هو مدعوم من MCU. القيمة في شكل ملي ثانية ، لذلك نقسمها على 1000 قبل عرضها على شاشة LCD الخاصة بنا.
حلقة باطلة () { lcd.setCursor (0، 0) ؛ // في الصف الأول في العمود الأول lcd.print ("STM32 -Blue Pill") ؛ // اطبع هذا lcd.setCursor (0 ، 1) ؛ // في الصف الثاني في العمود الأول lcd.print (مللي () / 1000) ؛ // طباعة قيمة الثواني }
تحميل البرنامج على STM32F103C8T6
كما تمت مناقشته في الفقرة أعلاه ، يجب أن تكون قادرًا على ملاحظة الإخراج بمجرد تحميل الكود. لكن هذا البرنامج لن يعمل في المرة القادمة عند تشغيل اللوحة ، لأن اللوحة لا تزال في وضع البرمجة. لذلك بمجرد تحميل البرنامج ، يجب إعادة الطائر في التمهيد 0 إلى 0 موضعًا كما هو موضح أدناه. الآن أيضًا منذ أن تم تحميل البرنامج على لوحة STM32 بالفعل ، لا نحتاج إلى لوحة FTDI ويمكن تشغيل الإعداد بالكامل بواسطة منفذ micro-USB للوحة STM32 كما هو موضح أدناه.
هذا مجرد مشروع واجهة بسيط للمساعدة في استخدام شاشة LCD مع لوحة STM32 ، ولكن يمكنك أيضًا استخدام هذا لبناء مشاريع رائعة. آمل أن تكون قد فهمت البرنامج التعليمي وتعلمت شيئًا مفيدًا منه. إذا واجهت أي مشكلة في تشغيله ، فيرجى استخدام قسم التعليقات لنشر المشكلة أو استخدام المنتديات لأسئلة فنية أخرى. و يمكن أيضا أن تكون موجودة عمل كاملة من عرض LCD مع STM32 على شريط فيديو الواردة أدناه.