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

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

الصورة الرمزية رحال حول العالم
رحال حول العالم
:: عضو فضي ::
تاريخ التسجيل: Nov 2006
الدولة: الخبر : السعودية & القاهرة : مصر
المشاركات: 174
نشاط [ رحال حول العالم ]
قوة السمعة:79
قديم 20-08-2007, 01:38 PM المشاركة 1   
Post الحلقة الثالثة للميكروكونتروللر 8051 Twitter FaceBook Google+





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




البرنامج ببساطة يتيح كتابة الاكواد بلغة الاسمبلى او السى ثم يترجمها الى لغة الــ HEXADECIMAL مع توفير محاكى بسيط لمن يرغب فى التجربة عبر البرنامج دون التركيب العملى .


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



أولاً :- دائرة امداد بالطاقة 5 فولت Power Supply


و يمكن الحصول عليها جاهزة من خلال استخدام وحدة تغذية الحاسب الشخصى (( وحدة قديمة مثل التى تغذى جهازكم حالياً و ليست الوحدة التى تعمل بالفعل تجنباً لحدوث مشاكل مع الحاسب )) و يكون الطرف ذو اللون الاسود هو الطرف السالب بينما الطرف الاحمر هو مصدر التغذية بجهد 5 فولت ,,, و يجب الحذر من استخدام الطرف الاصفر لانه يغذى بجهد 12 فولت مما يتسبب فى تلف الميكرو و ملحقاته .

و لمن يرغب فى تركيب دائرة التغذية يدوياً فليراجع الحلقة الثانية حيث سبق شرح هذه الدائرة بالتفصيل .



ثانياً :-الميكروكونتروللر و ملحقاتـــه


سنستخدم الميكروكونتروللر الذى يحمل الرقم ِ89C52 و ليس 8051 لان الاول له سعة تخزين ضعف الثانى ,, و لمن يسكن بالقاهرة الكبرى يمكنهم شراؤه من محل بيع المكونات الاليكترونية والذى يسمى RAM فى باب اللوق


كذلك سنحتاج الى المكونات التالية :-


عدد (1 ) مذبذب Crystal 12 MHz

عدد ( 2 ) مكثف سعة 33p.f أو 22p.f أو 27 p.f

عدد ( 1 ) مكثف سعة 1 micro f.

عدد ( 1 ) مكثف سعة micro f. 10

عدد ( 1 ) مقاومة 8.2 كيلو اوم

عدد ( 8 ) مقاومات 330 اوم

عدد ( 8 ) ثنائى ضوئى LED ألوان مختلفة

عدد ( 8 ) مقاومة 1 كيلو اوم

عدد ( 1 ) لوحة اختبار Bread Board

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



الصورة التالية توضح دائرة الميكروكونتروللر بعد توصيلها بمصدر التغذية و الملحقات







بعد الاطلاع على نتيجة الاستفتاء الخاص بأنسب لغات البرمجة للميكروكونتروللر تبين ان معظم المشاركين يرغبون فى تعلم برمجة الميكروكونتروللر بلغة Assembly و كان ذلك من خلال الاستفتاء الذى اجريته فى الثلاث منتديات التى اكتب فيها هذه الدورة و كانت النتيجة الاجمالية 38 يفضلون لغة السى بينما 44 يفضلون لغة الاسمبلى

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






بعد إعداد البرنامج و تجهيزه للعمل على حاسبك الشخصى يتم عمل الخطوات التالية :-


1-إنشاء مشروع جديد و نعطيه اسم ,,,, ليكن project 1 .... على اساس ان هذا اول مشروع سنتعامل معه و ليس له وظيه و محددة

2-يتم إختيار نوع الميكروكونتروللر المستخدم (( 8952 ))

3-يتم إضافة الخيارات للمشروع

4-يتم فتح ملف جديد

5-يتم حفظ الملف باسم Project1.asm و

6-يتم إضافة الملف الى المشروع Project1 و



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




الخطوة رقم ( 1 )

نذهب الى قائمة الاوامر Project و نختار New Project



Project --------> New Project




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




الخطوة رقم ( 2 )



نحدد نوع الميكروكونتروللر المستخدم

طبعاً نذهب الى كلمة Atmel

ثم نختار AT89C52










الخطوة رقم ( 3 )



بالضغط على الزر الايمن عند مربع شجرة الملفات و تحديداً على كلمة Target1

نختار الامر Option for target ‘Target1’





يظهر مربع حوار ,,, له قائمة target نكتب فيها تردد الكريستال المستخدم و هو 12MHz و نضع علامة على مربع الاختيار الخاص بنوع الذاكرة المستخدمة " حتى هذه اللحظة سنتعامل مع الذاكرة الداخلية " Use On_Chip ROM




تذهب الى قائمة OUTPUT على نفس صندوق الحوار و نتأكد من اختيار كل مما يلى

Brows information

Create HEX File





ثم نضغط

OK



الخطوة رقم ( 4 )

لاضافة ملف جديد نذهب الى القائمة File و نختار الامر New

File ---------> New



سيفتح امامنا ملف نصى باسم TEXT1 او TEXT2 حسب عدد الملفات السابق فتحها






الخطوة رقم ( 5 )


يتم حفظ الملف بالامر Save As

File ----------> Save As




نختار اسم للملف " عادة نعطيه اسم يدل على محتوى البرنامج ,, هنا سنسميه باسم المشروع " مع الاخذ فى الاعتبار كتابة امتداد الملف asm فيكون الاسم المكتوب هو Project1.asm






الان نراقب اسم الملف و قد تغير من TEXT الى Project1.asm و ظهر امامنا الصفحة البيضاء الجاهزة لتحرير الكود





الخطوة رقم ( 6 )


لاضافة الملف الى المشروع

بالضغط على الزر الايمن لــ Source Group1 نختار Add Files To Group

يظهر مربع حوار للبحث عن الملف المراد اضافته للمشروع ,,, و عادة يبحث عن ملف بامتداد C لان هذا البرنامج يسمح بكتابة الاكواد بلغة السى ايضاً





فى الخانة الخاصة بـنوع الملفات Files Of Type نختار *.* لاظهار كافة الملفات و من ثم يظهر لنا الملف المحفوظ مسبقاً باسم project1.asm و الذى نقوم باختياره ثم نضغط على Add










الان اصبح الملف جاهز تماماً لكتابة الكود










اعلانات

الصورة الرمزية basel81
basel81
:: مهندس متواجد ::
تاريخ التسجيل: Apr 2007
المشاركات: 72
نشاط [ basel81 ]
قوة السمعة:0
قديم 21-08-2007, 10:53 PM المشاركة 2   
sun


مشكور أخي على هذا الشرح الوافي .
ولكني لم أستطع تحميل برنامج keil
أرجو الإفادة ولك جزيل الشكر .

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

الصورة الرمزية رحال حول العالم
رحال حول العالم
:: عضو فضي ::
تاريخ التسجيل: Nov 2006
الدولة: الخبر : السعودية & القاهرة : مصر
المشاركات: 174
نشاط [ رحال حول العالم ]
قوة السمعة:79
قديم 22-08-2007, 11:58 PM المشاركة 3   
Post الجزء الثانى


اليوم نكتب اول كود و نشاهد التطبيق المباشر له


اول امر نتعرض له هو الامر MOV

يستخدم هذا الامر فى نقل بيانات من موضع المصدر Source الى موضع الهدف Destination

الصيغة العامة للامر تكون كالتالى :-
MOV Dest. , Source

مثال
MOV P2 ,#10101010b
END



P2 تعبر عن ان الخرج سيتم ارساله على ميناء التوصيل رقم 2 = Port2

العلامة # تدل على ان القيمة التى تم كتابتها بعدها " 10101010 " تعبر عن رقم و الحرف b يعبر عن نوع الرقم “ b = Binary “ اى انه رقم ثنائى .


يمكن كتابة التالى

MOV P2 ,#AAh

هنا حرف h يدل على ان الرقم يخضع للنظام السادس عشرى “h = Hexadecimal “

MOV P2 ,#170


هنا عدم كتابة اى حروف بعد الرقم تدل على ان الرقم فى النظام العشرى Decimal


نلاحظ ان اكبر رقم يمكن استخدامه فى النظام العشرى هو 255 حيث ان الارقام المستخدمة تتراوح بين 0 الى 255 باجمالى 256 رقم و هو ما يعبر عنه نوع الميكروكونتروللر ,,,,, فقد سبق و قلنا انه 8 Bit و من ثم 2 مرفوعة للقوى 8 تعطى 256

256=8^2




بما فيهم الصفر و بالتالى اكبر رقم يمكن استخدامه هو 255

بالتالى نلاحظ ان العدد 255 فى النظام العشرى يكافئه العدد FF فى النظام السادس عشرى و العدد 11111111 فى النظام الثنائى .


و من ثم فان القيمة 10101010 بالثنائى تتساوى مع AA فى السادس عشرى و تتياوى مع 170 فى النظام العشرى


إذن اى صيغة سنستخدمها يجب ان تعطى نفس النتيجة و يجب ان نتجنب استخدام ارقام اكبر من 11111111 فى الثنائى او اكبر من FF فى السادس عشرى او اكبر من 255 فى النظام العشرى و الا سيظهر لنا المترجم Compiler رسالة تحذيرية Truncated Value و التى تفيد استخدام رقم اعلى مما يمكن ان يتعامل معه الميكروكونتروللر المستخدم و الذى يتعامل مع 8 بت فقط .


الامر END لن يتم إدخاله على الميكروكونتروللر و لكنه مجرد مؤشر الى المترجم Compiler بأن الكود قد انتهى ,,,, و ذلك حتى نعلم ان الميكروكونتروللر يظل ينفذ الاوامر دون توقف الا اذا اعطيناه امراً بالتوقف .



و الان و بعد تحرير الكود السابق يأتى الدور على ترجمة هذا الكود و يتم ذلك باستخدام القائمة Project و اختيار الامر Build Target او الضغط على مفتاح الوظائف “ F7 “ او اختيار علامة انشاء الهدف من قائمة الاختصارات الموجودة بالبرنامج



هنا نتأكد من أنه لا توجد رسائل خطأ او رسائل تحذيرية ,,,, و بالتالى الكود الذى تم ادخاله صحيح


و الان جاء الدور على مشاهدة نتيجة هذا الكود


اولاً باستخدام البرنامج KEIL نقوم بعمل الخطوات التالية :-


اولاً :- الذهاب الى القائمة Debug و اختيار الامر Start/Stop Debug Session

او الضغط على مفتاحى Ctrl + F5 مباشرة

او اختيار العلامة المكتوب عليها حرف d باللون الاحمر من شريط الاوامر المختصرة بالبرنامج


ثانياً :- الذهاب الى القائمة peripherals و اختيار الامر I/O-Ports و منها اختيار Port 2 حيث انها الهدف الذى سبق اختياره فى الامر لاخراج بيانات المصدر عليه


سيظهر لنا جدول يعبر عن شكل الميناء رقم 2 “ Prot 2 “ و الوضع الابتدائى للبيانات الخاجة عليها قبل التنفيذ ,,,, نجد انه يعطى 1 على الاطراف كقيمة ابتدائية


ثالثاً :- الذهاب الى القائمة Debug و اختيار الامر Go

او الضغط مباشرة على المفتاح F5


هنا نشاهد نتائج تنفيذ البرنامج تماماً كما اردناها


لانهاء عرض تنفيذ البرنامج نقوم بايقاف البرنامج من خلال تنفيذ الخطوة فى أولاً ............ الذهاب الى القائمة Debug و اختيار الامر Start/Stop Debug Session

او الضغط على مفتاحى Ctrl + F5 مباشرة

او اختيار العلامة المكتوب عليها حرف d باللون الاحمر من شريط الاوامر المختصرة بالبرنامج


و الان حان الدور على نقل البرنامج من على الكمبيوتر الى الميكرومونتروللر


نحن الآن نحتاج الى الملف بصيغة الاسمبلى و يتم الحصول عليه من خلال الذهاب الى القائمة Project ثم اختيار الامر Build All Target Files او استخدام الامر من شريط الاختصارات بالبرنامج


بالذهاب الى المجلد الذى تم حفظ المشروع فيه سنجد الملف Project1.asm و اخر بنفس الاسم و لكن ذو امتداد hex ==== Project1.hex

نأخذ هذا الملف و نقوم بتحميله على الميكروكونتروللر من خلال المبرمجة الخاصة بالميكروكونتروللر 8051 و البرنامج الخاص بها .

و لقد سبق و ذكرت الى ان هناك مفاجأة الى الزملاء المشاركين بايجابية فى الدورة و ذكرت اسمائهم .... و اليوم حان وقت اظهار المفاجأة .


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


و من ثم لن يكونوا فى حاجة الى شراء او تنفيذ مبرمجة فى الوقت الحالى او الاضطرار الى الذهاب الى الاماكن التى توفر برمجة الميكروكونتروللر بمقابل مادى معروف لدينا جميعاً ......

اتمنى ان اكون قد وفيت بوعدى تجاه هؤلاء الزملاء و ان تكون المفاجأة سارة لهم


نعود الى حيث كنا


بعد ان نقوم بنقل الملف Project1.hex الى الميكروكونتروللر نقوم بتوصيل الدائرة التالية


و يجب ملاحظة ان الحمل يتم توصيله بين خرج الميكرو و مصدر التغذية 5 فولت و ليس الارضى على اعتبار ان شرط العمل هو اخراج 0 من الميكرو و ليس 1 و هو ما يعرف بـــ Active Low تجنباً لسحب تيار عالى من الميكرو .


و نراقب الثنائيات الضوئية و ترتيب قيم الــ 1 و الــ 0 على الخرج



إذا عكسنا اطراف التوصيل و كانت بين الميكرو و الارضى

سنلاحظ ان الثنائيات الضوئية التى خرج عليها القيمة 1 ستضئ و الثنائيات الضوئية التى خرج عليها القيمة 0 لن تضئ ,,,,, و كذلك قد نلاحظ ان الثنائيات التى اضائت خافته بعض الشئ

لذلك سنقوم بعمل Buffer بين اطراف الخرج للميكروكونتروللر و الاخمال من خلال استخدام احد هذه المتكاملات 7432 == OR Gate او AND Gate ==== 7408 او اى نظام لعمل الـــ Buffer مثل الترانزيستورات مثلاً او اى نوع من انواع الـــ Buffer المشهورة و الشائعة الاستخدام


و هنا اترك المجال مفتوحاً للزملاء .... كل من يعرف وسيلة لعمل الــ Buffer يقوم بعرضها لتعم الفائدة .


جاسم الطائي
:: مهندس ::
تاريخ التسجيل: Jan 2007
المشاركات: 43
نشاط [ جاسم الطائي ]
قوة السمعة:0
قديم 24-08-2007, 09:03 PM المشاركة 4   
افتراضي


باركك الله على هذاالجهد الرائع والطريقة اللطيفة في ايصال المعلومة ,وان امثالك يا اخي هم امل هذه الامه , وفقك الله لما يحب ويرضى زادك من بحر علمه.


mem222
:: مهندس متواجد ::
تاريخ التسجيل: Mar 2007
المشاركات: 93
نشاط [ mem222 ]
قوة السمعة:0
قديم 25-08-2007, 06:35 AM المشاركة 5   
افتراضي


جزاك الله الجنة ووالديك أخي الحبيب
شرح سلس وممتع نفع الله بك
لو تكرمت البرنامج لم استطع تحميله


شكرا لك


elwaleed
:: مهندس متواجد ::
تاريخ التسجيل: Sep 2006
الدولة: مصر
المشاركات: 112
نشاط [ elwaleed ]
قوة السمعة:0
قديم 25-08-2007, 02:44 PM المشاركة 6   
افتراضي


اللهم اجعل هذا العمل فى ميزان حسناتك
نحن فى الانتظار


الصورة الرمزية رحال حول العالم
رحال حول العالم
:: عضو فضي ::
تاريخ التسجيل: Nov 2006
الدولة: الخبر : السعودية & القاهرة : مصر
المشاركات: 174
نشاط [ رحال حول العالم ]
قوة السمعة:79
قديم 25-08-2007, 09:07 PM المشاركة 7   
sun


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

http://www.devicetools.com/company/downloads.html

هذا السطر هو الهدف
Keil C51 Evaluation Software - Development tools for Extended 8051 Microcontrollers



a_abo.elseoud
:: مهندس ::
تاريخ التسجيل: Apr 2007
المشاركات: 3
نشاط [ a_abo.elseoud ]
قوة السمعة:0
قديم 25-08-2007, 11:22 PM المشاركة 8   
Thumbs up جزاكم الله خيرا


بجد بسم الله مشاء الله عليك .. ان شاء الله في ميزان حسناتك

وبالنسبة لعمل buffer هناك نوعين من الدوائر المتكاملة ( هما ما اعرفهم )
1 - ULN 2803
2 - ULN 2003

الاولي بها عدد 8 ترانزيستور وكل واحد يتحمل حتي 500 مللي امبير
والثانية تحتوي علي 7 ترانزستور وتقريبا يتحمل نفس قيمة التيار للسابق

ربنا يوفقك في شرحك ونستفيد منه ان شاء الله

إضافة رد

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

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

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


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

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