ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 9 از 9

موضوع: تابع sprintf

  1. #1
    2020/03/30
    16
    0

    تابع sprintf

    سلام
    من ماژول sim800lبه میکرو و lcd2.8 وصل کردم.اما فقط در سطر اول خروجی نمایش داده میشه.یعنی اخرین اطلاعات نمایش داده میشن.من میخام بقیه اطلاعات در سطر های بعدی lcd نمایش داده شه اما متاسفانه هر کار میکنم فقط سطر اول نشون میده....
    تابعی که استفاده میکنم sprintf هست.
    unsigned char lcd2_buf[60];
    a[i]=UART0_RxChar
    sprintf(lcd_buf,"%s",a);
    LCD_ShowString(1,10,(const u8 *)lcd_buf);
  2. #2
    2017/06/13
    1,205
    629

    پاسخ : تابع sprintf

    نقل قول نوشته اصلی توسط aminpower745

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام
    من ماژول sim800lبه میکرو و lcd2.8 وصل کردم.اما فقط در سطر اول خروجی نمایش داده میشه.یعنی اخرین اطلاعات نمایش داده میشن.من میخام بقیه اطلاعات در سطر های بعدی lcd نمایش داده شه اما متاسفانه هر کار میکنم فقط سطر اول نشون میده....
    تابعی که استفاده میکنم sprintf هست.
    unsigned char lcd2_buf[60];
    a[i]=UART0_RxChar
    sprintf(lcd_buf,"%s",a);
    LCD_ShowString(1,10,(const u8 *)lcd_buf);
    سلام
    این کد ناقصه چیز زیادی ازش مشخص نیست! کد رو کامل قرار بدید.
    ضمنا برای قرار دادن کد حتما از تگ CPP توی نوار بالایی ویرایشگر متن انجمن استفاده کنید.
    راستی سخت افزار مورد استفاده رو هم دقیق ذکر کنید.
    ویرایش توسط hossein.m98 : 2020/04/18 در ساعت 23:08 دلیل: تکمیل
  3. #3
    2020/03/30
    16
    0

    پاسخ : تابع sprintf

    متوجه نشدم چطور کد بنویسم ..
    تو این برنامه اگه از uart استفاده بشه تو خروجی اطلاعات sim 800l تو چند سطر توی برنامه termite نمایش داده میشه.اما تو lcd2.8 فقط سطر اول نشون میده و تمام اطلاعات نشون داده نمیشن به عبارتی فقط یک سطر lcd اطلاعات ثبت میشن و به سطر بعدی نمیره.(ماژول sim800l و هدر برد lpc1768(

    #include "lcd.h"
    #include "string.h"
    #include "sys.h"
    #include "uart.h"
    #include "stdio.h"
    #include "delay.h"

    int main (void)
    {


    int i,j;
    char l;
    unsigned char d[32],lcd2_buf[60], lcd_buf[60],a[32],b[11]="AT+IPR=9600";

    SystemInit();
    UART0_Init(9200);

    LCD_Init();
    LCD_SetTextColor (BLUE);
    LCD_SetBackColor (BLUE);
    LCD_Clear (BLUE);

    UART0_TxString("AT+IPR=9600");

    while(1){

    for(i=0;i<=25;i++){

    a[i]=UART0_RxChar();;
    sprintf(lcd_buf,"%s",a);
    LCD_ShowString(1,10,(const u8 *)lcd_buf);
    }
    }]}
    ویرایش توسط aminpower745 : 2020/04/19 در ساعت 11:57
  4. #4
    2017/06/13
    1,205
    629

    پاسخ : تابع sprintf

    نقل قول نوشته اصلی توسط aminpower745

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    متوجه نشدم چطور کد بنویسم ..
    تو این برنامه اگه از uart استفاده بشه تو خروجی اطلاعات sim 800l تو چند سطر توی برنامه termite نمایش داده میشه.اما تو lcd2.8 فقط سطر اول نشون میده و تمام اطلاعات نشون داده نمیشن به عبارتی فقط یک سطر lcd اطلاعات ثبت میشن و به سطر بعدی نمیره.(ماژول sim800l و هدر برد lpc1768(

    #include "lcd.h"
    #include "string.h"
    #include "sys.h"
    #include "uart.h"
    #include "stdio.h"
    #include "delay.h"

    int main (void)
    {


    int i,j;
    char l;
    unsigned char d[32],lcd2_buf[60], lcd_buf[60],a[32],b[11]="AT+IPR=9600";

    SystemInit();
    UART0_Init(9200);

    LCD_Init();
    LCD_SetTextColor (BLUE);
    LCD_SetBackColor (BLUE);
    LCD_Clear (BLUE);

    UART0_TxString("AT+IPR=9600");

    while(1){

    for(i=0;i<=25;i++){

    a[i]=UART0_RxChar();;
    sprintf(lcd_buf,"%s",a);
    LCD_ShowString(1,10,(const u8 *)lcd_buf);
    }
    }]}
    برای گذاشتن کد داخل انجمن، اگر بالای ویرایشگر متنی انجمن (همینجایی که متن پست هاتون رو مینویسید) نگاه کنید، اشکال مختلفی هست که اگر موس رو ببرید روشون اسم هرکدوم رو مینویسه. برای گذاشتن کد، تگ های مختلفی برای زبان های مختلف هست که شما کافیه CPP یا همون ++C رو انتخاب کنید و کدتون رو داخلش کپی کنید. برای مثال من کد شما رو به اون شکل این پایین قرار میدم. البته کمی قشنگ تر اش کردم که خوانا بشه:

    #include "lcd.h"
    #include "string.h"
    #include "sys.h"
    #include "uart.h"
    #include "stdio.h"
    #include "delay.h"


    int main (void)
    {
    int i,j;
    char l;
    unsigned char d[32],lcd2_buf[60], lcd_buf[60],a[32],b[11]="AT+IPR=9600";

    SystemInit();
    UART0_Init(9200);

    LCD_Init();
    LCD_SetTextColor (BLUE);
    LCD_SetBackColor (BLUE);
    LCD_Clear (BLUE);

    UART0_TxString("AT+IPR=9600");

    while(1)
    {
    for(i=0;i<=25;i++)
    {
    a[i]=UART0_RxChar();;
    sprintf(lcd_buf,"%s",a);
    LCD_ShowString(1,10,(const u8 *)lcd_buf);
    }
    }
    ]}

    مورد اول اینکه چند جای کد مشکل داره که نمیدونم اشتباه تایپی بوده یا چیز دیگه. مثلا هیچ لازم نبود خطوط 30 و 31 داخل بدنه for باشن! یا تو خط آخر اون کروشه اصلا نباید باشه. بودنش باعث خطای کامپایلر میشه!
    مورد بعدی اینه که شما اصلا به این توجه نکردید که هر رشته یک کاراکتر پایانی هم داره! مثلا توی خط 13 که تعریف چندتا رشته رو داریم، رشته b رو 11 بایتی در نظر گرفتید و دقیقا با 11 کاراکتر مقدار دهی کردید. این کار باعث میشه اون کاراکتر پایانی رشته در جای غلطی ذخیره بشه و ممکنه مشکل پیش بیاره. برای اون مورد شما باید سایز رشته رو 12 در نظر میگرفتید!
    اما در مورد LCD؛ هرچند همونطوری که تذکر دادم مدلش رو نگفتید، اما با این حال باید به این توجه داشته باشید که نمایش روی LCD خیلی وابسته اس به نرم افزار راه انداز اون. ظاهرا شما میخوایید رشته ای روی LCD چاپ کنید که بزرگتر از عرض LCD هستش و انتظار دارید باقی رشته به صورت خودکار به سطر پایین منتقل بشه. اصلا شاید اون کتابخونه ای که ازش استفاده کردید همچین قابلیتی نداشته باشه و شما باید خودتون سطر ها رو مدیریت کنید! بعضا همین نکات کوچیک کلی روی عملکرد کد تاثیر گذاره.
  5. #5
    2020/03/30
    16
    0

    پاسخ : تابع sprintf

    ممنون.کروشه اشتباه تایپیه..
    من حتی رشته b دوازده بایت قرار دادم نشد.من از ماژول lcd3.2 tft خود eca استفاده میکنم.نرم افزار keil
    چطور میشه سطرها رو مدیریت کرد؟؟
  6. #6
    2017/06/13
    1,205
    629

    پاسخ : تابع sprintf

    نقل قول نوشته اصلی توسط aminpower745

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ممنون.کروشه اشتباه تایپیه..
    من حتی رشته b دوازده بایت قرار دادم نشد.من از ماژول lcd3.2 tft خود eca استفاده میکنم.نرم افزار keil
    چطور میشه سطرها رو مدیریت کرد؟؟
    اون رشته b رو که کلی گفتم؛ اصلا ربطی به این برنامه نداره.
    مدیریت سطر ها هم با خودتونه من شاید نتونم کمک زیادی بکنم. اما به هر صورت شما باید ببینید هر سطر چه مقدار کاراکتر جا میشه و همون مقدار بهش اختصاص بدید. باقی کاراکترها رو هم باید تو سطر بعدی بنویسید. این روند رو انقدر تکرار میکنید تا کاراکترها تموم بشه. این دیگه هنر برنامه نویسی شماست که مشخص میکنه به چه شکلی این کارو انجام بدید که کارایی و زیبایی رو با هم داشته باشه.
    اگر بازم سوالی بود بفرمایید.
  7. #7
    2020/03/30
    16
    0

    پاسخ : تابع sprintf

    ممنون.
    یعنی باید تو کتابخونه lcd تغییراتی بدم؟؟
  8. #8
    2017/06/13
    1,205
    629

    پاسخ : تابع sprintf

    نقل قول نوشته اصلی توسط aminpower745

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    ممنون.
    یعنی باید تو کتابخونه lcd تغییراتی بدم؟؟
    نه لازم به تغییر کتابخونه نیست. شما اول باید ببینید توی هر سطر چند کاراکتر جا میشه؛ بعد داخل برنامه اصلی یجوری مینویسید که بعد از نوشتن اون مقدار کاراکتر خط رو عوض کنه و بقیش رو توی خط جدید بنویسه.
  9. #9
    2020/03/30
    16
    0

    پاسخ : تابع sprintf

    ممنون.لطف کردین
نمایش نتایج: از 1 به 9 از 9

موضوعات مشابه

  1. مشکل با تابع sprintf در کدویژن
    توسط mohammad_6910 در انجمن میکروکنترلرهای AVR
    پاسخ: 5
    آخرين نوشته: 2019/06/17, 08:07
  2. تابع sprintf
    توسط SAEED1897 در انجمن NXP
    پاسخ: 1
    آخرين نوشته: 2018/06/29, 17:44
  3. تابع sprintf و putsدر کتابخانه sdd1289
    توسط aminpower7 در انجمن NXP
    پاسخ: 0
    آخرين نوشته: 2017/09/30, 10:36
  4. سوال در مورد تابع sprintf
    توسط alipoor90 در انجمن میکروکنترلرهای AVR
    پاسخ: 9
    آخرين نوشته: 2012/01/30, 16:56
  5. پاسخ: 2
    آخرين نوشته: 2011/03/27, 12:06

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •