مرحباً بك بمدونتنا

الدرس السابع - كورس الميكوركنترولر - Keypads

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

النهاردة هنتكلم عن  ربط الكى باد بالميكور بيك
هنتكلم فى 3 حاجات
1- فكرة عمل الكى باد
2- انواع الكى باد
3- شرح استخدمها فى الميكرو و تنفيذ مشروع
.......................................................................................
1- فكرة عملها ؟
____________________

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

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

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

 و دى صورة اخرى توضح ربط الكى باد بالبيك




_______________________________________________________________

2 -
ما انواع الكيباد ؟؟
________________
للكى باد انواع كثيرة جدا .. و لكن يبقى فكره العمل ثابته

تختلف الانواع حسب عدد العمود و الصفوف الموجوده فى البيك
فهناك الــ 3*4   - 4*4 و هكذا ...


_______________________________________________________________

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

 

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

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


 


---------------------------------------------------------------------------------------
تمام  نروح بقى  نشوف بنشغل الكى باد مع الميكرو كنترولر  ازاى ؟؟

هنشرح من خلال المشروع دا ::



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

و هم 3 اوامر فقط لا غير ::

كود:
Keypad_Init
Keypad_Key_Press
Keypad_Key_Click
الامر الاول
كود:
Keypad_Init
دا امر لتشغيل ال كى باد .. او تفعيل المكتبة الخاصة بيها فى الميكرو سى
و دا بيكتب بعد داله الـــ
كود:
void main()
و لكن تعريف اطراف الكى باد  الموصله عالبيك بيكون بالامر التالى
و طبعا بيكتب فى  مكان التعريفات  يعنى قبل ال voidmain
كود:
char keypadPort at PORTD;
وهنا انا موصل على  البورت D يكون هو البورت الخاص بالكيباد
ويمكن تغير البورت و تقدر تغيره زى ما تحب  نكتب اسم البورت مكان PORTD



الامر الثانى
كود:
Keypad_Key_Press
الامر دا يستخدم لقراءة قييم ازار الكى باد
و لكنه لا يتعامل مع اكتر من 16 زر
ولا ينتظر انت ترفع يدك عن الزر


الامر الثالث
كود:
Keypad_Key_Click
هذا الامر له نفس استخدام السابق و لكن الاختلاف انه ينتظر انت ترفع يدك
و ان تم الضغط على اكثر من زر ف نفس الوقت
لن يعرض شىء حتى ترفع يدك و ترجع الازار الى وضعها الطبيعى

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

شرح الكود
كود:
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
ثم يرجع البرنامج مرة اخرى ويكرر وهكذا

للتحميل الكود و التصميم <  
http://adf.ly/tXyYc

................................................انتهى.....................................................




مقالات ذات صلة