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

   

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



اخييي عمل مممتتتتتتتتتتتتتتتتتتتاز
ارجو شرح الكود سيغمون و كود حرف C
و هل يمكن اخي عمل كود عند وصول درجة الحرارة الى 110 يكتب كلمة

stop
كود سفن سكمنت
كود:
void show_7seg(unsigned int number,char time)
{
 for(x=0;x<time;x++)
     {
      seg_en1=enable;     seg_en2=disenable;
      seg_en3=disenable; seg_en4=disenable;
      segment=segment1[number/100];
      delay_ms(2);
      segment=0;// OFF 7 segment

       seg_en4=disenable;    seg_en3=disenable;
      seg_en2=enable;        seg_en1=disenable;
      segment=segment1[(number%100)/10];
      delay_ms(2);
      segment=0;// OFF 7 segment

       seg_en4=disenable;    seg_en3=enable;
      seg_en2=disenable;     seg_en1=disenable;
      segment=segment1[number%100%10];
      delay_ms(2);
      segment=0;// OFF 7 segment

      //**** show C in 7 seg  ***//
      seg_en1=disenable;    seg_en2=disenable;
      seg_en3=disenable;     seg_en4=enable;
      segment=segment1[10];
      delay_ms(2);
      segment=0;// OFF 7 segment

     }
سفن سكمنت متكونه من 4 أخانات أستخدمت ثلاثه منها لاظهار درجه حراره وأخيره أستخدمتها لاظهار حرف C
لكي يتم برمجه سفن سكمنت يجب اظهار رقم واحد في كل مره وهذا يعني انه يتم تفعيل خانه واحده وتعطيل بقيه الخانات
لاظهار الارقام سنستخدم القسمه والباقي القسمه
وبما انها ثلاثه سنقسم الرقم على 100 ونظهره في خانه الاولى انظر الكود
كود:
 seg_en1=enable;     seg_en2=disenable;
      seg_en3=disenable; seg_en4=disenable;
      segment=segment1[number/100];
      delay_ms(2);
      segment=0;// OFF 7 segment
حيث تم تفعيل خانه رقم 1 وتعطيل بقيه طبعا حتى يتم تفعيل لازم يكون طرف enable او com لهذه خانه =0 لانها من نوع كمن كاثود
وبعد أظهار رقم ننتظر زمن 2 ملي ثانيه وبعدها يتم أطفاء سفن سكمنت

وبعدها نظهر رقم ثاني على خانه ثانيه حيث نأخذ باقي قسمه على 100 ونقسم نتيجه على 10
انظر كود
كود:
 seg_en4=disenable;    seg_en3=disenable;
      seg_en2=enable;        seg_en1=disenable;
      segment=segment1[(number%100)/10];
      delay_ms(2);
      segment=0;// OFF 7 segment
وبقيه رقم ثالث هنا نأخذ باقي قسمه من 10
كود:
 seg_en4=disenable;    seg_en3=enable;
      seg_en2=disenable;     seg_en1=disenable;
      segment=segment1[number%100%10];
      delay_ms(2);
      segment=0;// OFF 7 segment
****************************************
اما لاظهار حرف C
كود:
seg_en1=disenable;    seg_en2=disenable;
      seg_en3=disenable;     seg_en4=enable;
      segment=segment1[10];
      delay_ms(2);
      segment=0;// OFF 7 segment
هو نفس الاسلوب ولكن مااستخدم القسمه وباقي قسمه لكوني اريد اظهار بيانات ثابته
انظر الصوره
http://img02.arabsh.com/uploads/imag...474366f30d.png

اعلانات

الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 25-09-2013, 12:00 PM المشاركة 66   
افتراضي


****************************************
اما لاظهار حرف C
كود:
seg_en1=disenable;    seg_en2=disenable;
      seg_en3=disenable;     seg_en4=enable;
      segment=segment1[10];
      delay_ms(2);
      segment=0;// OFF 7 segment
هو نفس الاسلوب ولكن مااستخدم القسمه وباقي قسمه لكوني اريد اظهار بيانات ثابته
انظر الصوره
http://img02.arabsh.com/uploads/imag...474366f30d.png[/QUOTE]
شكرا اخي
مثلا اريد اضهار حرف اخر E
اين اغير لاني لم اجد كود حرف C = 57

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

الصورة الرمزية حسن هادي محمود
حسن هادي محمود
:: عضو ذهبي ::
تاريخ التسجيل: Sep 2012
الدولة: العراق /البصره
المشاركات: 2,673
نشاط [ حسن هادي محمود ]
قوة السمعة:
قديم 25-09-2013, 03:48 PM المشاركة 67   
افتراضي


****************************************
اما لاظهار حرف C
كود:
seg_en1=disenable;    seg_en2=disenable;
      seg_en3=disenable;     seg_en4=enable;
      segment=segment1[10];
      delay_ms(2);
      segment=0;// OFF 7 segment
هو نفس الاسلوب ولكن مااستخدم القسمه وباقي قسمه لكوني اريد اظهار بيانات ثابته
انظر الصوره
http://img02.arabsh.com/uploads/imag...474366f30d.png
شكرا اخي
مثلا اريد اضهار حرف اخر E
اين اغير لاني لم اجد كود حرف C = 57[/QUOTE]

يمكن حصول على اي شكل من مايكروسي
من tools نختار seven segment editer كما في صوره
http://img02.arabsh.com/uploads/imag...474363f107.png
وعندها يمكنك ان تكتب رقم كود مثلا لاظهار حرف F نلاحظ انه لو استخدمت سفن سكمنت كمن كاثود فأن كود=113
http://img02.arabsh.com/uploads/imag...474363f006.png


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 25-09-2013, 11:04 PM المشاركة 68   
افتراضي


اخي هذا الفيديو يوضح الارتعاش

http://www.mediafire.com/?6dn3j5cccr2sckn

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


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


اخي هذا الفيديو يوضح الارتعاش

http://www.mediafire.com/?6dn3j5cccr2sckn

هل يمكن دمج كود اخر لعمل مقياس سرعة
اخي كريم
لااعرف سبب الارتعاش ولكن يدل ذلك على وجود بطأ اي وجود زمن تأخيري ولكن من اين اتى هذا زمن
عموما نحاول حل مشكله
اخي حاول تقلل بزمن عرض رقم
كود:
void show_7seg(unsigned int number,char time)
{
 for(x=0;x<time;x++)
     {
      seg_en1=enable;     seg_en2=disenable;
      seg_en3=disenable; seg_en4=disenable;
      segment=segment1[number/100];
      delay_us(250);
      segment=0;// OFF 7 segment

      seg_en4=disenable;    seg_en3=disenable;
      seg_en2=enable;        seg_en1=disenable;
      segment=segment1[(number%100)/10];
      delay_us(250);
      segment=0;// OFF 7 segment

       seg_en4=disenable;    seg_en3=enable;
      seg_en2=disenable;     seg_en1=disenable;
      segment=segment1[number%100%10];
      delay_us(250);
      segment=0;// OFF 7 segment

      //**** show C in 7 seg  ***//
      seg_en1=disenable;    seg_en2=disenable;
      seg_en3=disenable;     seg_en4=enable;
      segment=segment1[10];
      delay_us(250);
      segment=0;// OFF 7 segment

     }
تلاحظ زمن بلون احمر جعلته ربع ملي ثانيه زمن كلي =1 ثانيه
طبعا حاول تقلل او زيد الى ان تحصل على نتيجه مرضيه
ومشكله لااعرف سبب ولكن سبحث معاك عن حل اجرب خطوه تقليل زمن

ولكن عليك ايضا زياده زمن لاظهار رقم كلي يعني اقصد
كود:
void caculated_temperature()
{
 temp=ADC_Read(4);
 temp=temp*5000/1023;
 zz=(1/ (log( ( temp*(R1+R2)-(5000*R2) )/((5000-temp)*R25))/B +3.354e-3) )-273.15; // equation fot NTC
 temp2=zz;
 if(zz>=100)temp2=99; // max value beacuse using 7seg two segment only
 if(zz<=1)temp2=0;
 show_7seg(temp2,100);
}
كانت (لون احمر) 10 اي زمن كلي (سابقا)=(2+2+2+2)=8 ويتم تكرارها 10 مرات يصبح 80
اما الان زمن اصبح (0.25+0.25+0.25+0.25)=1
وعليه انا وضعت 100 اي يتم تكرار 1 بــ 100 مره يصبح زمن 100 ملي ثانيه
هذه كخطوه الاولى
ولكن لابد من معرفه سبب الاصلي للمشكله
اتمنى ان تسأل ذوي خبره في واقع العملي لعلك تصل الى مشكله


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


اخي كريم
اعتقد سبب مشكله هي تعامل مع ايبروم مباشره لان كتابه وقراءه من ايبروم تكون بطيئه
كود:
void load()
{
 caculated_temperature();
 if(temp2>=EEPROM_Read(3))// run
    {
     led_load=on;
     led_alarm=off;
     k=1;
    }
 if(temp2>=(EEPROM_Read(3)-5)&& k is 0) // alarm
    {
     led_load=off;
     led_alarm=on;
    }
  if(temp2<=eeprom_read(0) && k is 1) { k=0;led_load=off;}
  if(temp2 is 75 && stop1 is 0) tone1(1);
  else if(temp2<75 || temp2>=76)stop1=0;
  if(temp2 >= 95 && stop2 is 0 ) tone1(2);
  else if(temp2<95)stop2=0;
}
لذا قم بتغيرها الى
كود:
void load()
{
 caculated_temperature();
 if(temp2>=tmax)// run
    {
     led_load=on;
     led_alarm=off;
     k=1;
    }
 if(temp2>=(tmax-5)&& k is 0) // alarm
    {
     led_load=off;
     led_alarm=on;
    }
  if(temp2<=tmin && k is 1) { k=0;led_load=off;}
  if(temp2 is 75 && stop1 is 0) tone1(1);
  else if(temp2<75 || temp2>=76)stop1=0;
  if(temp2 >= 95 && stop2 is 0 ) tone1(2);
  else if(temp2<95)stop2=0;
}
من اين اعرفت tmax , tmin
كود:
void init()
{
 anselh=0;//  portb is digital
 ansel=32;//RA5_bit is digital
    ///  output////
 segment_dir=output;
 seg_en1_dir=seg_en2_dir=output;
 seg_en3_dir=seg_en4_dir=output;
 led_Tmax_dir=led_Tmin_dir=output;
 led_load_dir=led_alarm_dir=output;
      //  input //
 sw_Tinc_dir=sw_Tdec_dir=sw_setting_dir=input;
     //  off all output//
 segment=0;// off 7seg
 led_Tmax=led_Tmin=off;
 led_load=led_alarm=off;
 seg_en1=seg_en2=seg_en3_dir=seg_en4_dir=disenable ;
 adc_Init();
 Sound_Init(&portb,7);
 if(eeprom_read(0)>100)eeprom_write(0,20);
 if(eeprom_read(3)>100)eeprom_write(3,25);
 tmin=eeprom_read(0);
 tmax=eeprom_read(3);
}


الصورة الرمزية المخترع01
المخترع01
:: مهندس متميز ::
تاريخ التسجيل: Dec 2009
المشاركات: 397
نشاط [ المخترع01 ]
قوة السمعة:
قديم 26-09-2013, 12:25 PM المشاركة 71   
افتراضي


جربة اخي و انتقسة و زدة في السرعة و لاكن لم تنجح

هل زمن القرائة و اضهار الرقم لهو دور في الارتعاش


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


جربة اخي و انتقسة و زدة في السرعة و لاكن لم تنجح

هل زمن القرائة و اضهار الرقم لهو دور في الارتعاش
اخي كريم
حقيقه لااعرف اين السبب مشكله
ولكن هل جربت هذا الكود
كود:
void load()
{
 caculated_temperature();
 if(temp2>=tmax)// run
    {
     led_load=on;
     led_alarm=off;
     k=1;
    }
 if(temp2>=(tmax-5)&& k is 0) // alarm
    {
     led_load=off;
     led_alarm=on;
    }
  if(temp2<=tmin && k is 1) { k=0;led_load=off;}
  if(temp2 is 75 && stop1 is 0) tone1(1);
  else if(temp2<75 || temp2>=76)stop1=0;
  if(temp2 >= 95 && stop2 is 0 ) tone1(2);
  else if(temp2<95)stop2=0;
}



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