التحكم في إَضاءة LED بإستخدام PIC16f877a

ندخل اليوم إلى عالم الميكروكنترولر والبدأ بإستخدامه في تصميم المشاريع المختلفة. واذا كنت من المبتدئين فيه ! فإنك اليوم سوف تعيش تجربة رائعة وتستمتع اثناء قيامنا ببرمجة الميكروكنترولر ومشاهدة النتائج خلال التجربة العملية.

ومشروعنا اليوم عن كيفية التحكم في ليد LED وجعله يضيئ مرة ويطفئ مرة بشكل مستمر. والهدف؛ هو البدأ في تعلم برمجة الميكروكنترولر وفهم الأوامر ولغة البرمجة المستخدمة وتصميم دوائره. دعنا نبدأ الأن.

عند تصميم دوائر الميكروكنترولر فانت تحتاج إلى العمل على مرحلتين؛ المرحلة الأولة تسمى بالهارد وير Hardware وهي المرحلة التي يتم فيها توصيل المكونات الالكترونية ببعضها وتوصيلها بالميكروكنترولر.

والمرحلة الثانية تسمى بالـ Programming وهي المرحلة التي يتم فيها كتابة الكود الخاص بالأوامر بلغة C وتحويلها إلى لغة الألة Assembly، وذلك يتم من خلال برامج الـ Compiler مثل برنامج MikroC. قم بمشاهدة هذا الفيديو لتفهم عملية Compilation Process .

ويوجد ايضاً الجزئ الخاصة بـ Programmer وهو المسئول عن تخزين الكود في الميكروكنترولر.

 

تنفيذ جزئ الهارد وير Hardware Implementation

 

الدائرة الإلكترونية Circuit Diagram

الدائرة الالكترونية لمشروع Blinking LEDالدائرة الالكترونية لمشروع Blinking LED

 Require Components and Programs

  • PIC 16f877a Microcontroller
  • Step down Transformer 220VAC to 9VAC
  • 7805 Voltage Regulator
  • 4*4001 Diode or bridge
  • Cap: 100uf , 10uf , 100nf , 2*22pf
  • Push-button Switch
  • Res: 10k , 330 ohm
  • 8MHz Crystal
  • MickoC Program / check here
  • PICkit2 Program / check here
  • Proteus Program / check here
  1. سوف نقوم باستخدم في هذا المشروع ميكروكنترولر من النوع PIC 16f877A الشهير.
  2. وتصميم دائرة الـ Power الخاصة به وهي عبارة عن دائرة Voltage Regulator 5V اقرأ هذا الموضوع لمعرفة المزيد عنها.
  3. وتصميم دائرة الـ Crystal الخاصة به التي يحتاج إليها ليقوم بعمله، حيث توفر له النبضات التي يحتاجها للعمل ( اي كالمحرك بالنسبة للسيارة) لذلك من الضروري توصيلها مع الميكروكنترولر ليبدأ بالعمل، وفي هذا المشروع سوف نستخدم كريستال 8MHz بالإضافة لمكثفين 22pF كما موضح توصيلهم في الدائرة بالأعلى. ويتم توصيل الكريستالة على كلاً من طرفيه رقم 13 ، 14 ولتحديد تلك الاطراف قم بالإستعانة بالداتا الشيت الخاصة به من هنا.
  4. وإضافة مفتاح الـ Reset وهو المسئول عن جعل الميكروكنترولر يقوم بإعادة تشغيل نفسه مرة اخرى بدأً من تنفيذ اول امر في البرنامج. ويتم استخدام مفتاح مع مقاومة 10Kohm كما موضح في رسم الدائرة.
  5. سوف نقوم بعد ذلك بتوصيل الـ LED باحد اطراف الميكروكنترولر ، سوف نقوم بتوصيله بمقاومة 330 اوم ثم بالـ PIN B4.

لقد انتهاينا من الجزئ الخاص بالـ Hardware ، ننتقل بعد ذلك إلى عملية البرمجة،..

خطوات البرمجة ( Programming )

عملية البرمجة بتتم من خلال مجموعة من الخطوات:

أولأ: هي كتابة الأوامر البرمجية (Code) على MikroC ومن ثم الحصول على ملف الهيكس [.hex] وهو File يتم تخزين فيه الأوامر بعد تحويلها إلى لغة الألة التي يفهمها الميكروكنترولر.

ثانياً: يتم تثبيت وتخزين ملف الهيكس هذا على الميكروكنترولر من خلال الـ Programmer وهو عبارة عن دائرة الكترونية + برنامج خاص بها، واليوم سوف نستخدم PICKit2 و البرنامج الخاص بها PICKit2 Program.

 

كتابة الكود على MikroC

الخطوة 1: قوم بتنزيل برنامج MikroC على جهازك. ثم قم بفتحه لتظهر لك النافذة التالية، اضغط على مشروع جديد New Project.

نافذة برنامج mikrocنافذة برنامج MikroCالخطوة 2:  ثم نضغط على Next لتظهر لك بعد ذلك الصورة التالية، هنقوم بإدخل كلاً من:

  • اسم المشروع Project Name.
  • المكان الذي سوف نحفظ فيه المشروع Project folder.
  • سوف نقوم بإختيار الميكروكنترولر الذي سوف نستخدمه في مشروعنا وهو P16f877A.
  • اخر امر هي الـكريستالة التي سوف نستخدمها وهي كريستالة 8MHz .

نافذة برنامج MikroC

 

  • بعد ذلك نضغط على Next ثم > Next بعد ذلك > Finish ، سوف تظهر لك النافذة التالية وهي عبارة عن Editor او النافذة التي سوف نقوم كتابة اكواد البرمجة عليها.

نافذة برنامج MikroC

  • سوف نقوم الان بكتابة الكود التالي في Editor ثم نضغط على ايكونة ايكونة Build في MikroC

Programming Code

void main()

{

      TRISB.b4 = 0;         //Makes PORTB0 Output Pin

      while(1)                   //Infinite Loop

       {

        PORTB.b4 = 1;     //LED ON

        Delay_ms(1000);  //1 Second Delay

        PORTB.b4 = 0;     //LED OFF

        Delay_ms(1000);  //1 Second Delay

         }

}

شرح الكود

الميكروكنترولر يحتوي على مجموعة من Ports والتي من خلالها يتم توصيل المكونات الخارجية معه مثل الليد والمحركات و المقاومات .. والحساسات والمكونات الاخرى.

والـ Port يحتوى على مجموعة من الاطراف PINs، وعند برمجة الميكروكنترولر يتحتم عليك تحديد ما اذا كان PIN المستخدمة Output او Input. (بمعني انك محتاج تحدد للميكروكنترولر ان الطرف الي هتشتغل عليه هتدخل عليه قيمة ولا هتخرج منه قيمة )

  • لذلك يتم استخدام الامر TRIS لتحديد نوع PIN ، وفي هذا البرنامج قمنا بكتابة TRISB.b4=0 في اول البرنامج لتحديد نوع pin رقم 4 في port B نوعه Output. ( ملحوظة: رقم 0 تعني Output و رقم 1 تعني Input). وعملية تحديد اتجاه اطراف الميكروكنترولر تحدث من خلال جزئ بداخله يسمى بالـ TRIS Register.
  • ويوجد ايضاً Register اخر يسمى بالـ PORT Register يقوم بتحديد القيمة على PIN، وما اذا كانت القيمة عليها HIGH والتي تعني 5V و LOW والتي تعني 0V. ولذلك قمنا بكتابة الامر PORTB.b4 = 1 بمعنى اني بقول للميكروكنترولر اجعل طرف 4 في port B يساوي 5V ( ملحوظة: رقم 1 هنا تعني HIGH = 5V ، ورقم 0 تعني ايضاً هنا LOW = 0V).

المسجلات PORT و TRISالمسجلات PORT و TRIS

  • ثم قمنا بكتابة الامر Delay_ms(1000) يستخدم للوقت، ومعناه اننا نقول للميكروكنترولر.. قم بتأخير تنفيذ الامر التالي لمدة 1 ثانية ، و 1000 هنا بالملي ثانية والتي تساوي 1 ثانية.
  • ثم قمنا بكتابة الامر التالي وهو PORTB.F4 = 0 ، لقد قمنا بكتابة هذا الامر ليقوم بعكس حالة port والتي كانت HIGH بهذا الامر سوف تكون LOW ، وايضاً قولنا للميكروكنترولر ابقى على هذا الموضع لمدة 1 ثانية من خلال الامر Delay_ms(1000) الذي قمنا بكتابته بعده. ليصبح في الأخر الشكل النهائي للمشروع هو إضاءة الليد لمدة ثانية ثم إطفاءه لمدة ثانية.
  • ولكي يستمر الليد بالإطفاء والإضاءة قمنا بكتابة الأوامر داخل امر يسمى While(1) وهذا الامر وظيفته هو تكرار الأوامر التي بداخله بدون توقف في دائرة مغلقة ليس لها نهاية. و Void main() هو الكود الذي يتم كتابة جميع الأوامر بداخله.

بعد كتابة الكود على MikroC و الضغط على زر Build كما وضحنا في الاعلى، سوف يقوم البرنامج بتوليد hex file بشكل اتوماتيك في ملف المشروع الذي قمنا بتحديد مكانه.

يتبقى لدينا اخر مرحلة وهي تخزين البرنامج على الميكروكنترولر من خلال Programmers. وله انواع كثيرة مثل التي يتم توصيلها بالكومبيوتر من خلال serial port مثل مبرمج من النوع JDM Programmer و الانواع الاخرى مثل التي يتم توصيلها بمنفذ USB مثل PICkit2  و PICkit3.  وفي مشروعنا اليوم سوف نستخدم PICkit2 كالموضحة في الصورة التالية:

PIC programmer PICkit2PIC programmer PICkit2ويتم توصيل هذا المبرمج بالكومبيوتر من خلال USB Port. وتستطيع توصيله بالميكروكنترولر من خلال طريقتين:

  • من خلال ZIF socket الذي يتم تثبيت عليه الميكروكنترولر.
  • او من خلال ICSP socket والذي يتيح لك توصيل الميكروكنترولر بالـ Programmer بدون الاحتياج إلى تثبيت الميكروكنترولر فيه بشكل مباشر. وانا عن نفسي افضل هذه الطريقة حتى لا تتلف اطراف الميكروكنترلر من كثرة نزعه من Bread Board ثم وضعه بال Programmer.

بعد الانتهاء من توصيل programmer بالكومبيوتر وبالميكروكنترولر سوف نقوم بفتح برنامج PICkit2 ونقوم بوضع الإعدادات الخاصة به:

  • بعد فتح البرنامج سوف نقوم بالتأكد من ان الـ programmer متوصل جيداً بالكومبيوتر، إذا كان كذلك سوف تظهر لك هذه الرسالة:

ضبط اعدادات برنامج PICkit2ضبط اعدادات برنامج PICkit2

  • نقوم بعد ذلك بضبط اختيارات الميكروكنترولر ليتعرف عليه البرنامج، وده من خلال الضغط على Devices family > ثم الضغط على اختيار Midrange > ثم Standard.

ضبط اعدادات برنامج PICkit2

  • سوف تظهر لك بعد ذلك رسالة تأكيد على انه قرأ او تعرف على الميكروكنترولر وانه متوصل بشكل جيد.

ضبط اعدادات برنامج PICkit2

 

  • الخطوة التالية هي عمل Import لمف hex الخاص بالمشروع الذي قمنا بعمله، اضغط على file > ثم import hex سوف يطلب من بعد ذلك تحديد مكان ملف hex ومن ثم نضغط على Write ليقوم البرنامج بعد ذلك بتخزين الكود على الميكروكنترولر.

اضافة ملف hex برنامج PICkit2اضافة ملف hex برنامج PICkit2

  • سوف تظهر لك بعد ذلك هذه الرسالة وهي رسالة تأكييد على ان العملية تمت بنجاح “Programming Successful”

اتمام برمجة الميكروكنترولر pic16f877aاتمام برمجة الميكروكنترولر pic16f877a

كدا انتهينا من مشروع برمجة الميكروكنترولر للتحكم في إضاءة ليد. تقدر تنزل ملف المشروع من هنا ويحتوى على كلاً من:

  • ملف محاكاة على برنامج Proteus
  • و ملف مشروع MikroC
  • وملف hex

حمل الملفات من هنا 

وانتظرنا في الكثير من المشاريع الرائعة الاخرى القادمة. واتركك مع الفيديو التالي لقد قمت بشرح لك المشروع عملياً وبالتجربة العملية… مشاهدة ممتعة : )   واذا عجبك الموضوع شاركه مع اصدقائك.

مصادر عن محتوى الموضوع مرشحة لك للبدأ في دراستها

ابدأ الأن بالتعلم والدخول في عالم الميكروكنترلر وفي السطور التالية سوف اقوم بترشيح لك اهم المصادر التي تستطيع الإستعانة بها لتحصل على مزيد من الشروحات عن الميكروكنترولر وكيفية برمجته (تحديداً عن مشروعنا اليوم).. ابدأ معك بكتاب الميكروكنترولر المقدم من معهد الازهر للتطبيقات الهندسة من صفحة 1 : 134 وايضاً شاهد هذا الفيديو للمهندس محمد عبد الله عن تصميم مشروع flasher ،

وانصحك ايضاً بهذا الكتاب الرائع حيث يبدأ معك باساسيات برمجة الميكروكنترولر ويشرحها لك خطوة بخطوة والكتاب هو احتراف برمجة الميكروكنترولر باستخدام ميكروسي pdf للمهندس م.احمد سمير اقرا من صفحة 1 : 27.

أتمنى بان اكون قد أفدتك اليوم بموضوعنا.. اتمنى لك التوفيق ولاتنسى مشاركة الموضوع من خلال ازرار المشاركة : )

التعليقات

أترك تعليق..

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

    1. رابط تحميل ملف المحاكات وملف المشروع لا يعمل ممكن اضافة الرابط برسالة رد على هذا التعليق ودمتم بخير وشكرا جزيلا على المجهود

  1. شكرا لكم على هذة المجهودات الرائعة مع دوام التقدم و الازدهار