سبد خرید
0

سبد خرید شما خالی است.

نمایش عدد اعشاری بر روی lcd در کدویژن

نمایش عدد اعشاری بر روی lcd در کدویژن

یکی از مشکلات رایج در استفاده از lcd های کاراکتری نمایش اعداد با فرمت های مختلف است.کاربرانی که با میکروکنترلرهای avr کار می کنند اغلب از کامپایلر کدویژن استفاده می کنند .در کدویژن نمایش اعداد float بر روی lcd به دلیل محدودیت فضای رم در این میکروکنترلرها به صورت پیش فرض غیر فعال می باشد و کاربر باید قبل از استفاده از توابع مربوط به نمایش اعداد اعشاری این امکان را در محیط کدویژن فعال کند.به منظور فعال کردن این امکان ابتدا تنظیمات زیر را در محیط کدویژن انجام دهید:

نمایش عدد اعشاری بر روی lcd در کدویژن
نمایش عدد اعشاری بر روی lcd در کدویژن

مثال :

فرض کنید قصد نمایش عدد اعشاری  x با یک رقم صحیح و یک رقم اعشار را دارید.

char buf[10];
float x=3.123456;
sprint(buf,"%1.1f",x);
lcd_puts(buf);

خروجی : 3.1

تابع sprintf  مقدار  عددی شما را با فرمت مشخص به یک عبارت رشته ای تبدیل می کند.و تابع   ()lcd_puts  این مقدار را بر روی lcd  چاپ می کند.ورودی دوم تابع   ()sprint  فرمت را مشخص می کند .عبارت 1.1f% ‌ به معنای تبدیل عدد x به صورت یک عبارت متنی با یک رقم صحیح و یک رقم اعشار است. اگر بخواهید عدد نمایش به صورت یک رقم صحیح و دو رقم اعشار باشد باید این عبارت را برابر 1.2f% قرار دهید .

تابع sprint()  برای نمایش اعداد مختلف با فرمت های مختلف به صورت زیر است.

-نمایش عدد x به صورت عدد صحیح:

char buf[10];
int x=10;
sprint(buf,"%d",x);
lcd_puts(buf);

خروجی : 10


-نمایش عدد x در مبنای هگز با حروف کوچک :

char buf[10];
int x=10;
sprint(buf,"%x",x);
lcd_puts(buf);

خروجی : a


– نمایش عدد x در مبنای هگز با حروف بزرگ:

char buf[10];
int x=10;
sprint(buf,"%X",x);
lcd_puts(buf);

خروجی : A


– نمایش عدد ۳۲ بیتی از نوع long :

char buf[10];
long l=105400;
sprint(buf,"%ld",L);
lcd_puts(buf);

خروجی : 105400

24
دیدگاه کاربران
  • ممد 5 فروردین 1398 / 11:15 ق.ظ

    سلام ، روی مگا۳۲۸ درست کار میکنه ولی روی مگا۸ کار نمیکنه‌،دلیل خاصی داره ایا؟

    • admin 5 فروردین 1398 / 7:18 ب.ظ

      سلام
      ارتباطی به نوع میکرو نداره. باید تنظیمات رو در کدویژن درست انجام بدید.

    • جواد 26 خرداد 1400 / 2:29 ق.ظ

      سلام و تشکر.برا atmega8 دوستان باید علاوه بر این کارها اون عدد RAM ر ا از 256 به 512 تغییر دهید. همین

      • mpc 4 اسفند 1400 / 8:15 ب.ظ

        درود و سپاس دوست عزیز درست شد

  • ابوالفضل 5 مرداد 1398 / 9:18 ب.ظ

    سلام
    در نرم افزار atmel studio نحوه این تنظیمات چطوریه میشه راهنمایی کنید لطفا

  • سامان 20 شهریور 1399 / 2:48 ب.ظ

    ممنونم از شما

  • مهدی 25 اسفند 1399 / 11:15 ب.ظ

    داداش راست میگه تو atmega 8 جواب نمیده
    مشکل از چیه
    من همه چی رو امتحان کردم نمیشه
    نمی دونم چرا اگه دوستان راه حلی دارن بگن واقعا موندم اعصابم خود شده😡😡

    • admin 15 فروردین 1400 / 12:05 ب.ظ

      سلام
      درصورتی که حجم برنامه زیاد باشد . نمی توان از این امکان استفاده کرد. تابع sprintf حدود 2 کیلوبایت فضای حافظه فلش را اشغال می کند در حالی که کل فضای حافظه برای atmega8 فقط 4 کیلوبایت است.

      • علیرضا 29 تیر 1400 / 9:27 ب.ظ

        سلام.اگه بخایم متغیر x رو در داخل برنامه کم و زیاد کنیم یعنی با یک عدد صحیح و یک عدد اعشارو با دوتا کلید کم و زیاد کنیم.
        لطفا یه راهنمایی کنید.l

        • admin 4 مرداد 1400 / 5:11 ب.ظ

          سلام

          if(key1)
          {
          f+=0.1;
          while(key1){}
          }

          if(key2)
          {
          f-=0.1;
          while(key2){}
          }

  • سارا 30 تیر 1400 / 1:04 ق.ظ

    سلام.اگه بخوایم متغیر x رو که یک عدد اعشاریه مثلا 2.45 روبا استفاده از دوتا کلید کم و زیاد کنیم چطوریه؟
    لطفا یه کمکی بکنید.ممنون

    • admin 4 مرداد 1400 / 5:12 ب.ظ

      پاسخ در نظرات قبل

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

توسط
تومان