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

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

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 15-08-2012, 10:55 AM المشاركة 1   
افتراضي تعلم كيفية التعامل مع الكيباد بانواعه وبالميكروسى ((الجزء الاول)) Twitter FaceBook Google+



بسم الله الرحمن الرحيم

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

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

1 - كيف يعمل الكيباد ؟؟
2 - ما انواع الكيباد ؟؟
3 - كيفية استخدام اول نوع من الكيباد ؟؟
.................................................. .....................................

1 - كيف يعمل الكيباد ؟؟
____________________

قبل الاجابة عن هذا السؤال يجب ان نعلم كيف يعمل الزر وكيف يحس الميكرو
اذا كان تم الضغط على الزر ام لا

الامر ببساطة
هو التغير فى الجهد من 0 الى 1 او من 1 الى 0
هذا على حسب رغبتنا نحن ونحن من يحدد

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

هذا هو المبدء الاساسى اى التغير من جهد الى جهد اخر
.................................................. .......................

ناتى لكيف يعمل الكيباد
الكيباد يعمل بنفس الطريقة ولكن الاختلاف فى طريقة ربط الازرار
ببساطة ربط الازرار يكون بطريقة المصفوفة اى Matrix

اى هكذا




كما ترى فى الصورة النقط الصفراء تعبر عن الازرار

الاطراف من A الى D هى اطراف موصلة بالجهد الموجب

والاطرف من 1 الى 4 هى اطراف الدخل الى الميكرو

((هذه الصورة توضيحية فقط ويجب توصيل مقومات على اطراف الدخل الى الارضى))


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

وهذه الصورة توضح كيفية عمل المصفوفة



تامل الصورة جيدا

ستجد ان البك يغير الاطراف الخرج طرف طرف حتى يصل الى الزر المضغوط
فيعرف البك انه تم الضغط على هذا الزر

وبعد ذلك يكرر ويكرر

وكما نرى ايضا انه هناك 4 اطرف للدخل و 4 اطراف موصلة بالموجب
وهناك 16 زر
اى 4*4
وهذا يعنى ان هذا الكيباد 4*4
ولو كان 4*3 سنجد انة نقص عمود كامل من الكيباد
ولو كان 4*2 سنجد انة نقص عمودان من الكيباد
وهكذا

هكذا يعمل ويسمى الكيباد ..
__________________________________________________ _____________

2 - ما انواع الكيباد ؟؟
________________

انواع الكيباد كثيرة ولكن المبادئ واحدة دائما ..
وسوف نتحدث ان شاء الله

عن ربط الميكرو مع الكيباد العادى والذى نصنعه نحن او نشترية جاهز ..

وربط الميكرو بالكيبورد الخاص بالكمبيوتر ....

__________________________________________________ _____________

3 - كيفية استخدام اول نوع من الكيباد ؟؟

هنا سوف نتحدث عن الكيباد العادى الذى يمكن صنعه بانفسنا او نشترية جاهز

وهذه صورة لكيباد 4*4



((الكيباد له اشكال كثيرة ومتعددة كما قلت وهذا احداها))
.................................................. .................................................. ..........

ناتى للجزء العملى

اولا
هذا رابط كود ربط الكيباد مع الميكرو ومع LCD

حمل الكود والمحاكاة من هنا

http://www.4shared.com/rar/P-730YXt/Key_Pad.html
.................................................. .................................................. ..........

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

http://www.qariya.com/vb/showthread.php?t=113441

.................................................. .................................................. ..........

ثالثا
التحكم فى الكيباد له اكثر من طريقة
ولكنى ساشرح الطريقة الموجودة داخل مكتبات الميكروسى

وهم ثلاث اوامر

كود:
Keypad_Init 
Keypad_Key_Press 
Keypad_Key_Click
الامر الاول
كود:
Keypad_Init
وهو امر تعريف ربط اطراف الميكرو مع الكيباد

وهو يكتب داخل البرنامج اى بعد الداله الرئيسة
كود:
void main()
وتعريف الاطراف يكون هكذا

كود:
char keypadPort at PORTD;
وهنا جعلت البورت D يكون هو البورت الخاص بالكيباد
ويمكن تغير البورت كما نريد فقط نكتب اسم البورت مكان PORTD

وهذا الامر يكتب فى بداية البرنامج قبل الداله الرئيسة
كود:
void main()
.................................................. ..........

الامر الثانى
كود:
Keypad_Key_Press
وهو امر قراءة ازرار الكيباد
وهو يعبر عن كل زر برقم يبدء من 1 الى 16
اى عند الضغط على الزر رقم 5 مثلا يخرج هذا الامر مثلا الرقم 8 كاتعبير عنة

اى ان هذه المكتبة لا تسطيع قراءة اكثر من 16 زر

وهو لا ينتظر ان ترفع يدك من على الزر
.................................................. ...........

الامر الثالث

كود:
Keypad_Key_Click
وهو امر قراءة ازرار الكيباد
وهو يعبر عن كل زر برقم يبدء من 1 الى 16
اى عند الضغط على الزر رقم 5 مثلا يخرج هذا الامر مثلا الرقم 8 كاتعبير عنة

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

شرح الكود

كود:
char  keypadPort at PORTD;

char mm;
void main() {
Lcd_Init();
Keypad_Init();
Lcd_Cmd(_LCD_CLEAR);Lcd_Cmd(_LCD_CURSOR_OFF);

Lcd_Out(2, 5, "((mm))");
فى البداية قمت بتعريف بكتابع امر ربط الاطراف بالبورت D
كود:
char  keypadPort at PORTD
ثم قمت بتعريف متغير اسمة mm لكى احفظ فية قيمة الزرار الى هيضغط علية

ثم قمت بتعريف الاطراف للبرنامج من خلال الامر
كود:
Keypad_Init();
..........................................

كود:
while(1){
 mm=0;
while(!mm){mm = Keypad_Key_Click();}
ثم انشئت حلقة تكرارية الى ملانهاية
ثم جعلت المتغير mm = 0

ثم قلت له طلما المتغير mm يساوى 0 لا تفعل شىء الا ان تختبر ازرار الكيباد
حتى يستمر فى اختبار الكيباد حتى يتم الضغط على الزر
فاذا تم الضغط على زر من ازرار الكيباد
فسوف تصبح قيمة المتغير mm تساوى رقم يقع بين 1 الى 16 وهو يعبر عن الزر
وهذا من خلال الامر
كود:
mm = Keypad_Key_Click()
وحينها سوف يخرج وينتقل الى الاوامر التى تلية
...........................................

ثم
كود:
switch (mm) {
      
      case  1: mm = 55; break; // 1
      case  2: mm = 56; break; // 2
      case  3: mm = 57; break; // 3
      case  4: mm = 65; break; // A
      case  5: mm = 52; break; // 4
      case  6: mm = 53; break; // 5
      case  7: mm = 54; break; // 6
      case  8: mm = 66; break; // B
      case  9: mm = 49; break; // 7
      case 10: mm = 50; break; // 8
      case 11: mm = 51; break; // 9
      case 12: mm = 67; break; // C
      case 13: mm = 42; break; // *
      case 14: mm = 48; break; // 0
      case 15: mm = 35; break; // #
      case 16: mm = 68; break; // D

    }
وهذا الامر ببساطة يختبر قيمة mm كما ترى
كود:
switch (mm)
فاذا كانت تساوى من 1 الى 16 فسوف ينفذ الاوامر

انظر الى هذا مثلا

كود:
case  6: mm = 53; break;
هنا قلت له اذا كانت قيمة المتغير mm تساوى 6
اجعل قيمة mm = 53 وهى لكى احول الرقم الى اسكى كود لعرضة على الشاشة
ثم
اخرج من هذا الامر للذى يلية من خلال
كود:
break;
والباقى بالمثل
ويمكن وضع اى اوامر مكان mm = 53 مثل نور ليد او افعل او افعل ..
......................................

كود:
Lcd_Chr(1, 7, mm);
ثم عرض قيمة المتغير mm
ثم
يرجع البرنامج مرة اخرى ويكرر وهكذا
................................................ان تهى............................................... ......

اذا احتاج اى احد لاى سؤال فلا يتردد وان شاء الله انا تحت امرة

((ملحوظة)) الصور ماخوزة من موقع اجنبى ولست انا من صممها

وكل عام وانتم بخير

اعلانات

mokhtarragab
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2006
المشاركات: 62
نشاط [ mokhtarragab ]
قوة السمعة:0
قديم 15-08-2012, 12:33 PM المشاركة 2   
افتراضي


شكرا لك يا اخي وكل عام وانت بخير
لي سؤال عند حضرتك وهو لا يخص الكيباد
اذا اردت تفعيل مقاطعه التايمر زيرو وتفعيل مقاطعه ل b0 عند البورت b

اوليه المقاطعه تكون لمن
وشكرا جزيلا مقدما
والسلام عليكم ورحمه الله وبركاته

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

الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 15-08-2012, 11:17 PM المشاركة 3   
افتراضي


بسم الله الرحمن الرحيم

اخى اولية المقاطعه تكون للذى يحدث لة الشرط اولا
اذا حدث للتايمر اوفرفلو هتحصل مقاطعه واذا توافقت شرط المقاطعة B0 هتحصل مقاطعه


الصورة الرمزية هيثم العليمي
هيثم العليمي
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
الدولة: yemen
المشاركات: 236
نشاط [ هيثم العليمي ]
قوة السمعة:0
قديم 16-08-2012, 12:08 AM المشاركة 4   
افتراضي


ما شاء الله تبارك الله شرح جميل ..

اسأل الله ان يجعل هذا المجهود في ميزان حسناتك ..


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 16-08-2012, 03:47 AM المشاركة 5   
افتراضي


بسم الله الرحمن الرحيم

شكرا لك يا اخى هيثم العليمي

ان شاء الله تكون استفدت

كل عام وانت بخير


hunter27
:: مهندس جيد ::
تاريخ التسجيل: Jul 2012
الدولة: المغرب
المشاركات: 284
نشاط [ hunter27 ]
قوة السمعة:0
قديم 16-08-2012, 04:41 AM المشاركة 6   
افتراضي


كالعادة ابداع رائع

وطرح يستحق المتابعة

شكراً لك

و الله موصوع كنت انتظره منذ فترة

لدي مشكلة و هي
اني قمة ب صنع واحد و عندما اردة العمل به و جدة ان الارقان مقلوبة ههه اي مثلا مكان 1 وجدت 3 و مكان 5 وجدت 6 المهم ارقام مبعثرة

اتمنى ان يكون هنالك حل

و شكراا لك و لمواضيعك

بانتظار الجديد القادم


الصورة الرمزية funky112233
funky112233
:: عضو ذهبي ::
تاريخ التسجيل: Aug 2009
المشاركات: 666
نشاط [ funky112233 ]
قوة السمعة:92
قديم 17-08-2012, 02:26 AM المشاركة 7   
افتراضي


بسم الله الرحمن الرحيم

اخى hunter27
كل عام وانت بخير

شكرا جزيلا لك على تعليقاتك ومتبعتكك

بالنسبة لسؤالك

الامر بسيط ان شاء الله

هناك حلان لهذه المشكلة

الاول
هو تبديل الارقام المغلوطة بالارقام الصحيحة .

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

الحل الثانى
وهو

انظر الى اتوصيلات فى هذه الصورة



زى مانت شايف كدة الطرف الاول من الخرج الى هو A
مع طرف الاول من اطراف الدخل الى هو 1

المكتبة بتاعت الميكروسى بتعبر عن الزرار دة ب 1
والزر الثانى هو من الاطراف الاخر المجاورة وهكذا

ولو انت موصل نفس التوصيلة دى
يبقى كل زرار من ال 16 زرار جانبة الرقم بتاعة فى البرمجة

يعنى الزرار الى جانبة الرقم 1 هو هو فى البرمجة هيكون ب1
وهكذا

يعنى المكتبة بترجع 16 زرار زى مانا قايل
والصورة دى او التوصيلة دى بتبينلك مكان كل زرار
يعنى توافق بين البرمجة والهاردوير

لو الفكرة موضحتش عرفنى
وان شاء الله اوضحهالك اكثر


الصورة الرمزية هيثم العليمي
هيثم العليمي
:: مهندس جيد ::
تاريخ التسجيل: Mar 2012
الدولة: yemen
المشاركات: 236
نشاط [ هيثم العليمي ]
قوة السمعة:0
قديم 18-08-2012, 12:03 AM المشاركة 8   
افتراضي


بسم الله الرحمن الرحيم

شكرا لك يا اخى هيثم العليمي

ان شاء الله تكون استفدت

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

إضافة رد

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

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

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


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

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