السلام عليكم ورحمة الله وبركاته
في البداية أنا آسف لأني تأخرت على كتابة الدرس الأول لبعض الظروف الخاصة ، ثانياً أشكر كل من كتب رداً في هذا الموضوع خصوصاً الأخ Mgh ، والآن إليكم الدرس الأول :
الدرس الأول : نظام العد الثنائي وعلاقته بمنفذ الطابعة :كلنا يعرف الأرقام ، وكلنا درس في المرحلة الإبتدائية نظام العد العشري ، ونظام العد العشري هو الذي يستخدم الأعداد 0 1 2 3 4 5 6 7 8 9 لكي يكون أرقامه ، وقد سمي بنظام العد العشري لأن أساسه عشرة أرقام.
أما نظام العد الثنائي فأساسه رقمان هما 0 و 1 ، فللتعبير عن الرقم 0 نستخدم 0 والرقم 1 نستخدم 1 ، ولكن كيف نعبر عن الرقم 2 ؟
بالنظام الثنائي نعبر عن الرقم 2 بـ 10 " تقرأ واحد صفر وليس عشرة " والرقم 3 بـ 11 " تقرأ واحد واحد وليس أحد عشر ".
ولكن هل يجب علينا حفظ كل رقم عشري ومايساويه من رقم ثنائي ؟ الجواب : لا ، حيث يوجد قانون بسيط يحل هذه المعضلة ، فمثلاً أنا أريد العدد الذي يساوي 2 في النظام الثنائي ، الطريقة هي عبر قسمة العدد الذي نريد مقابله على 2 إلى أن نصل إلى الرقم 1 بالطريقة التالية :
2 ÷ 2 : 0
1 × 2 : 1
فكما ترى أن العدد 2 يقبل القسمة على 2 إذاً نكتب بجانب عملية القسمة الرقم 0 ثم نضع ناتج القسمة تحت رقمنا الذي نريد تحويله ثم نجري عليه عملية قسمة أخرى ، فتلاحظ أن العدد 1 لا يقبل القسمة على 2 إذاً نكتب بجانب عملية القسمة الرقم 1 ، إذاً يكون الرقم 2 بالنظام الثنائي هو الأعداد التي كتبناها بجانب عمليات القسمة = 10 ، إذاً نستطيع تبسيط القانون كالتالي :
- نكتب الرقم 0 إذا تمت عملية القسمة دون مشاكل.
- ونكتب الرقم 1 إذا حصلت مشاكل في عملية القسمة.
الآن لنجرب الحصول على العدد 7 بالنظام الثنائي :
7 ÷ 2 : 1
3 ÷ 2 : 1
1 ÷ 2 : 1
إذاً 7 = 111 " تقرأ واحد واحد واحد وليس مائة وأحد عشر ".
والآن إذا قلت لك العدد 1010 بالنظام الثنائي كم يساوي بالنظام العشري ، فهل تعرف الإجابة ؟ إذا عرفت فأنت ممتاز وعقلك مطابق للكمبيوتر وإذا لم تعرف فلا تحزن فالقانون التالي يحل المشكلة :
س × (2 ^ ن) حيث س تساوي الرقم ، ن تساوي ترتيب الرقم.
فلنطبق الآن على العدد 1010 :
0×(2 ^ 0) + 1×(2 ^ 1) + 0×(2 ^ 2) + 1×(2 ^ 3) = 0×1 + 1×2 + 0×4 + 1×8 = 0 + 2 + 0 + 8 = 2 + 8 = 10
الطريقة طويلة قليلاً ولكن إذا فهمتها فسوف تستطيع تحويل الأرقام الثنائية القصيرة بسرعة في عقلك دون استخدام أي شيء ، علماً أن الآلات الحاسبة العلمية تستطيع التحويل من عشري إلى ثنائي والعكس.
والآن بعدما عرفت النظام الثنائي ، ألم تسأل نفسك هذا السؤال : ما علاقة النظام الثنائي بمنفذ الطابعة ؟
عندما ترى منفذ الطابعة تجد أنه يحتوي على 25 فتحة ، وهذه الفتحات مقسمة إلى عدة أقسام سوف نركز في هذا الدرس على قسم واحد من هذه الأقسام وهو قسم الإخراج الذي يضم ثمانية فتحات من فتحات منفذ الطابعة ، وهم من الفتحة رقم 2 إلى الفتحة رقم 9 ، وهنا بيت القصيد ، حيث أن هذه الفتحات تمثل ترتيب أرقام النظام الثنائي ، فمثلاً الرقم الثنائي الذي يمثل الفتحة الأولى "وهي الفتحة رقم 2 حسب ترتيب فتحات منفذ الطابعة وسوف نعتبر من الآن وصاعداً الفتحة الأولى هي الفتحة رقم 2 " هو 1 ، والفتحة الثانية هو 10 والفتحة الثالثة 100 والفتحة الرابعة 1000 ... إلخ ... إذاً على فرض أني قمت بتوصيل ثنائي باعث للضوء LED بالفتحة الثالثة فكيف سوف أشغل هذا الثنائي ؟
طريقة تشغيله هي بإرسال الرقم العشري الذي يساوي الرقم الثنائي للفتحة الثالثة ، والرقم الثنائي للفتحة الثالثة هو 100 إذاً سوف نقوم بتحويل الرقم 100 من النظام الثنائي إلى النظام العشري كالتالي :
0×(2 ^ 0) + 0×(2 ^ 1) + 1×(2 ^ 2) = 0×1 + 0×2 + 1×4 = 0 + 0 + 4 = 4
إذاً عبر الأوامر البرمجية التي سوف تعرفها بعد قليل سوف نرسل الرقم 4 لكي يعمل الثنائي الباعث للضوء الذي وصلناه بالمنفذ الثالث.
وأود أن ألفت انتباهكم إلى أن الفتحات رقم 18 و 19 و 20 و 21 و 22 و 23 و24 و 25 هي خاصة بالأرضي ، ففي مثالنا السابق حول تشغيل الثنائي الباعث للضوء LED فسوف نوصل طرف منه إلى الفتحة الثالثة والطرف الآخر إلى أحد الفتحات السابقة الخاصة بالأرضي لكي تغلق الدائرة الكهربائية كما تعلمنا في المدرسة.
والآن دعونا نذهب إلى الكيان البرمجي ونقوم بعمل برنامج يرسل الإشارة التي نريدها إلى منفذ الطابعة :
بداية أحب أن أعرفكم إلى صديقي العزيز برنامج الفيجوال بيسك - وهو الذي سوف نكتب به أوامر لغة الفيجوال بيسك - ، صديقي هذا بسيط وغير معقد ، تستطيع به عمل البرامج التي تريدها بسرعة وليس كما في اللغات الثانية وواجهة البرنامج الذي نريده سوف نصممها بسهولة عن طريق هذا الصديق ، ولن أمدح هذا الصديق زيادة عن اللازم لأن به بعض العيوب التي لن أقول لكم عنها لأن غيري قد سبقني بتوضيح كل شيء عن هذا الصديق وكذلك لكي لا أخرج عن الموضوع الذي أتكلم عنه ، إذاً عليكم جميعاً أن تقوموا بشراء قرص ليزر يحتوي على برنامج الفيجوال بيسك 6 لكي نستطيع إكمال المشوار دون تأخر أي شخص عنا ، طبعاً لا أريد أن أطيل الموضوع بشرح جزئيات الفيجوال بيسك ، فقد اختصرت الوقت ووضعت لكم وصلة لموقع متخصص بالفيجوال بيسك باللغة العربية ، وهناك تعلم المبادئ ثم ارجع إلى هذا الموضوع لنكمل المشوار.
http://www.vb4arab.comالآن بعد أن تعرفت على الفيجوال بيسك أنشأ ملف برمجة Module وضع به تعريف مكتبة dll الخاصة بمنفذ الطابعة ، والتعريف هو :
Public Declare Sub Out Lib "inpout32.dll" Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
الآن قمنا بتعريف المكتبة الضرورية للتحكم بمنفذ الطابعة ، إذاً قم بوضع زر أوامر Command على النموذج Form1 ثم ضع الكود التالي في حدث Click لزر الأوامر :
Out &H378, 4
إن الكود السابق يقوم بإرسال الرقم 4 إلى الدالة التي عرفناها والدالة بدورها تقوم بتحويل الرقم 4 إلى النظام الثنائي وترسله إلى منفذ الطابعة وتحديداً إلى فتحات الإخراج ، فإذا كنت قد وصلت ثنائي باعث للضوء على الفتحة الثالثة فسوف تراه متوهجاً ، ولكي تنهي توهج هذا الثنائي فعليك بإرسال الرقم 0 إلى دالة منفذ الطابعة كالتالي :
Out &H378, 0
والآن بعد أن عرفت كيف تقوم بإرسال إشارات إلى منفذ الطابعة تستطيع أن توصل ثمانية ثنائيات باعثة للضوء LED كل ثنائي في فتحة وتوصل أطرافهم الأخرى في فتحات الأرضي من 18 إلى 25 ، وتقوم بإنشاء برنامج يشغل ثنائي ضوئي تلو الآخر ، أو تقوم بعمل أي شيء ، وإذا كانت لديك خبرة في الإلكترونيات فتستطيع تصميم دائرة إلكترونية تعمل عن طريق الكمبيوتر وذلك باستخدام ترانزستور NPN توصل قاعدته بإحدى فتحات الإخراج فيعمل عمل المفتاح وغير ذلك من الأعمال الرائعة.
لقد انتهينا من جزء بسيط من الدروس حول ربط الحاسب بالأجهزة والدوائر الإلكترونية ، ولكن لن أكمل الدروس حتى تقرءوا هذا الدرس مراراً وتكراراً لأنه درس مهم ، وسوف أضع في ردي التالي تمارين حول هذا الدرس وبعد التمارين سوف نكمل سلسلة الدروس.
وشكراً لكم