اطلاعیه

Collapse
No announcement yet.

تشخیص فرکانس

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

    #16
    پاسخ : تشخیص فرکانس

    خب من برگشتم. :mrgreen:
    با تشکر از دایی مجتبی جهت توضیحات. . .
    اون جزوه که معرفی کردم برای یادگیری پایه ای تایمر ها خوبه. توصیه میکنم حتما مطالعه اش کنید.

    راجع به برنامه:
    همون برنامه ای که دفعه اول گذاشتم براتون برش دارید و فقط کافیه از متغیر A استفاده کنید. همین!!!
    مثلا بگید اگه A بین 100 تا 120 بود یعنی اینکه رنگ قرمزه و یا اگه A بین 200 تا 250 بود مثلا یعنی سبز رو شناخته.
    البته اگه سنسور اینجوری کار کنه.
    درد من تنهایی نیست؛ بلکه مرگ ملتی است که گدایی را قناعت، بی‏عرضگی را صبر، و با تبسمی بر لب این حماقت را حکمت خداوند می‏ نامند! "گاندی"

    به دلیل وجود برخی مشکلات و بی احترامی ها این اکانت رو غیر فعال کردم. همیشه سر بلند باشید.
    بدرود . . .

    دیدگاه


      #17
      پاسخ : تشخیص فرکانس

      نوشته اصلی توسط سرباز مملکت(نصیری)
      منم که زبانم در حد اعلاست!!!!!!
      سرم گیج رفت دیتاشیتو خوندم.(از مزایای سربازیه!!!!) :mrgreen:

      اینم برنامه فرکانس متر:


      $regfile = "m16def.dat"
      $crystal = 16000000

      Config Clock = Soft , Gosub = Sectic
      Config Timer1 = Counter , Edge = Rising

      Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = _
      Portd.7 , E = Portd.3 , Rs = Portd.2
      Ddrd.1 = 1 : Portd.1 = 0

      Cursor Off
      Config Lcd = 16 * 2
      Cls

      Enable Interrupts
      Enable Ovf1

      On Ovf1 Pulse

      Dim A As Long

      Ddrb.1 = 0 : Portb.1 = 1

      Do

      Loop

      End

      Sectic:
      A = A * 65536
      A = A + Counter1
      Counter1 = 0
      Cls
      Locate 1 , 5
      Lcd "F=" ; A ; " Hz "
      A = 0
      Return

      Pulse:
      Incr A
      Counter1 = 0
      Return

      ساده به نظر میاد ولی به صورت عملی کاملا جواب داده. برای یکی از بچه های دانشگاه به عنوان پروژه نوشتمش. البته یه کارای دیگه ای میکرد که پاکش کردم تا کمتر شه.من خودم توی 1 مگاهرتز 12 هرتز ازش خطا دیدم. که به جرأت میگم از کریستال ساعت بود. همون موقع یه کریستال دیگه گذاشتم و خطا 10 تا شد!!! اونم تازه از این کریستال های چینی!!!!!
      تا 300 کیلو دقیقه خیالت راحت.
      میشه لطفا بگین این برنامه دقیقا داره چی کار می کنه من دقیقا به این برنامه نیاز دارم ولی احتیاج به زبان c دارم اگر کدی برای زیان c هم دارید ممنون میشم بزارید.

      دیدگاه


        #18
        پاسخ : تشخیص فرکانس

        این برنامه در واقع تعداد پالس ها ی بالا رونده بر روی پایه T1 را در هر یک ثانیه بوسیله کانتر 1 و تایمر 2 که در مد آسنکرون بوسیله : Config Clock = Soft تعریف میشه ، از طریق این پیکره بندی و دستور Gosub = Sectic هر یک ثانیه یک بار زیر برنامه Sectic اجرا میشه و مقدار فرکانس که برابر هست با تعداد پالسها در هر یک ثانیه از طریق دو خط زیر محاسبه می کند :

        A = A * 65536
        A = A + Counter1
        و از آنجا که تایمر دو به صورت آسنکرون بکار رفته باید یک کریستال کوارتز به اندازه 32768 Hz بین پایه های tosc1 و tosc2 قرار دهید .
        از مزایای این پیکره بندی قابلیت استفاده از دو تابع زیر هست که زمان و تاریخ رو برای ما محاسبه کرده و در صورت نیاز می تونیم اون ها رو نمایش بدیم :

        Config Date = Mdy , Separator = / ' ANSI-Format
        Date$ = "11/11/00"
        Time$ = "0200"
        'clear the LCD display

        Cls



        Do

        Home 'cursor home

        Lcd Date$ ; " " ; Time$ 'show the date and time

        Loop

        دیدگاه

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