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





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









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









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






جهت تبلیغ در وب سایت ECA کلیک کنید.

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

نمایش نتایج: از 1 به 4 از 4
  1. #1
    2012/12/04
    58
    0

    مشکل در نشان دادن عقربه ای واتاژ

    سلام یه سوالی داشتم
    من میخواستم برنامه یک ولتمتر 0 تا 5 ولت dc رو با mega32 در کدویژن بنویسم که علاوه بر نشان دادن ولتاژ روی lcd ، ولتاژ را به صورت عقربه ای انالوگ روی glcd نمایش بده.
    من برنامشو نوشتم ، مشکلم با نشان دادن انالوگ ولتاژ است .
    برنامه ای که نوشتم رو میذارم ،ممنون میشم بگین اشکال برنامه چیه .
    کد:
    #include <mega32a.h>
    #include <delay.h>
    #include <alcd.h>
    #include <glcd.h>
    #include <font5x7.h>
    #include <stdlib.h>
    #include <math.h>
    
    #define ADC_VREF_TYPE ((0<<REFS1) | (0<<REFS0) | (0<<ADLAR))
    float volt;
    char str[10];
    
    unsigned int read_adc(unsigned char adc_input)
    {
    ADMUX=adc_input | ADC_VREF_TYPE;
    
    delay_us(10);
    
    ADCSRA|=(1<<ADSC);
    
    while ((ADCSRA & (1<<ADIF))==0);
    ADCSRA|=(1<<ADIF);
    return ADCW;
    }
    
    void main(void)
    {
    float theta;
    GLCDINIT_t glcd_init_data;
    
    
    DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) | (0<<DDA2) | (0<<DDA1) | (0<<DDA0);
    PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) | (0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);
    
    DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);
    
    DDRC=(0<<DDC7) | (0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0);
    PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);
    
    DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0);
    PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);
    
    ADMUX=ADC_VREF_TYPE;
    ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADATE) | (0<<ADIF) | (0<<ADIE) | (0<<ADPS2) | (1<<ADPS1) | (1<<ADPS0);
    SFIOR=(0<<ADTS2) | (0<<ADTS1) | (0<<ADTS0);
    
    lcd_init(16);
    
    glcd_init_data.font=font5x7;
    glcd_init_data.readxmem=NULL;
    glcd_init_data.writexmem=NULL;
    glcd_init(&glcd_init_data);
    glcd_clear();
    delay_ms(10);
    glcd_arc(64,32,0,180,30);
    glcd_line(64,1,64,3);
    glcd_line(85,9,85,13);
    glcd_line(43,9,43,13);
    glcd_outtextxy(96,32,"5");
    glcd_outtextxy(29,32,"0");
    
    while (1)
     {
      volt=read_adc(0);
      if (volt==0)
      {
      ftoa(volt,2,str);
      lcd_putsf("volt=0.00");
      delay_ms(100);
      lcd_clear();
      }
      else 
      {
      volt=volt/204.6;
      ftoa(volt,2,str);
      lcd_putsf("V = ");
      lcd_puts(str);
      lcd_putsf(" (volt)");
      delay_ms(100);
      lcd_clear();
      }
      
      
      theta=volt*36;
      glcd_line(64,32,64-30*cos(theta),32-30*sin(theta));
      
      
     }
    }
  2. #2
    2014/10/20
    ایران
    389
    11

    پاسخ : مشکل در نشان دادن عقربه ای واتاژ

    شما دقیقا تو کجا اشکال دارین بگین رفع میشه

    منظورم اینه که تو خوندن یا نشون دادن؟
    Telegram:
    @reza_br_2489


    Instagram:
    _amp_c

  3. #3
    2012/12/04
    58
    0

    پاسخ : مشکل در نشان دادن عقربه ای واتاژ

    نقل قول نوشته اصلی توسط noorworkshop
    شما دقیقا تو کجا اشکال دارین بگین رفع میشه

    منظورم اینه که تو خوندن یا نشون دادن؟
    مشکل من توی نشان دادن ولتاژ به صورت انالوگ روی glcd هست. در قسمت اخر برنامه برای اینکار از دستور
    کد:
    glcd_line(64,32,64-30*cos(theta),32-30*sin(theta));
    استفاده کردم که مشکل من هم همینجا است وقتی به صورت ریاضی حساب میکنم درست درمیاد ولی در برنامه جواب نمیده یک مثال میزنم تا بهتر متوجه بشین
    من روی glcd یک نیم دایره به مرکز 64 و32 و شعاع 30 رسم کردم
    مثلا ولتاژ 2.5 را در نظر میگیریم برای نشان دادن این ولتاژ باید یک خط که ابتدای ان 64 و 32 (مرکز نیم دایره ) باشد و زاویه ان 90 درجه (چون 2.5 وسط 5 هست پس بین 0 تا 180 درجه باید 90 باشد) ، پس مختصات انتهای ان
    کد:
    64-30*cos(theta)
    و
    کد:
    32-30*sin(theta)
    است که theta برای این ولتاژ 90 است.
    زاویه خط با یک تناسب به دست میاد که ولتاژ را اگر در 36 ضرب کنیم به دست میاد
    حالا این کد جواب نمیده در صورتیکه به صورت ریاضی برای هر ولتاژی درست درمیاد ولی نمیدونم مشکلش چیه که جواب نمیده.
  4. #4
    2014/10/20
    ایران
    389
    11

    پاسخ : مشکل در نشان دادن عقربه ای واتاژ

    شما ابتدا در این برنامه یک عقربه رسم کنید(مثلا30درجه)
    ببینید اونوقت جواب میده یا نه
    اگه جواب نداد برنامه اشکال داره(اساسا)و باید دوباره همه جاش کنترل شه
    ولی اگه نشون داد اونوقت اون فرمول اخری اشکال داره شما امتحان کنید اگه جواب نگرفتید بگید
    شماتیک مدارتونو قرار بدید
    Telegram:
    @reza_br_2489


    Instagram:
    _amp_c

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

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

  1. مشکل در نشان دادن ساعت
    توسط sinaa2251 در انجمن میکروکنترلرهای AVR
    پاسخ: 14
    آخرين نوشته: 2016/08/02, 19:36
  2. مشکل در نشان دادن سوراخ فوت پرینت قطعات
    توسط mehran901 در انجمن نرم افزار Protel
    پاسخ: 0
    آخرين نوشته: 2015/06/07, 13:38
  3. مشکل در نشان دادن متغيير روي lcd گرافيکي با mikro c
    توسط alimohammad_sh در انجمن میکروکنترلرهای PIC
    پاسخ: 7
    آخرين نوشته: 2012/05/25, 11:25
  4. مشکل در نشان دادن اطلاعات ارسالی از پورت com
    توسط فرشاد اکرمی در انجمن Labview
    پاسخ: 9
    آخرين نوشته: 2011/04/01, 15:44
  5. مشکل با نشان دادن متن روی LCD - کمک سریع لطفا
    توسط masoudmok در انجمن میکروکنترلرهای AVR
    پاسخ: 8
    آخرين نوشته: 2010/03/09, 08:22

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

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

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

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

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