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

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

أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:0
قديم 13-05-2017, 10:29 AM المشاركة 1   
افتراضي كيف اخزن 28,7 واضهرها على الايبروم ؟ Twitter FaceBook Google+



السلام عليكم
سوالي محدد ة الكثير يريدون معرفته
لو عندي مثلا دخل متغير لـ adc لحسا س حرارة والقيمة مثلا 28,7درجة مؤية كيف يمكن ان اخزن القيمة دي على الايبروم للبك واضهرها اذا اقتضت الحاجة طبعا اللغة هي الميكروسي
اتمنى اجد رد من الاخو ة

اعلانات

مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 13-05-2017, 12:42 PM المشاركة 2   
sun


السلام عليكم و رحمة الله و بركاته

اخى العزيز ,
حقيقة انا نادرا استخدم البيك او ميكروسي , لان مترجمات avr و الاردوينو بها دوال لتخزين قيم float .

و ساحاول مساعدتك بالتالى و الله المستعان :
اولا ستضرب قيمة المتغير فى 10 لتحويلها الى صحيح 283 .
ثانيا ستاخذ البايت العلوى و تخزنه ثم البايت السفلى و تخزنه بعده , و عند قراتهما يجب قسمتهما على 10 لترجع القيمة لاساسية 28.3 .

لو كان هذا الاسلوب يناسبك سارسل لك الاكواد بالميكروسي .

و ما توفيقى الا بالله

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

أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:0
قديم 13-05-2017, 04:32 PM المشاركة 3   
افتراضي


السلام عليكم و رحمة الله و بركاته

اخى العزيز ,
حقيقة انا نادرا استخدم البيك او ميكروسي , لان مترجمات avr و الاردوينو بها دوال لتخزين قيم float .

و ساحاول مساعدتك بالتالى و الله المستعان :
اولا ستضرب قيمة المتغير فى 10 لتحويلها الى صحيح 283 .
ثانيا ستاخذ البايت العلوى و تخزنه ثم البايت السفلى و تخزنه بعده , و عند قراتهما يجب قسمتهما على 10 لترجع القيمة لاساسية 28.3 .

لو كان هذا الاسلوب يناسبك سارسل لك الاكواد بالميكروسي .

و ما توفيقى الا بالله
نعم يا ريت ترسلي لقد اعجبتني الفكرة
مشكور اخي الكريم


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 13-05-2017, 09:10 PM المشاركة 4   
sun


السلام عليكم و رحمة الله و بركاته

اليك اخى الكود جربه و الله المستعان ,

كود:

#define HI(val) (val >> 8)
#define LO(val) (val & 0x00ff)

void EEPROM_WRITE_INT(int ADD,int VAL) {
     EEPROM_Write (ADD, HI(VAL));
     EEPROM_Write (ADD+1, LO(VAL));
}
 
int EEPROM_READ_INT(int ADD){
    return (EEPROM_Read(ADD) << 8) + (EEPROM_Read(ADD+1));
}
 
int old_value;
void main() {
 EEPROM_WRITE_INT(0, 5555);       //  EEPROM_WRITE_INT(address, value)
 old_value = EEPROM_READ_INT(0);  //  EEPROM_READ_INT(address)

}
و ما توفيقى الا بالله




أبو كريم555
:: مهندس ::
تاريخ التسجيل: May 2016
المشاركات: 30
نشاط [ أبو كريم555 ]
قوة السمعة:0
قديم 15-05-2017, 12:31 AM المشاركة 5   
افتراضي


السلام عليكم و رحمة الله و بركاته

اليك اخى الكود جربه و الله المستعان ,

كود:

#define HI(val) (val >> 8)
#define LO(val) (val & 0x00ff)

void EEPROM_WRITE_INT(int ADD,int VAL) {
     EEPROM_Write (ADD, HI(VAL));
     EEPROM_Write (ADD+1, LO(VAL));
}
 
int EEPROM_READ_INT(int ADD){
    return (EEPROM_Read(ADD) << 8) + (EEPROM_Read(ADD+1));
}
 
int old_value;
void main() {
 EEPROM_WRITE_INT(0, 5555);       //  EEPROM_WRITE_INT(address, value)
 old_value = EEPROM_READ_INT(0);  //  EEPROM_READ_INT(address)

}
و ما توفيقى الا بالله


السلام عليكم
أخ الكريم لم ارى في الكود ضرب 10 و بعدين قسمة على 10 يعني لو نأخذ مثال 28,3 و اريد حفضها فالايبروم و عرضها على الـlcd لو ممكن
مشكور اخي الكريم


مشتاق الله
:: مهندس متميز ::
تاريخ التسجيل: Oct 2015
المشاركات: 620
نشاط [ مشتاق الله ]
قوة السمعة:0
قديم 15-05-2017, 12:10 PM المشاركة 6   
sun


اخى العزيز اليك بعض التعديل ,
طبعا ستكتب فى اول البرنامج اكواد الخاصة بضبط ارجل الشاشة على البورت الذى اخترته انت فى مشروعك .

كود:
#define HI(val) (val >> 8)
#define LO(val) (val & 0x00ff)

void EEPROM_WRITE_INT(int ADD,int VAL) {
     EEPROM_Write (ADD, HI(VAL));
     EEPROM_Write (ADD+1, LO(VAL));
}

int EEPROM_READ_INT(int ADD){
    return (EEPROM_Read(ADD) << 8) + (EEPROM_Read(ADD+1));
}

char i ; int old_value; float value;
char text[3];
void main() {

 value = 28.3;
 old_value = value * 10;
 EEPROM_WRITE_INT(0, old_value);       //  EEPROM_WRITE_INT(address, value)
 old_value = EEPROM_READ_INT(0);  //  EEPROM_READ_INT(address)
 //value = old_value / 10.0;
 inttostr( (old_value / 10),text);
 lcd_out(0,0,text);
 lcd_chr(0,2,'.');
 inttostr( (old_value % 10), text);
 lcd_out(0,3,text);
while(1);
    }

و ما توفيقى الا بالله

إضافة رد

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

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

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


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

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