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

موضوع: مشکل در نشان دادن متغییر روی lcd گرافیکی با mikro c

  1. #1
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض مشکل در نشان دادن متغییر روی lcd گرافیکی با mikro c

    سلام خدمت دوستان

    من میخوام یه متغییر رو روی lcd گرافیکی نشون بدم

    با راه اندازیش مشکلی ندارم text هم به خوبی نشون میده ولی متغییر رو نشون نمیده

    دوستان خیلی حیاتی هست

    فقط جمعه وقت دارم

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    نوع متغیر؟

    دستور ارسال به میکرو برای نمایش متغیر رو هم بنویس؟

  4. #3
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    کل برنامه من اینه

    // Glcd module connections
    char GLCD_DataPort at PORTD;

    sbit GLCD_CS1 at RC0_bit;
    sbit GLCD_CS2 at RC1_bit;
    sbit GLCD_RS at RC2_bit;
    sbit GLCD_RW at RC3_bit;
    sbit GLCD_EN at RC4_bit;
    sbit GLCD_RST at RC5_bit;

    sbit GLCD_CS1_Direction at TRISC0_bit;
    sbit GLCD_CS2_Direction at TRISC1_bit;
    sbit GLCD_RS_Direction at TRISC2_bit;
    sbit GLCD_RW_Direction at TRISC3_bit;
    sbit GLCD_EN_Direction at TRISC4_bit;
    sbit GLCD_RST_Direction at TRISC5_bit;

    void delay2S(){ // 2 seconds delay function
    Delay_ms(2000);
    }

    float cont = 0 ;
    unsigned short data_=0x96;
    char *someText;




    void main(){
    TRISC=0;
    TRISB=0;
    TRISA=0;

    Glcd_Init();
    glcd_fill(0b10101010);
    delay_ms(1000);
    glcd_fill(0);

    ADCON1=0b10000000;
    ADCON0=0b00000101;
    Delay_ms(100);
    cont=(ADRESH*256);
    cont=(cont+ADRESL);
    cont=((cont*5)/1023)*1000;
    Glcd_Rectangle(0, 0, 127, 63, 1);
    Glcd_Write_Text("alimohammad shafiee", 2, 1, 1);


    Glcd_Write_Text("voltag=", 2, 3, 1);

    someText =0;
    Glcd_Write_Data(someText);


    while(1);

    }

    الان sometext یه مثاله

    من در اصل میخوام همون cont رو نشون بدم
    یه متغیر یه بایتی هم نشون نمیده
    ویرایش توسط alimohammad_s : 25-05-2012 در ساعت 01:15

  5. #4
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    یا sprintf متغیر count رو تبدیل به رشته کن و رو lcd نشون بده

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

    پیش فرض

    همونطور که آقا بهنام گفتن عمل کنید.
    دوست من lcd رشته رو نشون میده نه عدد رو هر چیزی اول باید به رشته یا آرایه ای از کاراکتر تبدیل بشه بعد روی lcd نمایش داده بشه

  7. #6
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    unsigned short t = 24;
    char txt;


    ByteToStr(t, txt);


    Glcd_Set_Side(0);
    Glcd_Set_X(20);
    Glcd_Set_Page(5);
    Glcd_Write_Data(ltrim(txt));


    من تبدیل کردم ولی نمیشه

  8. #7
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    دوست عزیز txt رو بصورت کاراکتر تعریف کردید نه رشته!

    به صورت ارایه یا اشاره گر تعریف کنید.

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


  10. #8
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    تعریف کردم ولی نشده



    [10]char txt;

  11. #9
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    الگوی تابع ByteToStr رو بزار همچنین با کد مربوطش.

    فکر کنم باید ارگومان دوم اشاره گر باشه؟ چون توی این حالتی که نوشتی داری مقدار رو پاس میدی! باید ادرس پاس داده بشه تا مقدار تبدیل شده رو برگردونه!

    چرا از sprintf استفاده نمیکنی؟

  12. #10
    کاربر فعال pooriya آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    پوریا علیزاده
    نوشته ها
    316
    تشکر
    163
    تشکر شده 676 بار در 217 پست

    پیش فرض

    سلام
    اگه منظورتون نشون دادن متغییری مثلا خروجی adc یا مقدار یه شمارشگر و...... است به این صورت عمل کنید

    [PHP]unsigned char p;
    Lcd_chr(2, 7,(p/10)+48);
    Lcd_chr(2, 8,(p%10)+48);[/PHP]

    که اولی رقم یکان و دومی دهگان رو نشون میده

  13. #11
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    این help خود mikro c هس


    ByteToStr
    Prototype void ByteToStr(unsigned short input, char *output);

    Returns Nothing.

    Description Converts input byte to a string. The output string has fixed width of 4 characters including null character at the end (string termination). The output string is right justified and remaining positions on the left (if any) are filled with blanks.

    Parameters :

    input: byte to be converted
    output: destination string


    Requires Destination string should be at least 4 characters in length.

    Example unsigned short t = 24;
    char txt[4];
    ...
    ByteToStr(t, txt); // txt is " 24" (one blank here)








    Glcd_Write_Data
    Prototype void Glcd_Write_Data(unsigned short ddata);

    Returns Nothing.

    Description Writes one byte to the current location in Glcd memory and moves to the next location.

    Parameters :

    ddata: data to be written


    Requires Glcd needs to be initialized, see Glcd_Init routine.

    Glcd side, x-axis position and page should be set first. See functions Glcd_Set_Side, Glcd_Set_X, and Glcd_Set_Page.

    Example unsigned short data_;
    ...
    Glcd_Write_Data(data_);




    اگه میشه یه مثال با sprintf بزنید

  14. #12
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    نقل قول نوشته اصلی توسط pooriya نمایش پست ها
    سلام
    اگه منظورتون نشون دادن متغییری مثلا خروجی adc یا مقدار یه شمارشگر و...... است به این صورت عمل کنید

    [PHP]unsigned char p;
    Lcd_chr(2, 7,(p/10)+48);
    Lcd_chr(2, 8,(p%10)+48);[/PHP]

    که اولی رقم یکان و دومی دهگان رو نشون میده

    اقا این مگه مربوط به lcd کارکتری نیست ؟؟؟

    بعد این مال mikro c هست؟؟

  15. #13
    مدیر باز نشسته behnam6500 آواتار ها
    تاریخ عضویت
    Jan 2009
    نوشته ها
    801
    تشکر
    311
    تشکر شده 899 بار در 390 پست

    پیش فرض

    [PHP]
    unsigned char temp; //temprature
    char strTemp[5];
    temp = 25;
    sprintf(strTemp, "%d", temp);
    LCDprintData(strTemp,"%s");
    [/PHP]

  16. #14
    کاربر فعال pooriya آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    پوریا علیزاده
    نوشته ها
    316
    تشکر
    163
    تشکر شده 676 بار در 217 پست

    پیش فرض

    بله این مال mikro c هست.شما همینو واسه lcd گرافیکی به کار ببر.
    در ضمن فرقی نمیکنه مال کدوم کامپایلر ،چون این یه روند کلی هست.

  17. #15
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    اینو نوشتم ولی error داد

  18. #16
    کاربر فعال pooriya آواتار ها
    تاریخ عضویت
    Nov 2008
    نام
    پوریا علیزاده
    نوشته ها
    316
    تشکر
    163
    تشکر شده 676 بار در 217 پست

    پیش فرض

    اگه اینطوری به کار برده باشید نباید مشکلی باشه.

    [PHP]unsigned char p;
    Glcd_Write_Char((p/10)+48, 10, 2, 1);
    Glcd_Write_Char((p%10)+48, 12, 2, 1);[/PHP]

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


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

    پیش فرض

    نقل قول نوشته اصلی توسط alimohammad_s نمایش پست ها
    اینو نوشتم ولی error داد
    سلام مهندس
    دقيقا چه اروري ميده؟ به كدوم قسمت(خط) ايراد ميگيره؟
    _____________________________________
    _____________________________________

  21. #18
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    نقل قول نوشته اصلی توسط pooriya نمایش پست ها
    اگه اینطوری به کار برده باشید نباید مشکلی باشه.

    [PHP]unsigned char p;
    Glcd_Write_Char((p/10)+48, 10, 2, 1);
    Glcd_Write_Char((p%10)+48, 12, 2, 1);[/PHP]
    اقا درسته error نمیده

    چنتا سوال
    Glcd_Write_Char((p/10)+48, 10, 2, 1); این دستور مقدار صحیح رو نشون میده؟؟

    اگر مقدار صحیح نشون میده اینجا باقیمونده چاپ میشه

    بعد اینکه چرا تقسیم به 10 و با48 جمع شده؟؟

    یه سوال دیگه

    من توی این برنامه زیر میخوام مقدار متغیر cont که از نوع float هست رو چاپ کنم باید چی کار کنم ؟؟

    من اومدم مقدار صحیح و اعشاری اونو ریختم تو متغییر sah و ash اوناهم میشه به جای float چاپ کرد


    اینم برنامه من



    // ------------------------------------------------------
    // GLCD Picture name: ali.bmp
    // GLCD Model: KS0108 128x64
    // ------------------------------------------------------

    // ------------------------------------------------------
    // GLCD Picture name: dangrhv.bmp
    // GLCD Model: KS0108 128x64
    // ------------------------------------------------------

    const code char dangrhv[1024] = {
    255, 255, 255, 255, 255, 255, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 143, 143, 143, 143, 143, 143, 143, 207, 207, 79, 79, 79, 79, 79, 111, 111, 111, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 111, 111, 111, 79, 79, 79, 79, 79, 207, 207, 143, 143, 143, 143, 143, 143, 143, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 0, 128, 192, 96, 48, 48, 24, 8, 12, 12, 4, 4, 230, 226, 226, 227, 225, 97, 97, 225, 225, 225, 224, 192, 0, 0, 0, 0, 0, 128, 224, 224, 96, 224, 224, 224, 192, 0, 0, 0, 0, 0, 224, 224, 224, 224, 224, 192, 0, 0, 0, 224, 224, 224, 224, 0, 0, 0, 0, 0, 192, 224, 224, 96, 96, 32, 32, 96, 96, 96, 96, 192, 0, 0, 0, 0, 0, 224, 224, 224, 224, 96, 96, 96, 96, 96, 96, 32, 0, 0, 224, 224, 224, 225, 225, 97, 97, 97, 97, 227, 226, 226, 198, 4, 4, 12, 12, 8, 16, 48, 48, 224, 192, 128, 0, 0, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 0, 7, 24, 16, 48, 32, 96, 64, 128, 128, 128, 128, 63, 63, 63, 63, 63, 48, 48, 48, 63, 63, 31, 31, 6, 0, 48, 60, 63, 63, 63, 31, 24, 24, 31, 31, 31, 63, 60, 56, 32, 0, 63, 63, 63, 63, 3, 3, 7, 15, 62, 63, 63, 63, 63, 0, 0, 0, 7, 15, 31, 31, 60, 56, 48, 48, 50, 54, 54, 62, 62, 30, 30, 0, 0, 0, 0, 63, 63, 63, 63, 51, 51, 51, 51, 51, 51, 50, 0, 0, 63, 63, 63, 63, 63, 2, 6, 6, 31, 63, 63, 57, 49, 160, 128, 128, 128, 64, 96, 48, 48, 24, 12, 7, 0, 0, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 193, 193, 193, 193, 195, 194, 194, 194, 198, 196, 196, 196, 204, 204, 204, 204, 204, 200, 200, 200, 200, 216, 216, 216, 208, 208, 208, 208, 208, 208, 208, 208, 240, 240, 240, 240, 240, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 240, 240, 240, 240, 208, 208, 208, 208, 208, 208, 208, 208, 216, 216, 216, 216, 200, 200, 200, 200, 204, 204, 204, 204, 196, 196, 196, 196, 198, 194, 194, 194, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 1, 1, 159, 191, 191, 191, 191, 191, 191, 31, 1, 1, 255, 255, 255, 1, 1, 1, 255, 255, 255, 255, 31, 7, 7, 227, 243, 243, 249, 249, 57, 57, 57, 57, 51, 51, 51, 55, 255, 255, 255, 1, 1, 1, 191, 191, 191, 191, 191, 191, 159, 1, 1, 1, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 255, 240, 240, 255, 255, 255, 240, 240, 240, 255, 255, 255, 255, 255, 252, 252, 248, 249, 241, 243, 243, 243, 243, 243, 243, 249, 248, 248, 248, 255, 255, 255, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 195, 3, 15, 63, 255, 255, 255, 255, 63, 15, 3, 195, 243, 255, 255, 63, 15, 7, 199, 231, 231, 243, 243, 243, 243, 231, 199, 7, 15, 31, 255, 255, 255, 3, 3, 3, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 243, 243, 243, 243, 227, 3, 3, 227, 243, 243, 243, 243, 255, 255, 127, 31, 7, 131, 227, 227, 135, 31, 127, 255, 255, 255, 255, 255, 255, 63, 15, 15, 199, 231, 231, 247, 243, 243, 243, 231, 231, 199, 207, 207, 255, 255, 255, 3, 3, 3, 115, 115, 115, 115, 115, 115, 115, 115, 243, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 252, 224, 193, 195, 195, 224, 248, 252, 255, 255, 255, 255, 255, 252, 240, 224, 227, 231, 231, 207, 207, 207, 207, 231, 227, 224, 240, 248, 255, 255, 255, 192, 192, 192, 207, 207, 207, 207, 207, 207, 207, 207, 255, 255, 255, 255, 255, 255, 255, 192, 192, 255, 255, 255, 255, 223, 207, 195, 224, 240, 248, 249, 249, 249, 249, 248, 240, 192, 195, 207, 255, 255, 255, 252, 240, 240, 227, 231, 231, 207, 207, 204, 204, 236, 228, 224, 240, 240, 255, 255, 255, 192, 192, 192, 206, 206, 206, 206, 206, 206, 206, 206, 207, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255
    };





    // Glcd module connections
    char GLCD_DataPort at PORTD;

    sbit GLCD_CS1 at RC0_bit;
    sbit GLCD_CS2 at RC1_bit;
    sbit GLCD_RS at RC2_bit;
    sbit GLCD_RW at RC3_bit;
    sbit GLCD_EN at RC4_bit;
    sbit GLCD_RST at RC5_bit;

    sbit GLCD_CS1_Direction at TRISC0_bit;
    sbit GLCD_CS2_Direction at TRISC1_bit;
    sbit GLCD_RS_Direction at TRISC2_bit;
    sbit GLCD_RW_Direction at TRISC3_bit;
    sbit GLCD_EN_Direction at TRISC4_bit;
    sbit GLCD_RST_Direction at TRISC5_bit;

    void delay2S(){ // 2 seconds delay function
    Delay_ms(2000);
    }
    float cont = 0 ;
    unsigned int num,ash,sah;


    void main(){
    TRISC=0;
    TRISB=0;
    TRISA=0;

    Glcd_Init();
    glcd_fill(0b10101010);
    delay_ms(1000);
    glcd_fill(0);
    Glcd_Image(dangrhv);
    delay_ms(5000);
    glcd_fill(0);

    ADCON1=0b10000000;
    ADCON0=0b00000101;
    Delay_ms(100);

    cont=(ADRESH*256);
    cont=(cont+ADRESL);
    cont=((cont*5)/1023)*1000;
    num=cont;
    ash=num%1000;
    sah=(num-ash)/1000;

    Glcd_Rectangle(0, 0, 127, 63, 1);
    Glcd_Write_Text("alimohammad shafiee", 2, 1, 1);
    Glcd_Write_Text("voltag= ", 2, 3, 1);



    while(1);

    }
    ویرایش توسط alimohammad_s : 25-05-2012 در ساعت 23:47

  22. #19
    کاربر علاقه مند alimohammad_s آواتار ها
    تاریخ عضویت
    Aug 2011
    نوشته ها
    84
    تشکر
    27
    تشکر شده 22 بار در 11 پست

    پیش فرض

    افا این مشکل متغیرم حل شد

    فقط یه مشکل دیگه!!!

    چرا adc کار نمیکمه

    این قسمت adc رو با lcd کارکتری تست کردم جواب میده ولی اینجا کار نمیکنه

  23. #20
    عضو جدید
    تاریخ عضویت
    Aug 2011
    نوشته ها
    10
    تشکر
    109
    تشکر شده 2 بار در 2 پست

    پیش فرض

    با عرض سلام و خسته نباشید
    من یه ال سی دی گرافیکی ks1080p و متاسفانه یه چند ثانیه کل مدار رو با 12 ولت روشن کردم میکروم که atmega32 بود سوخت و ال سی دی هم کار نمی کنهبا ینکه یه سری قطعات پشت ال سی دی هست آیا میشه اون رو دوباره تعمیر و راه اندازی کرد و یا تستی برای این ال سی دی ها وجود دارد.
    با تشکر

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

  1. دانلود mikro c , mikrobasic برای avr و pic
    توسط 1nafar در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 12
    آخرين نوشته: 11-10-2013, 07:03
  2. در خواست کرک برای mikro C pro for ARM
    توسط amirtebyan در انجمن میکرو کنترلر های 32 بیتی(arm)
    پاسخ: 0
    آخرين نوشته: 22-12-2012, 23:50
  3. قرار دادن یک متغییر روی پورت
    توسط kavir در انجمن AT91 series (ATMEL)
    پاسخ: 3
    آخرين نوشته: 24-09-2009, 02:01
  4. mikro-avrv4.0
    توسط kavir در انجمن پرسش و پاسخ (نرم افزارهای تخصصی)
    پاسخ: 0
    آخرين نوشته: 26-06-2007, 15:45

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

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