اطلاعیه

Collapse
No announcement yet.

کتابخانه stdio.h

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کتابخانه stdio.h

    سلام بر همه ی اساتید محترم
    دوستان الان با lcd کار میکنم ولی چون تازه وارد هستم از توابع stdio.h هیچی نمیفهمم
    کسی هست که بتونه این توابع رو به زبان ساده توضیح بده یا حداقل تابع sprintf رو واسم توضیح بده (خواهشا)
    ممنون

    #2
    پاسخ : کتابخانه stdio.h

    بعضی وقتا میخای یه تعداد عدد و رشته رو کنار هم داخل یه رشته یا آرایه بزاری ...
    به نظرت همینطوری میشه این کار رو کرد؟؟؟ نه!
    میای این کد رو مینویسی:
    کد:
    char buffer[20]
    کد:
    char str[5]
    کد:
    sprintf(buffer,"ye text%d-%s",i,str)
    توی خط اول یه استرینگ تعریف شد
    توی خط دوم یه استرینگ دیگه
    توی خط سوم میایم داخل استرینگ بافر عدد i و رشته ی Str به علاوه ی ye text رو میزاریم ...
    همیشه حواست به طول اون بافر و طول کلی چیزایی که میریزی توش باشه!

    دیدگاه


      #3
      پاسخ : کتابخانه stdio.h

      سلام
      sprintf یک دستور هست که تولید رشته میکنه...
      مثلا شما دو متغییر دارید که تو یکیش مقدار ساعت و تو دیگری مقدار دقیقه رو ریختید.
      حالا میخواهید این دو عدد رو روی lcd نمایش بدید.
      یکی از راه ها این هست که اول این دو عدد رو به وسیله ی sprintf در یک رشته قرار بدی و بعد با دستور lcd_puts اون رشته رو چاپ کنی .. مثال :
      کد:
      char h = 12 , m = 30;
      char buffer[5];
      sprintf(buffer,"%02d:%02d",h,m);
      lcd_puts(buffer);
      حالا اون %02d یعنی چی :
      d% یعنی عددی رو که میگیری یه عدد دسیمال تبدیل کن.(فرمت تبدیل)
      02 یعنی تبدیل رو 2 رقم به 2 رقم انجام بده...چون متغییر های ساعت و دقیقه دو رقمی هستند.
      اون ":" که بینشون هست هم که بین دو عدد ساعت و دقیقه قرار میگیره.
      حالا بعد از تبدیل همه ی این ها رو میریزه تو رشته ای به نام buffer که در نهایت قرار چاپ بشه...
      البته این دستور sprintf فقط واسه عدد نیست و نوشته رو هم میتونه به رشته تبدیل کنه و ...
      در مورد فرمت تبدیل (همون %d)حالت های دیگه ای هم هست که اگه بخواین توضیح میدم.

      دیدگاه


        #4
        پاسخ : کتابخانه stdio.h

        نوشته اصلی توسط nilufar 2012
        سلام بر همه ی اساتید محترم
        دوستان الان با lcd کار میکنم ولی چون تازه وارد هستم از توابع stdio.h هیچی نمیفهمم
        کسی هست که بتونه این توابع رو به زبان ساده توضیح بده یا حداقل تابع sprintf رو واسم توضیح بده (خواهشا)
        ممنون
        سلام
        خب تا اونجا که سواد ما قد میده میگیم که یک تابع داره به نام getchar() که مثلا تو uart اگر این تابع رو کال کنید به روش polling کاراکتر دریافتی از uart رو برمیگردونه مثلا
        data = getchar()
        یه تابع داره به نام putchar() که عکس همین کار رو مثلا برای uart انجام میده و یه کاراکتر رو میفرسته
        و تابع printf یک رشته ارسال میکنه به خروجی سریال ، درست مثل اینکه رشته رو بایت بایت putchar کنیم
        تابع sprintf میاد به جای اینکه یه رشته رو بریزه تو سریال میریزه تو یه آرایه تو SRAM
        بعد میشه توسط تابع puts که مال همین کتابخونه است و یادم رفت بگم ، از تو آرایه هه بریزه به خروجی سریال ، پس puts هم یه آرایه رو میریزه به سریال
        حالا برای کار شما که میخوایید در lcd استفاده کنید به جای puts باید از lcd_puts که تو کتابخونه ی LCD هست و همین کارو میکنه استفاده کنید
        فرمتش گیج کننده است مثل حل کردن یه سوال ریاضی خفن به صورت پارامتریه ، با یه مثال میگم
        unsigned char voltage_buffer[10],voltage;
        ...
        ...
        مثلا یه متغیر دارم به نام ولتاژ و یه بافر که شامل 10 بایت هست رو براش در نظر میگیرم
        sprintg(voltage_buffer,"V=%d volt",voltage)
        که بین "" هرمتن دلخواهی میشه قرار داد بشرطی که طول متن بیشتر از طول بافر نشه ، هر حرف یه بایت میگیره (فرمت اسکی) و %d هم مقدار عددی ولتاژ رو جلوی مساوی قرار میده ، بعد از یک فاصله چهار حرف volt قرار میگیرند ، که خب طول کل این از 10 بایت کمتره
        %d میگه که عدد و متغیر ولتاژ یه عدد صحیح علامت داره ، %u اگه بذاریم یعنی بدون علامت ، %f یعنی اعشاری (که برای فلوت باید تنظیماتی رو تو کدویژن انجام داد که حجم کد تولیدی رو چند برابر میکنه) مثلا ولتاژی که میخونم میخوام تا دورقم نشون بدم پس متغیر ولتاژ رو فلوت تعریف میکنم و...
        آخر هم با دستور زیر اونو روی LCD میشه قرار داد
        lcd_puts(voltage_buffer)
        یک سری داستان های غم انگیزی بوجود میاد که وقتی عددی که بخوای روی السیدی نشون بدی مثلا یک رقمی و دو رقمی بشه ، وقتی دو رقمی میشه بعد یک رقمی میشه ، رقم دوم روی السیدی میمونه و میره رو اعصاب بخاطر همین میشه به صورت زیر
        02%d
        به جای %d یا 04 برای اعداد چهار رقمی استفاده کرد
        برای اعداد اعشاری هم از x.y میشه قبل از % استفاده کرد که عدد سمت چپ نقطه یعنی کل عدد فلوت چند تا طول داشته باشه و عدد سمت راست نقطه تا چند رقم اعشار رو نشون میده مثلا
        6.3 قبل از % برای فلوت یعنی که عدد شش تا طول داره و تا سه رقم اعشار نشون میده مثلا عدد شده 12.345 که نقطه هم جز طوله
        برای تنظیمات فلوت هم از مسیر project و configure و لبه ی c compiler و در قسمت s printf feature را روی float قرار بدید ، حالا اینارو امتحان کنید اگه مشکل دیگه ای بود دوستان میان کمک میکنن

        دیدگاه


          #5
          پاسخ : کتابخانه stdio.h

          سلام ببخشید این کتابخونه در Atmel Studio 7 هم وجود داره؟

          Sent from my GT-N5100 using Tapatalk

          دیدگاه

          لطفا صبر کنید...
          X