21

الدرس الخامس

تعرف علي الانظمة الرقمية واكتب اول برنامج لك بالميكرو سي وتعرف علي بعض اوامر اللغة الهامة من خلال الدرس الخامس ضمن دورة احترف الميكروكنترولر






الدرس الخامس
الاخوة الكرام السلام عليكم ورحمة الله وبركاته

ماذا يتناول هذا الدرس ؟

  • النظم الرقمية .
  • كتابة أول برنامج.
  • الامر trisport.
  • الامر Port.
  • الدالة delay_ms.
  • تنفيذ المشروع الاول .
---------------------------------------------
النظم الرقمية



اولا : النظام العشري ...

ايه النظام العشري ده .... ؟؟ ببساطة عدد اصابع يديك كام ؟ ............ اكيد عشرة ........ بس كده ...... هههههههه
النظام العشري ببساطة هو النظام الطبيعي الذي يعتمد عليه الانسان في العد وهو يتمثل في الارقام العشر من 0 الي 9 وفيه يكون الواحد الصحيح في خانة الاحاد يساوي 1 وفي خانة العشرات يساوي 10 وفي المئات يساوي 100 وهكذا ... هذا هو النظام العشري ببساطة .
مميزات النظام العشري :
·         نظام سهل الفهم لبني الانسان (الناس يعني).
·         يمكن الاعتماد عليه في الحياة اليومية
عيوبه :
·         الكمبيوتر مش بيفهمه (بس كده).

ثانيا : النظام الثنائي ...

ايه النظام الثنائي ده .... ؟؟ ببساطة عند كام يد ؟ ...... اكيد 2 ........ بس كده ....... مش هضحك
النظام الثنائي ببساطة هو نظام للعد تم تصميمه خصيصا للعمل مع الاجهزة الرقمية وهو يتكون من الرقمين 0 و 1 ( شفت الحلاوة ) والواحد الصحيح به في خانة الاحاد يساوي 1 ام في خانة العشرات يساوي 2 وفي المئات 4 والالاف 8 وهكذا اضرب في 2 .. طيب ليه النظام ده بالذات ؟؟
لماذا يستخدم النظام الثنائي مع الاجهزة الرقمية ولا يستخدم اي من الانظمة الاخري ؟؟
يرجع ذلك الي ان التيار الكهربي ليس لهو سوي حالتين الاول جهد عالي في الوضع ON  والثانية جهد منخفض OFF  فوجد ان انسب نظام رقمي يمكنه التعبير عن الحالتين هو النظام الثنائي ..

ثالثا : النظام السادس عشر ....

وده نظام يتكون من 16 رقم من 0 الي 9 ويتم استكمال الارقام بالاحرف الانجليزية الاولي A,B,C,D,E,F
رابعا : النظام الثماني ....


وده بقي بيتكون من 8 ارقام بس من 0 الي 7
كده خلاصنا الانظمة العددية
عارف انها صعبة بالنسبة للناس اللي مسمعتش عنها قبل كده
عارف كمان اني موفتش شرحها
بس متقلقش
لو انت مش فاهم حاجة من اللي فات متقلقش
ان شاء الله سوف يتم وضع مقالة كاملة عن الانظمة العددية وشرحه بالتفصيل
 وكيفية التحويل بينهم يدويا وايضا باستخدام برنامج Micro C
===============================
كتابة أول برنامج
1. افتح برنامج   Micro C
2.   صمم مشروع جديد زي ما اتعلمنا الدرس اللي فات وهنستخدم المتحكم PIC16F84A وهيكون المذبذب 4MHZ
3.   اكتب الكود ده في منطقة الكود


4.   بعد ما كتبته هتلاقي في شريط الادوات الزر ده    دوس عليه لترجمة المشروع لملف سداسي عشر.
5.   لاحظ ترجمة الكود في اسفل النافذة.

شرح الكود:


واليكم الشرح التفصيلي
1.   السطر الاول : يحتوي علي الدالة الرئيسية للبرنامج ويقوم برنامج الميكرو سي بكتابته بشكل تلقائي ولبد من وجودها في اي برنامج وتحتوي بداخلها علي اوامر البرنامج .
2.   السطر الثاني : قوس بداية الدالة يليه اومر البرنامج يجب علينا معرفة ان اي قوس يكتب لابد من وجود قوس اخر يقبالة بمعني هذا القوس لبداية الدالة والسطر الاخير يجب ان يكون قوس عكسي لنهاية الدالة .
3.   السطر الثالث : الامر ; trisa=0 ما هذا هيا بنا نتعرف عليه بشئ من التفصيل .

==================
الامر trisPort
نعلم انا للمتحكم منافذ قابل للبرمجة ويمكن استعمالها كداخل او كخرج فكيف يعرف المتحكم اذا كنت سوف تستعمل المنفذ كدخل ام خرج انه الامر tris ويتم كتابته كالتالي :
·       بعد الدالة الرئيسية .
·       يكتب بالصورة التالية
trisPORT = NUM ;
يتم استبدال الكلمة PORT باسم المنفذ المراد تعريفه مثل A او B ......
يتم استبدال الكلمة NUM بالرقم 0 ليعمل كخرج .
يتم استبدال الكلمة NUM بالرقم 255 ليعمل كدخل . طيب ليه ؟ .. انا اقولك !
·       البورت B بيتكون من 8 اطراف ولو نسيت افكر شوف الصورة دي.

·       طيب انا لو عاوز اخلي الرجل الاولي خرج هسويها بـ 0 ولو عاوز الثانية دخل هسويها 1 ولو عاوز التالتة والربعة خرج هسويها بـ 0 والباقي دخل هسويهم بـ 1 يعني زي الشكل ده

·       معني الكلام ده اني لو عاوز اعمل الكلام اللي في الفقرة اللي فاتت هكتب الامر كده
trisb=11110010;
ده تمام بس لو كتبت الامر كده البرنامج هيقولك غلط ... طيب ده مش يبقي عيب
عيب ولا مش عيب !
لو اخدت بالك الرقم ده مش بيتكون من 0 و 1 صح ؟؟
يبقي ثنائي ومش عشري يبقي لازم نحط قبله 0b
هيبقي كده يعني
trisb=0b11110010;
شوفت الحلاوة !
·       طيب لو انت بقي عاوز تخلي البورت B كله دخل يبقي لازم تخلي كل اطرافه تساوي واحد هتلاقي الامر شكله كده ...
trisb=0b11111111;
·       يعني 8 واحايد جمب بعض 11111111 الرقم ثنائي لو حولنا للعشري يبقي 255 شوفت احنا كتبنا 255 ليه ........ انت اكيد نسيت ارجع فوق وشوف
اوع تكون بتدعي عليا !
سؤال مهم ليه 11111111 تساوي 255 عاوز تعرف ليه الشرح في الصورة دي من برنامج MicroC

الكلام ده معنه ان التعبيرات التالية متساوية في المعني
trisb=255;
trisb=0b11111111;
trisb=0xFF;
·       يتم وضع 0b قبل العدد الثنائي و 0x قبل العدد المكتوب بالنظام السادس عشر.
==============
الامر Port
نعود لشرح باقي الكود :
قد قمنا في السطر الثالث بتحديد البورت B كخرج ولكن لم نحدد بعد الطرف الذي سيقوم باخراج الجهد فالبورت الان في حالة الاستعداد ولكن لا يخرج شئ فهي بنا نعرف كيف تتم عملية الاخراج .




لا لا لا لا لا مش ده
4.   السطر الرابع : يستخدم الامر Port وذلك لتحديد حالة اطراف المنفذ وهو يشبة الامر tris
portb=0b00000001;
هذا يعني ان الطرف الاول فقط هو من يخرج تيار ام الباقي Noooooo
ممكن اكتب الامر اللي فات بيكل تاني
portb=1;
او كده
portb=0x01;
وممكن احدد الطرف االلي عوزه يشتغل بطرقة تانية
Portb.f0=1;
F0   دي بقي معناها رقم الطرف في البورت يعني لو عاوز الطرف التاني يبقي F1 ولو الخامس يبقي F4 وهكذا زي السطر الثامن ولو عاوز البورت ميخرجش حاجة خالص اسوية بالصفر زي الطرف السادس
=================
delay_ms ()

5.   الطرف الخامس : يحتوي علي دالة في غاية الاهمية وهي دالة التاخير الزمني طيب ودي فيدتها ايه ... انا اقولك :
لو انت عاوز تشغل لمبة لمدة 5 ثواني وبعد كده تطفي لمده 3 ثواني الدالة دي بقي اللي بتوقف الميكرو للمدة اللي انت عاوزها ودي طريقة كتابتها
delay_ms ( N );
1. N : الان ده الوقت اللي انت عاوز المتحكم اللي عاوز المتحكم يقفه وبيكون بالملي ثانية يعني لو كتب 1000 يبقي يقف ثانية .
2. Ms : الرمز ده ممكن يكون  ms وفي الحالة دي يكون الوقت بالملي ثانية او يكون us وفي الحالة دي يكون ميكرو ثانية يعني كل 1000000 يساوي ثانية واحدة.
شوفت الدقة قد ايه يعني ممكن توقف الميكرو واحد من مليون جزء من الثانية .
يعني لو عاوز اوقف المتحكم ثانية اكتب كده delay_ms (1000);
لو عاوز اوقف المتحكم ثانيتين اكتب كده delay_ms (2000);
لو عاوز اوقف المتحكم 3 ثواني اكتب كده delay_ms (3000);
يجي واحد ظريف زي كده يقول لو عاوز اوقف المتحكم 24 دقيقة 13 ثانية يبقي اكتب كده
delay_ms (1453000);
ليييييييييييييييييييييه ....... حرااااااااااااااااااااام
ايوة حرام لانك لو عملت الموضوع ده خمس ست مرات هتلاقي الروم بتاع المتحكم بيخلص وانت لسة مخلصتش البرنامج بتاعك وممكن كمان يمنع ترجمة المشروع وكمان ممكن تغلط في الحساب
طيب اعمل ايه ؟!
اقولك بس الدرس الجي خلينا في درسنا النهاردة
6.   باقي السطور مشروحة قبل كده .
==================
محاكاة البرنامج الاول
اللي فات ده كان شرح برنامجك الاول عاوزين نجربه بقي علي برنامج ISIS :
1.    هتفتح برنامج ISIS وتصمم الدائرة دي زي ما اتعلمنا الدرس اللي فات

2.   هنضغط علي المتحكم مرتين علشان نفتح نافذة الخصائص بتاعته

3.   وبعد كده دوس علي تشغيل


4.   لاحظ تشغيل البرنامج

===========================
ملاحظة بسيطة : يجب ان ينتهي كل امر بـعلامة الفصلة المنقوطة ( ; ).
بذلك نكون قد وصلنا لنهاية الدرس
ولكن يتبقي شئ بسيط
انا احتاج الي مساعدتكم فرجاء ساعدوني :
·       قد قمت برسم هذه الدائرة علي برنامج ISIS .

1.   قال لي احد اصدقائي الخبراء في مجال الميكرو كنترولر انا به خطئ قد يجعل احد الليدات لا يعمل ولكنه بخل علي ولم يقل ما هو فرجاء اذا كنت تعرف اخبرني به.
2.   احتاج لعمل برنامج يضئ الليد الاول مدة 3 ثواني ثم يطفي ثانيتان وبعدها يضئ الليد الثاني لمدة5 ثواني وبعدها يطفئ 3 ثواني وبعدها يضئ الثالث لمدة ثانيتان ويطفئ 3 ثواني ومن ثم يضئ الثلاثة فرجاء مساعدتي في عمله
3.   حدد الخطئ وصمم الدائرة علي ISIS والبرنامج علي MicroC ثم اضعطهم وضعهم علي اي موقع واترك الرابط في تعليق ويرايت اسمك حتي يتم معرف كل متابع .
4.   لا تتكاسل في انشاء هذا المشروع وان كان بالنسبة لك مشروع بدائي فرجاء لا تبخل بالمشاركة فالمشاركات تزيد حماسي او ربما نشاطي والله الموفق.

انتظركم
الي اللقاء

Blogger Tricks
21 تعليقات

هناك 21 تعليقًا :

  1. وفقك الله اخي الكريم

    ردحذف
  2. سلام عليكم
    الاجابه في هذا الرابط وشكرا جزيلا لك اخي كريم
    http://arabsh.com/files/0d3e464c6df1/led-rar.html

    ردحذف
    الردود
    1. وفقك الله اخي الكريم
      جاري التقييم

      حذف
  3. السلام عليكم و رحمة الله مشكور أستاذي العزي عل الشرح الرائع,
    بالنسبة للمقاومة R4 قيمته كبيرة 10 كيلو و لن يعمل الليد لعدم كفاية التيار , و قيمتها كما سابقاتها 220 أوم .
    أما البرنامج فجاري أن شاء الله العمل عليه و لكوني مبتدأ جدا يعني ليس لي أي معلومات مسبقة عن هذا الموضوع فأني أحاول قدر أمكاني أستيعاب الفكرة
    تقبل تقديري و أحترامي

    ردحذف
    الردود
    1. احسنت
      ولكني اود ان اقول انك لست مبتدئ انت مجتهد ومن جد وجد
      في انتظار المشروع
      وفقك الله

      حذف
  4. السلام عليكم أستاذي العزيز
    في ما يلي صيغة البرنامج التي أستخدمتها ونفذتها على بروتوس و قد أشتغل كما أردت ,
    لو سمحت أذا كان في أخطاء في البرنامج أرجو أن توضحه لي لابد من وجود خطأ أنا شبه متأكد :
    void main() {
    trisb=0;
    portb=0b00000000;
    portb.f0=1;
    delay_ms(3000);
    portb=0;
    delay_ms(2000);
    portb.f0=0;
    portb.f1=1;
    delay_ms(5000);
    portb=0;
    delay_ms(3000);
    portb.f1=0;
    portb.f2=1;
    delay_ms(2000);
    portb=0;
    delay_ms(3000);
    portb.f2=0;
    portb=0b00000111;
    تقبل أحترامي و تقديري

    ردحذف
    الردود
    1. احسنت ولا توجد اخطاء ولكن توجد ملاحظة صغيرة سوف اعرضها في الدرس السادس تخص هذا الموضوع فاتابع
      واحب ان اقول لك لا يوجد شئ اسمه شبه متاكد ولكن يوجد ثقة فالالكترونيات لا يوجد بها شئ اسمه شبة يوجد تعمل او لا تعمل والفاصل هو التجربة
      احسن واجتهد فانا انتظر منك المزيد

      حذف
    2. تمام
      بس ممكن يكون نسيت تقفل ف الاخر بـ }

      حذف
    3. السلام عليكم و رحمة الله و بركاته
      مشكور أستاذي العزيز على كلمات التشجيع و أن شاء الله متابعين معك و فقك الله و رزقك من حيث لا تحتسب , و جعل عملك و جهدك هذا في ميزان حسناتك .

      تقبل أحترامي وتقديري

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

    ردحذف
    الردود
    1. تابع وانتظر واجتهد ولا تعجل
      ستجد كل شئ بشكل سهل ان شاء الله

      حذف
  6. سلام عليكم
    لقد بكتابه برنامج ورفقته هنا ولكن لم يظهر بتعليقات
    لا اعرف لماذا وايضا لماذا لايظهر تعليق مباشره حيث يخبرني تعليقك ينتظر موافقه

    ردحذف
  7. تسلم الايادي يا بشمهندس
    بس في مشكلة عندي انا مش عارف انزل برنامج Proteus 7 Professional
    من اللينك ده http://www.labcenter.com/download/prodemo_download.cfm#professional
    ياريت للينك التحميل ع طول

    ردحذف
    الردود
    1. حاضر في الدرس السادس هيتم وضع لينك مباشر

      حذف
    2. تسلم يا بشمهندس
      بس لازم اكتب 255 ل PORT A علشان يشتغل كداخل والبورد A بيتكون من خمس اطراف
      يعني trisA=0b11111; ,trisA=31;
      ام غير ذالك ارجو التوضيح

      حذف
    3. تم اضافة القيمة 255 لتعمل علي جميع البورتات ولكن يمكن التخصيص اذا كنت تبرمج اطراف وليس البورت باكمله

      حذف
  8. هذه طريقة اسهل يا حبيبي
    void main() {
    TRISB=0;
    PORTB=0;

    rb0_bit=1;
    delay_ms(3000);
    rb0_bit=0;
    delay_ms(2000);
    rb1_bit=1;
    delay_ms(5000);
    rb1_bit=0;
    delay_ms(3000);
    rb2_bit=1;
    delay_ms(2000);
    rb2_bit=0;
    delay_ms(3000);
    portb=0b00000111;

    }

    ردحذف
  9. ما هو سبب الرسالة هاي mixed model pic 16.dll failed to authorize bad product key

    ردحذف
  10. تسلم باشمهندس ع الأسلوب الرائع في توصيل المعلومة بأقصر الطرق ..
    سؤال لو تكرمت لو حابب اعمل لوب بها زمن delay_ms)60000 (;
    ما يعادل ١ دقيقة عادي و لا راح يوقف البرنامج؟

    ردحذف