اطلاعیه

Collapse
No announcement yet.

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

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

    #16
    پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

    وقفه خارجی استفاده نکن به جاش از مقایسه کننده آنالوگ داخلی میکرو استفاده کن.عینه آب خوردنه!
    من یه پروژه شبیه به این رو ساختم اگه می خوای واست بزارم.
    انا لله و انا الیه الراجعون

    دیدگاه


      #17
      پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

      ممنون من تا حالا با مقایسه کننده کاری انجام ندادم میشه توضیح بدی .

      اینم یه برنامه آزمایشی برای تشخیص تعداد زنگ با وقفه که اشکمو درآورده
      Config Portc = Output
      Config Portd = Input
      Dim A As Byte
      Dim B As Byte
      Dim C As Word
      Config Int0 = Falling
      Enable Interrupts
      Enable Int0
      On Int0 Mahdi
      A = 0
      Do
      Incr B
      If A = 4 Then : A = 0 : Set Portc.1 : Waitms 800 : Reset Portc.1 : End If
      Loop
      Mahdi:
      A = A + 1
      B = 0
      Return
      یه قسمت از برنامه هم که وقتی اضافه میکنی اصلا کار نمیکنه نمیدونم چرا؟؟؟؟؟؟؟ :angry:

      این خطو میگم if b=250 then:b=0:a=0:end IF
      وقتی این خط رو بر میدارم کار میکنه اونوم چطوری :cry2: مگه نباید بعد 4تا زنگ این عمل بکنه وپایه گفته شده ست بشه
      ولی این اول که زنگ زدیم یه بار ست میکنه وبعد با دستور رست خاموش میکنه
      بعد با زنگ های بعدی یه هر وقت دوست داشت عمل میکنه یه بار تو 3 تا یه بار 4 یه بار رو 10 تا عمل کرد اون خط رو هم که برداشتم کر کرد برای این بود که وقتی
      وقفه نیومد متغیر a=0بشه تا وقتی یکی اومد زنگ زد بعد سه بار گوشی رو گذاشت متغییر عدد 3 رو تو خودش نگه نداره وریست بشه
      حالا من چیکار کنم :cry2: :cry2: اعصابمو خورد کرده دوتا دونه دستور ببین چطوری
      بازیم داده
      :angry: :angry: :angry:
      لطفا به دادم برسید :cry2: :cry2: :cry2:
      معلولیت محدودیت نیست

      آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

      دیدگاه


        #18
        پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

        نوشته اصلی توسط mahdi210
        ممنون من تا حالا با مقایسه کننده کاری انجام ندادم میشه توضیح بدی .

        اینم یه برنامه آزمایشی برای تشخیص تعداد زنگ با وقفه که اشکمو درآورده
        Config Portc = Output
        Config Portd = Input
        Dim A As Byte
        Dim B As Byte
        Dim C As Word
        Config Int0 = Falling
        Enable Interrupts
        Enable Int0
        On Int0 Mahdi
        A = 0
        Do
        Incr B
        If A = 4 Then : A = 0 : Set Portc.1 : Waitms 800 : Reset Portc.1 : End If
        Loop
        Mahdi:
        A = A + 1
        B = 0
        Return
        یه قسمت از برنامه هم که وقتی اضافه میکنی اصلا کار نمیکنه نمیدونم چرا؟؟؟؟؟؟؟ :angry:

        این خطو میگم if b=250 then:b=0:a=0:end IF
        وقتی این خط رو بر میدارم کار میکنه اونوم چطوری :cry2: مگه نباید بعد 4تا زنگ این عمل بکنه وپایه گفته شده ست بشه
        ولی این اول که زنگ زدیم یه بار ست میکنه وبعد با دستور رست خاموش میکنه
        بعد با زنگ های بعدی یه هر وقت دوست داشت عمل میکنه یه بار تو 3 تا یه بار 4 یه بار رو 10 تا عمل کرد اون خط رو هم که برداشتم کر کرد برای این بود که وقتی
        وقفه نیومد متغیر a=0بشه تا وقتی یکی اومد زنگ زد بعد سه بار گوشی رو گذاشت متغییر عدد 3 رو تو خودش نگه نداره وریست بشه
        حالا من چیکار کنم :cry2: :cry2: اعصابمو خورد کرده دوتا دونه دستور ببین چطوری
        بازیم داده
        :angry: :angry: :angry:
        لطفا به دادم برسید :cry2: :cry2: :cry2:
        عزیز دل انگیز چرا اعصاب خودتو خرد میکنی اول از همه دستورتو اینجوری بنویس ببین جواب میده:
        if b=250 then
        b=0
        a=0
        end IF
        دقیقا همینجوری-- پشت سرهم ننویس.امتحان کن ببین جواب میده یه نکته چندروز پیش من یه دستوری رو که مینوشتم بسکام قبولش نمیکرد وخطا میزد یکی از بچها پیشنهاد کرد ورژن بسکام رو ببر بالا من بردم 2.0.07 .اخرین ورژن که درست شد.بنظرم ورژن بسکام رو ببر بالا
        .من خودم یه دستگاه درست کردم که مدار تشخیص زنگش همونی هست که (amin.gon)در صفحه اول معرفی کرده پیشنهاد میکنم شما دقیقا این مدارو استفاده کن و برنامشو هم داخل برنامت ببر و اگر تو برنامت اشکالی نباشه و درست این برنامه رو قرار بدی مطمئن باش جواب میده چون من از همین مدار جواب گرفتم.اگر مطلب مفید بود دکمه تشکر رو یادت نره :applause:
        یا به اندازه آرزوهایت تلاش میکنی یا به اندازه تلاشت ارزو میکنی

        دیدگاه


          #19
          پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

          سلام من قبلا یک همچین پروژه ای انجام داده بودم با استفاده از اشکار ساز تن فکر کنم در این زمینه کار کنی به جواب برسی
          در تکمیل فرمایشات دوستان بگم که:
          در مراکز مخابرات منابع تغذیه DC که معمولا از نوع سویچینگ هستند ولتاژ DC لازم را از برق AC تامین می کنند که این ولتاز در حدود 48ولت هستش (البته برای خونه ما 52 بود) بستگی به فاصله از مخابرات هم داره
          که این ولتاز از سری کردن باتری ها در مخابرات به وجود آمده (یکم بیشتر یا کمتر از 48 ،معمولا بیشتر)
          به محض برقراری ارتباط ولتاژ به 8V(تقریبا) کاهش می یابد
          البته این ولتاژها در کشور های مختلف فرق می کند
          برای سیگنال زنگ هم که یک سیگنال AC هستش با ولتاز 110Vac که این ولتاژAC روی اون DC سوار می شه برای اینکه یادتون نره می تونید سیم تلفن را بگیرید در دستانتان بعد به یکی بگید زنگ بزنه دیگه اینها را فراموش نمی کنید وبرق از کلتون میپره :biggrin: (البته اون وقت کلی ناسزا به من می گید :mrgreen
          معجزه این است که هرچه داشته هایت را بیشتر با دیگران سهیم شوی،داراتر می شوی (لئونارد نیموی)
          اگر مغزانسان،چنان ساده می بود که ما از آن سر در می آوردیم،هنوز چنان احمق بودیم که هیچ از آن سر در نمی آوردیم!
          آموزش Modelsim

          دیدگاه


            #20
            پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

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




            Config Portc = Output
            Config Portd = Input
            Dim A As Byte
            Dim B As Byte
            Dim C As Word
            Config Int0 = Falling
            Enable Interrupts
            Enable Int0
            On Int0 Mahdi
            Do

            If A = 4 Then : A = 0 : Set Portc.1 : Waitms 800 : Reset Portc.1 : End If
            Loop
            Mahdi:
            incr a
            Return


            تو برنامه مگه قرار نیست با ازای هر وقفه متغیره A یه واحد افزایش پیداکنه

            حالا بشنوید از میکروی من جناب میکرو مگا 16 بنده به جای هر واحد افزایش میاد 25 تا افزایش میده یعنی 2واحد 50 . تو برنامه بالا عدد 4 نوشتم ولی این میکرو من به جای 4 عدد صد رو میشناسه
            یعنی 4 واحد افزایس میده میشه 100 پس تو برنامه گفتم اگر A=100 برو فلان کارو بکن
            حالا که فهمیدم به جای یه واحد 25 تا اضافه میکنه کارم راه افتاد وبرنامم درست مثل ساعت کار کرد وجواب داد ولی اینطوری نمیتونم:::: فکرمو مشغول کرد
            آخه چرا میکرو اینکارو میکنه؟؟؟؟ :angry:لازم به ذکره که کریستال رو ی یک مگا هرتز هستش وفیوزبیت رو 1 مگا داخلی تنظیم کردم
            حالا دوستان با این تفاصیر این میکرو چرا یک واحد رو 25 تا حساب میکنه؟
            آخه چرا؟


            معلولیت محدودیت نیست

            آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

            دیدگاه


              #21
              پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

              نوشته اصلی توسط mahdi210
              یافتم یافتم یافتم دوستان آخرش فهمیدم این برنامه چرا بازیش گرفته

              جناب میکرو مگا 16 بنده به جای هر واحد افزایش میاد 25 تا افزایش میده

              آخه چرا میکرو اینکارو میکنه؟؟؟؟
              آخه چرا؟


              شاید برای اینکه فرکانس سیگنال زنگ تلفن 25 هرتزه و زمان هر زنگ هم حدود یک ثانیه هست شما یه خازن بین 10 الی 100 میکرو با ورودی اپتو کوپلر موازی کن نتیجه رو اعلام بفرما

              دیدگاه


                #22
                پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

                با سلام
                این کارو انجام دادم ولی فرقی نکرد یه چیزه دیگه آخه اون قسمتی هم که اصلا به وقفه ربطی نداره هم اینطوری شمارش میکنه وبا قطع کردن خط تلفن از اپتو کوپلر بازم فرقی نمیکنه
                نمیدونم چرا ؟ :angry: :angry: :angry:
                معلولیت محدودیت نیست

                آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

                دیدگاه


                  #23
                  پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

                  دوست عزیز همون جور که میدونی زنگ تلفن برق ۱۱۰ متناوب است
                  هر بار که سیگنال میاد به صورت متناوب چندین بار وقفه ی شما رو فعال میکنه البته اگر میتونستی با C بنویسی بشتر کمکت میکردم
                  کار وقفه است دیگه باید عملکردش رو تصحیح کنی

                  دیدگاه


                    #24
                    پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

                    دوست عزسز متاسفانه c بلد نیستم .آقا من خط رو قطع میکنم ---توی یه قسمت که اصلا ربطی به وقفه هم نداره شمارشم 25 تا 25 میره بالا
                    123456789 = 25-50-75-100-125-150-175-200-225
                    درسته قسمت تشخیص زنگ درست عمل میکنه ولی اومدیم من چندروز با این میکرو کلانجار نمیرفتم ولش میکردم نمیدونستم که بابا این داره 1واحد رو 25 حساب میکنه
                    نمی تونستم به نتیجه برسونم.فکر کنم باید یه تاپیک جدا برا این موضوع ایجاد کنم

                    یه نمونه از کارای این میکرو این 70000 رو تو 16 ثانیه میشمرو
                    معلولیت محدودیت نیست

                    آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

                    دیدگاه


                      #25
                      پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

                      من سیگنال تلفن رو هنگام زنگ اندازه گرفتم هر بار یه سگینال ac داریم که از صفر تا 73 ولت تغییر می کنه. این نقشه واسش میزارم که براساس مقایسه کننده آنالوگ میکرو هست:
                      با تقسیم مقاومتی روی پایهAIN1 ولتاژ مرجع 2.5 ولتی درست شده و تقسیم مقلومتی روی پایه AIN0 هم ولتاژ 70 ولتی زنگ رو به 3 ولت تبدیل می کنه.


                      و این برنامه نمونه اس. به این صورته که هر وقت پایهAIN0 از AIN1 بیشتر بشه رجیستر Acsr.aco = 1 میشه.بقیه قسمتها و نمایشگر هم بر عهده خودته.مثلا می تونی بنویسی که هر وقت Acsr.aco = 1 شد یه متغیر یک واحد افزایش پیدا کنه و روی LCD نمایش داده بشه به عنوان تعداد زنگها.

                      $regfile = "m8def.dat"
                      $crystal = 1000000
                      Config Aci = On , Compare = Off , Trigger = Rising


                      Main:
                      If Acsr.aco = 1 Then
                      Goto Roshan
                      Else
                      Goto Khamosh
                      End If
                      Goto Main
                      End 'end program


                      Roshan:

                      Goto Main


                      Khamosh:

                      Goto Main

                      انا لله و انا الیه الراجعون

                      دیدگاه


                        #26
                        پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

                        آقا شاهین ممنون لطف کردی دست شما درد نکنه :applause:
                        معلولیت محدودیت نیست

                        آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

                        دیدگاه


                          #27
                          پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو



                          اطلاعات بیشتر اینجا http://amper.ir/post-151.aspx

                          نکته : اگر خواستی میتونی برای احتیاط بیشتر خروجی اپتوکوپلر رو با استفاده از یک ترانزیستور به یک رله 5 ولت و صل کنی سپس کنتاکت مشترک رله ( همون وسطی ) رو به میکرو و دو پایه دیگه کنتاکت رله را را به +5 و زمین وصل کنی . ضمنا ً در برنامه من نیازی به استفاده الزامی از پایه اینتراپت میکرو نیست و از هر پایه ای که خواستی میتونی استفاده کنی

                          ممکن تو برنامه متوجه تعدادی متغیر و یا پایه های کانفیگ شده اضافه بشید که من برای پروژه خودم استفاده کردم و شما میتونید از استفاده از اون ها صرف نظر کنید .

                          $regfile = "m8def.dat"
                          $crystal = 1000000
                          Config Pind.2 = Input
                          Config Pinb.0 = Input
                          Config Pinb.1 = Input
                          Config Pinb.2 = Input
                          Config Pinb.3 = Input
                          Config Pinb.4 = Output
                          Config Portc = Output


                          Dim K As Byte
                          Dim T As Byte
                          Ring Alias Pind.2
                          Connect Alias Portb.4
                          K = 0
                          'zang-zang-zang-zang-zang-zang-'
                          Zang:
                          If Ring = 0 Then
                          Incr K
                          If K > 4 Then
                          Set Connect
                          Else
                          Bitwait Ring , Set
                          End If
                          End If
                          goto ZANG
                          'zang-zang-zang-zang-zang-zang-'

                          End
                          خدایا هر چقدر دوست داری از عمر من کم کن و به طول عمر پدر و مادرم اضافه کن...

                          دیدگاه


                            #28
                            پاسخ : مشکل در تشخیص تعداد زنگ تلفن برای استفاده در میکرو

                            بعد از خازن توی ورودی هم یک ترانس یک به یک مثلا 330 اهم بزارید تا روی تلفن دیگر اثز نزاره افت صدا نداشته باشید نویز هم وارد مدار نشه
                            همه دوست دارند به بهشت بروند اما جالب اینجاست کسی دوست ندارد بمیرد
                            کانت

                            دیدگاه

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