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

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

A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:0
قديم 31-12-2014, 03:50 PM المشاركة 1   
ha طلب بسيط ان شاء الله Twitter FaceBook Google+



السلام عليكم و رحمة الله و بركاته
لو سمحتم اخواني اريد دائرة مايكروكونترولر تتكون من 4 مفاتيح و 4 ليدات بحيث تكون الكبسات مقسمه بالاسماء التاليه:
A B C D
حيث انه عندما اضغط على الكبسه A يضيئ ليد1 و عندما اضغط على الكبسه B يضيئ لد2 و في نفس الوقت ينطفئ لد1 والعكس صحيح.

كذلك الامر عندما اضغط على كبسه C يضيئ ليد3 وعندما اضغط على كبسهDيضيئ لد4 ولكن ينطفئ لد3(كما عملنا مع A and B)(ولكن لا علاقه ل C&D ب A&B)

ملاحظه مهمه:اريد ان تكون القناتان منفصلتان عن بعضهما ..بمعنى اخر ان A+B
مستقلتان عن C+D .......
ارجوا ان يكون كلامي واضح اخواني ..ولكم جزيل الشكر..
المتحكم المطلوب هو 16F628A
(ولو كان بالامكان اريد تشغيل كل من الليدات الاربع مدة 15 ثانيه و بعد ذلك تنطفئ)

اعلانات

abdewidad
:: مهندس متميز ::
تاريخ التسجيل: Dec 2013
الدولة: casablanca
المشاركات: 712
نشاط [ abdewidad ]
قوة السمعة:0
قديم 31-12-2014, 05:19 PM المشاركة 2   
افتراضي


كود:
void main() {
trisa=15;
porta=0;
trisb=0;
portb=0;
portb=15;
delay_ms(15000);
portb=0;
for(;;){
if(ra0_bit==1) rb0_bit=1;
if(ra1_bit==1) {rb1_bit=1;rb0_bit=0;}
if(ra2_bit==1) rb2_bit=1;
if(ra3_bit==1) {rb3_bit=1;rb2_bit=0;}
}

}

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

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


و هذه ايضا ملفات الكود بالميكروسي و المحاكاة
http://www.4shared.com/rar/dOtx6T8pba/four_leds.html


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:0
قديم 01-01-2015, 06:15 AM المشاركة 4   
x5


بارك الله فيكم اخواني الكرام اخي الرائع حيدر و اخي الطيب abdewidad جاري التنزيل و سأخبركم بالنتيجه ان شاء الله و اذا كان هناك اي ملاحظه
جزاكم الله كل خير و جعله في ميزان حسناتكم


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:0
قديم 01-01-2015, 10:08 AM المشاركة 5   
sun


اخي حيدر من بعد اذنك ...الكود السابق كما اريد بارك الله فيك ولكن اخي لي ملاحظتين بسيتطين :الاولى و هو انني اريد ان تكون المقاومات pull down (عكس الرسمه اللي حضرتك عملتها) وهذا قمت بعمله و الحمد لله كذلك قمت بالتعديل على الكود حيث انني وضعت بدل الصفر واحد هكذا:

if(porta.f0==1){portb.f0=1;portb.f1=0;}
if(porta.f1==1){portb.f0=0;portb.f1=1;}
if(porta.f2==1){portb.f2=1;portb.f3=0;}
if(porta.f3==1){portb.f2=0;portb.f3=1;}

وكانت النتيجه كما اريد و الحمد لله........

اما المطلوب الثاني اخي و هو انني اريد ان يطفئ كل لد تمت اضائته بعد 15 ثانيه و ليس كما عملت حضرتك انو تطفئ كل اللدات في وقت واحد بعد 15 ثانيه في بداية التشغيل ....كذلك الامر نفس الطريقه االسابقه اي انه A&B لوحدهم(يلغو بعض) و C&D لوحدهم(يلغو بعض) فقط....

و لو سمحت اخي اذا ما فيها ثقله تشرحلي الاوامرالتاليه:
{cmcon=7;(هذه اعرفها لاننا نريد ان نحول الى دجتال (حسب معلوماتي)

trisa=15
(هنا اخي لماذا قمنا بجعل الدخل 15 و ليس 1111 او 0XFF مثلا و هل لو عملنا كذلك يكون الشغل مزبوط؟؟

trisb=0; هذا اعرفه و هو لتحديد البورت b على انه خرج

;portb=15 و هنا اخي نفس السؤال لماذا وضعنا الرقم 15 ؟؟ ولم نضع 0b1111 او 0xff و اذا كتبنا كذلك هل يكون الشغل صحيح؟؟

delay_ms(15000); هذا امر تاخير


portb=0; هنا اعتقد انه نريد الن تكون اللدات مطفئه في بداية تشغيل الداره ..اليس كذلك ؟؟

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


A-M-S
:: مهندس جيد ::
تاريخ التسجيل: May 2014
المشاركات: 242
نشاط [ A-M-S ]
قوة السمعة:0
قديم 01-01-2015, 10:11 AM المشاركة 6   
sun


كود:
void main() {
trisa=15;
porta=0;
trisb=0;
portb=0;
portb=15;
delay_ms(15000);
portb=0;
for(;;){
if(ra0_bit==1) rb0_bit=1;
if(ra1_bit==1) {rb1_bit=1;rb0_bit=0;}
if(ra2_bit==1) rb2_bit=1;
if(ra3_bit==1) {rb3_bit=1;rb2_bit=0;}
}

}
مجهود تشكر عليه اخي و لكن لي نفس الملاحظات اللي كتبتها للاخ حيدر بارك الله فيكما


greenhonet
:: مهندس ::
تاريخ التسجيل: Dec 2014
المشاركات: 5
نشاط [ greenhonet ]
قوة السمعة:0
قديم 01-01-2015, 04:14 PM المشاركة 7   
افتراضي


كود:
unsigned int x; unsigned char y; //4MHz crystal void interrupt(){ x++; if(x==1000){y++;x=0;} if(y==5){ PORTB=0; y=0; } tmr0=131; INTCON.T0IF = 0; } void main() { intcon=0b10100000; option_reg=0x03; tmr0=131; trisa=15; porta=0; trisb=0; portb=0; while(1){ if(ra0_bit==1) {y=0;rb0_bit=1;rb1_bit=0;} if(ra1_bit==1) {y=0;rb1_bit=1;rb0_bit=0;} if(ra2_bit==1) {y=0;rb2_bit=1;rb3_bit=0} if(ra3_bit==1) {y=0;rb3_bit=1;rb2_bit=0;} } }


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


اخي حيدر من بعد اذنك ...الكود السابق كما اريد بارك الله فيك ولكن اخي لي ملاحظتين بسيتطين :الاولى و هو انني اريد ان تكون المقاومات pull down (عكس الرسمه اللي حضرتك عملتها) وهذا قمت بعمله و الحمد لله كذلك قمت بالتعديل على الكود حيث انني وضعت بدل الصفر واحد هكذا:

if(porta.f0==1){portb.f0=1;portb.f1=0;}
if(porta.f1==1){portb.f0=0;portb.f1=1;}
if(porta.f2==1){portb.f2=1;portb.f3=0;}
if(porta.f3==1){portb.f2=0;portb.f3=1;}

وكانت النتيجه كما اريد و الحمد لله........

اما المطلوب الثاني اخي و هو انني اريد ان يطفئ كل لد تمت اضائته بعد 15 ثانيه و ليس كما عملت حضرتك انو تطفئ كل اللدات في وقت واحد بعد 15 ثانيه في بداية التشغيل ....كذلك الامر نفس الطريقه االسابقه اي انه A&B لوحدهم(يلغو بعض) و C&D لوحدهم(يلغو بعض) فقط....
لم افهم طلبك هنا
و لو سمحت اخي اذا ما فيها ثقله تشرحلي الاوامرالتاليه:
{cmcon=7;(هذه اعرفها لاننا نريد ان نحول الى دجتال (حسب معلوماتي)
هذا الامر لالغاء خاصية المقارن في هذا المتحكم
trisa=15
(هنا اخي لماذا قمنا بجعل الدخل 15 و ليس 1111 او 0XFF مثلا و هل لو عملنا كذلك يكون الشغل مزبوط؟؟
نحن دائما نجعل اطراف الدخل للاطراف التي نحتاجها فقط و الاطراف التي لا نحتاجها نفعلها كمخارج لكي لا تشوش على البك
trisb=0; هذا اعرفه و هو لتحديد البورت b على انه خرج

;portb=15 و هنا اخي نفس السؤال لماذا وضعنا الرقم 15 ؟؟ ولم نضع 0b1111 او 0xff و اذا كتبنا كذلك هل يكون الشغل صحيح؟؟
نفس الجواب اعلاه و بصيغة اخرى ... اذا فعلنا بعض الاطراف كمداخل و لم نستخدمها سوف تعمل تشويش على البك لذلك نفعلها كمخارج
delay_ms(15000); هذا امر تاخير


portb=0; هنا اعتقد انه نريد الن تكون اللدات مطفئه في بداية تشغيل الداره ..اليس كذلك ؟؟
نعم صحيح
اسف جدا اخي على تلك الاسئله و لكن لانني اريد ان افهم ولا اريد ان ابصم فقط ...جزاك الله عني كل خير...
بالمناسبة , طريقتك في طرح الاسئلة رائعة جدا
بارك الله فيك

إضافة رد

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

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

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


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

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