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

   

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



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

اعلانات

hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 20-03-2014, 10:29 AM المشاركة 50   
x6 بارك الله لك اخي الكريم واعزك وفتح لك كل ابواب الخير


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

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

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


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


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 20-03-2014, 03:04 PM المشاركة 52   
افتراضي


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


الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 20-03-2014, 03:46 PM المشاركة 53   
sun


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


hamadalla31
:: مهندس متميز ::
تاريخ التسجيل: Mar 2009
المشاركات: 585
نشاط [ hamadalla31 ]
قوة السمعة:
قديم 20-03-2014, 06:00 PM المشاركة 54   
افتراضي بارك الله لك واثابك بكل ماتحب من خيري الدنيا والأخرة


جزاكم الله عني بكل خير
استاذي الفاضل في مكتبة ds1307
قمت بتعريف متغير بهذه الصورة
كود:
*p_seconds = Soft_I2C_Read(1);     // Read seconds byte
فهل النجمة مجرد تسمية عادية ام ترميز وتهيئة للمتغير

وفي البرنامج الأخير وضعت هذا السطر

كود:
 if(setting2==0)Show_Time(0,0,0,0,0,0,0,255);
في دالة display كتبت مجموعة اصفار بين قوسين ثم 255 ارجو شرحها وشرح وظيفتها

وكود هذا الزر لم افهم كيف تسير الأمور معه
كود:
if(sw1_setting==0)
           {
            set--;
            kk=kk+2;
            if(kk==10)kk=9;
            if(kk==6)x= 42;          // delay for display 6 msec then x=250/6=42
            else if(kk==8)x=32;        // delay for display 8 msec then x=250/8=32
            else if(kk==9)x=28;       // delay for display 9 msec then x=250/9=28
            else if(kk==11)x=23;     // delay for display 11 msec then x=250/11=23
            else if(kk==13)x=20;     // delay for display 13 msec then x=250/13=20
            else if(kk==15)x=17;     // delay for display 15 msec then x=250/15=17
            else if(kk==17)x=15;     // delay for display 17 msec then x=250/17=15
            delay_ms(250);
            if(set==0)
                     {
                       setting2=0;
                       set_DS1307(8,24);
                       intcon=0xA0;
                       return;

بارك الله لك وجزاكم الله عني بكل خير


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


جزاكم الله عني بكل خير
استاذي الفاضل في مكتبة ds1307
قمت بتعريف متغير بهذه الصورة
كود:
*p_seconds = Soft_I2C_Read(1);     // Read seconds byte
فهل النجمة مجرد تسمية عادية ام ترميز وتهيئة للمتغير

وفي البرنامج الأخير وضعت هذا السطر

كود:
 if(setting2==0)Show_Time(0,0,0,0,0,0,0,255);
في دالة display كتبت مجموعة اصفار بين قوسين ثم 255 ارجو شرحها وشرح وظيفتها

وكود هذا الزر لم افهم كيف تسير الأمور معه
كود:
if(sw1_setting==0)
           {
            set--;
            kk=kk+2;
            if(kk==10)kk=9;
            if(kk==6)x= 42;          // delay for display 6 msec then x=250/6=42
            else if(kk==8)x=32;        // delay for display 8 msec then x=250/8=32
            else if(kk==9)x=28;       // delay for display 9 msec then x=250/9=28
            else if(kk==11)x=23;     // delay for display 11 msec then x=250/11=23
            else if(kk==13)x=20;     // delay for display 13 msec then x=250/13=20
            else if(kk==15)x=17;     // delay for display 15 msec then x=250/15=17
            else if(kk==17)x=15;     // delay for display 17 msec then x=250/17=15
            delay_ms(250);
            if(set==0)
                     {
                       setting2=0;
                       set_DS1307(8,24);
                       intcon=0xA0;
                       return;

بارك الله لك وجزاكم الله عني بكل خير
السلام عليكم
اي متغير يوضع امامه * يعني هذا متغير من نوع pointer يعني مؤشر يشير الى موقع معين مخزون في ذاكره
ولما نكتب مثلا num=*num2& معناها اخزن محتويات الموقع والذي يشير اليه num2 بمتغير num
============================================
اما (Show_Time(0,0,0,0,0,0,0,255
الاصفار ليس لها معني لاني داله Show_Time هي داله لقراءه الوقت والتاريخ رقم اخير الي كتبته 255 يمكنك كتابه اي رقم ماعدا 0 لماذا
لانه استخدمت 0 في تحويل القيم التي تم ادخالها (( أقصد الوقت والتاريخ )) الى النظام BCD لاحظ الكود
كود:
 if(states==0){
                c_hours=dec2bcd(c_hours);
                c_minutes=dec2bcd(c_minutes);
                c_seconds=dec2bcd(c_seconds);
                c_day=dec2bcd(c_day);
                c_month=dec2bcd(c_month);
                c_year=dec2bcd(c_year);
                Write_Time(c_hours,c_minutes,c_seconds,c_day,c_week,c_month,c_year);
              }
لاحظ states==0 ماذا يحدث
1- يحول كل البيانات من نظام عشري الى BCD لان متكامله DS1307 تتعامل مع BCD
2- خزن القيم الجديده لغرض ضبط الوقت

يعني بأختصار يمكنك وضع اي رقم بين 1 الى 255 لذا وضعت 255

امر مهم //
عندما اضع رقم اخير 0 فأن داله show_time يجب ان يتم وضع بداخلها بيانات وليس الاصفار
لماذا ارجع الى كود اعلاه تلاحظ state=0 فهنا راح يخزن الوقت والتاريخ في متكامله ولهذا ارسل في داله show_time بيانات
اما اذا ردت show_time فقط للقراءه انا مامحتاج ارسل لها اي بيانات ولهذا لكي لايعطيني كمبايلر مايكروسي لابد من وضع اي ارقام داخل داله show_time لماذا لانه show_time هي داله تأخذ عده متغيرات فأذا نقصت اي واحده فأن كمبايلر مايكروسي سوف يخبرك ان show_time لم يتم وضع فيها كل البيانات
وعليه الاصفار لاتعني اي شيئ ويمكنك وضع اي شيئ طالما رقم اخير هو ليس 0
=================================================


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


اما مايخص داله setting
كنت بالبدايه اتعامل مع داله الانتربت فكنت ارسل لها قيمه معينه لاحظ الكود لداله انتربت
في اخر كود يوجد هذا امر
كود:
if(se==16)se=0;
ماذا يعني
معناها اذا وصلت الى البن 16 من متكامله 74HC595 لابد من عوده من جديد وعليه لابد من اعاده ريست ولكي تعمل شاشات سفن سكمنت
فكانت الفكره عند تعديل الوقت والتاريخ بيظهر جزء جزء فكانت الفكره ان رقم 16 ابدله بمتغير في وضع طبيعي اجعله =16 وبتالي تشتغل 16 خانه من سفن سكمنت
وعند اعاده ضبط الوقت والتاريخ في البدايه راح اضبط السنه لذا كم خانه تحتاج الجواب اربعه خانات لاظهار السنه والبيقيه اظهرها تباعا لغرض يفهم مستخدم بأنه يريد التعديل على هذا او ذاك
لذا عند ضبط السنه اجعل متغير =4 اي كود اعلاه يصبح
كود:
if(se==4)se=0;
وبتالي تظهر فقط السنه
وعند الضغط على OK راح اجعل se تعد الى 6 لان اشهر تحتاج خانتين واضافه الى السنه تصبح 6 خانات
مهم لما جربت هذه طريقه اصبح البك يخرف كثير وظهرت مشاكل كثيره ففكرت ماهي طريقه مناسبه لذا كان الحل الغي انتربت عند ظبط الوقت والتاريخ واصنع داله جديده تؤدي مهمه تشغيل سفن سكمنت
كود:
  if(sw1_setting==0)
                     {
                      INTCON =0; // disable interupts
                      set=7;
                      setting2=255;
                      delay_ms(10);
                      while(sw1_setting==0);
                      delay_ms(10);
                      set_DS1307(0,255);// store data and clock in setting_DS1307
                      setting();
                     }
لاحظ الكود عند الضغط على مفتاح الضبط اوقفت الانتربت لاسباب شرحتها اعلاه

في داله setting واجهتني مشكله أخرى وهي زمن العرض
انا جعلت عند الضغط على مفتاح الزياده او نقصان بتأخير زمني مقداره 250ms
ولكن هذا زمن كبير راح يخلي سفن سكمنت بترتعش ولاتستقر
زين كيف اخليها مستقره؟؟؟
الجواب لازم كرر عرض البيانات على سفن سكمنت بأستمرار خلال زمن 250ms طيب ماأفتهمت يعني أشلون بتكرر ذلك دون ان تسبب اي ارتعاش بسفن سكمنت
لاحظ الكود
كود:
void display_setting(char data2)
{
 for (cont=0;cont<data2;cont++)
                               {
                                if(cont==0 ){
                                             res_pin=0;
                                             res_pin=1;
                                             sh_cp_pin=0;
                                             sh_cp_pin=1;
                                             ds_pin=1;
                                            }

                                 sh_cp_pin=0;
                                 sh_cp_pin=1;
                                 st_cp_pin=0;
                                 st_cp_pin=1;
                                 portb=~segment[num[cont]];
                                 delay_ms(1);
                                 ds_pin=0;
                                }
}
لاحظ بكود انه كل زياده او نقصان الرقم راح يوجد تأخير زمني مقداره ربع ثانيه ولكن كما تلاحظ بالكود اعلاه انه 250ms تمت تجزئتها
بس واحد يسئل وهو لما تعرض فقط السنه كم هو زمن مستغرق لتشغيل كل شاشات الجواب هو 4ms لان سنه تحتاج اربعه خانات ولكي اخذ فقط 250 ms اذن كم مره اكرر 4
لاحظ
كود:
if(sw2_inc==0){
                 if(set !=0)set_DS1307(set,0);
                  for(gg=0;gg<x;gg++)
                                       {
                                       display_setting(kk);
                                      }
                }
واذا اريد ضبط الاشهر راح اشغل 6 سفن سكمنت يعني كم زمن 6ms واذا ردت ضبط الايام راح تشتغل 8 سفن سكمنت يعني زمن كلي 8ms
راح تلاحظ مشكله وهي كلما كثرت سفن سكمنت يصبح زياده او نقصان رقم بطيئ جدا لاني حلقه تكرار هي مهمتها تكرر تشغيل سفن سكمنت لزمن معين غايه منه
1- عدم تنفيذ زياده اونقصان رقم بسرعه كبيره
2- التخلص من اي ارتعاش بشاشه سفن سكمنت
لاني كررت اوامر تشغيل سفن سكمنت لزمن مثلا 250ms
لذا فكرت بهذا الحل
شاهد هذا كود مره اخرى
كود:
if(sw1_setting==0)
           {
            set--;
            kk=kk+2;
            if(kk==10)kk=9;
            if(kk==6)x= 42;          // delay for display 6 msec then x=250/6=42
            else if(kk==8)x=32;        // delay for display 8 msec then x=250/8=32
            else if(kk==9)x=28;       // delay for display 9 msec then x=250/9=28
            else if(kk==11)x=23;     // delay for display 11 msec then x=250/11=23
            else if(kk==13)x=20;     // delay for display 13 msec then x=250/13=20
            else if(kk==15)x=17;     // delay for display 15 msec then x=250/15=17
            else if(kk==17)x=15;     // delay for display 17 msec then x=250/17=15
            delay_ms(250);
            if(set==0)
                     {
                       setting2=0;
                       set_DS1307(8,24);
                       intcon=0xA0;
                       return;

                     }
           }
ماذا تلاحظ كلما زدت عدد سفن سكمنت قللت قيمه x طبعا يوجد تعليق اما كل قيمه x لماذا وضعتها بقيمه فلانيه غرض منها الحفاظ على وقت تأخيري ثابت وهو 250ms



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