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

   

alipilot
:: مهندس ::
تاريخ التسجيل: Jun 2014
المشاركات: 1
نشاط [ alipilot ]
قوة السمعة:
قديم 08-06-2014, 03:24 PM المشاركة 89   
افتراضي



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

تكتب رسالة ترحيب.....



تعرض الساعة ........




تعرض التاريخ .........



صورة المشروع بالكامل.........


وبمشيئة الله سنضيف اليها امكانيات اخري حسب مشاركة باقي الأعضاء في المنتدي
ياخواني انا اشكركم لما تقومون به انا لااحسن كثيرا micro c ولا لغة المجمع ولكن ساحاول التفاعل معكم بقدر المستطاع المهم انني اعرف ان هناك طرق كثيرة لصناعة هذه الساعة ولكن طريقتكم تتعلق ب pic ولكن يمكن فعل هذا فقط بالدارات المندمجة فعلى سبيل المثال circuit integré 74ls92/90فجميع هذه الدرات هي عبارة عن عدادات فهي تحتاج لربط لالبرمجة

اعلانات

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


طيب اخي شرحكم علمني الكثير

بالنسب لمسح المبلغ الكلي قصدي مثلا

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

ان صاحب العداد يتابع النتيجة كل يوم و يمسخ متا يشاء لاكن هناك نتيجة دائما مسجلة لا تنمسخ و اخي معلومة اخرى الريد التسجيل الى 999.999
اخي العزيز
الاشياء التي تم أضافتها هي
1- ليد فلاشنك في حاله وصول السعر الى 999.999 وطبعا العداد سوف يتوقف عند هذا الرقم وكذلك ليد فلاشنك للمسافه عند وصولها الى 999.999
2- ليد للسياره مشغوله واخر للفارغه
3- ليد للعداد الليل واخر للنهار
4- عند ضغط على سليب 3 مرات تظهر مسافه مقطوعه طبعا الكليه خلال الرحله او خلال عده رحلات
5- عند الضغط على مفتاح inc,dec,set معا يتم مسح price
6- عند الضغط على مفتاح inc,dec معا يتم تصفير مسافه
7- تصحيح الاخطاء في حساب السعر ومسافه (( صراحه لاأعرف لماذا مايكرو لايقوم بعمليه حسابيه بشكل صحيح))
8- أضافه ليد للدلاله على انه تم خزن مسافه في ايبروم

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

تحياتي

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

الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 08-06-2014, 03:49 PM المشاركة 91   
not funny


اخي العزيز
الاشياء التي تم أضافتها هي
1- ليد فلاشنك في حاله وصول السعر الى 999.999 وطبعا العداد سوف يتوقف عند هذا الرقم وكذلك ليد فلاشنك للمسافه عند وصولها الى 999.999
2- ليد للسياره مشغوله واخر للفارغه
3- ليد للعداد الليل واخر للنهار
4- عند ضغط على سليب 3 مرات تظهر مسافه مقطوعه طبعا الكليه خلال الرحله او خلال عده رحلات
5- عند الضغط على مفتاح inc,dec,set معا يتم مسح price
6- عند الضغط على مفتاح inc,dec معا يتم تصفير مسافه
7- تصحيح الاخطاء في حساب السعر ومسافه (( صراحه لاأعرف لماذا مايكرو لايقوم بعمليه حسابيه بشكل صحيح))
8- أضافه ليد للدلاله على انه تم خزن مسافه في ايبروم

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

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


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


اخي العزيز
الاشياء التي تم أضافتها هي
1- ليد فلاشنك في حاله وصول السعر الى 999.999 وطبعا العداد سوف يتوقف عند هذا الرقم وكذلك ليد فلاشنك للمسافه عند وصولها الى 999.999
2- ليد للسياره مشغوله واخر للفارغه
3- ليد للعداد الليل واخر للنهار
4- عند ضغط على سليب 3 مرات تظهر مسافه مقطوعه طبعا الكليه خلال الرحله او خلال عده رحلات
5- عند الضغط على مفتاح inc,dec,set معا يتم مسح price
6- عند الضغط على مفتاح inc,dec معا يتم تصفير مسافه
7- تصحيح الاخطاء في حساب السعر ومسافه (( صراحه لاأعرف لماذا مايكرو لايقوم بعمليه حسابيه بشكل صحيح))
8- أضافه ليد للدلاله على انه تم خزن مسافه في ايبروم

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

تحياتي
السلام عليكم
مشروع وفق معلومات ضمن مشاركه مقتبسه
http://up.top4top.net/downloadf-top4...f5941-rar.html

تحياتي


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


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

هذا الكود الجديد
كود:
if(EEPROM_Read(0)==0)// reading Price from eeprom
                 {
                  store_total_price= EEPROM_Read(1) ;
                  store_total_price =(store_total_price*100) +EEPROM_Read(2);
                  store_total_price =(store_total_price*100) +EEPROM_Read(3);
                  if(store_total_price>=999999)
                                            {
                                             led_full_price=1;
                                             Price_enable=1; // flashing led for full price
                                             store_total_price=999999;
                                            }
                  else led_full_price=0;
                  led_clear=1;
                 }
 else
     {
      store_total_price=0;
      led_clear=0;
     }
 if(EEPROM_Read(4)!=0xFF)// reading Price from eeprom
                 {

                  distance_km = EEPROM_Read(4) ;
                  distance_km =(distance_km*100) +EEPROM_Read(5);
                  distance_km =(distance_km*100) +EEPROM_Read(6);
                  if(distance_km>=999999)
                                          {
                                           led_full_distance=1;
                                           distance_km_enable=1;// led flashing for full distance
                                           distance_km=999999;
                                          }
                  else led_full_distance=0;
                  led_distance_cont=1;
                 }
وهذا الكود سابق ولكن لااعرف اين مشكله هذا الكود لاحتساب السعر ولكن النتيجه خاطئه
كود:
if(EEPROM_Read(0)==0)// reading Price from eeprom
                 {
                  store_total_price=(10000*EEPROM_Read(1))+(100*EEPROM_Read(2))+EEPROM_Read(3);
                  led_clear=1;
                 }


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


هذا الكود جديد لمسح البيانات من ايبروم

كود:
 if(clear_cont>=5000) // clear eeprom
                                {
                                 clear_cont=0;
                                 if(flag_price_clear==1)
                                                       {
                                                         flag_price_clear=0;
                                                         EEPROM_Write(0,0xFF);
                                                         EEPROM_Write(1,0);
                                                         EEPROM_Write(2,0);
                                                         EEPROM_Write(3,0);
                                                         led_clear=0;
                                                         led_full_price=0;
                                                         price_enable=0;
                                                         store_total_price=0;
                                                        }
                                 else  if(flag_distance_clear==1)
                                                     {
                                                        flag_distance_clear=0;
                                                        EEPROM_Write(4,0xFF);
                                                        EEPROM_Write(5,0);
                                                        EEPROM_Write(6,0);
                                                        led_distance_cont=0;
                                                        led_full_distance=0;
                                                        distance_km_enable=0;
                                                        distance_km=0;
                                                      }
                                }
طبعا يوجد متغيرين الاول flag_price_clear مسؤول عن مسح البيانات السعر من ايبروم لكي نقوم بتسجيل من جديد
وهذا هو كوده
كود:
if( sw_set==0 && sw_dec==0 && sw_inc==0)flag_price_clear=1; // code clear eeprom  Price
             else
                  {
                   flag_price_clear=0;
                  }
وينطفئ ليد
كود:
 led_clear=0;
                                                         led_full_price=0;
                                                         price_enable=0;
=================================================

اما متغير flag_distance_clear مسؤول عن مسح البيانات مسافه في ايبروم

وهذا هو كود
كود:
 if( sw_set==1 && sw_dec==0 && sw_inc==0)flag_distance_clear=1; // code clear eeprom  distance
             else 
                  {
                   flag_distance_clear=0;
                  }
وينطفئ ليد
كود:
led_distance_cont=0;
                                                        led_full_distance=0;
                                                        distance_km_enable=0;


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


اضافه الكود لليد للدلاله على السياره مشغوله وليد للدلاله على سيارع فارغه
كود:
if( start==0 && start2==1 )
                             {
                              start=1;
                              led_buzzy=1;
                              led_empty=0;
                              kk=0;
                              transfer_display=4;  // show message "start"
                              old_value=0;
                              colomn=0;
                              end_digit=5;// run only 5 7seg
                              message_cont=0;
                              flag_measuring_speed=1;
                              cont_speed_ave=0;
                              distance_price=0;//start value from 0

                             }
هذا الكود تم اضافه كود بلون احمر حيث ليد led_buzzy للسياره مشغوله وليد led_empty للسياره فارغه
فعند الضغط على ستارت تصبح ليد led_buzzy=1 وليد led_empty=0

=================================================
وهذا الكود عند الضغط على ستارت 3 مرات سوف يعني بأن تم الضغط على stop وعليه نجعل ليد سيراه فارغه=1 وليد سياره مشغوله =0
كود بلون أحمر
كود:
else  if(start2>=3  )
                        {  // return to main code " display date , clock
                          kk=255;
                          if(start==3)// store Price value in eeprom
                                     {
                                      store_total_price += value_start;
                                      if(store_total_price>=999999)
                                                                  {
                                                                   store_total_price=999999;
                                                                   Price_enable=1;
                                                                  }
                                      EEPROM_Write(0,0);// store 0 in address 0 this flag mean the data storing in eeprom

                                      EEPROM_Write(1,store_total_price/10000);//123456 /10000=12
                                      EEPROM_Write(2,store_total_price/100%100);//123456 /100 =1234%100=34
                                      EEPROM_Write(3,store_total_price%100); //123456 /100 =1234%100=34
                                      distance_km +=distance;
                                      EEPROM_Write(4,distance_km/10000);//123456 /10000=12
                                      EEPROM_Write(5,distance_km/100%100);//123456 /100 =1234%100=34
                                      EEPROM_Write(6,distance_km%100);
                                      led_clear=1;
                                      led_distance_cont=1;
                                     }
                          start=0;
                          start2=0;
                          led_buzzy=0;
                          led_empty=1;
                          transfer_display=0;// now start display date and clock;
                        }


التعديل الأخير تم بواسطة : حسن هادي محمود بتاريخ 08-06-2014 الساعة 08:52 PM

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


اضافه ليد flashing في حاله وصول السعر الى 999.999 وكذلك مسافه الى 999.999 وتقريبا 1000km
وهذا الكود flashing
كود:
void alarm_full_distance_price()
{
 if(timer_price_distance_full>=250)
             {
              timer_price_distance_full=0;
              if(distance_km_enable==1)led_full_distance=~led_full_distance;

              if(price_enable==1)led_full_price =~led_full_price;
             }


}
وهنا يوجد متغيرين الاول عن flag عن سعر هو price_enable وكذلك flag عن مسافه distance_km_enable

وطبعا هذين متغيرين تصبح فعاله
1- بدايه البرنامج وذلك عند قراءه من ايبروم

كود:
if(EEPROM_Read(0)==0)// reading Price from eeprom
                 {
                  store_total_price= EEPROM_Read(1) ;
                  store_total_price =(store_total_price*100) +EEPROM_Read(2);
                  store_total_price =(store_total_price*100) +EEPROM_Read(3);
                  if(store_total_price>=999999)
                                            {
                                             led_full_price=1;
                                             Price_enable=1; // flashing led for full price
                                             store_total_price=999999;
                                            }
                  else led_full_price=0;
                  led_clear=1;
                 }
 else
     {
      store_total_price=0;
      led_clear=0;
     }
 if(EEPROM_Read(4)!=0xFF)// reading Price from eeprom
                 {

                  distance_km = EEPROM_Read(4) ;
                  distance_km =(distance_km*100) +EEPROM_Read(5);
                  distance_km =(distance_km*100) +EEPROM_Read(6);
                  if(distance_km>=999999)
                                          {
                                           led_full_distance=1;
                                           distance_km_enable=1;// led flashing for full distance
                                           distance_km=999999;
                                          }
                  else led_full_distance=0;
                  led_distance_cont=1;
                 }
=================================================

2- اثناء احتساب السعر ومسافه
كود:
void speed_measuring()
{
  //if(cont_speed_ave <=2)IR_TX=1;//run ir led
 if(time_speed_cont>=500 && cont_speed_ave ==0)
                        {
                         time_speed_cont=0;
                         IR_TX=0;
                         cont_speed_ave++;
                         TMR0L=0;
                        }

  else if(time_speed_cont>=500 && cont_speed_ave==1)
                        {
                         speed1=TMR0L ;
                         if(start==2) // distance calculated only through calculated Price only
                                   {
                                    distance_price += ((speed1*26)/10);// distance=speed/time=speed/1sec=speed   2 mean distance for 2 second
                                                        // but found error and soultion using factor 2.6 second not 2 (260/100) by using method correct and error with real time
                                    if(TMR0L==0)distance_price=0;


                                    distance =distance_price;// calculate total distance

                                   }
                         TMR0L=0;
                         if((distance_km+distance)>=999999)
                                              {
                                               distance_km=999999;
                                               distance_km_enable=1;// oscillation led.
                                              }
                         IR_TX=0;
                         time_speed_cont=0;
                         check_price=1;
                         if(start==0)
                                    {
                                     speed =speed1 * 60   ; //  speed=(speed1)*60
                                     speed_data[0]=speed/1000;// 1480 /1000 =1
                                     speed_data[1]=speed/100 %10;// 1480/100=14%10=4
                                     speed_data[2]=speed/10 %10;// 1480/10=148%10=8
                                     speed_data[3]=speed %10; // 1480%10=0
                                     speed_data[4]=11;
                                     speed_data[5]=11;
                                    }
                         cont_speed_ave=0;
                        }

}
كود:
void calculate_price()
{

  // value_start=125 start value
 // car is stop then Price =125  , add 30 every 10sec
 // car running then Price =125  , add 30 every 100 meter
 // speed =m/s, speed =no. puls per second . then if speed=100 add to Price 30
 update_data();

 if(Price_change==0)// Price value start from 125
                  {
                   if(speed1>1   ){    // ex if distance =150m then distance/100=1  and must be put 50 in distance not put 0
                                            value_start=price_initial_1+(chot1*(distance_price/100)) ;
                                            Price_cont =0;
                                  }
                    else if( Price_cont>=3500){price_cont=0; value_start +=chot1;}
                  }
 else if(Price_change==1) // Price value start from 200
                         {
                          if(speed1>1 ) // ex if distance =150m then distance/100=1  and must be put 50 in distance not put 0
                                                 {
                                                   value_start=price_initial_2 +(chot2*(distance_price /100));
                                                   Price_cont=0;
                                                 }
                          else if(Price_cont>=3500){price_cont=0; value_start +=chot2;}
                         }
 if( value_start>=999999)
                         {
                          value_start=999999;
                          led_full_price=1;
                          price_enable=1;
                         }
 Price_array(value_start);

 check_price=0;

}
================================================
3- اثناء خزن البيانات
كود:
else  if(start2>=3  )
                        {  // return to main code " display date , clock
                          kk=255;
                          if(start==3)// store Price value in eeprom
                                     {
                                      store_total_price += value_start;
                                      if(store_total_price>=999999)
                                                                  {
                                                                   store_total_price=999999;
                                                                   Price_enable=1;
                                                                  }
                                      EEPROM_Write(0,0);// store 0 in address 0 this flag mean the data storing in eeprom

                                      EEPROM_Write(1,store_total_price/10000);//123456 /10000=12
                                      EEPROM_Write(2,store_total_price/100%100);//123456 /100 =1234%100=34
                                      EEPROM_Write(3,store_total_price%100); //123456 /100 =1234%100=34
                                      distance_km +=distance;
                                      EEPROM_Write(4,distance_km/10000);//123456 /10000=12
                                      EEPROM_Write(5,distance_km/100%100);//123456 /100 =1234%100=34
                                      EEPROM_Write(6,distance_km%100);
                                      led_clear=1;
                                      led_distance_cont=1;
                                     }
                          start=0;
                          start2=0;
                          led_buzzy=0;
                          led_empty=1;
                          transfer_display=0;// now start display date and clock;
                        }



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