|
شكرا على مرورك الطيب
تستحق التقييم
|
جزاك الله خيرا أخى على اهتمامك ،
------------------------------------
السلام عليكم ورحمة الله وبركاته
الدرس الثالث
----------------
أهم التعليمات
---------------
ما هى أهم تعليمات المايكرو ؟
هى التى لن يخلو منها أصغر برنامج !
التعرف على تعليمات الدخل والخرج للمتحكم .
المايكرو كنترولر هو الدارة المتكاملة القابلة للبرمجة التى تتحكم أو هو المتحكم الصغير ، و الذى يسمح لك أن تضع برنامجا بذاكرته ليقوم بعد ذلك بتنفيذ جميع الأوامر التى كلفته بها ، سواء كانت عمليات حسابية بالغة التعقيد أو مراقبة أشياء عديدة من خلال حساسات أو من خلال آشعة تحت حمراء أو لإجراء وظائف مختلفة نحتاج لها أو لتوصيله بشاشة LCD ليظهر لك عدة رسائل ونتائج لقياسات ولقراءات مختلفة أو لإستقبال بيانات بواسطة المستخدم ، فيمكن له استقبال إشارات بالنظام التناظرى ( الأنالوج ) أو النظام الرقمى ( الديجيتال ) أو يقوم فقط بعملية خرج ديجيتال أو خرج أنالوج ، وقد يتعجب البعض من أن المتحكم يستطيع أن يخرج خرجا تناظريا و رقميا ، حيث أن الداتا شيت التى أخرجها المصنع نفسة تقول أن الخرج يكون بالنظام الرقمى أى ( 1 أو صفر ) يعنى ليس خطى ومن هنا فأحب أقول أن للمصنع أن يقول عن ما أنتجه هو ونحن نستطيع بفضل الله وبما منحنا الله من نعمة العقل أن لا نستسلم للإمكانيات المادية التى بين أيدينا ولنترك لخيالنا العنان دون حدود ، وسنرى بأعيننا فى التجارب إن شاء الله كيف سنجعل هذا المتحكم يخرج لنا خرجا خطيا و متدرجا من صفر إلى 5 فولت و ببعض الإضافات نستطيع أيضا أن نجعل الخرج يزداد فيكون مثلا من صفر إلى 24 فولت و سنرى ذلك بأعيننا وبالقياسات إن شاء الله .
أول مشروع لنا مع المتحكم PIC16F628A
لماذا إخترنا هذا المتحكم ؟
المتحكمات كثيرة ونختار ما نريد منها على حسب حاجتنا وهذا سيتوقف على الذاكرة والسرعة والنوع فبعض المواقف تحتاج لأنواع خاصة من المتحكمات وبأرقام خاصة ، أما الآن فلنا الحرية فى مشاريعنا الأولى ، واخترت لكم هذا المتحكم لإحتوائه على ساعة داخلية من أجل التسهيل على الكثير وسنعرف فيما بعد كيف لنا أن نستخدم ساعة خارجية ، وكلمة ساعة أى وقت أى تردد ، يعنى المتحكم يحتاج لتردد ليعمل ، يعنى يمكن نعطيه تردد بأى وسيلة ، فمثلا يمكن استخدام تردد خارجى وليكن المتكاملة 555 هذا للعلم ويمكن استخدام مقاومة ومكثف فقط ليقوما بتوليد التردد كما يمكن استخدام كريستالة كما يمكن استخدام مذبذب داخلى للمتحكم وسنرى بمشيئة الله فيما بعد أنواع المذبذبات التى تحدثنا عنها وما فائدة كل منهم وما العيوب ولماذا تعددهم ألم يكفى أن يكون لكل متحكم ساعة دخلية للتوفير وانتهى الأمر ؟ إذن لماذا كل هذه الخيارات ؟
أحب أن أقول لا ننزعج يمكننا استخدام أبسط الطرق كما عملنا هنا من إختيارنا لهذا المتحكم الذى يحوى مذبذب داخلى لكن فى كل مشروع سنأخذ فكرة كى لا يتشتت الأمر علينا حاليا .
هذا هو بيان المتحكم :-
الأسهم تشير ألى مجموعة من الأرجل المسماه بمنفذ ( A ) حيث يتم ترتيبها كما يلى ( RA0 - RA1 - RA2 - RA3 - RA4 - RA5 - RA6 - RA7 )
وأسهم ذات اللون أخرى ولكن خاصة بالمنفذ ( B ) وترتب كما فى الرسم ( RB0 - RB1 - RB2 - RB3 - RB4 - RB5 - RB6 - RB7 )
كل منفذ يكون مرتبطا ببعضه داخل المتحكم ، أى يستطيع أن يحمل قيمة معينة .
كلنا يعرف المتكاملة الشهيرة 555 والتى يمكن لها أن تولد نغمات ! نعرف أن لها طرف خرج وطرف تغذية وليس لها طرف دخل لأنها مذبذب !
وبما أننا قلنا أن المتحكم نستطيع أن نوظفة ليقوم بعمل محدد فيمكن لنا أن نجعل أطرافه طوع أمرنا فمثلا يمكن أن نجعل كل أطرافه أطراف خرج ، كل طرف يخرج لنا خرجا خاصا لمصباح معين ليضئ إضاءة ذات لون معين مثلا أو أضواء دوارة متبادلة ، كما يمكن لنا أن نجعل للمتحكم عدة أطراف تكون أطراف دخل فهذا الطرف يتصل بمفتاح ليقوم المتحكم بوظيفة عند قفل المفتاح و طرف آخر به دخل تناظرى بمقاومة متغيرة نستطيع من خلال المقاومة أن نجعل المتحكم يقوم بوظائف عند كل قيمة ، ونستطيع أن نترك عدد من الأطراف دون توظيف أى غير مستخدمه !
فى النهاية المتحكم يتغذى على 5 فولت تماما لا تزيد ولا تقل ، ويقبل الدخول على أطرافه من خلال مفاتيح لتعمل على توصيل 5 فولت لأطراف دخل أو قطعها ليكون هناك صفرا على أطراف الدخل ، والمتحكم يكون خرجه إما 5 فولت أو صفر سواء كان الخرج ثابت أم متردد لدرجة توليد أصوات ونغمات وإنذار وغير ذلك أو يكون متصلا مع شاشة LCD
إذن أول شئ نقوم بعمله هو الآتى :
التسمية ( بسم الله ) فوالله يا أخى لو واظبت على التعود عليها لوجدت البركة والعجب فى الوقت وفى ذكاءك الذى سيأتيك بفضل هذه الكلمة عند خطوات إعدادك للبرنامج !
ثانيا :
ماذا نريد من المتحكم فعله ؟
( رجاء من الإخوة نسيان أننا فى دورة تعليمية تتطلب أن نحفظ أوامر وتعليمات وقواعد ، ولا نقلق فبفضل الله اخترت لحضراتكم أمثلة فعالة لاستخدام الأوامر بكفائة ومهارة وسنجد أنفسنا إن شاء الله فى تقدم دون أن نشعر )
نريد أن نجعل المتحكم يقوم بعمل إضائة متحركة لخمسة ليدات
كما فى المخطط التالى :
سنكتب هذا البرنامج التالى :
كود:
program project01
main:
trisb = 0
wleed:
portb = %00001
delay_ms(500)
portb = %00010
delay_ms(500)
portb = %00100
delay_ms(500)
portb = %01000
delay_ms(500)
portb = %10000
delay_ms(500)
goto wleed
end.
طبعا عرفنا كيف نفتح البرنامج وأننا لن نكتب كلمة بروجرام التى تذهر فى الكود المرفق هذا ولكنها تكتب بواسطة البرنامج وبجوارها الإسم الذى اخترناه حيث قام البرنامج بنفسه بكتابته هنا بجوارها ولن نكتب كلمة :main فهى مكتوبة من قبل البرنامج ونحن فقط سنطع الأوامر بعدها كما هو مبين فى الكود المرفق هذا و لن نكتب كلمة .end لأنها مكتوبة من قبل البرنامج ونختار نوع البيك ونختار التردد 4 لأن هذا التردد هو التردد الداخلى للمتحكم ونختار من خانة نوع المذبذب من خلال النافذة التى تظهر عند فتح البرنامج كما رأينا نختار الساعة الداخلية وسنجد هذا الخيار من ضمن الخيارات فى حال استخدامنا لهذا النوع من البيك بالتحديد
لتحميل ملف البروتوس و ملف الهيكس
اضغط هنا .
وجدنا أننا استخدمنا كلمة wleed وهذا لنعرف أن هذه الكلمة ليست من التعليمات فما هى إلا عنوان ويجب أن نتبعها بنقطتان رأسيتان كما رأينا فى الكود ، ويجب أن يكون العنوان ليس تعليمة من التعليمات بل أى كلمة أخرى كى لا يتعامل البرنامج معها على أنها أمر ،
استخدمنا أمر تخصيص الأطراف وهو TRISوهذا الأمر لنحدد له أطراف الدخل وأطراف الخرج لهذا المتحكم فمثلا قمنا بإتباعه بالحرف B ليكون هكذا TRISB لن يفرق مع البرنامج الحروف الكبيرة أو الصغيرة ،
هذه التعليمة نعطى لها قيمة فمثلا أعطيت لها القيمة صفر ومعنى أن أعطى صفر فنكون حددنا أطراف المتحكم المندرجة تحت المنفذ B كاملة بأنها خرج وإذا حددنا قيمة 11111111% نكون حددنا الثمانى خانات التى ذكرناها المكونة للمنفذ B بأنها دخل فكل خانة من خانات المنفذ B والتى ذكرناها RB0 - RB1 - , إلى آخره ما هى إلا أطراف المتحكم و الرقم 11111111% يعنى 1 لكل خانة من الخانات الثمانية وهذا بالنظام الثنائى ، وأنا قد وضعت رقم صفر بدون علامة % ليكون الصفر بالنظام العشرى وإذا أردنا الكتابة للأرقام بالنظام السداسى عشر فيجب أن يسبق الرقم علامة $ سنعرف هذا كله لاحقا إن شاء الله ،
كلمة PORT نكتبها عند التعامل أثناء سير البرنامج مع أطراف المتحكم ، ومعنى أن أضيف حرف B لتصبح PORTB فهنا أتعامل مع النفذ Bبالكامل بما يحويه من ثمانى أطراف ، ثم وضعنا الأرقام 1 و صفر بترتيبات مختلفة عدة مرات متتالية بينهم أمر تأخير DELAY ليتم تأخير سير البرنامج بمقدار ميللى ثانية عند اتباع الأمر بالرمز MS أو بالمايكرو ثانية عند اتباعه بالرمز US ثم وضع الرقم بين قوسين المعبر عن الزمن المطلوب ، كما فى البرنامج ، طبعا الأمر GOTO معناه إذهب إلى ، وهذا يأمر البرنامج ليعود ليبدأ من عند العنوان الذى ذكرناه بجوار GOTO وهذا سيفيد عند تعدد العناوين فيما بعد ، نتابع الشرح لاحقا إن شاء الله .
أنتظر استفساراتكم وأسئلتكم بكل ود وأسألكم الدعاء بظاهر الغيب لى وللمسلمين .
وبالتوفيق للجميع وإلى اللقاء والسلام عليكم ورحمة الله وبركاته .
يتتبع،