اطلاعیه

Collapse
No announcement yet.

ارسال دیتا از متلب به میکرو

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ارسال دیتا از متلب به میکرو

    من از طریق متلب با دستور printf از متلب به میکرو این رشته "16" رو برای میکرو فرستادم. بعد چون میخواستم عمل ریاضی روش انجام بدم با استفاده از دستور val به یک متغیر عددی تبدیلش کردم اما نمی دونم چرا پردازش ریاضی رو درست انجام نمی ده
    مثلا حاصل 2*16 رو 212 داد .کسی میدونه مشکل کجاست اینم برنامه میکرو و متلب:
    *******************************برنامه متلب***************************************
    clc
    s=serial('com1','baudrate',384 00,'databits',8)
    fopen(s)
    % for i=1:4
    %b=['1';'2';'3';'4& #039;]
    d=Addresses(1,1).edit8
    fprintf(s,'%s','16&#039
    fclose(s)
    ***************************برنامه میکرو**********************
    $regfile = "m32def.dat"
    $crystal = 8000000
    $baud = 38400
    Config Serialin = Buffered , Size = 20
    Enable Interrupts
    Dim N As String * 10
    Dim Ar0(85) As Word
    Dim B As Word
    Dim C As Word
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
    Cls
    Do
    N = Waitkey()
    B = Val(n)
    Ar0(1) = B
    C = B * 2
    Lcd C
    Loop
    End

    #2
    پاسخ : ارسال دیتا از متلب به میکرو

    اون عددی که میکرو حساب می کنه درسته :mrgreen: :mrgreen: :mrgreen:
    6*2=12
    1*2=2
    اگه 12 و 2 رو پشت سر هم بنویسی میشه 212
    یکمی اصلاح توی برنامه انجام بده درست میشه



    اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

    دیدگاه


      #3
      پاسخ : ارسال دیتا از متلب به میکرو

      از راهنمایی حکیمانه تون بسیار مسرور شدم.

      دیدگاه


        #4
        پاسخ : ارسال دیتا از متلب به میکرو

        راستی من به یک سری مشاهدات عجیب و گیج کننده بر خوردم. آخه اگر برنامه های بالا رو اجرا کنید خواهید دید که حاصلضرب اعداد 1 تا 15 در 2 کاملا درست ولی حاصلضرب 15 تا 19 کاملا اشتباه است مثلا 210=2*15 و ... 218=2*19 جالبه که بطور منظم هم افزایش پیدا می کنه! :question:
        بعد دوباره ضرب 20 تا 25 رو درست انجام می ده :biggrin: و دوباره از 25تا 30 رو کاملا اشتباه نشون میده مثلا 410=2*25 :angry: جالبه نه ! حالا حتما علاقه مندتر میشین اگه بگم من رشته ای که متلب میفرسته درست تو میکرو دریافت میکنم :biggrin: (با lcd چک کردم ) و جالبه که با دستور val هم رشته درست به عدد تبدیل میشه :biggrin:(با lcd چک کردم)

        دیدگاه


          #5
          پاسخ : ارسال دیتا از متلب به میکرو

          نمیدونم اون اعداد از کجا در میاد :mrgreen:
          ولی مطمئنم میکرو خیلی خیلی کم اشتباه داره
          تازه همون اشتباهات رو هم خطای انسانی باعثش میشه
          یه جایی توی برنامه میکرو دنبال ایراد بگرد :mrgreen: :mrgreen: :mrgreen:

          موفق باشی




          اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

          دیدگاه


            #6
            پاسخ : ارسال دیتا از متلب به میکرو

            آخه توی این برنامه 4 خطی کجاش ممکن است اشتباه باشه :question:؟من این برنامه رو با یک رشته مثل '16' که در خود برنامه بیسیک باشه هم چک کردم کاملا درست محاسبه کرد لذا من فکر میکنم مشکل از ارسال باشه ! مثلا چه می دونم شاید یه چیزی همراه رشته ارسالی هست که باعث میشه بعضی از محاسبه ها خراب بشه :nerd: مثلا زوج یا فرد بودن پریتی یا .. نمیتونه موثر باشه؟

            دیدگاه


              #7
              پاسخ : ارسال دیتا از متلب به میکرو

              اعداد دریافتی رو به صورت string دریافت نکن
              توی همین سایت بگرد خودم یک برنامه با وقفه سریال نوشتم تا هر چند تا عدد بخوای می تونی دریافت کنی
              بعدش اونا رو تبدیل کن به عددی که می خوای
              توی دریافت مشکل داری نه توی محاسبات
              اصلا رشته ای که دریافت می کنی رو تک تک به صورت کد اسکی اون دریافت کن بعد بچسبونشون بهم :mrgreen:

              راستشوو بخوای یکمی برنامه ات از پایه ایراد داره :redface: :redface: :redface:

              موفق باشی

              اگه مردم می دونستن زمان چقدر با ارزشه دیگه هیچ وقت کفش بند دار نمی خریدن البرت انیشتن

              دیدگاه

              لطفا صبر کنید...
              X