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

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

ميدو تانجو
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2014
المشاركات: 84
نشاط [ ميدو تانجو ]
قوة السمعة:0
قديم 06-11-2015, 04:30 AM المشاركة 1   
ha مساعدة في التطبيق العملي على البيك Twitter FaceBook Google+



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

في برنامجي هذا احاول ان ابرمج البيك 16f877a بحيث عند الضغط على زر معين في الكيباد ينير الليد الأول وعند الضغط على زر اخر ينير الليد الثاني وعند الضغط على الزر الثالث يضيء الليد الثالث وعند الضغط على اي زر اخر يضيء الثلاثة ليدات معا وطبقت البرنامج على بروتس وعمل تماما لكن عند التطبيق العملي الليدات تضيء عشوائيا حتى بدون الضغط على اي زر في الكيباد ولا اعرف ما السبب

علما باني موصل mclr مضبوط كريستالة 8 ميجا ومكثفين عليها 22 ولكن لا اعرف ما سبب المشكلة مع ان التطبيق العملي على الفلاشر العادي يعمل تمام ولكن كود الكيباد هو الذي لا يعمل بطريقة صحيحة

الكود كالتالي :

char keypadport at portb ;
short kp;
short x=0;
void main() {
keypad_init ();
trisc=0;
portc.b0=0;
portc.b1=0;
portc.b2=0;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);

loop:

do
{
kp=keypad_key_click();

}
while(kp==0);

if(kp==1)
{
portc.b0=1 ;
delay_ms(500);
portc.b0=0 ;
delay_ms(500);
kp=0;
}
if(kp==2)
{
portc.b1=1 ;
delay_ms(500);
portc.b1=0 ;
delay_ms(500);
kp=0;
}
if(kp==3)
{
portc.b2=1 ;
delay_ms(500);
portc.b2=0 ;
delay_ms(500);
kp=0;
}

if(kp!=0)
{
portc.b0=1 ;
portc.b1=1 ;
portc.b2=1 ;
delay_ms(1000);
portc.b0=0 ;
portc.b1=0 ;
portc.b2=0 ;
delay_ms(500);
kp=0;
}
goto loop;


}

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

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:409
قديم 06-11-2015, 05:43 AM المشاركة 2   
افتراضي


أطراف الدخول للكى باد يجب أن توصل بمقاومات 10ك أو حول هذه القيمة (القيمة ليست حرجة) توصل الطرف بالأرضى حتى لا يلتقط من الجسد أو المحيطات إشارة كاذبة

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

الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 06-11-2015, 07:16 AM المشاركة 3   
افتراضي


ارفع المخطط من فضلك

حيدر علاج حسن

ميدو تانجو
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2014
المشاركات: 84
نشاط [ ميدو تانجو ]
قوة السمعة:0
قديم 06-11-2015, 10:33 AM المشاركة 4   
افتراضي


أطراف الدخول للكى باد يجب أن توصل بمقاومات 10ك أو حول هذه القيمة (القيمة ليست حرجة) توصل الطرف بالأرضى حتى لا يلتقط من الجسد أو المحيطات إشارة كاذبة

اشكرك اخي الأستاذ ماجد ويشرفني ان تقوم بالرد على سؤالي وبالفعل انا موصل الأعمدة في الكيباد على مقاومات 10ك ولكن للأسف مشكلتي كما ذكرت


الصورة الرمزية سعيد قادر
سعيد قادر
:: عضو ذهبي ::
تاريخ التسجيل: Apr 2009
الدولة: العراق/ كوردستان
المشاركات: 2,916
نشاط [ سعيد قادر ]
قوة السمعة:152
قديم 06-11-2015, 10:41 AM المشاركة 5   
افتراضي


حتى يضهر الكود بشكل سليم ومفهوم

كود:
char keypadport at portb ;
short kp;
short x=0;
void main() {
keypad_init ();
trisc=0;
portc.b0=0;
portc.b1=0;
portc.b2=0;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);

loop:

do
{
kp=keypad_key_click();

}
while(kp==0);

if(kp==1)
{
portc.b0=1 ;
delay_ms(500);
portc.b0=0 ;
delay_ms(500);
kp=0;
}
if(kp==2)
{
portc.b1=1 ;
delay_ms(500);
portc.b1=0 ;
delay_ms(500);
kp=0;
}
if(kp==3)
{
portc.b2=1 ;
delay_ms(500);
portc.b2=0 ;
delay_ms(500);
kp=0;
}

if(kp!=0)
{
portc.b0=1 ;
portc.b1=1 ;
portc.b2=1 ;
delay_ms(1000);
portc.b0=0 ;
portc.b1=0 ;
portc.b2=0 ;
delay_ms(500);
kp=0;
}
goto loop;


}

احصائية الشكر والاعجاب - 3 شكراً, 0 عدم اعجاب, 1 اعجاب
شكراً حيدر علاج حسن, najee22, ahmed idris ( شكر العضو على هذه المشاركة )
اعجاب ahmed idris ( أعجبته المشاركة )

ميدو تانجو
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2014
المشاركات: 84
نشاط [ ميدو تانجو ]
قوة السمعة:0
قديم 06-11-2015, 11:04 AM المشاركة 6   
افتراضي


شكرا على اهتمامك بسؤالي أستاذي حيدر
بخصوص المخطط انا طبقت بدون مخطط على بوردة قديمة عندي وهذه صورها




ارجو ان تكون واضحة الكيباد متصلة بالبنات من b0 الى b7 والتوصيل سليم بعد ما تأكدت أكثر من مرة
واي استفسار عن الصور لا تتردد في سؤالي عنه ولا تبخل علي بشيء من علمك .. جزاك الله خيرا


التعديل الأخير تم بواسطة : ميدو تانجو بتاريخ 06-11-2015 الساعة 11:10 AM

ميدو تانجو
:: مهندس متواجد ::
تاريخ التسجيل: Jan 2014
المشاركات: 84
نشاط [ ميدو تانجو ]
قوة السمعة:0
قديم 06-11-2015, 11:07 AM المشاركة 7   
افتراضي


حتى يضهر الكود بشكل سليم ومفهوم

كود:
char keypadport at portb ;
short kp;
short x=0;
void main() {
keypad_init ();
trisc=0;
portc.b0=0;
portc.b1=0;
portc.b2=0;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);
portc=0b00000111;
delay_ms(500);
portc=0b00000000;
delay_ms(500);

loop:

do
{
kp=keypad_key_click();

}
while(kp==0);

if(kp==1)
{
portc.b0=1 ;
delay_ms(500);
portc.b0=0 ;
delay_ms(500);
kp=0;
}
if(kp==2)
{
portc.b1=1 ;
delay_ms(500);
portc.b1=0 ;
delay_ms(500);
kp=0;
}
if(kp==3)
{
portc.b2=1 ;
delay_ms(500);
portc.b2=0 ;
delay_ms(500);
kp=0;
}

if(kp!=0)
{
portc.b0=1 ;
portc.b1=1 ;
portc.b2=1 ;
delay_ms(1000);
portc.b0=0 ;
portc.b1=0 ;
portc.b2=0 ;
delay_ms(500);
kp=0;
}
goto loop;


}
تمام استاذ سعيد جزاك الله خيرا فانا لم استطع ان انسقه كما فعلت انت


الصورة الرمزية حيدر علاج حسن
حيدر علاج حسن
:: مشرف منتدى الهندسة الكهربائية ::
تاريخ التسجيل: Mar 2005
الدولة: IRAQ
المشاركات: 10,061
نشاط [ حيدر علاج حسن ]
قوة السمعة:395
قديم 06-11-2015, 12:06 PM المشاركة 8   
افتراضي


على الاغلب هي مجرد تشويش على البك .
اوصل مكثف 1 مايكرو على دخل منظم الجهد و اخر على خرجه
قلل التردد الى 4 ميكا واجعل الكرستالة اقرب ما يكون الى البك

حيدر علاج حسن
إضافة رد

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

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

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


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

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