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

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

   

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



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

عليكم السلام ورحمة الله
بالنسبة لمشروعى الذى رفعته والبروتوس فاشتغل معك لأن المتحكم المستخدم هو 542 فهو يعمل على المحاكى بسهولة وأما 877a & 628a فلا يستطيع المحاكى البروتوس الإصدار القديم 7,6 أن يشغلهم ولتجربتهم يجب تحميل النسهة بروتوس 7,7 ولأتلافى هذه المشكلة رفعت لكم المتحكم 542 كى لا أجبركم على تحميل النسخة الجديدة ،

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

اعلانات

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


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

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

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


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

نكمل معنا شرح طرق التعامل مع السفن سكمنت


2- الطريقة الثانية للتعامل مع 7 segment : الربط المباشر
في هذه الطريقة يتم توصيل السفن سكمنت مباشرة بالبك وهنا يجب الانتباه الى عدة نقاط :
الأولى : من المعلوم ان بعض السفن سكمنت تحتوي على سبعة أطراف ماعدا أطراف التغذية
وهذه الأطراف (a,b,c,d,e,f,g) إذن نحتاج الى سبعة اطراف من المايكروكونترولر لربط هذه السفن سكمنت


وهناك أنواع من السفن سكمنت تحتوي على ثمانية أطراف ( السبعة السابقة ويضاف اليها DP )
وهذه DP مختصر كلمة (decimal point) وتمثل النقطة الصغيرة الموجودة أسفل يمين السفن سكمنت ...
فإذا أردنا التحكم في إطفاء وتشغيل DP سنحتاج الى ثمانية أطراف من المايكروكونترولر
أما إذا أردنا أن نجعلها مضيئة دائما أو منطفئة دائما فنربطها مباشرة الى جهد التغذية ولا داعي لتوصيلها بالمايكروكونترولر


النقطة الثانية : البك يعطي جهد 5 فولت عند الإخراج .. وهناك أنواع من السفن سكمنت تعمل بجهد أقل من 5 فولت لذا يجب ربط مقاومات بين البك والسفن سمكنت حتى نحافظ عليها من العطب أو قصر العمر
أما انواع السفن سكمنت التي تعمل بالجهد خمسة فولت فلا داعي لربط هذه المقاومات

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


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

كود:
' Portb=%gfedcba
Portb=%1000000
ولو أردنا عرض رقم 1 نكتب
كود:
' Portb=%gfedcba
Portb=%1111001
وهكذا بقية الأرقام ...
طبعا الكلام أعلاه عن سفن سكمنت من نوع common anode
أما عن common cathode فيكون الأمر بشكل معكوس حيث لو أردنا عرض رقم صفر نكتب

كود:
' Portb=%gfedcba
Portb=%0111111
ولو أردنا عرض رقم 1 نكتب
كود:
' Portb=%gfedcba
Portb=%0000110
وهكذا .....

الآن ... ما رأيكم أن نقوم بكتابة برنامج يمثل عداد من صفر الى تسعة مرة بطريقة CA وأخرى بطريقة CC

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

كود البرنامج الذي يقوم بالعد من صفر إلى تسعة بطريقة المصعد المشترك
كود:
program counter
dim  count as byte
main:
trisb=0
while true
for count=0 to 9
select case count
case 0
portb=%1000000
case 1
portb=%1111001
case 2
portb=%0100100
case 3
portb=%0110000
case 4
portb=%0011001
case 5
portb=%0010010
case 6
portb=%0000010
case 7
portb=%1111000
case 8
portb=%0000000
case 9
portb=%0010000
end select
delay_ms(1000)
next count
wend
end.
وسيكون التنفيذ كما في الصورة المتحركة


كود البرنامج الذي يقوم بالعد من صفر إلى تسعة بطريقة المهبط المشترك
كود:
program counter
dim  count as byte
main:
trisb=0
while true
for count=0 to 9
select case count
case 0
portb=%0111111
case 1
portb=%0000110
case 2
portb=%1011011
case 3
portb=%1001111
case 4
portb=%1100110
case 5
portb=%1101101
case 6
portb=%1111101
case 7
portb=%0000111
case 8
portb=%1111111
case 9
portb=%1101111
end select
delay_ms(1000)
next count
wend
end.
لاحظ التنفيذ


نكمل بعد قليل إن شاء الله تعالى


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

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


ذكرت قبل قليل أنه يمكن اختصار الأرقام في البرنامجين السابقين ... فكيف يتم ذلك ؟؟

برنامج مايكروبيسك يوفر أداة مساعدة تسمى Seven Segment Editor
حيث تساعدنا هذه الأداة على اختيار الرقم الذي نريد عرضه على السفن سكمنت وتعطينا ما يقابله من الأرقام بالنظام العشري وكذلك بالنظام السداسي عشر


أين نجد هذه الأداة ؟
لاحظ الصورة



بعد اختيار Seven Segment Editor تظهر لنا الصورة

في الشرح أعلاه تم اختيار الرقم 0 وتستطيع اختيار بقية الأرقام بنفس الطريقة

المطلوب : إعادة كتابة أحد البرنامجين السابقين باستخدام هذه الطريقة يعني بدل أن نكتب
كود:
portb=%1000000
نكتب
كود:
Portb=192
وهكذا

أخيرا
اليكم كود برنامج يعد من 0 الى 9 بأقصر طريقة ممكنة وبصيغة CC:

كود:
program counter
const seg as byte[10]=(63,6,91,79,102,109,125,7,127,111)
dim  i as byte
main:
trisb=0
while true
for i=0 to 9
portb=seg[i]
delay_ms(1000)
next i
wend
end.
أتمنى ان يكون الشرح واضحا
بقيت لنا بعض اللمسات الاحترافية للتعامل مع السفن سكمنت نتركها للدرس القادم إن شاء الله تعالى


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

oman_boy
:: مهندس ::
تاريخ التسجيل: Dec 2010
المشاركات: 16
نشاط [ oman_boy ]
قوة السمعة:
قديم 20-12-2010, 07:59 PM المشاركة 189   
افتراضي


اخي wleed antar لقد عمل البرنامج معي بعد تنصيب النسخه الجديده
:-) درس من اروع الدروس

هل تسمح ان تشرح صريقة التحكم بالستيبر موتور والسيرفو موتور ؟
عن طريق البلس PWM
وشكرا جزيلا


push the limits
:: مهندس ::
تاريخ التسجيل: Sep 2010
المشاركات: 5
نشاط [ push the limits ]
قوة السمعة:
قديم 21-12-2010, 11:05 PM المشاركة 190   
افتراضي


واخيراااااااااااااا
عودة بعد إنقطاع الامل
جزاك الله خيرا م.وليد
متابعين إن شاء الله
ورجاء حار للاستمرار


A.S.K
:: مهندس ::
تاريخ التسجيل: Nov 2010
الدولة: syria
المشاركات: 1
نشاط [ A.S.K ]
قوة السمعة:
قديم 22-12-2010, 08:17 PM المشاركة 191   
افتراضي


الله يجزيك الخير


عيون المها
:: مهندس ::
تاريخ التسجيل: Oct 2010
المشاركات: 2
نشاط [ عيون المها ]
قوة السمعة:
قديم 29-12-2010, 09:00 PM المشاركة 192   
افتراضي الفزعة ثم الفزعة


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

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

بس أرجو منك المساعدة

عندي مشروع تخرج ومرتبط ببرنامج المايكروكنترولر
لكن عندي بعض الأخطاء فالكودات
لأن المشروع عبارة عن Electronic Voting Machine
والتصويت لثلاث أشخاص وفي كل مرة يزداد عدد الأصوات
باستخدام شاشة LCD
لكن المشكلة عندي البرنامج يظهر فيه أخطاء
فا ممكن تساعدني

وهذه هي الكودات
program finalproject

dim LCD_RS as sbit at RB4_bit
dim LCD_EN as sbit at RB5_bit
dim LCD_D4 as sbit at RB0_bit
dim LCD_D5 as sbit at RB1_bit
dim LCD_D6 as sbit at RB2_bit
dim LCD_D7 as sbit at RB3_bit
dim LCD_RS_Direction as sbit at TRISB4_bit
dim LCD_EN_Direction as sbit at TRISB5_bit
dim LCD_D4_Direction as sbit at TRISB0_bit
dim LCD_D5_Direction as sbit at TRISB1_bit
dim LCD_D6_Direction as sbit at TRISB2_bit
dim LCD_D7_Direction as sbit at TRISB4_bit
dim txt1 as char[10]
dim txt2 as char[13]

dim key1 as sbit at porta.0
dim key2 as sbit at porta.1
dim key3 as sbit at porta.2
dim key4 as sbit at porta.3
dim buzzer as sbit at porta.4
dim i as byte
i=0


main:
trisa=%00111
trisb=%00000000
porta=%00000
portb=%00000000
txt1="Electronic"
txt2="Voting Machine"
lcd_init()
lcd_cmd(_lcd_clear)
lcd_cmd(_lcd_cursor_off)
lcd_out(1,6,txt1)
lcd_out(2,3,txt2)
delay_ms(3000)
txt1="Designed by"
txt2="Mari"
lcd_cmd(_lcd_clear)
lcd_cmd(_lcd_cursor_off)
lcd_out(1,6,txt1)
lcd_out(2,3,txt2)
delay_ms(2000)
if porta.1 or porta.2 or porta.3=1 then goto ss
ss:
lcd_cmd(_lcd_clear)
xxx:
lcd_out(1,6,"vote")
lcd_out(2,1,"ALi"
for i=1 to 9
porta= porta+1
delay_m(1000)
next i
key1= key1+1
else key1=0
if borta.1=9 then goto stop
end if
goto ss
stop:
lcd_out(1,6,"vote")
lcd_out(2,7,"Mohammed")
for i=1 to 9
porta= porta+1
delay_m(1000)
next i
key2= key2+1
if porta.2=9 then goto stop
end if
goto ss
stop:
lcd_out(1,6,"vote")
lcd_out(2,13,"Faisal")
for i=1 to 9
porta= porta+1
delay_m(1000)
next i
key3= key3+1
if porta.3=9 then goto stop
end if
goto ss
stop:
end.



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