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

مشاهدة نتائج الإستفتاء: هل ترى أهمية لدورة تشرح لغة (mikroBasic) لبرمجة البيك ؟
موضوع فى غاية الأهمية و ضرورى جدا ... ... 1 23 95.83%
موضوع هام ولكن يوجد ما يكفى ... ... 2 1 4.17%
موضوع مكرر ولا داع لبذل المزيد من الجهد ... 3 0 0%
المصوتون: 24. أنت لم تصوت في هذا الإستفتاء

   

م/أيمن
:: مهندس ::
تاريخ التسجيل: Jul 2009
المشاركات: 2
نشاط [ م/أيمن ]
قوة السمعة:
قديم 17-12-2010, 02:59 PM المشاركة 177   
افتراضي



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

اعلانات

فيصل72
:: مهندس جيد ::
تاريخ التسجيل: Nov 2010
المشاركات: 245
نشاط [ فيصل72 ]
قوة السمعة:
قديم 17-12-2010, 07:40 PM المشاركة 178   
افتراضي


السلام عليكم ورحمة الله
بعضنا رغم ضغط العمل وضيق الوقت يجد لنفسه فسحة ليعطي ويساعد فيها وهذا فضل كبير جزاكم الله عنا خيرا في يوم لا ينفع فيه الانسان الا عمله.
أخي م/وليد
بالفعل كود البرنامج المرفق يعطي رسالة خطأ رغم أن برنامج البروتس المرفق مع ملف الهكس يعملان جيدا. ومع استبدال Change ب Set لم يعمل أيضا أرجو أن توضح لنا ذلك.
ورغم أني لا أحب مقاطعة الدورة الا انه لدي سؤال يهمني وهو كيف أستطيع أن أعطي عدة قيم لمتغير استخدمها بالتتالي كمثال : x=( 5,7,10) ,أو x=(m,n,i)
أجدد شكري لك و أيضا للأخ صهيب.

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

فيصل72
:: مهندس جيد ::
تاريخ التسجيل: Nov 2010
المشاركات: 245
نشاط [ فيصل72 ]
قوة السمعة:
قديم 17-12-2010, 07:43 PM المشاركة 179   
افتراضي


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


الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 17-12-2010, 10:01 PM المشاركة 180   
x4


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

السلام عليكم

انا جربت البرنامج
وعملت تعديل بسيط لاني استخدمت ل ic 16f887
وعملت مثل ما شرحت
وهذا كان تعديلي
ولكن لم يعمل :-(

main:
ANSEL = 0
ANSELH = 0

trisb = 7
trisc = 0
portc = 0
PWM1_Init(5000)
PWM1_Start()

while true
if portb.0 = 1 then PWM1_Set_Duty(63) end if
if portb.1 = 1 then PWM1_Set_Duty(127)end if
if portb.2 = 1 then PWM1_Set_Duty(255)end if
wend
end.

وهل يمكن رفع ملف البروتس
والف شكرا استاذي wleed antar :-)
المشكلة عندك فى البروتوس لأن البروتوس لا يعمل هذا البرنامج على بعض المتحكمات مثل 877 ، 877a ، 628a لذلك عليك بالنسخة بروتوس 7,7 وهذا ما حدث معى .

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

السلام عليكم ورحمة الله
بعضنا رغم ضغط العمل وضيق الوقت يجد لنفسه فسحة ليعطي ويساعد فيها وهذا فضل كبير جزاكم الله عنا خيرا في يوم لا ينفع فيه الانسان الا عمله.
أخي م/وليد
بالفعل كود البرنامج المرفق يعطي رسالة خطأ رغم أن برنامج البروتس المرفق مع ملف الهكس يعملان جيدا. ومع استبدال Change ب Set لم يعمل أيضا أرجو أن توضح لنا ذلك.
وعليكم السلام ورحمة الله ، أسأل الله أن ييسر لنا جميعا أمورنا ، بالنسبة للرسالة الخطأ فإن كنت قد اتبعت خطوات إنشاء مشروع كما بدأنا بالصور فى الشروحات السابقة كيف نبدأ مشروع جديد ، فإن كنت قد اتبعت هذه الخطوات بالتفصيل فإنه لا يبقى لك إلا ملاحظة واحدة وهى أننى عندما كتبت برنامجى كان مكتوب على نسخة المايكرو بيزيك 7002 وليس على البروفشنال ، فربما الإختلاف يكون فى هذه الجزئية .

ورغم أني لا أحب مقاطعة الدورة الا انه لدي سؤال يهمني وهو كيف أستطيع أن أعطي عدة قيم لمتغير استخدمها بالتتالي كمثال : x=( 5,7,10) ,أو x=(m,n,i)
أجدد شكري لك و أيضا للأخ صهيب.
موضوع المتغيرات عادى جدا وهو بتخزين متغير من نوع بايت ، ثم وضع القيمة فى المتغير x نقوم بعمل تأخير (delay) بتعليمة التأخير المعروفة كما نريد ثم تعليمة تغيير المتغير كما نريد ،

لو الأمر لم يتضح بعد أو تريد مثال عرفنى كى أرفع مثال فورا إن شاء الله


صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 17-12-2010, 10:07 PM المشاركة 181   
افتراضي


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

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

الأخ AALMOHIB أهلا بك معنا وشكرا على المتابعة
الأخ oman_boy حياك الله وشكرا على التفاعل ومحاولة التنفيذ
الكود الذي وضعته صحيح مئة بالمئة لكن المشكلة لاحتمالين
إما لأنك لم تحدد مكتبة PWM في برنامج مايكروبيسك وفي هذه الحالة لا يتنفذ البرنامج أصلا لذا يجب إضافة مكتبة PWM كما في الصورة


الاحتمال الثاني : أن البرنامج تنفذ عندك بشكل صحيح لكن لم يعمل في برنامج المحاكاة بروتس .. والخلل هنا بسبب برنامج بروتس
ولحل هذه المشكلة استخدم النسخة 7.7 من بروتس أو راجع الرابط التالي
www.qariya.com/vb/archive/index.php/t-61092.html

الأخ م/أيمن أهلا بك معنا والدورة بدأت وستستمر إن شاء الله تعالى

الأخ فيصل72 أشكرك على المتابعة والتفاعل
بالنسبة لاستفسارك الأول
بالفعل كود البرنامج المرفق يعطي رسالة خطأ رغم أن برنامج البروتس المرفق مع ملف الهكس يعملان جيدا. ومع استبدال Change ب Set لم يعمل أيضا أرجو أن توضح لنا ذلك.
/=60532#ixzz18Of5gzoq
راجع الاجابة السابقة والصورة فهي تحل مشكلتك إن شاء الله

أما الاستفسار الثاني فيمكن اسناد أكثر من قيمة الى متغير إذا كان هذا المتغير مصغوفة معرفة كثابت ...لاحظ البرنامج التالي
كود:
program declar
const x as byte[5]=(7,5,2,10,12)
dim  i as byte
main:
trisb=0
for i=0 to 4
portb=x[i]
next i
end.
واي استفسار نحن في الخدمة
وشكرا


التعديل الأخير تم بواسطة : صهيب البلال بتاريخ 17-12-2010 الساعة 10:15 PM

صهيب البلال
:: مهندس متواجد ::
تاريخ التسجيل: Dec 2009
المشاركات: 85
نشاط [ صهيب البلال ]
قوة السمعة:
قديم 18-12-2010, 12:06 AM المشاركة 182   
افتراضي


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

العارضات السباعية ( 7segment display)
عبارة عن سبعة قطع ضوئية مرتبة بشكل يمكن ان نعرض عليه أشكال الأرقام من ( صفر الى تسعة ) أو الحروف من A الى F وكل قطعة ضوئية يمكن ان تحتوي على دايود ضوئي واحد او أكثر ..

يوجد نوعين من السفن سكمنت :
1- سفن سكمنت ذات المصعد المشترك Common Anode 7 segment CA

في هذا النوع يكون الطرف الموجب مشتركا بين القطع الضوئية ويكون التحكم في إطفاء وتشغيل كل قطعة عن طريق الطرف السالب لها
يعني لو أردنا عرض رقم 1 على سفن سكمت يجب ان نضيئ القطع (b,c) أما بقية القطع فتكون منطفئة
a b c d e f g
1 0 0 1 1 1 1 ..
وهكذا ... الجدول أدناه يبين حالة بقية الحروف




2- سفن سكمنت ذات المهبط المشترك Common Cathode 7 segment CC

في هذا النوع يكون الطرف السالب مشتركا بين القطع الضوئية ويكون التحكم في إطفاء وتشغيل كل قطعة عن طريق الطرف الموجب لها



الصورة أدناه توضح كيفية الربط في CA & CC


كيفية التعامل مع الـ 7 segment
يتم التعامل مع السفن سكمنت بطريقتين :
1- باستخدام مفككات الترميز( BCD to 7 seg decoder) :

عبارة عن دوائر متكاملة (ICs) تستخدم للتحويل من صيغة BCD الى صيغة سفن سكمنت


توجد أنوع من مفككات الترميز منها ما يتعامل مع CA ومنا ما يتعامل مع CC
من الأنواع التي تتعامل مع المصعد المشترك (7447و7446 و DS880و DS8880 و .... ) ....
ومن الأنواع التي تتعامل مع المهبط المشترك ( 7448,4511 ,DM9368 )......


وهذه المفككات تعرض الأرقام كما في الشكل

ملاحظة : لمعلومات أكثر حول مفككات الترميز راجع الداتا شيت للأنواع المشار إليها أعلاه


والآن لننتقل الى الجانب البرمجي للتعامل مع 7 seg باستخدام مفككات الترميز
حيث نقوم بكتابة برنامج يعد من 0 إلى 99 ويعرض الأرقام على 7 seg
سيناريو البرنامج :
• تعريف عداد
• نهيئ المنفذ B كخرج
• نضع العداد في حلقة (loop) ونضيف إليه واحد عند كل دورة
• نحول قيمة العداد إلى صيغة BCD باستخدام الدالة Dec2Bcd
• نعرض القيمة على المنفذ B

كود:
program counter
dim  count as byte
main:
trisb=0
while true
for count=0 to 99
portb=Dec2Bcd(count)
next count
wend
end.
صورة ربط البك مع 7447 في برنامج بروتس (الصورة قديمة حاولت ترتيبها لكن بروتس لم يعمل عندي اليوم .. حاولت تنصيبه عدة مرات لكن دون جدوى)


البرنامج أعلاه يعرض قيم العداد على السفن سكمنت بطريقة المصعد المشترك CA
كيف نجعله يعرض بطريقة المهبط المشترك (common cathode) ؟
لدينا خيارين وكلاهما صحيح :
الأول : نغير في البرنامج حيث نضيف كلمة NOT قبل الايعاز Dec2Bcd
قيصبح البرنامج بهذا الشكل


كود:
dim  count as byte
main:
trisb=0
while true
for count=0 to 99
portb=NOT Dec2Bcd(count)
next count
wend
end.

الخيار الآخر : نستبدل مفكك الترميز (7447) بـ (7448)

نكمل في درس آخر إن شاء الله تعالى


التعديل الأخير تم بواسطة : صهيب البلال بتاريخ 18-12-2010 الساعة 12:24 AM

الصورة الرمزية wleed antar
wleed antar
:: عضو ماسي ::
تاريخ التسجيل: May 2006
الدولة: القاهرة - مصر
المشاركات: 1,484
نشاط [ wleed antar ]
قوة السمعة:
قديم 18-12-2010, 02:19 PM المشاركة 183   
افتراضي


أخ صهيب بالنسبة للنسخة 7002 لم أجد فيها مكتبة تخص PWM فقمت بكتابة البرنامج الذى رفعته لكم فى المثال واشتغل تمام مع المتحكم 542 ، 877a فما أظنه هو أن المكتبة خاصة بالجديد فقط ولا يجوز بغيرها بخلاف القديم صح ؟ أرجو التوضيح
كى لا يحدث التباس على كل من يستخدم النسخة القديمة أو الحديثة


التعديل الأخير تم بواسطة : wleed antar بتاريخ 18-12-2010 الساعة 02:25 PM

فيصل72
:: مهندس جيد ::
تاريخ التسجيل: Nov 2010
المشاركات: 245
نشاط [ فيصل72 ]
قوة السمعة:
قديم 19-12-2010, 12:40 AM المشاركة 184   
افتراضي


السلام عليكم
program declar
const x as byte[5]=(7,5,2,10,12)
dim i as byte
main
:trisb=0
for i=0 to 4
portb=x[i]
next i
end
شكرا أخي صهيب الأمر واضح الآن.

موضوع المتغيرات عادى جدا وهو بتخزين متغير من نوع بايت ، ثم وضع القيمة فى المتغير x نقوم بعمل تأخير (delay) بتعليمة التأخير المعروفة كما نريد ثم تعليمة تغيير المتغير كما نريد ،

لو الأمر لم يتضح بعد أو تريد مثال عرفنى كى أرفع مثال فورا إن شاء الله
شكرا أخي وليد وسؤالي كان خطأ فقد سألت عن متغير مما أشكل الأمر.

أخ صهيب بالنسبة للنسخة 7002 لم أجد فيها مكتبة تخص PWM فقمت بكتابة البرنامج الذى رفعته لكم فى المثال واشتغل تمام مع المتحكم 542 ، 877a فما أظنه هو أن المكتبة خاصة بالجديد فقط ولا يجوز بغيرها بخلاف القديم صح ؟ أرجو التوضيح

كى لا يحدث التباس على كل من يستخدم النسخة القديمة أو الحديثة
عندما نفذت برنامج ال pwm_test على ميكرو بايزيك برو لاحظت الخطأ بسبب اختلاف التعليمات في البرو وصححته بالعودة الى التعليمات في مكتبة ال pwm وهنا تنفذ البرنامج ولكن عند تجربته على proteus 7.6 sp4 لم يعمل رغم ان الملف الذي ارفقته أنت يعمل جيدا على نفس البرنامج.
أنظر الى الصورة:




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