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

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

badr nahed
:: مهندس ::
تاريخ التسجيل: Sep 2015
المشاركات: 23
نشاط [ badr nahed ]
قوة السمعة:0
قديم 16-01-2016, 04:25 PM المشاركة 1   
ha بخصوص كيباد 4x3 و7-seg Twitter FaceBook Google+



مشكلتي مع لوحة المفاتيح 4x3
ربطت لوحة المفاتيح بالميكروكنترولر وربط هدا الاخير ب 7-segmat واحدة تظهر حت تسعة والاخر كدلك , والمجموع 99
.
اريد من هدا المشروع عند ضغظ على احد ارقام الكيباد مثلا الرقم 3 يظهر على الشاشة الموجودة على اليمين ويكون امر يخبر pic في حالة ظغط مرة الاولة ان يختبر الكيباد مرة تانية لوقت معين.
_في حالة عدم الضغظ مرة اخرى في دلك الوقت المعين يبقى الرقم 3 على الشاشة الموجودة على اليمين ويظهر صفر في التي توجد على اليسار.
_اما ادا تم ضغط مرة تانية تابعة للاولة مثلا ضغط على الرقم 3 تم اتبعته الرقم 2 يجب ان يظهر الرقم 3 تلاتة في الشاشة على اليسار والرقم 2 يظهر على الشاشة على اليمين وبالتالي يظهر الرقم 32
:
هدا كود الدي اتمرن عليه لكن لم اصل لنتيجة التي اريد:
كود:
char kp;
char keypadport at portd;

void main() {

 trisb=0x00;
 portb=0;
 trisc=0x00;
 portc=0;
 for(;;){
 kp=keypad_key_click();
 switch (kp) {
 case 1: portb=1; break;
 case 2: portb=4; break;
 case 3: portb=7; break;
 case 4: portb=10; break;
 case 5: portb=2; break;
 case 6: portb=5; break;
 case 7: portb=8; break;
 case 8: portb=0; break;
 case 9: portb=3; break;
 case 10: portb=6; break;
 case 11: portb=9; break;
 case 12: portb=11; break;
} }
}
وهده صورة من برتوس


التعديل الأخير تم بواسطة : badr nahed بتاريخ 16-01-2016 الساعة 05:23 PM
اعلانات

magdy_3
:: مهندس متميز ::
تاريخ التسجيل: Aug 2006
الدولة: Philippines
المشاركات: 343
نشاط [ magdy_3 ]
قوة السمعة:0
قديم 16-01-2016, 08:43 PM المشاركة 2   
افتراضي


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

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

badr nahed
:: مهندس ::
تاريخ التسجيل: Sep 2015
المشاركات: 23
نشاط [ badr nahed ]
قوة السمعة:0
قديم 16-01-2016, 09:24 PM المشاركة 3   
افتراضي


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


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 18-01-2016, 02:21 PM المشاركة 4   
افتراضي


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

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

اخي كودك سليم جميل هنعدل عليه تعديل صغير خالص :


1- نزود صفر فى الاول
كود:
  char kp = 0 ;
2- نضع دالة المفتاح داخل دوارة للانتظار حتى يتم الضغط
كود:
   
 while(!kb) {
                 kp=keypad_key_click();  // check and wait for click
             }
3- نزود السطر التالي
كود:
  portc = portb  ;  // moving number from right to left
3-

ليكون البرنامج كالتالى :
كود:
  
char kp=0 ; char keypadport at portd; void main() { trisb=0x00; portb=0; trisc=0x00; portc=0; for(;;){ while(!kb) { kp=keypad_key_click(); // check and wait for click } portc = portb ; // moving number from right to left switch (kp) { case 1: portb=1; break; case 2: portb=4; break; case 3: portb=7; break; case 4: portb=10; break; case 5: portb=2; break; case 6: portb=5; break; case 7: portb=8; break; case 8: portb=0; break; case 9: portb=3; break; case 10: portb=6; break; case 11: portb=9; break; case 12: portb=11; break; } } }
ملاحظة مهممممممممممة :
يجب توصيل مقاومات بين دخل ال key-pad و بين الارض gnd

و الله المستعان و الموفق
و لينصرن الله من ينصره


badr nahed
:: مهندس ::
تاريخ التسجيل: Sep 2015
المشاركات: 23
نشاط [ badr nahed ]
قوة السمعة:0
قديم 18-01-2016, 08:00 PM المشاركة 5   
افتراضي


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


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 19-01-2016, 07:16 AM المشاركة 6   
افتراضي


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

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

عفوا تعديل صغير و تم تجربته على الميكرو بدون بروتيوس اذا لم يعمل على بروتيوس ارجو رفع ملف البروتيوس لتجربته مع البرنامج .

كود:
 switch (kp) {

 case 1: portb=1; break;
 case 2: portb=4; break;
 case 3: portb=7; break;
 case 4: portb=10; break;
 case 5: portb=2; break;
 case 6: portb=5; break;
 case 7: portb=8; break;
 case 8: portb=0; break;
 case 9: portb=3; break;
 case 10: portb=6; break;
 case 11: portb=9; break;
 case 12: portb=11; break;
            }
 kp=0 ;
     }
 }

و الله المستعان و الموفق
و لينصرن الله من ينصره




badr nahed
:: مهندس ::
تاريخ التسجيل: Sep 2015
المشاركات: 23
نشاط [ badr nahed ]
قوة السمعة:0
قديم 19-01-2016, 04:04 PM المشاركة 7   
افتراضي


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

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

عفوا تعديل صغير و تم تجربته على الميكرو بدون بروتيوس اذا لم يعمل على بروتيوس ارجو رفع ملف البروتيوس لتجربته مع البرنامج .

كود:
 switch (kp) {

 case 1: portb=1; break;
 case 2: portb=4; break;
 case 3: portb=7; break;
 case 4: portb=10; break;
 case 5: portb=2; break;
 case 6: portb=5; break;
 case 7: portb=8; break;
 case 8: portb=0; break;
 case 9: portb=3; break;
 case 10: portb=6; break;
 case 11: portb=9; break;
 case 12: portb=11; break;
            }
 kp=0 ;
     }
 }

و الله المستعان و الموفق
و لينصرن الله من ينصره


شكرا لك اخي مع دلك لا اظن انه سيشتغل بطريقة المطلوبة لقد اجتهدت وبفضل الله وفقت في كتابة كود يعمل بطريقة التي اريد وهو شغال على البروتوس بطريقة رائعة المشكل هو انه طويل نوعا ما وانا اريد ان ادمجه مع كود اخر المهم سارفع لك الملف به ملفات بروتوس وميكروسي حاول لو تستطيع اختصار الكود لي جزاك الله على طيبتك
http://www.mediafire.com/download/o3...with+7-seg.rar


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 19-01-2016, 06:10 PM المشاركة 8   
win الله ينور


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

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

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

مع ملاحظة عند تنفيذه على الواقع لازم تضع 10 ك اوم بين بورت portd من الرجل 0 حتى 3 , توصلهم بالارضي , واذا وصلتهم فى البروتيوس ستجد البروتيوس يهنج , عندها قم بالضغط على المقاومة و افتح نافذة الخصائص و منها غير خاصية analog الى digital ستجده يعمل بكفاءة .

كود:
char kp=0 ;
char keypadport at portd;
void main() {
 trisb=0x00;
 portb=0;
 trisc=0x00;
 portc=0;
 for(;;){
  while(!kp) {
                 kp=keypad_key_click();  // check and wait for click
             }

portc = portb  ;  // moving number from right to left

 switch (kp) {

 case 1: portb=1; break;
 case 2: portb=4; break;
 case 3: portb=7; break;
 case 4: portb=10; break;
 case 5: portb=2; break;
 case 6: portb=5; break;
 case 7: portb=8; break;
 case 8: portb=0; break;
 case 9: portb=3; break;
 case 10: portb=6; break;
 case 11: portb=9; break;
 case 12: portb=0;portc=0; break;
            }
 kp=0;
     }
 }
و لو عندك اسئلة تحت امرك ربنا يوفقك
و الله المستعان و الموفق
و لينصرن الله من ينصره



احصائية الشكر والاعجاب - 0 شكراً, 0 عدم اعجاب, 1 اعجاب
اعجاب عبدالله حجازى ( أعجبته المشاركة )
إضافة رد

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

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

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


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

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