- الاستعداد للبرمجة:
- إنشاء مشروع جديد باستخدام MPLAB-X:
- التعرف على سجلات التكوين:
- ضبط بتات التكوين في MPLAB-X:
- برمجة الموافقة المسبقة عن علم ليومض LED:
- مخطط الدائرة ومحاكاة المتقلبة:
هذا هو البرنامج التعليمي الثاني من سلسلة دروس PIC. في برنامجنا التعليمي السابق الشروع في استخدام PIC Microcontroller: مقدمة إلى PIC و MPLABX ، تعلمنا الأشياء الأساسية حول متحكم PIC الخاص بنا ، وقمنا أيضًا بتثبيت البرنامج المطلوب وشراء مبرمج PicKit 3 جديدًا سنستخدمه قريبًا. نحن الآن على استعداد للبدء في برنامجنا الأول الوامض LED باستخدام PIC16F877A. سنتعرف أيضًا على سجلات التكوين في هذا البرنامج التعليمي.
يتوقع هذا البرنامج التعليمي أنك قمت بتثبيت البرنامج المطلوب على جهاز الكمبيوتر الخاص بك وأنك تعرف بعض الأساسيات اللائقة حول PIC MCU. إذا لم يكن الأمر كذلك ، فيرجى الرجوع إلى البرنامج التعليمي السابق والبدء من هناك.
الاستعداد للبرمجة:
منذ أن قررنا استخدام PIC16F877A ، مع برنامج التحويل البرمجي XC8 ، دعنا نبدأ مع ورقة البيانات الخاصة بهم. أوصي الجميع بتنزيل ورقة البيانات PIC16F877A ودليل المترجم XC8 ، حيث سنشير إلىهما بشكل متكرر أثناء تقدمنا في البرنامج التعليمي الخاص بنا. من الجيد دائمًا قراءة ورقة البيانات الكاملة لأي MCU قبل أن نبدأ البرمجة بها بالفعل.
الآن ، قبل أن نفتح MPLAB-X الخاص بنا ونبدأ في البرمجة ، هناك بعض الأشياء الأساسية التي يجب على المرء أن يكون على دراية بها. على أي حال ، نظرًا لأن هذا هو برنامجنا الأول ، فأنا لا أريد أن أجادلكم مع الكثير من النظريات ولكننا سنتوقف هنا وهناك أثناء قيامنا بالبرمجة وسأشرح لكم الأمور على هذا النحو. إذا لم يكن لديك الوقت الكافي لقراءة كل ذلك ، فما عليك سوى إلقاء نظرة سريعة والانتقال إلى الفيديو أسفل الصفحة.
إنشاء مشروع جديد باستخدام MPLAB-X:
الخطوة 1: قم بتشغيل MPLAB-X IDE الذي قمنا بتثبيته في الفصل السابق ، بمجرد تحميله يجب أن يبدو مثل هذا.
الخطوة 2: انقر فوق الملفات -> مشروع جديد ، أو استخدم مفتاح الاختصار Ctrl + Shift + N. ستحصل على المنبثقة التالية ، والتي يجب عليك من خلالها تحديد مشروع مستقل والنقر فوق التالي.
الخطوة 3: الآن علينا تحديد الجهاز الخاص بنا للمشروع. لذا اكتب PIC16F877A في قسم تحديد الجهاز المنسدلة. بمجرد الانتهاء من ذلك ، يجب أن يكون الأمر هكذا ثم انقر فوق التالي.
الخطوة 4: ستسمح لنا الصفحة التالية بتحديد الأداة الخاصة بمشروعنا. سيكون هذا هو PicKit 3 لمشروعنا. حدد PicKit 3 وانقر فوق التالي
الخطوة 5: ستطلب الصفحة التالية تحديد المترجم ، حدد XC8 Compiler وانقر فوق التالي.
الخطوة 6: في هذه الصفحة ، يتعين علينا تسمية مشروعنا وتحديد الموقع الذي يجب حفظ المشروع فيه. لقد سميت هذا المشروع باسم Blink وقمت بحفظه على سطح المكتب. يمكنك تسميته وحفظه بالطريقة التي تفضلها. سيتم حفظ مشروعنا كمجلد بالملحق.X ، والذي يمكن تشغيله مباشرة بواسطة MAPLB-X. انقر فوق إنهاء بمجرد الانتهاء.
الخطوة 7: هذا كل شيء !!! تم إنشاء مشروعنا. ستظهر النافذة في أقصى اليسار اسم المشروع (Here Blink) ، انقر فوقه حتى نتمكن من عرض جميع الأدلة الموجودة بداخله.
لبدء البرمجة ، نحتاج إلى إضافة ملف C الرئيسي ، داخل دليل الملفات المصدر. للقيام بذلك ، ما عليك سوى النقر بزر الماوس الأيمن على الملف المصدر وتحديد New -> C Main File ، كما هو موضح في الصورة أدناه.
الخطوة 8: سيظهر مربع الحوار التالي الذي يجب ذكر اسم ملف C فيه. لقد قمت بالتسمية في Blink مرة أخرى ، لكن الخيار متروك لك. قم بتسميته في عمود اسم الملف وانقر فوق إنهاء.
الخطوة 9: بمجرد إنشاء ملف C الرئيسي ، سيفتح IDE لنا بعض الرموز الافتراضية ، كما هو موضح أدناه.
الخطوة 10: هذا كل شيء الآن يمكننا البدء في برمجة الكود الخاص بنا في ملف C-main. لن يتم استخدام الكود الافتراضي في دروسنا. لذلك دعونا نحذفها بالكامل.
التعرف على سجلات التكوين:
قبل البدء في برمجة أي متحكم ، علينا أن نعرف عن سجلات التكوين الخاصة به.
إذن ما هي سجلات التكوين هذه ، كيف ولماذا يجب علينا تعيينها؟
أجهزة الموافقة المسبقة عن علم لها عدة مواقع تحتوي على بتات التكوين أو الصمامات. تحدد هذه البتات العملية الأساسية للجهاز ، مثل وضع المذبذب ومؤقت المراقبة ووضع البرمجة وحماية الكود. يجب ضبط هذه البتات بشكل صحيح من أجل تشغيل الكود وإلا سيكون لدينا جهاز غير قيد التشغيل . لذلك من المهم جدًا معرفة مسجلات التكوين هذه قبل أن نبدأ ببرنامج Blink الخاص بنا.
من أجل استخدام سجلات التكوين هذه ، يتعين علينا قراءة ورقة البيانات وفهم الأنواع المختلفة من بتات التكوين المتاحة ووظائفها. يمكن ضبط أو إعادة تعيين هذه البتات بناءً على متطلبات البرمجة الخاصة بنا باستخدام pragma التكوين.
البراغما لها الأشكال التالية.
#pragma config setting = state-value #pragma config register = value
حيث يكون الإعداد هو واصف إعداد التكوين ، على سبيل المثال ، WDT ، والحالة هي وصف نصي للحالة المطلوبة ، على سبيل المثال ، OFF. تأمل الأمثلة التالية.
#pragma config WDT = تشغيل // تشغيل مؤقت المراقبة # pragma config WDTPS = 0x1A // حدد قيمة مقياس التدرج اللاحق للمؤقت
الاسترخاء!!….. استرخى !!…. استرخى !!…...
أعلم أنه قد ذهب كثيرًا في رؤوسنا وقد يبدو أن تعيين بتات التكوين هذه صعب بعض الشيء بالنسبة للمبتدئين !! ولكن بتحد ليس مع MPLAB-X الخاص بنا.
ضبط بتات التكوين في MPLAB-X:
جعلت الرقاقة الدقيقة هذه العملية المتعبة أسهل كثيرًا باستخدام تمثيلات رسومية لأنواع مختلفة من بتات التكوين. حتى الآن من أجل تعيينهم ، علينا ببساطة اتباع الخطوات أدناه.
الخطوة 1: انقر فوق Window -> PIC Memory View -> Configuration Bits. كما هو مبين أدناه.
الخطوة 2: هذا يجب أن يفتح نافذة Configuration Bits في الجزء السفلي من IDE الخاص بنا كما هو موضح أدناه. هذا هو المكان الذي يمكننا فيه ضبط كل بتات التكوين وفقًا لاحتياجاتنا. سأشرح كل من البتات والغرض منها أثناء تقدمنا عبر الخطوات.
الخطوة 3: البتة الأولى هي بتة اختيار المذبذب.
يمكن تشغيل PIC16F87XA في أربعة أوضاع مذبذب مختلفة. يمكن تحديد هذه الأوضاع الأربعة عن طريق برمجة بتات تكوين (FOSC1 و FOSC0):
- كريستال LP منخفض الطاقة
- XT كريستال / مرنان
- HS بلوري / مرنان عالي السرعة
- RC المقاوم / مكثف
بالنسبة لمشاريعنا ، فإننا نستخدم 20Mhz Osc ومن ثم علينا تحديد النظام المنسق من مربع القائمة المنسدلة.
الخطوة 4: سيكون الجزء التالي هو Enable Bit مؤقت المراقبة.
Watchdog Timer عبارة عن مذبذب RC يعمل على الرقاقة مجانًا ولا يتطلب أي مكونات خارجية. مذبذب RC هذا منفصل عن مذبذب RC الخاص بدبوس OSC1 / CLKI. هذا يعني أن WDT سيعمل حتى إذا توقفت الساعة على دبابيس OSC1 / CLKI و OSC2 / CLKO بالجهاز. أثناء التشغيل العادي ، تؤدي مهلة WDT إلى إعادة تعيين الجهاز (إعادة ضبط مؤقت المراقبة). سيتم مسح TO بت في سجل الحالة عند انتهاء مهلة Watchdog Timer. إذا لم يتم مسح المؤقت في ترميز برنامجنا ، فسيتم إعادة تعيين MCU بالكامل عند كل تجاوز لمؤقت WDT. يمكن تعطيل WDT بشكل دائم عن طريق مسح بت التكوين.
نحن لا نستخدم WDT في برنامجنا ، لذا دعنا نمسحه ، عن طريق تحديد OFF من مربع القائمة المنسدلة.
الخطوة 5: سيكون البت التالي هو Power up timer Bit.
يوفر Power-up Timer مهلة اسمية ثابتة تبلغ 72 مللي ثانية عند التشغيل فقط من POR. يعمل Powerup Timer على مذبذب RC داخلي. يتم الاحتفاظ بالشريحة في إعادة التعيين طالما أن PWRT نشط. يسمح تأخير وقت PWRT لـ VDD بالارتفاع إلى مستوى مقبول. يتم توفير بت التكوين لتمكين PWRT أو تعطيله.
لن نحتاج إلى مثل هذه التأخيرات في برنامجنا ، لذا دعونا نوقف ذلك أيضًا.
الخطوة 6: سيكون الجزء التالي هو البرمجة منخفضة الجهد.
يتيح بت LVP لكلمة التكوين برمجة ICSP ذات الجهد المنخفض. يسمح هذا الوضع ببرمجة المتحكم الدقيق عبر ICSP باستخدام مصدر VDD في نطاق جهد التشغيل. هذا يعني فقط أنه لا يلزم إحضار VPP إلى VIHH ولكن يمكن بدلاً من ذلك تركه عند جهد التشغيل العادي. في هذا الوضع ، يتم تخصيص دبوس RB3 / PGM لوظيفة البرمجة ويتوقف عن أن يكون دبوس إدخال / إخراج للأغراض العامة. أثناء البرمجة ، يتم تطبيق VDD على دبوس MCLR. للدخول إلى وضع البرمجة ، يجب تطبيق VDD على RB3 / PGM بشرط ضبط بت LVP.
دعنا نوقف تشغيل LVP حتى نتمكن من استخدام RB3 كدبوس إدخال / إخراج. للقيام بذلك، ببساطة تحويل هذه OFF باستخدام مربع القائمة المنسدلة.
الخطوة 7: البتات التالية ستكون EEPROM وبتات حماية ذاكرة البرنامج. إذا تم تشغيل هذا البت ، فبمجرد برمجة MCU لن يتمكن أحد من استرداد برنامجنا من الجهاز. لكن في الوقت الحالي ، دعونا نترك الثلاثة في وضع الإيقاف.
بمجرد الانتهاء من الإعدادات وفقًا للتعليمات ، يجب أن يبدو مربع الحوار مثل هذا.
الخطوة 8: انقر الآن على إنشاء كود المصدر للإخراج ، سيتم إنشاء الكود الخاص بنا الآن فقط قم بنسخه مع ملف الرأس والصقه في Blink.c C-File الخاص بنا ، كما هو موضح أدناه.
هذا هو عمل التهيئة لدينا. يمكننا الحصول على هذا التكوين لجميع مشاريعنا. ولكن إذا كنت مهتمًا ، فيمكنك العبث معهم لاحقًا.
برمجة الموافقة المسبقة عن علم ليومض LED:
في هذا البرنامج ، سنستخدم متحكم PIC الخاص بنا ليومض مصباح LED متصل بدبوس إدخال / إخراج. دعنا نلقي نظرة على دبابيس الإدخال / الإخراج المختلفة المتوفرة على PIC16F877A.
كما هو موضح أعلاه ، يحتوي PIC16F877 على 5 منافذ إدخال / إخراج أساسية. يتم الإشارة إليها عادةً بواسطة PORT A (RA) و PORT B (RB) و PORT C (RC) و PORT D (RD) و PORT E (RE). يتم استخدام هذه المنافذ لربط الإدخال / الإخراج. في وحدة التحكم هذه ، يبلغ عرض "PORT A" 6 بتات فقط (RA-0 إلى RA-5) ، "PORT B" ، "PORT C" ، "PORT D" بعرض 8 بت فقط (RB-0 إلى RB-7 ، RC-0 إلى RC-7 ، RD-0 إلى RD-7) ، "PORT E" به 3 بتات فقط (RE-0 إلى RE-2).
كل هذه المنافذ ثنائية الاتجاه. يتم التحكم في اتجاه المنفذ باستخدام سجلات TRIS (X) (يستخدم TRIS A لضبط اتجاه PORT-A ، ويستخدم TRIS B لتحديد اتجاه PORT-B ، وما إلى ذلك). سيؤدي تعيين TRIS (X) bit '1' إلى تعيين بت PORT (X) المقابل كمدخل. سيؤدي مسح بت TRIS (X) '0' إلى تعيين بت PORT (X) المقابل كإخراج.
بالنسبة لمشروعنا ، يتعين علينا أن نجعل الدبوس RB3 من PORT B كإخراج حتى يمكن توصيل LED الخاص بنا به. هنا هو رمز LED وامض مع متحكم PIC:
#تضمن
أولاً حددنا التردد البلوري الخارجي باستخدام #define _XTAL_FREQ 20000000. ثم في وظيفة void main () ، أصدرنا تعليماتنا إلى MCU بأننا سنستخدم RB3 كمخرج (TRISB = 0X00 ؛) دبوس. ثم أخيرًا يتم استخدام حلقة أثناء اللانهائية بحيث يستمر وميض LED إلى الأبد. من أجل وميض LED ، علينا ببساطة تشغيله وإيقاف تشغيله بتأخير ملحوظ.
بمجرد اكتمال الترميز ، قم ببناء المشروع باستخدام أمر تشغيل -> إنشاء المشروع الرئيسي. هذا يجب أن يجمع البرنامج الخاص بك. إذا كان كل شيء على ما يرام (كما ينبغي أن يكون) ، ستعرض وحدة التحكم في الإخراج أسفل الشاشة رسالة BUILD SUCCESSFUL ، كما هو موضح في الصورة أدناه.
مخطط الدائرة ومحاكاة المتقلبة:
بمجرد أن نبني مشروعًا وإذا نجحت الإنشاء ، فسيتم إنشاء ملف HEX في خلفية IDE الخاص بنا. يمكن العثور على ملف HEX هذا داخل الدليل أدناه
قد يختلف الأمر بالنسبة لك إذا قمت بالحفظ في مكان آخر.
الآن ، دعنا نفتح Proteus الذي قمنا بتثبيته مسبقًا بسرعة وننشئ مخططات لهذا المشروع. لن نشرح كيفية القيام بذلك لأنه خارج نطاق هذا المشروع. لكن لا داعي للقلق ، فقد تم شرحه في الفيديو أدناه. بمجرد اتباع التعليمات وبناء المخططات ، يجب أن تبدو مثل هذا
لمحاكاة الإخراج ، انقر فوق زر التشغيل في الركن الأيسر السفلي من الشاشة بعد تحميل ملف Hex. يجب أن تومض مؤشر LED المتصل بـ RB3 الخاص بوحدة التحكم MCU. إذا كانت لديك أي مشكلة في ذلك ، فيرجى مشاهدة الفيديو ، وإذا لم يتم حلها ، فاستخدم قسم التعليقات للحصول على المساعدة.
الآن قمنا بعمل مشروعنا الأول باستخدام متحكم PIC وتحققنا من المخرجات باستخدام برنامج محاكاة. اذهب وتعديل مع البرنامج ولاحظ النتائج. حتى نلتقي في مشروعنا القادم.
أوه انتظر !!
في مشروعنا التالي ، سنتعلم كيفية تشغيل هذا على جهاز فعلي. لذلك ، سنحتاج إلى الأدوات التالية لإبقائها جاهزة. حتى ذلك الحين تعلم سعيد !!
- PicKit 3
- PIC16F877A إيك
- 40 - حامل IC دبوس
- مجلس بيرف
- 20 ميجا هرتز كريستال OSC
- دبابيس بيرجستيك للإناث والذكور
- 33pf مكثف - 2Nos
- 680 أوم المقاوم
- LED من أي لون
- عدة لحام.