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

موضوع: مشکل با pwm و سوال در مورد چگونگی نشان دادن عدد اعشاری

  1. #1
    عضو جدید
    تاریخ عضویت
    Aug 2009
    نوشته ها
    7
    تشکر
    1
    تشکر شده 0 بار در 0 پست

    Exclamation مشکل با pwm و سوال در مورد چگونگی نشان دادن عدد اعشاری

    سلاممن در استفاده از میکروکنترلر PIC18F452 به دو مشکل بر خوردم. ممنون میشم کمکم بکنید.1- با استفاده از نرم افزار CCS C میکرو رو برنامه ریزی کردم، فرکانس PWM روی 20 کیلو تنظیم میکنم و برنامه روی پروتیوس و برد بورد دقیق با 20 کیلو هرتز کار میکنه. اما وقتی روی برد اصلی قرار میدم، فرکانس کاری کم میشه و قاطی میکنه. بردی که میگم رو خودم زدم و خیلی سادست. فقط واسه قرار دادن میکرو و آپ امپ هست. تمام قطعات رو هم دونه دونه چک کردم (کریستال و ... ) اما هنوز هم این مشکل هست. ممنون میشم راهنمایی کنید.2- چطور میتونم توی مد 4 بیتی عدد اعشاری رو روی LCD نشون بدم؟ من یه ولتاژ متغیر رو با ADC میخونم و میخوام روی LCD هر 1 ثانیه 1 بار مقدارش به روز بشه. کد رو توی CCS با دستور printf(lcd_putc نوشتم که توی پروتیوس جواب میده، اما روی بعد از پروگرام کردن و بستن مدار میکرو، فقط دستور lcd_putc جواب میده و کاراکتر نشون میده ولی با این دستور نمیشه عدد روی LCD نشون داد.ممنون

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

  3. #2
    کاربر ارشد 1nafar آواتار ها
    تاریخ عضویت
    Jul 2007
    نوشته ها
    2,745
    تشکر
    1,266
    تشکر شده 4,874 بار در 1,377 پست

    پیش فرض

    سلام
    1-فرکانس pwm فقط به محاسبات انجام شده در برنامه و فرکانس کریستال وابسته هست ، در صورتی که بر روی هر دو سخت افزار ( برد برد و فیبر مدار چاپی ) یک برنامه رو پروگرام میکنید ، احتمالا مشکل از کریستال هست . ممکنه مقادیر کریستال ها متفاوت باشه .
    2-با استفاده از دستور sprintf متغیر اعشاری رو به char تبدیل کنید و بعد اون رو به صورت رشته بر روی lcd نمایش بدید :
    کد:
       set_adc_channel(0);
          adc = read_adc();                         // Read a value from the ADC
       sprintf(voltage, "%f", (float)adc * .01960784); // Converts adc to text
       voltage[4] = '\0';                              // Limit shown digits to 3

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


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

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