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

أدوات الموضوع

أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:0
قديم 20-08-2016, 09:40 PM المشاركة 1   
افتراضي عمل مقارنة بين مصفوفيين ؟ Twitter FaceBook Google+



اريد اعمل مقارنة لمصفوفتيين code1[3],user1[3] طول كل واحدة منهما 2بايت
حيث ان الـuser1 هي الدالة كالاتي :
كود:
void code_read(){      //read data from eeprom
     if(eeprom_read(0)==!0xFF)  {
     Delay_ms(20);
     user1[0] = EEPROM_Read(0x00);            // Read data from address 0
     Delay_ms(20);
     user1[1] = EEPROM_Read(0x01);            // Read data from address 1
     Delay_ms(20);
     }  }
الرجاء المساعدة لاتمام البرنامج وشكرا

اعلانات

ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 21-08-2016, 05:25 AM المشاركة 2   
افتراضي


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

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

أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:0
قديم 21-08-2016, 07:53 AM المشاركة 3   
افتراضي


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

الدالة الـeeprom اريد اقارنها بالـstring للقيمة Temp هل ممكن تكون العبارة
كود:
if(48+eeprom_read(0)<=48+(Temp/10) &&48+ eeprom_read(1)<=48+(Temp%10)) {
لما عملت العبارة خرجت اشكال غريبة على شاشة الـLCD لقيمة الايبروم
اريد اعمل مقارنة للـcharachter لكل من eeprom و Temp !


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 21-08-2016, 11:29 AM المشاركة 4   
افتراضي


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

رجاء إقرا ملف المساعدة للبرنامج المستخدم لتحدد الأولويات و ايها يطبق قبل ماذا


أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:0
قديم 22-08-2016, 08:10 PM المشاركة 5   
افتراضي


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

رجاء إقرا ملف المساعدة للبرنامج المستخدم لتحدد الأولويات و ايها يطبق قبل ماذا
السلام عليكم
العلاقة التي اشرت اليها هي اكبر واصغر ,فأنا اريد تشغيل الـcooling او الــheating ,بواسطة المقارنة بين القيمة الــــTmin وTmax والمحفوظة أساسا على الـEEprom internal مع القـــــيمة المعروضة على الـشاشة LCD يعني بقى أن

كود:
  if((48+eeprom_read(0))<=(48+(Temp/10)) &&(48+ eeprom_read(1))<=(48+(Temp%10))) {cooling=on;heater=off;lcd_out(2,1,"cold:On ");lcd_out_cp("Heater:off");     }
أما طول المتغير Tmin او(Tmax) هو 16 بيت يعني بأخذ القيمة الاولى 8بيت بعديين
8بت الثانية يعني لو المصفوفة بتاع الـTmin هي :
كود:
char mineeprom[2];
ولما احفضها على الايبروم تصير :
كود:
for (ii=0; ii<3; ii++)
  {
   mineeprom[ii]  = EEPROM_Read(0x00+ii);          // Start EEPROM Location,
   }*/
اريد اقارن بين الـعنصر بالايبروم الاول -الى هو
كود:
mineeprom[0]
و الـعنصر بالايبروم الاول للمصفوفة الـ [0]Temp المعروضة انفا على الlcd
وايضا نفس الشئ بالعنصر الثاني
كود:
mineeprom[1]
و الـعنصر بالايبروم الاول للمصفوفة الـ [1]Temp

لقد قمت بزيادة 48 لكل عنصر لانascii code لايظهر على الشاشة
اما بالنسبة لـ && فانني اجمع الـعدد مثلا 19°c يعني 1+48 =49 و 9+48=57 بعني الشرط يكون كالاتي :
كود:
if((48+eeprom_read(0))<=(48+(Temp/10/* '1' in our exemple */)) &&(48+ eeprom_read(1))<=(48+(Temp%10/* '9' in our exemple */))) {cooling=on;heater=off;lcd_out(2,1,"cold:On ");lcd_out_cp("Heater:off");     }


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 23-08-2016, 05:40 AM المشاركة 6   
افتراضي


أخى
يبدو انك لم تفهم ما أقصد
أنا اعلم تماما ما تريد أن تفعله
السلام عليكم
العلاقة التي اشرت اليها هي اكبر واصغر ,فأنا اريد تشغيل الـcooling او الــheating ,بواسطة المقارنة بين القيمة الــــTmin وTmax والمحفوظة أساسا على الـEEprom internal مع القـــــيمة المعروضة على الـشاشة LCD يعني بقى أن

أين هذه القيمة المعروضة على الشاشة؟؟؟
هل قرأتها من ذاكرة الشاشة قبل هذه المقارنة؟؟
ثم لماذا أصلا تقرأ من الشاشة؟؟؟
قبل أن توضع هذه القيمة على الشاشة، الم تكن فى متغير أخر ثم تمت كتابته على الشاشة
كل البرامج تقرأ من الحساس لمتغير 16 بت
احفط الحد الأدنى و الأقصى أيضا فى EEPROM ك 2 بايت وهناك دالة لتقسيم 16 بت إلى 2 بايت
عند القراءة إما تستخدم دالة لتكوين 16 بن أو اضرب الأولى فى 256 ثم اجمع الثانية
وقارن بعد ذلك المتغيرين 16 بت
كود:
  if((48+eeprom_read(0))<=(48+(Temp/10)) &&(48+ eeprom_read(1))<=(48+(Temp%10))) {cooling=on;heater=off;lcd_out(2,1,"cold:On ");lcd_out_cp("Heater:off");     }
أما طول المتغير Tmin او(Tmax) هو 16 بيت يعني بأخذ القيمة الاولى 8بيت بعديين
8بت الثانية يعني لو المصفوفة بتاع الـTmin هي :
كود:
char mineeprom[2];
ولما احفضها على الايبروم تصير :
كود:
for (ii=0; ii<3; ii++)
  {
   mineeprom[ii]  = EEPROM_Read(0x00+ii);          // Start EEPROM Location,
   }*/
اريد اقارن بين الـعنصر بالايبروم الاول -الى هو
كود:
mineeprom[0]
و الـعنصر بالايبروم الاول للمصفوفة الـ [0]Temp المعروضة انفا على الlcd
وايضا نفس الشئ بالعنصر الثاني
كود:
mineeprom[1]
و الـعنصر بالايبروم الاول للمصفوفة الـ [1]Temp

لقد قمت بزيادة 48 لكل عنصر لانascii code لايظهر على الشاشة
اما بالنسبة لـ && فانني اجمع الـعدد مثلا 19°c يعني 1+48 =49 و 9+48=57 بعني الشرط يكون كالاتي :
كود:
if((48+eeprom_read(0))<=(48+(Temp/10/* '1' in our exemple */)) &&(48+ eeprom_read(1))<=(48+(Temp%10/* '9' in our exemple */))) {cooling=on;heater=off;lcd_out(2,1,"cold:On ");lcd_out_cp("Heater:off");     }
انت لم تراجع جيدا ما ذكرته
إضافة 48 هى لتحويل رقم من 0 إلى 9 فقط إلى ASCII أى 4 بت وليس 8 بت
هل ما تفعلة أنك تحفظ مثلا 12 درجة ك 2 بايت واحدة بها "2" و الثانية بها الرقم "1" ؟


أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:0
قديم 23-08-2016, 08:25 AM المشاركة 7   
افتراضي


أخى
يبدو انك لم تفهم ما أقصد
أنا اعلم تماما ما تريد أن تفعله



أين هذه القيمة المعروضة على الشاشة؟؟؟
هل قرأتها من ذاكرة الشاشة قبل هذه المقارنة؟؟
ثم لماذا أصلا تقرأ من الشاشة؟؟؟
قبل أن توضع هذه القيمة على الشاشة، الم تكن فى متغير أخر ثم تمت كتابته على الشاشة
كل البرامج تقرأ من الحساس لمتغير 16 بت
احفط الحد الأدنى و الأقصى أيضا فى EEPROM ك 2 بايت وهناك دالة لتقسيم 16 بت إلى 2 بايت
عند القراءة إما تستخدم دالة لتكوين 16 بن أو اضرب الأولى فى 256 ثم اجمع الثانية
وقارن بعد ذلك المتغيرين 16 بت

انت لم تراجع جيدا ما ذكرته
إضافة 48 هى لتحويل رقم من 0 إلى 9 فقط إلى ASCII أى 4 بت وليس 8 بت
هل ما تفعلة أنك تحفظ مثلا 12 درجة ك 2 بايت واحدة بها "2" و الثانية بها الرقم "1" ؟
السلام عليكم
كما اشرت انني احفظ 12درجة على انها 2 في 8بت و 1في 8بت ايضا
اما بالنسبة لـ
كود:
عند القراءة إما تستخدم دالة لتكوين 16 بن أو اضرب الأولى فى 256 ثم اجمع الثانية
وقارن بعد ذلك المتغيرين 16 بت
القيمة الصغرى و الكبرى في شاشة الـsetting يعني شاشة اخرى
لو تعمل في مثال بسيط ربما افهمك بسهولة


ماجد عباس محمد
:: نائب المشرف العام
::
تاريخ التسجيل: Jun 2009
الدولة: القاهرة - مصر
المشاركات: 12,214
نشاط [ ماجد عباس محمد ]
قوة السمعة:408
قديم 23-08-2016, 12:31 PM المشاركة 8   
افتراضي


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

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

احصائية الشكر والاعجاب - 0 شكراً, 0 عدم اعجاب, 1 اعجاب
اعجاب عبدالله حجازى ( أعجبته المشاركة )
إضافة رد

العلامات المرجعية

«     الموضوع السابق       الموضوع التالي    »
أدوات الموضوع

الانتقال السريع إلى


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

Powered by vBulletin® Version 3.8.6, Copyright ©2000 - 2025