- إعداد الأجهزة والمتطلبات
- N76E003 LED ودائرة واجهة بزر الضغط
- N76E003 مخطط Pin-Out
- برنامج تحكم GPIO بسيط لـ N76E003
- برمجة N76E003 والتحقق من المخرجات
في برنامجنا التعليمي السابق ، استخدمنا برنامج وميض LED أساسي كبداية مع دليل N76E003 ، تعلمنا بالفعل كيفية تكوين Keil IDE وإعداد البيئة لبرمجة وحدة متحكم nuvoton N76E003. لقد حان الوقت للمضي قدمًا قليلاً واستخدام واجهة GPIO الأساسية للتحكم في الأجهزة الإضافية. إذا كنت مهتمًا ، يمكنك أيضًا التحقق من البرامج التعليمية الأخرى لوحدة التحكم الدقيقة GPIO المدرجة أدناه-
- STM32 Nucleo64 مع CubeMx و TrueSTUDIO - تحكم LED
- STM8S مع تحكم Cosmic C GPIO
- الموافقة المسبقة عن علم مع MPLABX LED وميض البرنامج التعليمي
- MSP430 مع Code Composer Studio - تحكم LED بسيط
نظرًا لأننا في برنامجنا التعليمي السابق ، استخدمنا مؤشر LED فقط للوميض باستخدام دبوس الإدخال والإخراج كمخرج. في هذا البرنامج التعليمي ، سوف نتعلم كيفية استخدام دبوس إدخال / إخراج آخر كمدخل والتحكم في مؤشر LED إضافي. دون إضاعة الكثير من الوقت ، دعنا نقيم نوع إعداد الأجهزة الذي نحتاجه.
إعداد الأجهزة والمتطلبات
نظرًا لأنه يلزم استخدام مفتاح كمدخل ، فإن أول شيء نطلبه هو زر ضغط. نحتاج أيضًا إلى مؤشر LED إضافي ليتم التحكم فيه بواسطة زر الضغط هذا. بخلاف هذين ، نطلب أيضًا مقاومًا للحد من تيار LED ومقاوم إضافي لأغراض السحب لأسفل عبر زر الضغط. سيتم توضيح ذلك في القسم التخطيطي. المكونات التي نحتاجها -
- زر ضغط (أي نوع من المفاتيح اللحظية على وجه التحديد - مفتاح اللمس)
- أي لون من LED
- 4.7k المقاوم لأغراض المنسدلة
- 100R المقاوم
ناهيك ، بخلاف المكونات المذكورة أعلاه ، نحتاج إلى لوحة تطوير تعتمد على متحكم N76E003 بالإضافة إلى مبرمج Nu-Link. بالإضافة إلى ذلك ، فإن أسلاك اللوح وأسلاك التوصيل مطلوبة أيضًا لتوصيل جميع المكونات كما هو موضح أدناه.
N76E003 LED ودائرة واجهة بزر الضغط
كما نرى في المخطط أدناه ، يتم توصيل مصباح الاختبار الموجود داخل لوحة التطوير على المنفذ 1.4 ومصباح LED إضافي متصل بالمنفذ 1.5. يستخدم المقاوم R3 للحد من تيار LED.
في الدبوس 1.6 ، يتم توصيل زر ضغط يسمى SW. كلما تم الضغط على الزر ، سيصبح الدبوس مرتفعًا. خلاف ذلك ، سيصبح منخفضًا بواسطة المقاوم المنسدل R1 4.7 كيلو. يمكنك معرفة المزيد عن المقاومات المنسدلة والسحب إذا كنت جديدًا على هذا المفهوم.
الدبوس هو أيضًا دبوس متعلق بالبرنامج يتم الوصول إليه بواسطة المبرمج. يتم استخدامه لإرسال بيانات البرنامج. ومع ذلك ، سنرى السبب وراء اختيار تلك المسامير بالإضافة إلى الحصول على معلومات عادلة حول تعيين دبوس N76E003.
N76E003 مخطط Pin-Out
على الرسم البياني دبوس من N76E003 يمكن أن ينظر في أدناه -الصورة
كما نرى ، كل دبوس له وظائف متعددة ويمكن استخدامه لأغراض مختلفة. لنأخذ مثالا. يمكن استخدام الطرف 1.7 كمقاطعة أو إدخال تناظري أو كعملية إدخال وإخراج للأغراض العامة. وبالتالي ، إذا تم استخدام أي دبوس كدبابيس I / O ، فلن تكون الوظيفة المعنية متاحة.
نتيجة لهذا ، فإن الدبوس 1.5 الذي يستخدم كدبوس إخراج LED ، سيفقد PWM والوظائف الأخرى. لكن هذه ليست مشكلة حيث أن وظيفة أخرى غير مطلوبة لهذا المشروع. السبب وراء اختيار الدبوس 1.5 كمخرج والدبوس 1.6 كمدخل ، بسبب توفر أقرب دبابيس GND و VDD لسهولة التوصيل.
ومع ذلك ، في هذا المتحكم الدقيق من 20 دبوسًا ، يمكن استخدام 18 دبوسًا كدبوس GPIO. يتم استخدام الدبوس 2.0 بشكل مخصص لإعادة إدخال الإدخال ولا يمكن استخدامه كإخراج. بخلاف هذا الدبوس ، يمكن تكوين جميع المسامير في الوضع الموضح أدناه.
وفقًا لورقة البيانات ، يعد PxM1.n و PxM2.n مسجلين يتم استخدامهما لتحديد عملية التحكم في منفذ الإدخال / الإخراج. الآن ، يعد القدوم إلى كتابة وقراءة منفذ GPIO أمرًا مختلفًا تمامًا. نظرًا لأن الكتابة إلى سجل التحكم في المنفذ يغير حالة إغلاق المنفذ ، بينما تحصل قراءة المنفذ على حالة الحالة المنطقية. ولكن لقراءة منفذ ، يجب ضبطه في وضع إدخال.
برنامج تحكم GPIO بسيط لـ N76E003
يمكن العثور على البرنامج الكامل المستخدم في هذا البرنامج التعليمي في أسفل هذه الصفحة ، وشرح الكود كما يلي.
ضبط الدبوس كمدخل
لنبدأ بالمدخل أولاً. كما تمت مناقشته من قبل ، لقراءة حالة المنفذ ، يجب تعيينه كمدخل. لذلك ، نظرًا لأننا اخترنا P1.6 باعتباره دبوس تبديل الإدخال ، فقد قمنا بتوضيحه من خلال السطر أدناه من مقتطف الشفرة.
# تعريف SW P16
يجب تعيين هذا الدبوس نفسه كمدخل. وبالتالي ، في وظيفة الإعداد ، يتم تعيين الدبوس كمدخل باستخدام السطر أدناه.
إعداد باطل (باطل) {P14_Quasi_Mode؛ P15_Quasi_Mode ؛ P16_Input_Mode ؛ }
هذا الخط P16_Input_Mode ؛ تم تعريفه في ملف الرأس Function_define.h في "مكتبة تضمين BSP" التي تحدد بت الدبوس كـ P1M1- = SET_BIT6؛ P1M2 & = ~ SET_BIT6 . و SET_BIT6 يعرف أيضا في نفس الملف رأس لعم
#define SET_BIT6 0x40
ضبط الدبابيس كإخراج
تمامًا مثل دبوس الإدخال ، يتم أيضًا تحديد دبوس الإخراج الذي يستخدمه مؤشر LED للاختبار الموجود على اللوحة ومؤشر LED1 الخارجي في القسم الأول من الكود باستخدام أرقام التعريف الشخصية المعنية.
#define Test_LED P14 # تعريف LED1 ص 15
يتم تعيين هذه المسامير كإخراج في وظيفة الإعداد باستخدام الأسطر أدناه.
إعداد باطل (باطل) { P14_Quasi_Mode؛ // إخراج P15_Quasi_Mode ؛ // إخراج P16_Input_Mode ؛ }
يتم تعريف هذه الخطوط أيضًا في ملف الرأس Function_define.h حيث يقوم بتعيين بت الدبوس كـ P1M1 & = ~ SET_BIT4؛ P1M2 & = ~ SET_BIT4 . و SET_BIT6 يعرف أيضا في نفس الملف رأس لعم
#define SET_BIT4 0x10
حلقة لانهائية
جهاز ، إذا كان متصلًا بالطاقة ويعمل بشكل مثالي والذي يجب أن يعطي مخرجات مستمرة ، فإن التطبيق لا يتوقف أبدًا. إنه يفعل نفس الشيء لأوقات لا نهائية. هنا تأتي وظيفة حلقة while اللانهائية. يعمل التطبيق داخل حلقة while بشكل لا نهائي.
بينما (1) { Test_LED = 0 ؛ sw_delay (150) ؛ Test_LED = 1 ، sw_delay (150) ؛ إذا (SW == 1) {LED1 = 0 ؛ } وإلا {LED1 = 1 ؛ }}}
تومض حلقة while أعلاه المصباح وفقًا لقيمة sw_delay وتتحقق أيضًا من حالة SW. إذا تم الضغط على المفتاح ، فسيكون P1.6 مرتفعًا ، وبالتالي عند الضغط عليه ، ستكون حالة القراءة 1. في هذه الحالة ، في الوقت الحالي ، يتم الضغط على المفتاح ويظل المنفذ P1.6 مرتفعًا ، سوف يتوهج مؤشر LED1.
برمجة N76E003 والتحقق من المخرجات
في برنامجنا التعليمي لبدء استخدام N76E003 ، تعلمنا كيفية برمجة N76E003 بالفعل ، لذلك سنكرر نفس الخطوات هنا لبرمجة مجلسنا. تم تجميع الكود بنجاح وإرجاع 0 تحذير و 0 أخطاء ووميض باستخدام طريقة الوميض الافتراضية بواسطة Keil.
كما ترى في الصورة أعلاه ، يتم تشغيل مؤشر LED الخارجي عند الضغط على زر الضغط. يمكن العثور على العمل الكامل للمشروع في الفيديو المرتبط أدناه. آمل أن تكون قد استمتعت بالبرنامج التعليمي وتعلمت شيئًا مفيدًا إذا كان لديك أي أسئلة ، اتركها في قسم التعليقات أدناه. يمكنك أيضًا استخدام منتدياتنا لطرح أسئلة فنية أخرى.