التحكم في إَضاءة LED بإستخدام PIC16f877a ميكروكنترولر [شرح عملي]

التحكم في إَضاءة LED بالـبيك ميكروكنترولر (Blinking LED)
التحكم في إَضاءة LED بالـبيك ميكروكنترولر (Blinking LED)

دعنا نبدأ مع الميكروكنترولر ،..

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

ومشروعنا اليوم عن كيفية التحكم في ليد 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 PICkit2
PIC 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.

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



تعليقات

تعليق: 2

$hide=post

الاسم

+,6,اجهزة ومعدات,7,ادوات المعمل الالكتروني,11,اساسيات الكهرباء والالكترونيات,14,اسلحة حربية,6,الة حاسبة الكترونية,9,الدورات التعليمية,9,الطاقة الشمسية,13,الكترونيات من الماضي,1,برنامج,17,تكنولوجيا,25,حساسات ومستكشفات,17,دوائر ارسال واستقبال,3,دوائر الانذار والامان,22,دوائر التايمر 555,21,دوائر الشحن والتغذية,31,دوائر الصوت,9,دوائر الضوء,8,دوائر الفحص والتشغيل,23,دوائر تكبير ومضاعفة الجهد,2,دوائر منظمات الجهد,22,دوائر Op-Amp و Amplifier,19,روبوت,9,سؤال وجواب,4,صيانة,5,طائرة,6,فيديو تكنولوجيا,4,كاميرات المراقبة,11,مشاريع,98,مشاريع اردوينو,1,مشاريع ميكروكنترولر,1,مصادر الطاقة,6,مقالات تعليمية,38,ملفات المحاضرين,4,مواضيع الزوار,3,Arduino_اردوينو,11,pdf_اتصالات,12,pdf_اجهزة,10,pdf_اردوينو,9,pdf_الطاقة,2,pdf_الكترونيات,69,pdf_الكترونيات تماثلية,37,pdf_الكترونيات رقمية,7,pdf_الميكروكنترولر,11,pdf_سيارات,5,pdf_شبكات,9,pdf_صيانة,7,pdf_فيزياء,5,pdf_كتب,113,pdf_كهرباء,28,pdf_ملفات اخرى,4,pdf_هندسة,5,
rtl
item
الكترونيك بابل . هندسة الالكترونيات: التحكم في إَضاءة LED بإستخدام PIC16f877a ميكروكنترولر [شرح عملي]
التحكم في إَضاءة LED بإستخدام PIC16f877a ميكروكنترولر [شرح عملي]
تصميم مشروع Blinking led التحكم في اضاءة ليد واستخدام برمحة الميكوركنترولر من النوع PIC16f877a بالتفصيل اقرأ الموضوع لمعرفة المزيد
https://3.bp.blogspot.com/-GuqwQLLAAKY/XLIEcRSF9AI/AAAAAAAADRU/4p-WJN9QNyM6RH0sPqq5F4HTxPgKoO5QwCK4BGAYYCw/s1600/blinking-led-pic16f877a-project.jpg
https://3.bp.blogspot.com/-GuqwQLLAAKY/XLIEcRSF9AI/AAAAAAAADRU/4p-WJN9QNyM6RH0sPqq5F4HTxPgKoO5QwCK4BGAYYCw/s72-c/blinking-led-pic16f877a-project.jpg
الكترونيك بابل . هندسة الالكترونيات
https://www.electronicbub.com/2019/04/blinking-led-by-pic16f877a-programming.html
https://www.electronicbub.com/
https://www.electronicbub.com/
https://www.electronicbub.com/2019/04/blinking-led-by-pic16f877a-programming.html
true
8451621482021913266
UTF-8
تحميل كل المواضيع لا يوجد اي مواضيع مشاهدة الكل قراءة المزيد رد ازالة الرد ازالة بواسطة الرئيسية الصفحات المواضيع مشاهدة الكل مرشح لك القسم الارشيف SEARCH كل المواضيع لا يوجد اي مواضيع متطابقة مع طلبك الرجوع للرئيسية احد اثنين ثلاثاء اربعاء خميس جمعة السبت احد اثنين ثلاثاء اربعاء خميس جمعة سبت يناير فبراير مارس ابريل مايو يونيو يوليو اغسطس سبتمبر اكتوبر نوفمبر ديسمبر يناير فبراير مارس ابريل مايو يونيو يوليو اغسطس سبتمبر اكتوبر نوفمبر ديسمبر الان منذ دقيقة واحدة $$1$$ minutes ago منذ ساعة واحدة $$1$$ hours ago امس $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago المتابعين تابع هذا المحتوى الاستثنائي مغلق الخطوة 1: شارك على مواقع التواصل الاجتماعي الخطوة 2: اضغط على اللينك الذي شيرته من موقع التواصل الاجتماعي نسخ كل الكود تظليل كل الكود تم نسخ الكود لاتستطيع نسخ الكود / النص, من فضلك اضغط [CTRL]+[C] (or CMD+C with Mac) للنسخ