NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 2876 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 20 از 31

موضوع: نمایش مقدار adc روی lcd در کدویژن

  1. #1
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض نمایش مقدار adc روی lcd در کدویژن

    سلام

    من می خوام یه برنامه ی ساده توی کدویژن بنویسم که مقدار خونده شده از ADC رو روی یک LCD کاراکتری نشون بده. ولی هر کاری می کنم نمیشه.

    کدی که من نوشتم اینه :

    کد:
    while (1)
          {
          
          lcd_clear();
          lcd_gotoxy(0,0);
                     
          lcd_putchar(read_adc(0));
          
          lcd_gotoxy(1,0);
          lcd_putsf(read_adc(0));
          
          delay_ms(1000);
          }
    مشکلش کجاست؟ پیغام خطایی که کامپایلر میده اینه که نوع ارگومان دستور lcd_puts با اون چیزی که داخلش نوشتم یکی نیست. برای lcd_putsf و lcd_putchar هم تست کردم. ولی نشد!
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  2. تشکرها از این نوشته :


  3. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نام
    Advertising world
    نوشته ها
    Many
     

  4. #2
    ناظم انجمن vahidasm آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    وحید
    نوشته ها
    754
    تشکر
    1,068
    تشکر شده 881 بار در 470 پست

    پیش فرض

    سلام مهندس
    راستش من avr رو بیشتر با بسکام کار کردم یه چیزایی به نظرم میرسه ولی اگه اشتباه بود به بزرگی خوتون ببخشید
    فک میکنم اگه مقدار read_adc(0) رو تو یه متغیر بریزین و بعد نمایشش بدین مشکل حل بشه البته مطمئن نیستم ولی امتحانش ضرر نداره
    اولین مرحله شناخت آفرینش همانا خرد است چشم و گوش و زبان سه نگهبان اویند که لاجرم هر چه نیکی و شر است از همین سه ریشه می گیرد .و افسوس که بدنبال کنندگان خرد اندکند باید که به سخن دانندگان راه جست و باید جهان را کاوش نمود و از هر کسی دانشی آموخت و یک دم را هم برای آموختن نباید از دست داد . فردوسی خردمند

  5. #3
    ناظم انجمن vahidasm آواتار ها
    تاریخ عضویت
    Feb 2010
    نام
    وحید
    نوشته ها
    754
    تشکر
    1,068
    تشکر شده 881 بار در 470 پست

    پیش فرض

    سلام مهندس
    راستش من avr رو بیشتر با بسکام کار کردم یه چیزایی به نظرم میرسه ولی اگه اشتباه بود به بزرگی خوتون ببخشید
    فک میکنم اگه مقدار read_adc(0) رو تو یه متغیر بریزین و بعد نمایشش بدین مشکل حل بشه البته مطمئن نیستم ولی امتحانش ضرر نداره
    اولین مرحله شناخت آفرینش همانا خرد است چشم و گوش و زبان سه نگهبان اویند که لاجرم هر چه نیکی و شر است از همین سه ریشه می گیرد .و افسوس که بدنبال کنندگان خرد اندکند باید که به سخن دانندگان راه جست و باید جهان را کاوش نمود و از هر کسی دانشی آموخت و یک دم را هم برای آموختن نباید از دست داد . فردوسی خردمند

  6. #4
    کاربر فعال arm-mohsen-avr آواتار ها
    تاریخ عضویت
    May 2011
    نام
    محسن جودی
    نوشته ها
    222
    تشکر
    200
    تشکر شده 149 بار در 101 پست

    پیش فرض

    با سلام
    دوست عزیز شما باید ابتدا مقدار adc را درون یک متغیر قرار دهید و بعد با استفاده از توابع ftoa و sprintf عدد بدست امده را به یک رشته تبدیل کرده و بعد با استفاده ازتابع lcd_puts مقدار را روی یک lcd نمایش بدهید.
    در ضمن تابع lcd_putsf برای نمایش یک رشته که در حافظه فلش قرار دارد استفاده می شود و تابع lcd_putchar برای نمایش یک کاراکتر بر روی lcd استفاده می شود

  7. تشکرها از این نوشته :


  8. #5
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    فک میکنم اگه مقدار read_adc(0) رو تو یه متغیر بریزین و بعد نمایشش بدین مشکل حل بشه البته مطمئن نیستم
    ممنون وحید جان ، این روش رو امتحان کرده بودم ولی جواب نداد. اما اون روشی که جناب محسن خان گفتن رو چک نکردم. میشه یکمی راجع به دستور sprintf توضیح بدید؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  9. #6
    کاربر فعال mihman آواتار ها
    تاریخ عضویت
    Jul 2011
    نوشته ها
    288
    تشکر
    159
    تشکر شده 164 بار در 121 پست

    پیش فرض

    نقل قول نوشته اصلی توسط morteza_rk نمایش پست ها
    ممنون وحید جان ، این روش رو امتحان کرده بودم ولی جواب نداد. اما اون روشی که جناب محسن خان گفتن رو چک نکردم. میشه یکمی راجع به دستور sprintf توضیح بدید؟
    سلام.برنامه زیر حتما جواب میده:
    [HTML]#include <stdio.h>
    char str[16];

    while (1)
    {

    lcd_clear();
    lcd_gotoxy(0,0);
    sprintf(str,"%d",read_adc(0));

    lcd_puts(str);

    delay_ms(1000);
    }[/HTML]

  10. تشکرها از این نوشته :


  11. #7
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    sprintf(str,"%d",read_adc(0))
    ممنون دوست عزیز ، فکر می کنم طرز کار تابع sprintf رو یاد گرفتم. این تابع مقدار عددی read_adc(0) رو به رشته تبدیل می کنه و در متغیر str که یک نوع متغیر رشته ای هست ذخیره می کنه. d% هم یعنی اینکه عدد علامت دار داخل متغیر read_adc(0) باید تبدیل بشه.

    درسته؟
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  12. #8
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    بله دقیقا به همین صورت هست ولی خوب این برنامه یه مشکل داره اگر یه بار مقدار خودنده شده مقدار 125 باشه و لحظه بعد مقدار 74 باشه برای لحظه دوم مقدار 745 رو نمایش میده چون رشته رو خالی نکردیم و انتهای اونو مارک نکردم ! خوب پش به این صورت تغییرش میدیم
    کد:
    sprintf(str,"%d%c",read_adc(0),0);
    ممنون دوست عزیز ، فکر می کنم طرز کار تابع sprintf رو یاد گرفتم. این تابع مقدار عددی read_adc(0) رو به رشته تبدیل می کنه و در متغیر str که یک نوع متغیر رشته ای هست ذخیره می کنه. d% هم یعنی اینکه عدد علامت دار داخل متغیر read_adc(0) باید تبدیل بشه.

    درسته؟
    بله دایی جان درسته

  13. #9
    ناظم انجمن Ma3ood آواتار ها
    تاریخ عضویت
    Aug 2011
    نام
    مسعود
    نوشته ها
    2,248
    تشکر
    1,912
    تشکر شده 3,087 بار در 1,509 پست

    پیش فرض

    سلام دوست عزیز
    c% یک کاراکتر
    d% و i% عدد صحیح علامت دار
    f% عدد اعشاری

    [PHP]

    #include <stdio.h>
    char str[16];

    while (1)
    {
    ;(i=read_adc(0
    lcd_gotoxy(0,0);
    sprintf(str,"%d",i);
    lcd_clear();
    lcd_puts(str);

    delay_ms(1000);
    }
    [/PHP]
    البته فرقی نداره یه کوچولو
    هر دو باید جوا بده
    ولی این برنامه چشمک کمتری روی lcd میزنه
    ویرایش توسط Ma3ood : 02-01-2012 در ساعت 16:15

  14. #10
    کاربر فعال mehrdad22 آواتار ها
    تاریخ عضویت
    Nov 2011
    نام
    مهرداد بابایی
    نوشته ها
    168
    تشکر
    184
    تشکر شده 144 بار در 96 پست

    پیش فرض

    سلام آقا مرتضی
    ببخشید من کدویژن بلد نیستم
    ولی با بسکام یه چیزایی درست کرده بودم، نمیدونم که الان به دردتون میخوره یانه!

    کار این پروژه ای که ضمیمه کردم اینه که از ورودی adc مقدار مقاومت متغیری که بهش وصله رو میخونه و روی lcd نمایش میده

    من از شما خیلی چیژا یاد گرفتم ، ببخشید که همچین جسارتی کردم، گفتم شاید تونسته باشم جبران کنم
    فايل هاي پيوست شده فايل هاي پيوست شده

  15. تشکرها از این نوشته :


  16. #11
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    دستور lcd_puts برای نمایش یک رشته از حافظه ی رم
    دستور lcd_putsf برای نمایش یک رشته از حافظه ی فلش
    دستور lcd_putchar هم برای نمایش فقط یک کاراکتر از رم

    دستور puts برای فرستادن یک رشته از طریق usart از حافظه ی رم
    دستور putsf برای فرستادن یک رشته از طریق usart از حافظه ی فلش
    دستور putchar برای فرستادن فقط یک کاراکتر از رم

    eeprom میشه با یک کاراکتر کار کرد ولی متاسفانه با رشته نمیشه کار کرد
    ویرایش توسط esisafa : 02-01-2012 در ساعت 19:01

  17. تشکرها از این نوشته :


  18. #12
    مدیر کل انجمن ها morteza_rk آواتار ها
    تاریخ عضویت
    Apr 2009
    نام
    مرتضی رحیمی کردمحله
    نوشته ها
    2,071
    تشکر
    2,376
    تشکر شده 2,899 بار در 1,263 پست

    پیش فرض

    سلام آقا مرتضی
    ببخشید من کدویژن بلد نیستم
    ولی با بسکام یه چیزایی درست کرده بودم، نمیدونم که الان به دردتون میخوره یانه!......
    سلام مهرداد جان ، چاکریم دادا. ممنون از توجهت.

    زبان اصلی برنامه نویسی من بیسیک و ویژوال بیسیک هست. برنامه ی بالارو با بسکام نوشتم و کار هم می کنه. اصلا مشکلی نیست. ولی میزان آشنایی من با دستورات زبان سی خیلی کمه و بخاطر همین نتونستم توی کدویژن جواب بگیرم. خیلــــــــــــــــــــی گلی دادا.

    sprintf(str,"%d%c",read_adc(0),0);
    دائی جان دقیقا متوجه این قسمت نشدم. یعنی با این دستور مقدار عددی read_adc(0) میره توی str و بعدش کاراکتر 0 میره توی read_adc(0) تا اونو صفر کنه یا فقط انتهای رشته رو صفر می کنه؟

    c% یک کاراکتر
    d% و i% عدد صحیح علامت دار
    f% عدد اعشاری
    سلام مسعود جان ، اینارو می دونم دادا ، دست گلت درد نکنه. خیلی آقایی.

    دستور lcd_puts برای نمایش یک رشته از حافظه ی رم
    دستور lcd_putsf برای نمایش یک رشته از حافظه ی فلش
    دستور lcd_putchar هم برای نمایش فقط یک کاراکتر از رم .....
    د
    ممنون اسی جــــــــــــــون.
    .
    اَللّهُمَ صَلّ عَلی مُحَمَّد وَ آلِ مُحَمَّد وَ عَجّل الفَرَجَهُم


    وبلاگ شخصی من

  19. #13
    مدیرکل انجمنها
    تاریخ عضویت
    May 2011
    نام
    احسان صفامنش
    نوشته ها
    1,763
    تشکر
    919
    تشکر شده 2,261 بار در 1,056 پست

    پیش فرض

    خود زبان c رشته یا string ساپورت نمیکنه ولی یک راه داره اونم ارایه ای از کاراکتر هست. ولی چند چیز رو موقع کار کردن با اون باید رعایت کرد
    1 اخر هر رشته کاراکتر نول یا \n قرار بدین
    2 موقع خوندن رشته ، اخر رشته وقتی هست که به کاراکتر نول n\ برسیم
    کاراکتر نول در کد های اسکی مقدار 0 داره.
    توابع رشته در زبان c از این قانونها پیروی میکنن.
    پس یا 0 قرار میدیم یا کاراکتر n\

  20. #14
    مدیرکل انجمنها agape آواتار ها
    تاریخ عضویت
    Feb 2009
    نام
    Zeus
    نوشته ها
    1,235
    تشکر
    139
    تشکر شده 2,209 بار در 846 پست

    پیش فرض

    خود زبان c رشته یا string ساپورت نمیکنه ولی یک راه داره اونم ارایه ای از کاراکتر هست. ولی چند چیز رو موقع کار کردن با اون باید رعایت کرد
    1 اخر هر رشته کاراکتر نول یا \n قرار بدین
    2 موقع خوندن رشته ، اخر رشته وقتی هست که به کاراکتر نول n\ برسیم
    کاراکتر نول در کد های اسکی مقدار 0 داره.
    توابع رشته در زبان c از این قانونها پیروی میکنن.
    پس یا 0 قرار میدیم یا کاراکتر n\
    دایی جان آقای صفامنش درست می فرمایند، برای این که بهش بفهمونیم رشته کجا تمام میشه باید /n رو در انتهای هر رشته قرار بدیم و به همین دلیل من این کار رو کردم یعنی بعد از مقدار ADC که به صورت رشته در میآد در آخر کارکتر 0 رو قرار دادم که به تابع نمایش رشته بفهمونه که رشته کجا تمام میشه مثلا شما وقتی ADC مقار 12 رو میخونه خروجی رشتش این طوری میشه
    کد:
    49,50,0
    49 کد اسکی 1 و 50 کداسکی 2 و 0 هم نشان دهنده اتمام رشته هست

  21. #15
    مدیر باز نشسته shayanmelody آواتار ها
    تاریخ عضویت
    Jan 2011
    نام
    شایان نیکزاد
    نوشته ها
    576
    تشکر
    283
    تشکر شده 1,038 بار در 473 پست

    پیش فرض

    سلام آقاي رحيمي.
    ميشه پرو‍ه كاملت رو بزاري ؟‌ منم دنبال راه اندازي a2d با كدويژن هستم.



    بعد از چند وقت برگشتم



  22. #16
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    با سلام به دوستان عزيزم و اساتيد گرامي
    فكر كنم اگه يه نگاه به لينك زير بندازيد شايد مشكلتون حل بشه! اگه سوالي داريد در خدمتم.
    http://www.iranmicro.ir/forum/showthread.php?t=5390
    _____________________________________
    _____________________________________

  23. #17
    کاربر فعال arm-mohsen-avr آواتار ها
    تاریخ عضویت
    May 2011
    نام
    محسن جودی
    نوشته ها
    222
    تشکر
    200
    تشکر شده 149 بار در 101 پست

    Icon17

    دوستان دیدم این پست راجع به LCD و تابع sprintf است گفتم یه سوالی بپرسم ....
    من با avrstudio دارم واسه xmega برنامه می نویسم ولی یه مشکل کوچولو دارم اونم اینه که وقتی می خوام مقادیر رو روی lcd نمایش بدهم ، اونم مقادیر اعشاری نمیشه نمایش داد این در حالی که متغیر را برابر float قرار دادم ولی باز هم اعشاری را نشون نمیده اگه میشه من رو راهنمابیی کنید ..
    باتشکر
    این هم برنامه :
    [PHP]float ADC_result;
    char lcd_buff[20];
    lcd_init(LCD_DISP_ON);
    ADC_CalibrationValues_Load(&ADCA);
    ADC_ConvMode_and_Resolution_Config(&ADCA, ADC_ConvMode_Unsigned, ADC_RESOLUTION_12BIT_gc);
    ADC_Reference_Config(&ADCA, ADC_REFSEL_VCC_gc);
    ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV8_gc);
    ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH1,ADC_CH_ INPUTMODE_SINGLEENDED_gc,ADC_CH_GAIN_1X_gc);
    ADC_Ch_InputMux_Config(&ADCA.CH1, ADC_INPUT, 0);
    ADC_Enable(&ADCA);
    ADC_Wait_32MHz(&ADCA);
    lcd_home();
    lcd_puts("ADC0.1 LCD XMEGA");
    _delay_ms(3000);
    lcd_clrscr();
    while(1)
    {
    ADC_Ch_Conversion_Start(&ADCA.CH1);
    while(!ADC_Ch_Conversion_Complete(&ADCA.CH1));
    ADC_result = ADC_ResultCh_GetWord(&ADCA.CH1);
    sprintf(lcd_buff,"ADC=%4.1f",ADC_result);
    lcd_gotoxy(0,1);
    lcd_puts(lcd_buff);
    _delay_ms(500);
    lcd_clrscr();
    }
    }[/PHP]

  24. #18
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    با سلام
    بهتره سوالتون رو تو انجمن مربوط به اين ميكرو بپرسيد.
    اما جواب: اين تغيير رو انجام بديد، يعني متغير:
    [HTML]float adc_result;[/HTML]
    به اين صورت تعريف كنيد:
    [HTML]double adc_result;[/HTML]
    حالا تست كنيد ببينيد جواب ميده؟


    _____________________________________
    _____________________________________

  25. #19
    کاربر فعال arm-mohsen-avr آواتار ها
    تاریخ عضویت
    May 2011
    نام
    محسن جودی
    نوشته ها
    222
    تشکر
    200
    تشکر شده 149 بار در 101 پست

    پیش فرض

    نه دوست عزيز جواب نميده
    در ضمن تو avrstdio این کلمات که به اول متغیر اضافه می کنند معنیش چی می تونه باشه
    uint16_t
    uint8 _t
    باتشکر
    ویرایش توسط sadmonew : 03-01-2012 در ساعت 00:10 دلیل: اشتباها ويرايش شد.

  26. #20
    مدير بخش STM32 sadmonew آواتار ها
    تاریخ عضویت
    Jun 2011
    نام
    صادق محمدي
    نوشته ها
    2,002
    تشکر
    6,283
    تشکر شده 3,115 بار در 1,408 پست

    پیش فرض

    دقيقا روي ال.سي.دي چي نشون ميده؟
    فقط اعداد صحيح رو نشون ميده؟ يا قسمت صحيح اعداد اعشاري(مثلا 11.0555 رو 11.0000 نشون ميده)؟
    _____________________________________
    _____________________________________

  27. تشکرها از این نوشته :


صفحه 1 از 2 12 آخرینآخرین

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

  1. درخواست hspice قابل نصب روی ویندوز سون 64 بیتی بهمراه آموزش نصب
    توسط toodeg در انجمن در خواست نرم افزارو كرك
    پاسخ: 0
    آخرين نوشته: 04-08-2013, 22:57
  2. باگ در وقفهKEIL و نصب IAR روی ویندوز سون win 7
    توسط bato_990 در انجمن AT91 series (ATMEL)
    پاسخ: 10
    آخرين نوشته: 19-05-2013, 15:43
  3. نرم افزارهای که روی ویندوز 8 بدون مشکل نصب می شوند.
    توسط lord67 در انجمن دانلود نرم افزارهای برق و الکترونیک
    پاسخ: 16
    آخرين نوشته: 08-05-2013, 12:37
  4. حل مشکل نیامدن منوی بوت برای نصب ویندوز روی برد s3c6410
    توسط shahrivar88 در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 1
    آخرين نوشته: 03-11-2012, 23:56
  5. نحوه پاک کردن 9 Internet Explorer از روی ویندوز ویستا و 7
    توسط arsalan681 در انجمن ترفندهای کامپیوتری/معرفی نرم افزار های مفید
    پاسخ: 0
    آخرين نوشته: 23-11-2010, 16:46

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

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