الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود للكتابة لل parallel port

بدأه LibyanITGirl في 18 أغسطس 2010 · 14 رد · 3,151 مشاهدة · في التحكم الصناعي وربط الحاسب بالعالم الخارجي
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

قمت بكتابة كود لأخراج output لل parallel port واختبار ال output عن طريق LEDs

هذا جزء من الكود

i=0x378; 
 switch(data)
    {
    case'1':(oup32)(i,0x01);
                break;
   case'2':(oup32)(i,0x02);
                break;
   case'3':(oup32)(i,0x03);
                break;
   case'4':(oup32)(i,0x04);
                break;
   case'5':(oup32)(i,0x05);
                break;
   case'6':(oup32)(i,0x06);
                break;
   case'7':(oup32)(i,0x07);
                break;
   case'8':(oup32)(i,0x00);
                break; 
   case'9':(oup32)(i,0xFF);
                break;
   }

وهذه الارقام هي أرقام ال pins :

0x01 , 0x02 , 0x03 , 0x04 , 0x05 , 0x06 , 0x07

وال 0x00 لإغلاق جميع ال LEDs

وال 0xFF لفتح جميع ال LEDs

عند التنفيذ لم تعمل إلا الخيارين الاخيرين ، يعني اغلاق الجميع او فح الجميع

مالمشكلة ؟ هل ارقام ال pins خطأ ؟

lilgirllaptopsoftened2c.jpg

#2

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

ليست من المستخدمين للبرمجة بلغة ( c ) ولكن هناك مبدأ عام لمثل هذه الحالات يجب معرفة التالي من الكلام

1 - كل العناوين من (D0 D1 D2 D3 D4 D5 D6 D7) - في بدء الإقلاع لجهاز الكمبيوتر تأخذ القيمة (1)

والتي هي جزء من منافذ التسلسلية بالكمبيوتر

أي أن المخارج تأخذ بالنظام الست عشري(DEC) القيمة (255) وبالنظام الثنائي(BIN) تاخذ القيمة (11111111) لذلك نرى عادة كل المخارج تكون في وضعية خرج فولط مقداره 5 فولط

السبب أن الكمبيوتر عند الإقلاع يقوم بتفحص جميع الأجهزة المركبة به وكذلك المنافذ

وعليه هناك معلومة

إن في حالة ربط أي جهاز حركي يطلب ربطه وتشغيله بعد إتمام إقلاع الكمبيوتر وتشغيل الجهاز الموصول

أو إيصاله بالمنبع الكهربائي بعد ذلك والهدف من ذلك للامان الصناعي وهذا ما يفسر وجود حركة بالطابعة إثناء

بدء تشغيل الكمبيوتر والطابعة موصولة ومشغلة معه بنفس الوقت كإثبات بان المنفذ يكون بحالة عمل

2 - يجب أن نقوم بكتابة البرنامج بحيث عند بدء عمله بشكل ألي لجعل كل المخارج تكون بوضعية خرج (0) و حسب لغة البرمجة التي تستخدمين ك كود

3- لجعل أي عنوان ينفد كمثال (D3) نريده أن يخرج فولط يجب أن يكون الأمر مكون من أمرين برمجيين

متالحقين أولهم جعل المخارج كلها تخرج القيمة (0) وبعده الأمر البرمجي الذي يجعل المنفذ بعنوان مراد وهنا

هو (D3) لنحصل على فولط من هذا العنوان

كمثال نقوم بجعل المنفذ يخرج (00000000) أو ما يعني الكل (0) ثم مباشرة أمر الإخراج الثاني ((00001000)) يلحقه تماما هنا استخدمنا النظام الثنائي للإيضاح باعتبار ان (D3) هو القطب الرابع بالتسلسل

أي أن أي أمر يجب أن يحوي أمرين احديهما لإلغاء الحالة السابقة وهو جعل المنفذ خرجه (0) والثاني هو مطلبنا الذي نريد

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

تم التعديل لاضافة اخر سطر

تم تعديل هذه المشاركة بواسطة maaas76 في 19 أغسطس 2010 في 03:05

#3

نسيت ان اذكر بان كتابة اي برنامج لمنفذ الطابعة يجب ان نجعل المخارج (D0 D1..........D7) كلها تاخذ القيمة صفر (0) في بدايته وعند انهاء البرنامج والخروج منه

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

#4

أخي جربت ما قلت ، نفس المشكلة

lilgirllaptopsoftened2c.jpg

#5

انت تقولين ان اخر امرين تم تنفيذهم تم فيهم تنفيذ الامر لاحظي ان الامر ما قبل الاخير هو جعل المخارج تاخذ القيمة (0)والامر الذي يليه جعل المخارج كلها تاخذ القيمة (FF) يعني تم تشغيل كل المخارج اليس ذلك ماتم

ان كان ذلك حدث يعني ان كل امر يجب ان يكون كالتالي كتابة بالعربي

1 - اخرج القيمة 0 لكل المخارج

2 - اخرج القيمة ا لكل المخارج

هل هذا ما تم

#6

اعلم هذا

لكن قمت بكتابة أمرين لكل أمر اشعال LED كما كتبت

ولكن لا أزال اعاني من نفس المشكلة

lilgirllaptopsoftened2c.jpg

#7

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

كما سبق اي امر يراد تنفيذه من جراء تفعيل زر عمل يجب ان يحوي امرين اولهما جعل المخارج تساوي الصفر ثم اجراء ما نريده

او ما نستهدفه من عناوين للتشغيل

post-84064-045849200 1282180373_thumb.jp

المرفقات
Book1.jpg

تم تعديل هذه المشاركة بواسطة maaas76 في 19 أغسطس 2010 في 04:13

#8

وهذا ما فعلته

(oup32)(i,0x00);

 i=0x378;   

 switch(data)
{
case'1':(oup32)(i,0x00);
           (oup32)(i,0x01);
break;
case'2':(oup32)(i,0x00);
           (oup32)(i,0x02);
break;
case'3':(oup32)(i,0x00);
           (oup32)(i,0x04);
break;
case'4':(oup32)(i,0x00);
           (oup32)(i,0x08);
break;
case'5':(oup32)(i,0x00);
           (oup32)(i,0x10);
break;
case'6':(oup32)(i,0x00);
           (oup32)(i,0x20);
break;
case'7':(oup32)(i,0x00);
            (oup32)(i,0x40);
break;
case'8':(oup32)(i,0x00);
           (oup32)(i,0x00);
break; 
case'9':(oup32)(i,0x00);
           (oup32)(i,0xFF);
break;
}

(oup32)(i,0x00);

مازلت نفس المشكلة قائمة

تم تعديل هذه المشاركة بواسطة LibyanITGirl في 20 أغسطس 2010 في 23:59

lilgirllaptopsoftened2c.jpg

#9

اتمنى ان يتم النظر الى الجدول الذي ارسلت لك وحددي قيم المخرج الذي تريدين ان يعمل وجربي انا متاكد من ان ما كتبته لك سيفي بالحل

هل شاهدت وجربت الجدول ام لا اكتبي ما هي الاوامر التي تريدين مثلا كم امر تريد بشكل شرح بالعربي

مثال اريد ان تسير السيارة الى الامام

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

وفقك الله ننتظر الجواب

ان كان جهاز التحكم يحتوي على زرين فقط فانت بحاجة لاستخدام مخرجين فقط من مخارج الطابعة كمثال (D0 D1)

اي ان برنامجك كواجهة يجب ان يحوي زرين بشكل رسومي

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

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

ولاداعي لاستخدام كامل الجدول فالجدول يبيح لك استخدام كامل المخارج وهذا ليس المطلوب

قمنا بوضع الجدول لنتيح لك اختيار اي منفذ او عنوان من (D0 D1 .....D7)

كما وضعنا لك مثالين لكيفية استخدام منفيذين معا في حال رغبت في امور اخرى استخدام ذلك نقصد لمشروع اعقد من ذلك

تم تعديل هذه المشاركة بواسطة maaas76 في 21 أغسطس 2010 في 00:46

#10

أخي بالنسبة للسيارة ، مشكلتي اني لم اعرف كيف اوصل مكونات الدارة ، لأن ليس لي خبرة بالالكترونات ، ولم اجد بعض المكونات ، اريد شرح فيديو

اما بالنسبة للكود ، اريد تجربة إِشعال وإطفاء كل LED على كل مخرج ، اطلعت على الجدول و طبقت ما مكتوب فيه ، ولكن مازلت اعاني نفس المشكلة

lilgirllaptopsoftened2c.jpg

#11

جربي فقط اشعال واطفاء مخرج واحد كمتال (DO) و لا تكتبي كامل البرنامج الذي كتبتيه وحاولي وضع الليد الضوئي على المخرج (D0)

ان تم اشعال واطفاء بشكل صحيح بعدها اكتبي بشكل اوسع جربي اضافة امر برمجي للمخرج الثاني (D1)

هل تعرفين ترقيم المخرج هل لديك صورة عنه ان لم يتوفر لديك ساحاول ارسال صورة مع شرح لك

تم تعديل هذه المشاركة بواسطة maaas76 في 21 أغسطس 2010 في 03:37

#12
LibyanITGirl كتب:

أخي بالنسبة للسيارة ، مشكلتي اني لم اعرف كيف اوصل مكونات الدارة ، لأن ليس لي خبرة بالالكترونات ، ولم اجد بعض المكونات ، اريد شرح فيديو

اما بالنسبة للكود ، اريد تجربة إِشعال وإطفاء كل LED على كل مخرج ، اطلعت على الجدول و طبقت ما مكتوب فيه ، ولكن مازلت اعاني نفس المشكلة

اختي ستجدين صعوبة في اكمال ماتريدين حاولي الاستعانة بمن لديه خبرة في الالكترونيات من حولك من معارف

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

يجب ان تقومي قبل كل شيء بوصل ليد عدد 2 كل منفذ ليد

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

بالتوفيق

اضافة لك وملحوظة....... هناك برنامج جاهز في المنتدى حاولي ان تتصفحي الرابط

/index.php?showtopic=177737&st=0

لتعرفي ان كان العيب في برنامجك او في ربط المكونات

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

post-84064-049458400 1282355783_thumb.jp

المرفقات
LPT PRO SW1.jpg

تم تعديل هذه المشاركة بواسطة maaas76 في 21 أغسطس 2010 في 22:16

#13

اختي انا المهندس محمد قصاب

اذا كنتي مازلتي تريدين المساعدة انا مستعد إن شاء الله

ويمكنني ان ارسل لك مخطط للدارة الالكترونية مع برنامج على الحاسب للتحكم بلعجلة (السيارة)

ولكن البرنامج بلغة دلفي

اي يمكنني ان رسل لك المشروع كاملاً إن شاء الله

انتظر ردك

#14

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

وبالنسبة لل LEDs ، خطأي الفادح هو انني كنت استخدم المنافذ الخاطئة ، وهي الأن تعمل بشكل صحيح وكما أريد

بارك الله فيكم

lilgirllaptopsoftened2c.jpg

#15
LibyanITGirl كتب:

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

وبالنسبة لل LEDs ، خطأي الفادح هو انني كنت استخدم المنافذ الخاطئة ، وهي الأن تعمل بشكل صحيح وكما أريد

بارك الله فيكم

تشكري اختي على ردك الصريح والمهم انك وصلت لهدفك نتيجة اصرارك لاكمال ما قمت به من عمل وتتبعك للمعلومة الصحيحة

موفقة ان شاء الله

مواضيع مشابهة