جزاك الله كل خير اخى الكريم انا استفدت كتير من معلوماتك القيمة الاكثر من رائعة .. انا كنت فعلا عايز اعرف طريقة كيف اعرض على الشاشة رقم واحد بعد العلامة وكنت عايز اضيف الدرجة بالسليزيوس بعدها والموضوع هذا فعلا غطى كل هذه الافكار
لكتابة الدرجة بالسيليزوس بعد السطر
مش المفروض انى اكتب هذا الكود ؟؟
كود:
Lcd_Chr(1,13,223);
Lcd_Chr(1,14,'C');
بالنسبة للنقطه 3
كان قصدى انك استخدمت المتغير disp فى الدالة التى كتبتها
كود:
FloatToStr(kk,disp);
disp[4]=0;// reset pointer
strcat(txt,disp );
وايضا نفس المتغير استخدمته مرة ثانية فى حسابات الحرارة فى اول حلقة while
كود:
temp = ADC_Read(0);
act_temp = (temp * 500) / 1024;
floattostr(act_temp, disp); //converting float to char
disp[4]=0;
Lcd_out(1, 8,disp);
فكيف يكون له قيمتين
|
السلام عليكم
بالنسبه لعرض درجه سليزيه كلامكم صحيح وكود صحيح
بالنسبه لنقطه 3
اساسا قيمه درجه حراره مخزونه في act_temp اما disp فهي مصفوفه خزن فيها قيمه التحويل وأستطيع أستعمالها في اي مكان طالما لايوجد اي تأثير في تغير قيمتها يعني
كود
كود:
temp = ADC_Read(0);
act_temp = (temp * 500) / 1024;
floattostr(act_temp, disp); //converting float to char
disp[4]=0;
Lcd_out(1, 8,disp);
هنا تجد اني أستخدمت disp في عرض قيمه درجه حراره على شاشه وحددت طول نص بخمسه فقط حيث ذكرت disp[4]=0
بعدين من أجيت وعرضت قيمه duty
كود
كود:
if (act_temp >= 25 && act_temp <30 )
{
PWM1_Start(); PWM1_Set_Duty(32);
if(flag_message.b0==0)display_message(12.5);
flag_message=0x01;
}
تلاحظ خليت 12.5 وهي قيمه float طبعا تكدر تخليها عدد صحيح ربما يخف عليك بالكود على عموم
ومن نذهب الى display_message
فأنا ايضا محتاج تحويل 12.5 الى text وبتالي راح أستخدم FloatToStr اذن احتاج الى مصفوفه لخزن نتيجه التحويل فمن غير صحيح انك تستخدم مصفوفه لكل تحويل مفروض هي مصفوفه واحده فقط
كود:
FloatToStr(kk,disp);
disp[4]=0;// reset pointer
strcat(txt,disp );
txt[15]=0;
ولكن أنتبه تلاحظ انا أستخدمت disp بشكل مباشره ولم ابقى محتفظ بالقيمه وبتالي يمكنني أستخدامها في مكان طالما لايوجد هناك تأثير على عمل البرنامج
للتذكير احاول تضع مصفوفه واحده لخزن نتيجه التحويل وليس اكثر من ذلك والا سوف تسبب بأستخدام رام بشكل كبير يودي الى نتائج اسوأ لان هذه الانواع من البيكات ذاكره رام مرتبه بشكل غير منتظم يعني هناك 4 bank في كل بنك يحتوي على ريجسترات واماكن لخزن متغيرات واستخدام مصفوفات بشكل كبير سوف تخزن قيم ب ريحسترات بدلا من مواقع مخصصه لخزن وتغير قيمه ريجيستر بشكل أجباري معناها اجبرت مايكرو على خضوع لاوامر اكيد لاتعجبك كأن مثلا غيرت ريجيستر trisb بتأكيد لن ترى سوى مشاكل
على عموم disp أستخدمتها مره واحده فقط في كل نتيجه تحويل وبتالي أنتهت مهمتها لذا يمكني أستخدامها في أماكن أخرى
تحياتي