اطلاعیه

Collapse
No announcement yet.

ارسال میکرو به پی سی

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

    #16
    پاسخ : ارسال میکرو به پی سی

    سلام دوستان
    من پورت lcd را عوض کردم و روی پورت b بستم
    مدارم درست شد یعنی توی ساخت دما را نشون میده
    فقط نمیدونم چرا اعدا نجومی میده مثلا 58 و 54
    یعنی دمای اتاق من انقده !!؟؟؟؟؟؟؟
    طبق تغییرات قبلی برنامه من تصمیم گرفتم اعداد را توی قسمت pc تبدیل به هشت بیتی کنم
    حالا مشکل با برنامه pc هست
    مدام از نوع داده ای که داده میکرو منو از پورت کام میخونه ایراد میگیره
    از نوع داده بافر من ایراد میگیره و پیغام type mismatch میده
    دقیقا از خط temp = ((buffer * 2.56) / 1023) * 100 ایراد میگیره :angry: :angry:
    کد:
    [left]Private Sub MSComm1_OnComm()
    If MSComm1.CommEvent = comEvReceive Then
    buffer = MSComm1.Input
    temp = ((buffer * 2.56) / 1023) * 100
    Text1.Text = Asc(temp)
    End If
    End Sub[/left]

    دیدگاه


      #17
      پاسخ : ارسال میکرو به پی سی

      چرا هیچکس جواب نمیده؟
      بابا یه کمکی
      یه اشاره ایی
      یه لینکی
      یه .............
      خدآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآ :cry2: :cry2: :cry2:
      به منه دانشجو کمک کنید :cry:
      دارم به لحظات ملکوتیه "غلط کردم از ترم بعد درس میخونم" نزدیک میشم ... :angry:
      نزارید بشم کمکککککککککککککککک :cry2:

      دیدگاه


        #18
        پاسخ : ارسال میکرو به پی سی

        نوشته اصلی توسط karimip
        فقط نمیدونم چرا اعدا نجومی میده مثلا 58 و 54
        یعنی دمای اتاق من انقده !!؟؟؟؟؟؟

        سلام
        باید تقسیم بر دو کنید یعنی دما 29 درجه سیلسیوس هست

        دیدگاه


          #19
          پاسخ : ارسال میکرو به پی سی

          سلام
          باید تقسیم بر دو کنید یعنی دما 29 درجه سیلسیوس هست
          سلام
          این خط برنامه من tempvar = ((tempvar * 2.56) / 1023) * 100 برای تبدیل دما به درجه سانتی گراد هست
          یعنی بعدش باید دوباره اینو تقسیم بر 2 کنم؟
          یعنی شما میگید اشکال از برنامه سمت میکرو هست؟
          آخه برنامه سمت میکرو من عین باقلوا کار میکنه
          فکرمیکنم برنامه سمت pc هست که مشکل داره :angry:
          توی برنامه سمت pc هم اگه بخوام buffer را تقسیم بر 2 کنم یا هر عملیات ریاضی دیگه یی روش انجام بدم ازم خطای type mismatch یعنی عدم تطابق داده میگیره!
          از هر نوعی هم تعریفش کردم فرقی نمیکرد همون خطارو میگیره
          خیلیم مطلب توی نت خوندم راجبش
          من داده bufferمو از نوع variant تعریف کردم که همه مطلبا گفته بودن دو نوع variant داریم عددی و رشته ای ولی متاسفانه از اون ایراد میگیره نمیدونم چرا!!؟؟؟
          دقیقا همین برنامه رو با بسکام نوشتم درست بود سمت پی سی هم درست بود اما با c نوشتم کار نکرد!
          کسی اینجا با vb کار کرده؟؟؟؟
          یا کسیکه ارتباط میکرو به پی سی را با C انجام داده باشه؟؟؟؟

          دیدگاه


            #20
            پاسخ : ارسال میکرو به پی سی

            سلام
            چرا این قدر ضرب و تقسیم کردی ؟ tempvar = ((tempvar * 2.56) / 1023) * 100
            فقط باید مقداری که از ADC می خونی رو تقسیم بر 2 کنی
            من برنامه نوشتم اومد توی پورتوس تست کنم کار نکرد یعنی روی ال سی دی هیچی ننوشت :biggrin:
            تفدیم به شما :mrgreen:
            http://uploadtak.com/images/g33pvfnhjsd767nls8m.rar

            دیدگاه


              #21
              پاسخ : ارسال میکرو به پی سی

              سلام
              ممنون دوست عزیز بخاطر زحمتی که کشیدین و برنامه رو بزبان بسکام نوشتید اما بنده باید اینو بزبان c بنویسم
              بزبان بسکام هم همین برنامه رو نوشتم و بلدم
              اشکال برنامه شما هم که چیزی روی lcd نشون نداد بخاطر این بود که دستوری نزاشتید که دما رو بعد از تقسیم بر 2 روی lcd نشون بده! و پورت های میکرو هم به lcd ترتیبش تو پروتئوس غلط بود
              درواقع این برنامه کامل ترش بزبان بسکامه :
              کد:
              $regfile = "m323def.dat"
              $crystal = 8000000
              $baud = 9600
              Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , Rs = Portc.0 , E = Portc.1
              Config Lcd = 16 * 2
              Config Adc = Single , Prescaler = Auto
              Dim Temp As Word
              Deflcdchar 0 , 31 , 17 , 17 , 17 , 17 , 17 , 17 , 31    ' replace ? with number (0-7)
                Enable Interrupts
                Enable Serial
                Enable Urxc
              Cls
                Lcd "ADC.MICRO.TO.PC"
              Waitms 200
              Start Adc
              Do
                Cls
                Temp = Getadc(0)
                Temp = Temp / 2
                Lcd "temp: " ; Temp ; " ^c" : Lcd Chr(0);
                Udr = Temp
                Waitms 100
              Loop
              End

              تقسیمات دما هم بخاطر این بوده که :
              اول باید دما رو در ولتاژ مرجعی که برای adc انتخاب کردی ضرب کنی که من چون ولتاژ داخلی را انتخاب کردم رجیسترمو در 2.56 ضرب کردم بعدش بعدش بر 1023 تقسیم کردم چون دارم از adc با تفکیک پذیری 10بیتی استفاده میکنم چون دقیق تر باشه و میدونیم که 10^2 میشه 1024 و بعد هم در 100 ضرب کردم برای اینکه به سانتی گراد تبدیلش کنم.
              اونکه شما تقسیم بر 2 میکنی یه عدد تقریبی هست که خیلی دقیق نیست و از adc 8 بیتی استفاده شده

              یکی کمک کنه تروخـــدآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآ آآآآآآآآآآآآ
              ای خدآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآآ
              یعنی یه مهندس سخت افزار یا الکترونیک تو این تالار نیست!!!!!؟؟؟؟؟؟؟؟؟
              میکرو کار چطور؟؟؟؟؟؟؟؟؟؟؟؟ نیست؟؟؟؟؟؟؟؟؟؟؟؟؟؟

              دیدگاه


                #22
                پاسخ : ارسال میکرو به پی سی

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

                دیدگاه


                  #23
                  پاسخ : ارسال میکرو به پی سی

                  برو رجیستر ADCSRA رو بخون متوجه میشی دقتش برای چیه
                  برای داشتن حداکثر تفکیک پذیری (10 بیتی) باید فرکانس پالس ساعت ADC بین 50KHZ تا 200KHZ باشه. که اگر این فرکانس از این محدود خارج شه دقت ADC پایین میاد.
                  من تقسیم کلاک 64 که توی سه بیت 0 و 1 و 2 رجیستر ADCSRA انتخاب میشه را انتخاب کردم که FOSC/64 میشه 8000000/64 = 125000khz که میفته توی همین رنجی که گفتم.
                  حالم از بسکام بهم میخوره ... همه برنامه هاش گفتاری نوشتاریه! یعنی همونجور که میگی همونم مینویسی!
                  توی c باید تمام اینارو با رجیستر ها تنطیم کنی.

                  من فعلا از تنها جوابی که لذت میبرم جواب سوال میکرو به پی سیه

                  دیدگاه

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