العودة   شباب لك:: شباب كل العمر > ::: عــــلم لك ::: > مهنة تبحث عنك > الالكترونيات
التسجيل الأسئلة الشائعة قائمة الأعضاء التقويم بحث مشاركات اليوم اجعل المشاركات مقروءة


استخدام المعالج كمفكك للوحة الارقام باستخدام لغة c

الالكترونيات


رد
 
أدوات الموضوع طرق عرض الموضوع
  #1 (permalink)  
قديم 22-06-2003, 13:21
صورة رمزية فاعل خير
فاعل خير فاعل خير غير متواجد حالياً
الفكر الالكتروني الثاقب
 
تاريخ التسجيل: 07 02
الإقامة: دمشق
المشاركات: 220
فاعل خير
افتراضي استخدام المعالج كمفكك للوحة الارقام باستخدام لغة c

Generic keypad scan driver



///////////////////////////////////////////////////////////////////////////
//// KBD.C ////
//// Generic keypad scan driver ////
//// ////
//// kbd_init() Must be called before any other function. ////
//// ////
//// c = kbd_getc(c) Will return a key value if pressed or /0 if not ////
//// This function should be called frequently so as ////
//// not to miss a key press. ////
//// ////
//// (C) Copyright 1996,1997 Custom Computer Services ////
//// ////
///////////////////////////////////////////////////////////////////////////

////////////////// The following defines the keypad layout on port B
#byte kbd = 6 // Keypad is connected to port B (address 6)

//Keypad connection: (for example column 0 is B2)
// Bx:


#ifdef blue_keypad ///////////////////////////////////// For the blue keypad
#define COL0 (1 << 2)
#define COL1 (1 << 3)
#define COL2 (1 << 6)

#define ROW0 (1 << 4)
#define ROW1 (1 << 7)
#define ROW2 (1 << 1)
#define ROW3 (1 << 5)

#else ////////////////////////////////////////////////// For my keypad
#define COL0 (1 << 6)
#define COL1 (1 << 2)
#define COL2 (1 << 3)

#define ROW0 (1 << 4)
#define ROW1 (1 << 5)
#define ROW2 (1 << 1)
#define ROW3 (1 << 7)

#endif

#define ALL_ROWS (ROW0|ROW1|ROW2|ROW3)
#define ALL_PINS (ALL_ROWS|COL0|COL1|COL2)

// Keypad layout:
char const KEYS[4][3] = {{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}};

#define KBD_DEBOUNCE_FACTOR 33 // Set this number to apx n/333 where
// n is the number of times you expect
// to call kbd_getc each second



void kbd_init() {
#ifdef __PCM__
port_b_pullups(true); // If not PCM be sure to use external pullups
#endif
}


char kbd_getc( ) {
static byte kbd_call_count;
static short int kbd_down;
static char last_key;
static byte col;

byte kchar;
byte row;

kchar='\0';
if(++kbd_call_count>KBD_DEBOUNCE_FACTOR) {
switch (col) {
case 0 : set_tris_b(ALL_PINS&~COL0);
kbd=~COL0&ALL_PINS;
break;
case 1 : set_tris_b(ALL_PINS&~COL1);
kbd=~COL1&ALL_PINS;
break;
case 2 : set_tris_b(ALL_PINS&~COL2);
kbd=~COL2&ALL_PINS;
break;
}

if(kbd_down) {
if((kbd & (ALL_ROWS))==(ALL_ROWS)) {
kbd_down=false;
kchar=last_key;
last_key='\0';
}
} else {
if((kbd & (ALL_ROWS))!=(ALL_ROWS)) {
if((kbd & ROW0)==0)
row=0;
else if((kbd & ROW1)==0)
row=1;
else if((kbd & ROW2)==0)
row=2;
else if((kbd & ROW3)==0)
row=3;
last_key =KEYS[row][col];
kbd_down = true;
} else {
++col;
if(col==3)
col=0;
}
}
kbd_call_count=0;
}
set_tris_b(ALL_PINS);
return(kchar);
}

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


ارجو الفائدة لكل المهتمين
__________________
ابحث عن الحقيقة لان الحقيقة لاتبحث عن احد

الهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علما

لايؤمن احدكم حتى يحب لاخيه ما يحب لنفسه
رد باقتباس
إعلانات - مواقع مفيدة
الراعي الرسمي
رقم العضوية : 2
محل السكن: المنتدى
آخر تواجد: اليوم

  #2 (permalink)  
قديم 22-06-2003, 22:21
osama_brd osama_brd غير متواجد حالياً
إنسان
 
تاريخ التسجيل: 04 02
الإقامة: دمشق
المشاركات: 4,756
osama_brd is on a distinguished road
افتراضي

أشكرك أخي فاعل خير على مجهوداتك الدائمة وأتمنى أن تتحفنا بهذه الأمور دائماً

أسامة
__________________
لمن يريد أن يتواصل معي يجدني على بريدي :

osama@shamyyat.com

أسامة
رد باقتباس
  #3 (permalink)  
قديم 22-06-2003, 23:16
صورة رمزية yahyato
yahyato yahyato غير متواجد حالياً
هل ترانا نلتقي .......
 
تاريخ التسجيل: 02 03
المشاركات: 587
yahyato
إرسال رسالة عبر مراسل MSN إلى yahyato إرسال رسالة عبر مراسل Yahoo إلى yahyato
افتراضي

السلام عليكم
أخي الحقيقة درسناها بالجامعة بس شكرا للتوضيح
بس في طريقة أسهل بالفيجوال
yahyatoo
رد باقتباس
  #4 (permalink)  
قديم 23-06-2003, 10:15
صورة رمزية فاعل خير
فاعل خير فاعل خير غير متواجد حالياً
الفكر الالكتروني الثاقب
 
تاريخ التسجيل: 07 02
الإقامة: دمشق
المشاركات: 220
فاعل خير
افتراضي اعزائي

اشكر الاخ اسامة على رده واقول لاشكر على واجب

اما كون البرمجة اسهل بالفيجول فقد نسي عزيزي القارئ انني اعمل على برمجة معالج بواسطة لغة خاصة به

ولا يوجد لغة فيجول لبرمجة المعالجات

مع وافر التحية لكل المشاركين
__________________
ابحث عن الحقيقة لان الحقيقة لاتبحث عن احد

الهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علما

لايؤمن احدكم حتى يحب لاخيه ما يحب لنفسه
رد باقتباس
  #5 (permalink)  
قديم 23-06-2003, 11:29
syriana syriana غير متواجد حالياً
شبابلكاوي نشيط
 
تاريخ التسجيل: 05 03
المشاركات: 49
syriana
افتراضي

شكرا لك كثيرا على هذه المعلومات وادعوك للمشاركة في منتدى متخصص بالبرمجة وعلوم الكومبيوترقي الموقع التالي :
www.bccline.com/phpBB2

jpdhjd g; ?????????
رد باقتباس
  #6 (permalink)  
قديم 23-06-2003, 15:29
صورة رمزية yahyato
yahyato yahyato غير متواجد حالياً
هل ترانا نلتقي .......
 
تاريخ التسجيل: 02 03
المشاركات: 587
yahyato
إرسال رسالة عبر مراسل MSN إلى yahyato إرسال رسالة عبر مراسل Yahoo إلى yahyato
افتراضي

أخي الكريم
أن تقوم بعملية ترجمة عن طريق صناعة مترجم ولا
ويمكنك أن تكتب بلغة الدلفي شئ قابل لبرمجة المعالجات
yahyatoo
رد باقتباس
  #7 (permalink)  
قديم 23-06-2003, 17:03
صورة رمزية مايكروشيب
مايكروشيب مايكروشيب غير متواجد حالياً
مبرمج هاردوير
 
تاريخ التسجيل: 10 02
الإقامة: حلب
المشاركات: 124
مايكروشيب
افتراضي اشتقنا لمواضيع إلكترونية ... و التقصير من أنفسنا جميعاً و أولهم أنا

سلام لكل الشبابلكية الإلكترونجية

مشكور معلمي على هذا الكود

طبعاً التعقيب اللي بحب ضيفوا(من بعد إذن أخي فاعل خير طبعاً)

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

طبعاً كل مفتاح يحتاج لأحد المداخل ، و من أجل تحديد محور كلامنابشكل أكبر
لنتحدث عن المايكروكونترولر MicroController الذي يمثل أبسط و أحلى المنظومات الحاسوبية الشاملة المجموعة في شريحة متكاملة واحدة ...
المهم : إذا أردت على سبيل المثال وضع إثني عشرة مفتاح ، و كل واحد يقوم بوظيفة ما ------> لذا سنحتاج إلى إثني عشرة مدخلاً من مداخل المايكرو ، و هذا ما يسمى في عالم التطبيقات الإلكترونية بتضييع الإمكانات و الموارد ، يعني حرام كل هل المداخل !!!

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

و الآن وصلنا للفكرة الأساسية التي تم طرح حل لها و هو روتين مسح .

ربما نتسائل ، لكن المايكرو يتم برمجته بالأسمبلي ، فلماذا السي ؟؟
طبعاً ، ظهر الآن Compilers تأخذ البرنامج المكتوب باللغة الراقية نوعاً ما و هي السي في مثالنا (يوجد بعض منها يقبل Basic ) ، ثم بقوم تحويله إلى تعليمات بلغة المايكرو .
طبعاً أنا لم أستعمل هذا الأسلوب بعد ، حيث أنني شخصياً أحب استعمال الأسمبلي رغم أنني يجب يوماً ما أن أتحول إلى الأسلوب المشروح سابقاً .

اعذروني إن أطلت ، لكن أحببت أن أوضح الفكرة للمبتدئين في هذا المجال
و تحياتي مرة أخرى للجميع


صديقكم مايكروشيب
رد باقتباس
  #8 (permalink)  
قديم 24-06-2003, 19:59
صورة رمزية فاعل خير
فاعل خير فاعل خير غير متواجد حالياً
الفكر الالكتروني الثاقب
 
تاريخ التسجيل: 07 02
الإقامة: دمشق
المشاركات: 220
فاعل خير
افتراضي شكرا

اشكر جميع من قرأ واهتم بالجواب حول هذا الموضوع

واخص بالشكر مايكروشيب على كل ايضاحاته التي كانت بمحلها

راجيا ان نكون دوما يدا واحدة للاحاطة بكل ما يهم الموضوع لجعله كاملا

مع وافر التحية لكل قراء قسم الكترونيات
__________________
ابحث عن الحقيقة لان الحقيقة لاتبحث عن احد

الهم علمنا ما ينفعنا وانفعنا بما علمتنا وزدنا علما

لايؤمن احدكم حتى يحب لاخيه ما يحب لنفسه
رد باقتباس
رد


عدد الأعضاء الحاليين الذين يشاهدون محتوى هذا الموضوع : 1 ( 0 عضو و 1 ضيوف )
 
أدوات الموضوع
طرق عرض الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع جديدة
لا تستطيع كتابة ردود جديدة
لا تستطيع إرفاق مرفقات في مشاركاتك
لا تستطيع تحرير مشاركاتك

رمز [IMG] متاحة
رمز HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are معطلة
الانتقال إلى


حسب توقيت جرينتش +2 الساعة الآن : 07:35

 

Powered by: vBulletin Version 3.6.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Syria Nobles 1998-2009