قسم الميكروكنترولر والروبوت ودوائر الاتصال بالحاسب الاليقسم المتحكمات الـ microcontroller و المعالجات microprocessor و التحكم الرقمي بالكمبيوتر CNC والانظمة الآلية والروبوت Robots
سم الله الرحمن الرحيم
اللهم صلي على نور الانوار وسر الاسرار
سيدنا محمد المختار واله الاطهار واصحابه الاخيار وسلم تسليما كثيرا
الكيباد Keypad
السلام عليكم احبتي الكرام
في هذا الموضوع سوف اقوم بشرح الكيباد
التي هي ذات صلة بـ الميكروكونترولر هذا يعني انواع الكيباد كثيرة
فمن اشهر الانواع التي نستخدمها هي { 4×4 ~ 3×4 ~ 6×4 } او قد تكون غير
ذلك حسب التصميم
ولكن لكي لا نطيل كثيرا دعونا نأخذ النوع 4×4 كمثال للشرح
وسوف يتضح لكم الرؤيا ان كل الانواع تسلك ذات النهج في التعامل
انظر الصورة التالية :
الصورة السايقة توضح لنا كيباد من النوع 4×4 قد تذهب الى مكان بيع القطع
الالكترونية ولكنك قد تفاجئ بنوع أخر فلا تأخذ للموضوع أهمية سوف اوضح لك
الالتباس فقد تجده هكذا
اوهكذا
اوقد يكون الازرار تحوي اسماء أخرى
او غير مرتبة لكنها في النهاية من النوع 4×4
وهذا هو المطلوب
ده الكيباد الي حنشتغل عليه
قبل كل شيء نجي نشوف ما هو الكيباد ؟
انا ما رايح اعرف ليكم الكيباد تعريفا لغويا او اصطلاحيا علميا
اترك لك هذا النهج لتحتفظ به كمعلومة عندك ( ههههه )
تعرف شيئ رغم انني اكاديمي ولكنني لا احب نهجها بل افضل البراكتكل اكثر فثرثرة الافاظ اللغوية تضايقني كثيرا ههههه لا عليك !! ,
فالتعريف الذي يفيدنا هو التعريف العملي التطبيقي
انظر الصورة التالية توفر علينا الكثير من الكلام
هذا هو تعرفنا للكيباد
أي بمعنى اننا يمكننا تصميمة اذا ادعت الضرورة وهذا تعليلا لما قلته سابقا
لانواع الكيباد التي قد تأخذ اشكالا غير التي ذكرت
أي انها تشترك في طريقة ربطها بطريقة المصفوفة
طيب الى هذا الحد تعرفنا على الكيباد من النوع 4×4
بصورة مختصرة وواضحة
الخطوة التالية :
الكيباد و الميكروكونترولر أي كيف يعرف الميكروكونترولر
ان هذا الشخص الذي يقف امام الباب وينادي لمن بالداخل
هو ذالك الشخص المصرخ له بالدخول الى البيت (ههههه)
أي كيف يتعرف الميكرو على الكيباد ... تعالو نشوف واحدة واحدة :
الميكرو محتاج انه يحس ان هنالك تغيير في اطرافه او ارجله
ليقوم بتنفيذ امر ما حسب الكود المصمم له , فعند الضغط ع الزر
هون سوف يحس الميكرو ان هذا التغيير الذي يحدث في أحد اطرافه
انما هو كيباد ذلك بتغير الجهد من 0الى1 او من1الى0
زي ما حنشوف , لنوفر الكلام قليلا ودعو الصورة التالية تتحدث عننا :
تمعن في الصورة جيدا .....
اكيد عرفت ما الذي اقصده .... لكن دعوني اثرثر قليلا ::
ان الذي يحدث هنا هو ان الميكرو يقوم بعملية تبديل سريع جدا جدا في مصفوفة الكيباد
ليتعرف على الزر الذي تم ضغطه
كما لاحظتم في الصورة باللون البنفسج التبديل
الذي اعنيه هو عملية ارسال اليميكرو 1 فولت كل لحظة لاطراف الكيباد A-B-C-D
الذي تعتبر اعمدة مصفوفة الكيباد والاطراف 1-2-3-4 ( موصلة مع الارضي بمقاومة 10K )
يمكننا اعتباره صفوف مصفوفة الكيباد 4 اعمدة و4 صفوف
هي تعني مصفوفة 4×4 , قلنا نتكرك الثرثرة لكنها لازالت تلاحقني , اقصد
كيباد من النوع 4×4 وقس على ذلك ....
فعند الضغط تتغير حالة طرف الميكرو من1 الى 0 وعرفنا قبيل أيه الي حيحصل ..
حنجي نطبق الكلام ده في المحاكاة بدائرة بسيطة
توضح لنا المقصود لكي نخرج من هذا الموضوع بشيئ مفيد بأذن الله شوف الدائرة التالية :
اكيد جا في بالك الملف والكود للمحاكاة عشان ماتتعب كتير ؟؟!!
برضو عملنا ليك حساب وكلو ده حتلاقيه في الرابط التالي
حمل وشغل بس ارجع لينا لاننا محتاجينلك ....
من هنا : http://www.mediafire.com/?vfjrlltfkgtalbd
الدائرة مامحتاجة شرح وعلشان
ما تجي تسألني ايه مشكلة الخمس ليدات دي البتولع مع بدايت التشغيل دي ؟
انا ما حأجاوبك ولكن اكتشفها بنفسك ووضحها لينا في مشاركة رد ..
16 ليد لي 16 زر وده شرح واضح افتكر
يلا كده نكون خلصنا من الهاردوير نجي نشوف بيت القصيد او مكان المتعة الحقيقية التي تتمثل في الكود .
كود:
char keypadPort at PORTD;
char led;
void main() {
Keypad_Init();
TRISb =0b00000000;
TRISc =0b00000000;
while(1){
led=0;
while(!led){led = Keypad_Key_Click();} // kp = Keypad_Key_Click();
switch (led) {
case 1: led = portb=0b00000001; portc=0b00000000; break; // 1
case 2: led = portb=0b00000010; portc=0b00000000; break; // 2
case 3: led = portb=0b00000100; portc=0b00000000; break; // 3
case 4: led = portb=0b00001000; portc=0b00000000; break; // A
case 5: led = portb=0b00010000; portc=0b00000000; break; // 4
case 6: led = portb=0b00100000; portc=0b00000000; break; // 5
case 7: led = portb=0b01000000; portc=0b00000000; break; // 6
case 8: led = portb=0b10000000; portc=0b00000000; break; // B
case 9: led = portc=0b00000001; portb=0b00000000; break; // 7
case 10: led = portc=0b00000010; portb=0b00000000; break; // 8
case 11: led = portc=0b00000100; portb=0b00000000; break; // 9
case 12: led = portc=0b00001000; portb=0b00000000; break; // C
case 13: led = portc=0b00010000; portb=0b00000000; break; // *
case 14: led = portc=0b00100000; portb=0b00000000; break; // 0
case 15: led = portc=0b01000000; portb=0b00000000; break; // #
case 16: led = portc=0b10000000; portb=0b00000000; break; // D
}
}
}
انا ما تعبتا كتير غير انني صممت الكود مجاراة لكود الذي بمكتبة الميكروسي pic
لو حابي تعرف كيف تجيبها من المكتبة اتبع :
اولا بعد فتح MikroC pro for pic فم بالضغط على F1 يفتح لك المكتبة
انظر الصورة
شرح الكود
اهم شيئ فيه ثلاث اوامر
كود:
Keypad_Init
Keypad_Key_Press
Keypad_Key_Click
الامر الاول : Keypad_Init
Initializes port for working with keypad.
هي لتهيئة الكيباد او تعريف اطراف او ارجل الكيباد للميكرو
تكتب هذه الامر داخل البرنامج بعد الدالة الرئيسية : ()void main
وذلك عن طريق اختيار البورت الذي يتعامل معه باستخدام التعليمة التالية
كود:
Initializes port for working with keypad.
الامرين الثاني والثالث :
Keypad_Key_Press & Keypad_Key_Click
هما متشابهان ولكنهما ليس متطابقان والا لكان اكتفينا باحداهما
متشابهان في انهما امران قرائة ازرار الكيباد
وليس متطابفان هو الفرق :
في Keypad_Key_Click
انه اذا تم الضغط على اكثر من زر فى نفس الوقت بصورة سريعه
فهو ينتظر حتى ترجع كل الازرار الى وضعها الطبيعى
ويعطي الاولوية لاول زر تم ضغطه
وكما انه ينتظر ايضا ان ترفع يدك من على الزر
اما Keypad_Key_Press فهو العكس تماما
لم يبقى سوى شيئ واحد وهو مربط الفرس وعظم الحوت الذي كانت قد سببت لي كابوس عند معرفتي لهذا العلم وخصوصا الكيباد وهو الذي جعلني اقوم بهذا الشرح حتي لا يعاني حبايبي الكرام مما عانيته وحتى بدركو رؤس الخيط ليتبحرو في هذا العلم الجميل ... يلا نختم بهذه الجزئية وهي العبارة الشرطية Switch-case والحلقة التكرارة :
في الكود انشئت حلقة تكرارية While ومتغير led الحلقة التكرارية لكي يقوم بملاحظة قيمة المتغير كل مرة اقوم فيه بعملية الضغط .. كيف ؟
اولا اعطية المتغير led قيمة مبدئية =0
كود:
led=0;
وقلت له لطالما ان قيمة المتغير =0 لاتنفذ اي امر
ثم قمت باسناد للمتغير شيئ
كود:
led = Keypad_Key_Click();
هذا يعني ضع رقم من الارقام من 1 ---- 16 الذي عبارة عن الزر الذي تم ضغطه
ثم
كود:
case 1: led = portb=0b00000001; portc=0b00000000; break; // 1
case 2: led = portb=0b00000010; portc=0b00000000; break; // 2
case 3: led = portb=0b00000100; portc=0b00000000; break; // 3
case 4: led = portb=0b00001000; portc=0b00000000; break; // A
case 5: led = portb=0b00010000; portc=0b00000000; break; // 4
case 6: led = portb=0b00100000; portc=0b00000000; break; // 5
case 7: led = portb=0b01000000; portc=0b00000000; break; // 6
case 8: led = portb=0b10000000; portc=0b00000000; break; // B
case 9: led = portc=0b00000001; portb=0b00000000; break; // 7
case 10: led = portc=0b00000010; portb=0b00000000; break; // 8
case 11: led = portc=0b00000100; portb=0b00000000; break; // 9
case 12: led = portc=0b00001000; portb=0b00000000; break; // C
case 13: led = portc=0b00010000; portb=0b00000000; break; // *
case 14: led = portc=0b00100000; portb=0b00000000; break; // 0
case 15: led = portc=0b01000000; portb=0b00000000; break; // #
case 16: led = portc=0b10000000; portb=0b00000000; break; // D
لا تندهش كثيرا هي كلمتين لا اكثر
وهي تنفيذ متغير الاختبار led
كود:
switch (led)
اذا كان يساوي من 1----16 ينفذ الامر مثلا :
كود:
case 1: led = portb=0b00000001; portc=0b00000000;
هذا يعني انني قلت له اذا كان الزر الذي تم ضغطه يحوي الرقم 1 ر اي المفتاح الاول نفذ الامر اي اضيء الليد الاول وابقي بقية الليدات مغلقة وانتقل الي الامر الذي يليه بواسطة الدالة break .. وهكذا بقية الاوامر .
اذا اردتا ان تضيف اي شيئ ما عليك الا ان تجري تعديلا ما بعد :
كود:
case 1: led =..........
واذا التبس اليك الامر كثيرا ايضا عملتا ليك حساب ما عليك الا ان تدخل الى الرابط التالي فسوف تجد الروعة مع الاستاذ الكبير فتح الله عبد العزيز بانتظارك في شرح العبارات الشرطية : http://www.qariya.com/vb/showthread.php?t=123475
اما اذا تعقدت الامور عليك كثير فسأل الله ان يساعدك واسأل هنا فليوفقنا الله لتجد حل لما وقف لديك
أحبتي الكرام هنا نكون قد انهينا هذا الدرس او الشرح المتواضع بصورة مختصرة عن الكيباد فلكم كان اللقاء معكم ممتعا ولكم كنت سعيدا بذلك دمتم ودام كل حبي لكم
التعديل الأخير تم بواسطة : Abdw9 بتاريخ 10-05-2013 الساعة 01:14 AM
حياك الله أخي و رفع شأنك و زادك من فضله و علمه
بس طلب صغير..كيف اضيف كايباد 4x4 الى البروتوس لأنني لم أجده و شكرا جزيلا
اخي الكريم يسعدني مرورك بالموضوع وجمعة مباركة
انك لم تجد هذا النوع في مكتبت البروتوس لديك هذا يعود الى مكتبتك قد تكون قديمة او محتاجة الى تجديد لان هذا المحاكي تجدد له العناصر تكرار كل فترة
حمل هذا الملف الذي يحوي العناصر المفقودة بالمكتبة
في هذا الرابط : http://www.mediafire.com/?9fr9htyvoqj7ttl
اولا يجب ان يكون لديك اصدار جيد من برنامج البروتوس كما بالصورة أو احدث :
قم بفتح الملف ستجد المكتبات الموجوده بالملف كما بالصورة:
ثم اذهب الى program file كما بالصورة
ستجد مكتبة اسمها LIBRARY قم بفتحها والصق فيها المكتبات التي قد قمت بنسخها ومن ثم اغلق برنامج البروتوس وافتحه وسوف تجد بعض العناصر التي غير موجودة قد وجدت ..
هذا اذا كان الاصدار الذي ذكرته لك
اما اذا اردت تحميل الاصدار الجديد فاليك هي في الرابط التالي : http://www.4shared.com/rar/ihG1j3bE/...7_FULL100.html
اخي الحبيب سعيد الجسري انا سعيد بمرورك وذوقك الجميل الراقي لك من كل التحاية والترحاب واشاراتك بالتوضيح اعجبتني يهذا الاسلوب الراقي والواضح لمن ادركه portb=0 portc=0 لك مني الشكر للايضاح بيد انني فعلته هكذا لكي يفهمه كل الطبقات مبتدئ وفني ومحترف
لكم من اعماق مشاعري الجياشة تجاهكم كل الحب ودمتم بود
وجمعتكم مباركة
الساعة معتمدة بتوقيت جرينتش +3 الساعة الآن: 02:33 PM
موقع القرية الالكترونية غير مسؤول عن أي اتفاق تجاري أو تعاوني بين الأعضاء
فعلى كل شخص تحمل مسئولية نفسه إتجاه مايقوم به من بيع وشراء وإتفاق وأعطاء معلومات موقعه
التعليقات المنشورة لا تعبر عن رأي موقع القرية الالكترونية ولايتحمل الموقع أي مسؤولية قانونية حيال ذلك (ويتحمل كاتبها مسؤولية النشر)