قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الالي قسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots

أدوات الموضوع

الصورة الرمزية ahmad_s_f
ahmad_s_f
:: المهندس/ أحمد سمير فايد ::
تاريخ التسجيل: Jun 2006
الدولة: سائح في ارض الله
المشاركات: 725
نشاط [ ahmad_s_f ]
قوة السمعة:80
قديم 18-12-2009, 06:36 AM المشاركة 1   
افتراضي تمارين على الدرس الخاص بالدوال - تابع لدورة اسرع طريق لاحتراف برمجة البك Twitter FaceBook Google+





إخواني الاعزاء الراغبين في تعلم واحتراف برمجة الميكروكنترولر .. ارحب بكم من جديد في هذا الموضوع التابع للدورة التعليمية والتي يقدمها لكم اخوكم المهندس/ احمد سمير فايد . (اسرع طريق لاحتراف برمجة البك باستخدام مايكروسي)

وأقدم لكم بعض التمارين للدرس الخاص بالدوال .

يمكن للجميع المشاركة والنقاش في الحل ووضع افكارهم وحلولهم ومحاولاتهم.

==============================================


((تمارين على الدرس))

السؤال الأول : قم بكتابة كود يؤدي الوظيفة التالية :
في بداية البرنامج يقوم بإظهار الرقم صفر على السفن سيجمنت الموصلة بالأطراف من b0 إلى b3 عن طريق مفكك ترميز .
عند الضغط على السويتش الموصل بالطرف a0 يزداد الرقم الظاهر على السفن سيجمنت . علما بأن الأرقام المسموح بها من صفر إلى تسعة فقط .
عند الضغط على السويتش الموصل بالطرف a1 يضيء نفس الرقم الظاهر على السفن سيجمنت ويطفئ مرتين متتاليتين بسرعة .
عند الضغط على السويتش الموصل بالطرف a2 ينقص الرقم الظاهر على السفن سيجمنت ثم يضيء ويطفئ مرتين متتاليتين بسرعة ايضا .
عند الضغط على السويتش الموصل بالطرف a3 تصبح القيمة الظاهرة على السفن سيجمنت صفر مع إضاءة واطفاء للرقم مرتين متتاليتين وبسرعة .
(أقصد بكلمة بسرعة انها تتم في زمن اقل من الثانية )
ملحوظة مهمة : يجب أن يكون الكود مصمم بحيث عند الضغط على السويتش يستجيب البرنامج مرة واحدة ولا يكرر اي عملية طالما كنا ضاغطين على السويتش .

المهم في هذا السؤال هو تنسيق الكود بإتقان وباستخدام الدوال . بحيث لا يكون هناك تكرار في الكود مطلقا .

==============================================

السؤال الثاني : قم بكتابة نفس البرنامج السابق مع تعديل بسيط وهو انه لو كنا ضاغطين على السويتش فإن العملية التي يؤديها هذا السويتش تتكرر كل 200 ملي ثانية .

==============================================

السؤال الثالث : انظر للكود التالي وقم بعمل التعديلات اللازمة عليه ليكون متضمنا لاستخدام الدوال و بحيث لا يحتوي على تكرار .

كود:
void main() { trisb=0; trisa=0xff; while(1) { portb=0b00000001; delay_ms(300); portb=0b11111110; delay_ms(300); portb=0b00000010; delay_ms(300); portb=0b11111101; delay_ms(300); portb=0b00000100; delay_ms(300); portb=0b11111011; delay_ms(300); portb=0b00001000; delay_ms(300); portb=0b11110111; delay_ms(300); portb=0b00010000; delay_ms(300); portb=0b11101111; delay_ms(300); portb=0b00100000; delay_ms(300); portb=0b11011111; delay_ms(300); portb=0b01000000; delay_ms(300); portb=0b10111111; delay_ms(300); portb=0b10000000; delay_ms(300); portb=0b01111111; delay_ms(300); } }
يجب اختصار هذا الكود قدر الامكان ويفضل استخدام الدوال ايضا .

==============================================

السؤال الرابع (سؤال المشروع) :
سيكون في كل تمرين بإذن الله سؤال خاص بطلب مشروع معين .
هنا في هذه المرة المطلوب عمل مشروع لإشارة المرور .
ثلاثة اشارات . كل اشارة مرور بها لونين فقط الأحمر والأخضر
تكون اشارة واحدة فقط هي الخضراء وباقي الاشارات لهم اللون الاحمر
ثم تتحول هذه الاشارة للون الاحمر بعد مدة معينة والاشارة الثانية هي التي ستكون خضراء وهكذا ..

الميزة المهمة التي يجب اضافته أن يكون هناك سويتشين يمكنوا رجل المرور من زيادة ونقصان المدة الزمنية التي تكون فيها الاشارة خضراء ثم تتحول للون الاحمر
ويجب ان تكون هذه المدة إما خمسة ثواني أو 10 ثواني او 15 ثانية أو 20 ثانية

يتنقل بين هذه القيم باستخدام سويتشين سويتش ينتقل لقيمة اعلى وسويتش ينتقل لقيمة اقل .

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

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

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


وفقنا الله جميعا لما يحب ويرضى ورزقنا وإياكم العلم النافع والعمل الصالح

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



اعلانات

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 18-12-2009, 06:43 AM المشاركة 2   
افتراضي


تمت المتابعة وجاري الحل باذن الله تعالى

حيدر علاج حسن
اعلانات اضافية ( قم بتسجيل الدخول لاخفائها )
  

mkks87
:: مهندس متواجد ::
تاريخ التسجيل: Oct 2009
المشاركات: 92
نشاط [ mkks87 ]
قوة السمعة:0
قديم 18-12-2009, 01:20 PM المشاركة 3   
افتراضي


السؤال الثانى لم افهمه ارجو التوضيح
فى امان الله


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 18-12-2009, 02:24 PM المشاركة 4   
افتراضي


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

حيدر علاج حسن

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,334
نشاط [ ناصراحمد2 ]
قوة السمعة:97
قديم 18-12-2009, 06:13 PM المشاركة 5   
افتراضي


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


الف مليون بركة على عودتك استاذنا احمد

وعلى عودة واستاناف الدروس والشروحات


رغم انى اعلم انى مقصر كثيرا فى متابعة التمارين

واعتقد انك استاذى تعلم انشغالى فى موضوع الماتركس


ولكنى متابع الدروس


77777777777777777777777777

على فكرة الدرس الاخير قمت بتحميلة ولم يفتح عندى

لا اعلم السبب ربما نسخ الادوب

77777777777777777777777777777


بارك الله فيك استاذنا م احمد سمير


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:394
قديم 18-12-2009, 07:22 PM المشاركة 6   
افتراضي


اخي ناصر : ما تقدمه هذه الدورة لن تجده في مكان اخر .
انت الان منشغل بالماتركس و ربما لاتعرف الى اين ستصل معها .
عندما ياتي درس جديد انشغل به و بالتمارين لانك ربما تجد الحل لمشكلة الماتركس في احد هذه الدروس .كما حصل معي عندما قرأت التمارين و رجعت الى الدرس الاخير و جدت ان استخدام الدوال يمكن ان يحل المشكلة التي واجهتني في مشروع الليد كيوب . هذا من جهه . ومن جهة اخرى ربما تفشل بالماتركس في الوقت الحاضر ( لا سمح الله ) و تكون قد ضيعت الطريقين .
الدورة تعطيك معلومات تجعلك تنطلق في اي مشروع تريد تنفيذه . لكنها تحتاج الى صبر و مثابرة .
هذه نصيحتي لك و لكل المشتركيين الحقيقيين في الدورة .

حيدر علاج حسن

الصورة الرمزية ناصراحمد2
ناصراحمد2
:: عضو ذهبي ::
تاريخ التسجيل: Jul 2009
الدولة: EGYPT
المشاركات: 1,334
نشاط [ ناصراحمد2 ]
قوة السمعة:97
قديم 18-12-2009, 07:42 PM المشاركة 7   
افتراضي


اخي ناصر : ما تقدمه هذه الدورة لن تجده في مكان اخر .
انت الان منشغل بالماتركس و ربما لاتعرف الى اين ستصل معها .
عندما ياتي درس جديد انشغل به و بالتمارين لانك ربما تجد الحل لمشكلة الماتركس في احد هذه الدروس .كما حصل معي عندما قرأت التمارين و رجعت الى الدرس الاخير و جدت ان استخدام الدوال يمكن ان يحل المشكلة التي واجهتني في مشروع الليد كيوب . هذا من جهه . ومن جهة اخرى ربما تفشل بالماتركس في الوقت الحاضر ( لا سمح الله ) و تكون قد ضيعت الطريقين .
الدورة تعطيك معلومات تجعلك تنطلق في اي مشروع تريد تنفيذه . لكنها تحتاج الى صبر و مثابرة .
هذه نصيحتي لك و لكل المشتركيين الحقيقيين في الدورة .
هذا والله ماافعلة بالضبط اخى حيدر


ولا يمكننا الاستغناء عن دروس استاذنا احمد

لانها هى وسيلتنا التى تزيد من فهمنا للبرمجة والاوامر




++++++++++++++++++

وفعلا كلامك صحيح انة من الممكن ان تجد حل مشكلة

تجد حلها فى موضوع مختلف نهائى

++++++++++++++++++++

كمثال التحريك فى الماتركس

انا وجدت كود بالبيزك

وقمت بالمقارنة بينة وبين السى

ففهمت وضع التعريفات فى البيسك

وقمت بوضع المرادف لها بالسى


والحمد لله

تم حل مشكلة الحركة كما شاهدت من قبل


الصورة الرمزية ahmad_s_f
ahmad_s_f
:: المهندس/ أحمد سمير فايد ::
تاريخ التسجيل: Jun 2006
الدولة: سائح في ارض الله
المشاركات: 725
نشاط [ ahmad_s_f ]
قوة السمعة:80
قديم 18-12-2009, 09:12 PM المشاركة 8   
افتراضي


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

انا سأعيد توضيح السؤالين الاول والثاني لمن لم يفهمهم .
عند الضغط على السويتش a0 تزداد القيمة الظاهرة على السفن سيجمنت بمقدار واحد . فمثلا لو كانت القيمة 3 ستصبح 4 فقط . ولكن يجب ملاحظة انه مهما استمرت المدة التي كنا ضاغطين فيها السويتش لن تزداد القيمة إلا بمقدار واحد فقط .. فلو ضغطنا لمدة ثانيتين وكان الرقم الظاهر هو 3 سيصبح اربعة . ولو استمررنا في الضغط لمدة خمسين ثانية او ستين ايضا ستظل القيمة اربعة .ولا يمكن ان تزداد القيمة إلا اذا رفعنا اليد من على السويتش ثم ضغطنا مرة أخرى.
عند الضغط على السويتش a1 لا تتغير القيمة التي على السفن سيجمنت فلو كانت القيمة هي ثمانية ستظل ثمانية ولكن كل ما سيحدث هو عملية فلاشر اي ان الشاشة ستضيء وتنطفي مرتين (ومدة الاضاءة والاطفاء مرتين تستغرق وقت أقل من الثانية يمكنك افتراضه كما تشاء بحيث يكون واضح الرؤية )
ولكن مهما استمرينا في الضغط فلن تتكرر عملية الفلاشر .
اذا ضغطنا على السويتش a2 تنقص القيمة الظاهرة على السفن سيجمنت ويعقب ذلك عملية فلاشر للشاشة . ايضا نفس الفكرة مهما استمرينا في الضغط لمدة طويلة لن يتغير شيء الرقم تم نقصانه مرة واحدة وتم حدوث فلاشر ولا تتكرر هاتان العمليتان بالاستمرار في الضغط .
أما عند الضغط على السويتش a3 تتغير القيمة الظاهرة على السفن سيجمنت وتصبح صفر ويعقبها عملية فلاشر ومهما ضغطنا على السويتش لا تتكرر هاتان العمليتان .

ارجو التركيز الجيد في السؤال والتدقيق فيه لكي تكون الاجابة سليمة .

======================
السؤال الثاني :

عند الضغط على السويتش a0 تزداد القيمة الظاهرة على السفن سيجمنت بمقدار واحد . فمثلا لو كانت القيمة 3 ستصبح 4 فقط . ولكن يجب ملاحظة انه إذا استمرت المدة التي كنا ضاغطين فيها السويتش تزداد القيمة بمقدار واحد كل 200 ملي ثانية .. فلو ضغطنا لمدة ثانيتين وكان الرقم الظاهر هو 3 سيصبح 4 ثم 5 ثم ........ 10 . أي انه باستمرارنا في الضغط تتكرر وظيفة السويتش (وهي الزيادة) كل 200 ملي ثانية
عند الضغط على السويتش a1 لا تتغير القيمة التي على السفن سيجمنت فلو كانت القيمة هي ثمانية ستظل ثمانية ولكن كل ما سيحدث هو عملية فلاشر اي ان الشاشة ستضيء وتنطفي مرتين (ومدة الاضاءة والاطفاء مرتين تستغرق وقت أقل من الثانية يمكنك افتراضه كما تشاء بحيث يكون واضح الرؤية )
ولكن في هذه المرة إذا استمرينا في الضغط فإن عملية الفلاشر تتكرر . فلو كانت عملية الفلاشر تستغرق ثانية فإنه لو ضغطنا على السويتش 3 ثواني فإن عملية الفلاشر تتكرر ثلاث مرات .
اذا ضغطنا على السويتش a2 تنقص القيمة الظاهرة على السفن سيجمنت ويعقب ذلك عملية فلاشر للشاشة . ايضا نفس الفكرة تتكرر الوظيفة الخاصة بالسويتش طلما كنا ضاغطين على السويتش . وهنا يمكن أن يكون التكرار كل ثانية أو كل ثانية و 200 ملي .

أما عند الضغط على السويتش a3 تتغير القيمة الظاهرة على السفن سيجمنت وتصبح صفر ويعقبها عملية فلاشر . فكرة التكرار ايضا نفس الشيء السابق

-======================
اتمنى ان تكون قد اتضحت الأمور .. وتمنياتي بكل التوفيق والتميز

ودمتم بخير وسعادة دائما .....

إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 06:06 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025