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

   

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 02-06-2014, 01:16 PM المشاركة 73   
Thumbs up



السلام اخي راجعة الكود جيدااااا

اخي عند تعديل الوفت لا يعمل العداد هدا ما لاحضة اعدل الوقت ليلا او نهار يصبح العداد لا يعمل

وضعة الوقت على الساعة 20.59 و ستار توقوف على 0.125 و المفروض انه يعمل

0.125 ثم 30 + 30 الى ان يدخل وقت اليل فيزيد 45 45 و هكذا الامر في الاعة
04.58 ساتر 200 +45 +45 الى الساعة 05.00 فيزيد 30 30
انا افهم الكود جيدا اخي
و هل ممكن شرح كيف استدعي كلمت ستار و ستوب
لاني لم افهم الطريقة
اريد ان اختبر ما تعلمت عند الضغط على سبيد يكتب SPEEd
السلام عليكم
سوف أتاكد وأعطيك خبر
ان شالله سوف اشرحلك الطريقه
تحياتي

اعلانات

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-06-2014, 06:09 AM المشاركة 74   
افتراضي


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

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-06-2014, 06:35 AM المشاركة 75   
افتراضي


السلام عليكم
سوف أتاكد وأعطيك خبر
ان شالله سوف اشرحلك الطريقه
تحياتي
كيف أستدعي كلمه start و stop

عند ضغط على مفتاح start
كود:
 if (sw_start==0)
                              {
                               old_state=1; // inc switch is pressed
                              }
             if(sw_start==1 && old_state==1) 
                                                {
                                                  old_state=0;
                                                  sw_start_flag=1;
                                                }

وبعد أنقضاء الوقت 250 ملي يزداد قيمه start2 لتصبح =1 ولايزال start=0
كود:
if(sw_start_cont>130 && old_state==0)
                             {
                              sw_start_flag=0;
                              sw_start_cont=0;
                              start2++;
                             }
أذن
كود:
if( start==0 && start2==1 )
                             {
                              start=1;
                              kk=0;
                              transfer_display=4;  // show message "start"
                              old_value=0;
                              colomn=0;
                              end_digit=5;// run only 5 7seg
                              message_cont=0;
                             }
transfer_display=4 لذهب الى كود داله display_7seg()
كود:
else if(transfer_display==4)
                                   {
                                     for(x=0;x<8;x++) //
                                                      {
                                                       if(colomn>=2 && start==3)stop_price=3; // stop_price using to display message start and stop for Price
                                                                                            //  start message message_start={s,t,a,r,t} but stop message message_start{s,t,x , x,x,o,p} x mean cancel
                                                       else stop_price=0;
                                                       if(Check_bit((message_start[colomn+stop_price]) ,7-x))DS1=1;
                                                       else DS1=0;
                                                       SH1=0;SH1=1;
                                                      }
                                    }

اما stop

عندما يتم الضغط مره اخرى على start هنا سوف تصبح قيمه start2=2 , وطبعا قيمه start=1
كود:
if(sw_start_cont>130 && old_state==0)
                             {
                              sw_start_flag=0;
                              sw_start_cont=0;
                              start2++;
                             }
اذن
كود:
else if(start2==2 && message_cont>500 ) // now the 7seg will display Price value or message stop  every 1 second
                        {
                          start=3;
                          if(oscilation==0 ) 
                                            {
                                             transfer_display=4;  // show message "stop"
                                             end_digit=4;
                                            }
                          else {
                                transfer_display=5;  // show Price value
                                end_digit=6;
                                }
                          oscilation=~oscilation;
                          old_value=0;
                          colomn=0; // start from 1 7seg

                          message_cont=0;
                          sw_speed_flag=0;// disenable function  speed_measuring();
                        }
هنا تلاحظ يظهر رسالتين لكل ثانيه وبتالي مره تظهر stop ومره قيمه العداد المسجله
كود:
if(oscilation==0 ) 
                                            {
                                             transfer_display=4;  // show message "stop"
                                             end_digit=4;
                                            }
في داله display_7seg() عندما transfer_display==4 وكذلك start=3


كود:
else if(transfer_display==4)
                                   {
                                     for(x=0;x<8;x++) //
                                                      {
                                                       if(colomn>=2 && start==3)stop_price=3; // stop_price using to display message start and stop for Price
                                                                                            //  start message message_start={s,t,a,r,t} but stop message message_start{s,t,x , x,x,o,p} x mean cancel
                                                       else stop_price=0;
                                                       if(Check_bit((message_start[colomn+stop_price]) ,7-x))DS1=1;
                                                       else DS1=0;
                                                       SH1=0;SH1=1;
                                                      }
                                    }
تلاحظ الشرط
كود:
if(colomn>=2 && start==3)stop_price=3;
في رساله message_start تم خزن احرف start و stop تلاحظ كلمتين مشتركه في st ولهذا السبب قلت له هل colomn هل اكبر او تساوي 2 فأذا كان نعم شوفلي قيمه start هل = 3 اذا كان نعم ايضا أجعلي stop_price=3 لماذا لكي من قراءه من مصفوفه message_start يقرأ من op ولماذا قلت stop_price=3 لان عدد احرف متبقيه من start هي فقط art وطبعا لازم أتجاوزها لهذا قلت stop_price=3
انظر
كود:
message_start[colomn+stop_price])

اما كيف تظهر قيمه العداد
احنا قلنا كل 1 ثانيه يحصل تبديل في العرض بين كلمه stop وبين قيمه العداد

كود:
 else if(start2==2 && message_cont>500 ) // now the 7seg will display Price value or message stop  every 1 second
                        {
                          start=3;
                          if(oscilation==0 ) 
                                            {
                                             transfer_display=4;  // show message "stop"
                                             end_digit=4;
                                            }
                          else {
                                transfer_display=5;  // show Price value
                                end_digit=6;
                                }
                          oscilation=~oscilation;
                          old_value=0;
                          colomn=0; // start from 1 7seg

                          message_cont=0;
                          sw_speed_flag=0;// disenable function  speed_measuring();
                        }
طبعا هو كيف يحصل التبيدل هو بسبب هذا متغير oscilation=~oscilation فكل ثانيه مره يصبح 0 ومره يصبح 255 بسبب وجود علامه نفي ~


اذن في كود display_7seg() وعندما transfer_display=5
كود:
else if(transfer_display==5)
                                   {
                                      for(x=0;x<8;x++) //
                                                      {
                                                       if( colomn==2 )point=127;
                                                       else point=255;
                                                       if(Check_bit((segment[price[colomn]]& point) ,7-x))DS1=1;
                                                       else DS1=0;
                                                       SH1=0;SH1=1;
                                                      }
                                    }
تحياتي


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 06-06-2014, 11:54 AM المشاركة 76   
افتراضي


شرح واضح جداا اخي

احي هناك تعديل طلبتها منكم

اريد حساب جميع العمليات المجرات و طلبها عند الضغط على سليب مرتين

يعني عملنا حساب
580 و جاء خريف اخر 720 و اخر

هل ممكن ان نجمعها معا و استدعئها

طيب اخي طلب اخر هل ممكن ان نجمع جميع الكلمترات المقطوعة يعني العداد يعمل مع السيارة وهو يقوم بحساب الكلمترات المقطوعة و يعرضها عهن الطلب بالضغط على سليب ثلاث مرات

وعند الضغط + لوقت طويل 2 ثانية يكتب OFF وينطفء العداد وعند الضغط على زر التشغيل يعمل

اخي انا اتابع المشروع خذ وقتكم في التعديل و ان امكن طبعا شرح ضغير لكي افهم

اخي و الليد الالاحمر يدل على ان العداد مشغول و الازرق يدل على ان السيارة فارغة و ليد يدل على ان العداد في وقت النهار و اخرى لوقت الليل


التعديل الأخير تم بواسطة : المخترع01 بتاريخ 06-06-2014 الساعة 12:19 PM

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-06-2014, 12:42 PM المشاركة 77   
افتراضي


شرح واضح جداا اخي

احي هناك تعديل طلبتها منكم

اريد حساب جميع العمليات المجرات و طلبها عند الضغط على سليب مرتين

يعني عملنا حساب
580 و جاء خريف اخر 720 و اخر

هل ممكن ان نجمعها معا و استدعئها

طيب اخي طلب اخر هل ممكن ان نجمع جميع الكلمترات المقطوعة يعني العداد يعمل مع السيارة وهو يقوم بحساب الكلمترات المقطوعة و يعرضها عهن الطلب بالضغط على سليب ثلاث مرات

وعند الضغط + لوقت طويل 2 ثانية يكتب OFF وينطفء العداد وعند الضغط على زر التشغيل يعمل

اخي انا اتابع المشروع خذ وقتكم في التعديل و ان امكن طبعا شرح ضغير لكي افهم

اخي و الليد الالاحمر يدل على ان العداد مشغول و الازرق يدل على ان السيارة فارغة و ليد يدل على ان العداد في وقت النهار و اخرى لوقت الليل
السلام عليكم
أخي كريم وفق لهذه التعديلات يصبح البك 16f877a غير مناسب ولازم نستخدم 18f45k22

لم أفهم ماذا تعني ليد ازرق للسياره فارغه وكذلك ماهو الفرق للعداد يعمل في الليل او النهار


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 06-06-2014, 12:50 PM المشاركة 78   
افتراضي


السلام عليكم
أخي كريم وفق لهذه التعديلات يصبح البك 16f877a غير مناسب ولازم نستخدم 18f45k22

لم أفهم ماذا تعني ليد ازرق للسياره فارغه وكذلك ماهو الفرق للعداد يعمل في الليل او النهار
اخي نعم غير البيك ب 18
او ممكن استعمال الشيب atmega8 او 16 اكثر ثبات و بهي عديد المزاية ز الثمن جيد هنا

و عندي ميكروسي فور avr$

ساشرخ لكم

هذه الليد لتبين للراكب
الاولى لنفترض زرقاء
اليد -1 السيارة فارغة
اليد-2 السيارة بها راكب و العداد في طور استعمال
-3 العداد في وضع النهار
4 العداد في وضع اليل و تشتعل اليد من 21 الى 5
و اختر سويتش عن الضغط عليه لمدة يكتب العداد OFF
و عند الضغط على ستار يرجع يعمل من جديد
اخي تعديل مهم جدا ضع الوقت في 24 ساعة لان مشكل هناك عند التعديل


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 06-06-2014, 01:10 PM المشاركة 79   
افتراضي


اخي نعم غير البيك ب 18
او ممكن استعمال الشيب atmega8 او 16 اكثر ثبات و بهي عديد المزاية ز الثمن جيد هنا

و عندي ميكروسي فور avr$

ساشرخ لكم

هذه الليد لتبين للراكب
الاولى لنفترض زرقاء
اليد -1 السيارة فارغة
اليد-2 السيارة بها راكب و العداد في طور استعمال
-3 العداد في وضع النهار
4 العداد في وضع اليل و تشتعل اليد من 21 الى 5
و اختر سويتش عن الضغط عليه لمدة يكتب العداد OFF
و عند الضغط على ستار يرجع يعمل من جديد
اخي تعديل مهم جدا ضع الوقت في 24 ساعة لان مشكل هناك عند التعديل
من ناحيه السياره فارغه او فيها ركاب فكيف يتم معرفه ذلك يعني برمجيا كيف يتم ذلك لازال طلب غامض عندي


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 06-06-2014, 01:24 PM المشاركة 80   
افتراضي


من ناحيه السياره فارغه او فيها ركاب فكيف يتم معرفه ذلك يعني برمجيا كيف يتم ذلك لازال طلب غامض عندي
عند الضغط على ستار طبعا

يشتعل الازرق

الضغط على ستار يعني ستوب

يشتعل الاحمر

و يبقى مشتعل الى ان ينطفء العداد من OFF

اخي ارجو استعمال الشيب من عائلة AVR

atmega16



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