اطلاعیه

Collapse
No announcement yet.

کمک به تکمیل برنامه pwmبه زبان ****

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

    کمک به تکمیل برنامه pwmبه زبان ****

    باسلام خدمت دوستان عزیز
    من یدونه برنامه نوشتم برا مگا هشت وpwmاونو راه اندازی کردم و led به طور منظم کم نور و پرنور میشه و لی نیاز دارم که وقتی مثلا pinc.0 که به عنوان ورودی در نظر گرفته شده وقتی یک شد led شروع به پر نور شدن بکنه و وقتی دیوتی سایکل به 100% رسید همینجوری ثابت بمونه تا وقتی که یکی دیگه از پین های ورودی(pinc.1) یک شد دیوتی سایکل شروع به کاهش کنه و وقتی به کمترین حد رسید ثابت بمونه تا وقتی که pinc.0 دوباره 1 بشه .حالا تو بسکام میتونم خروجی ها رو نسبت به ورودی ها کنترل کنم و با یک شدن ورودی دستور مورد نظر رو انجام بده ولی متاسفانه نتونستم pwm رو کنترل کنم لطفا دوستان راهنمایی کنن تا برنامه رو تکمیل کنم اینم برنامه ای که برا pwm نوشتم:

    $regfile = "m8def.dat"
    $crystal = 1200000
    Config Timer1 = Pwm , Prescale = 8. , Pwm = 10 , Compare A Pwm = Clear Down , _
    Compare B Pwm = Clear Up


    Dim A As Integer , B As Integer
    Reset Pwm1a
    Do
    For A = 0 To 1024 Step
    Pwm1a = A
    Waitms 100
    Next A
    For B = 1024 To 0 Step -1
    Pwm1a = B
    Waitms 100
    Next B
    Loop
    End
    در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

    #2
    پاسخ : کمک به تکمیل برنامه pwmبه زبان ****

    من برا مگا۳۲ و فرکانس ۸ مگاهرتز نوشتم حالا شما خودت یه کمی تاخیر ها رو دستکاری کن درست میشه
    یادم رفت بگم که کلیدها رو با یه مقاومت ۱۰ کیلو به پایه ها وصل کن یعنی مقاومت از زمین وصل بشه به پایه و کلید هم از vcc وصل بشه به پایه
    مثل این :








    کد:
    $regfile = "m32def.dat"
    $crystal = 8000000
    Config Timer1 = Pwm , Prescale = 8. , Pwm = 10 , Compare A Pwm = Clear Down , _
    Compare B Pwm = Clear Up
    Config Portc = Input
    Portc = 255
    
    
    Dim A As Integer , B As Integer
    Reset Pwm1a
    Do
    If Pinc.1 = 1 Then
    For A = 0 To 950 Step 1
    Pwm1a = A
    Waitus 300
    Next A
    End If
    If Pinc.0 = 1 Then
    For B = 950 To 0 Step -1
    Pwm1a = B
    Waitus 300
    Next B
    End If
    Loop
    End
    جدیدترین ویرایش توسط test001; ۱۱:۴۶ ۱۳۹۷/۱۱/۱۹.

    دیدگاه


      #3
      پاسخ : کمک به تکمیل برنامه pwmبه زبان ****

      راستی فراموش کردم بگم برا اینکه نویز کلیدها برطرف بشه می تونی از دستور debounce استفاده کنی
      اطلاعات بیشتر:
      جدیدترین ویرایش توسط test001; ۱۲:۳۲ ۱۳۹۷/۱۱/۱۹.

      دیدگاه


        #4
        پاسخ : کمک به تکمیل برنامه pwmبه زبان ****

        نوشته اصلی توسط test001 نمایش پست ها
        من برا مگا۳۲ و فرکانس ۸ مگاهرتز نوشتم حالا شما خودت یه کمی تاخیر ها رو دستکاری کن درست میشه...........[/CODE]
        خیلی ممنون دوست عزیز بابت برنامه میشه این قسمت رنامه رو که زیر نوشتم برام توضیح بدین؟

        Portc = 255


        If Pinc.1 = 1 Then
        در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

        دیدگاه


          #5
          پاسخ : کمک به تکمیل برنامه pwmبه زبان ****

          برنامه رو ریختم تو ایسی و رو برد برد بستم یه مقدار با اون چیزی که مد نظرمه فرق داره وقتی دیوتی سایکل از0% شروع میشه و به 100% میرسه دیگه رو 100% ثابت نمیمونه و دوباره صفر میشه اما من میخام وقتی از 0% به 100% رسید رو همون 100% بمونه تا دستور بعدی
          در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

          دیدگاه


            #6
            پاسخ : کمک به تکمیل برنامه pwmبه زبان ****

            نوشته اصلی توسط AMIR987 نمایش پست ها
            خیلی ممنون دوست عزیز بابت برنامه میشه این قسمت رنامه رو که زیر نوشتم برام توضیح بدین؟

            Portc = 255


            If Pinc.1 = 1 Then
            خواهش میکنم

            Portc = 255
            اگر در حالتی که پورت ورودی تعریف شده مقدار FF یا همون ۲۵۵ رو در پورت بریزیم باعث فعال شدن مقاومت pull - up داخلی میکروکنترلر میشه و باعث میشه نویز کم بشه

            If Pinc.1 = 1 Then
            اگر مقدار ورودی پایه ۱ از پورت c برابر ۱ (یعنی ولتاژ +5) شد آنگاه فلان کار رو انجام بده

            دیدگاه


              #7
              پاسخ : کمک به تکمیل برنامه pwmبه زبان ****

              نوشته اصلی توسط test001 نمایش پست ها
              خواهش میکنم

              Portc = 255
              اگر در حالتی که پورت ورودی تعریف شده مقدار FF یا همون ۲۵۵ رو در پورت بریزیم باعث فعال شدن مقاومت pull - up داخلی میکروکنترلر میشه و باعث میشه نویز کم بشه

              If Pinc.1 = 1 Then
              اگر مقدار ورودی پایه ۱ از پورت c برابر ۱ (یعنی ولتاژ +5) شد آنگاه فلان کار رو انجام بده
              مرسی برا اون مشکلی که بالا گفتم خودم برنامه رو تغییر دادم و درست شد فقط برنامه رو میزارم بی زحمت یه نگاه بندازین ببینین درسته



              If Pinc.1 = 1 Then
              Start Timer1
              For A = 0 To 1024 Step 1
              Pwm1a = A


              If A = 1024 Then
              Stop Timer1
              End If


              Waitms 4
              Next A
              End If




              If Pinc.0 = 1 Then
              Start Timer1
              For B = 1024 To 0 Step -1
              Pwm1a = B


              If B = 0 Then
              Stop Timer1
              End If


              Waitms 4
              Next B
              End If
              در ارزويه روزي که تمام جوانان اين مملکت تمامي امکانات بروز را براي تحقق به ايده هاي خود در اختيار داشته باشند.....................

              دیدگاه


                #8
                پاسخ : کمک به تکمیل برنامه pwmبه زبان ****

                نوشته اصلی توسط AMIR987 نمایش پست ها
                مرسی برا اون مشکلی که بالا گفتم خودم برنامه رو تغییر دادم و درست شد فقط برنامه رو میزارم بی زحمت یه نگاه بندازین ببینین درسته



                If Pinc.1 = 1 Then
                Start Timer1
                For A = 0 To 1024 Step 1
                Pwm1a = A


                If A = 1024 Then
                Stop Timer1
                End If


                Waitms 4
                Next A
                End If




                If Pinc.0 = 1 Then
                Start Timer1
                For B = 1024 To 0 Step -1
                Pwm1a = B


                If B = 0 Then
                Stop Timer1
                End If


                Waitms 4
                Next B
                End If
                اره درسته البته میتونین برنامه رو اینطوری هم بنویسین که نویز کلیدها گرفته بشه:
                کد:
                $regfile = "m32def.dat"
                $crystal = 8000000
                Config Timer1 = Pwm , Prescale = 8. , Pwm = 10 , Compare A Pwm = Clear Down , _
                Compare B Pwm = Clear Up
                Config Portc = Input
                Portc = 255
                
                
                Dim A As Integer , B As Integer
                Reset Pwm1a
                Do
                Debounce Pinc.1 , 1 , Turn_off , Sub
                Debounce Pinc.0 , 1 , Turn_on , Sub
                Loop
                End
                
                Turn_off:
                Start Timer1
                For A = 0 To 950 Step 1
                Pwm1a = A
                Waitus 300
                Next A
                Stop Timer1
                Return
                
                Turn_on:
                Start Timer1
                For B = 950 To 0 Step -1
                Pwm1a = B
                Waitus 300
                Next B
                Stop Timer1
                Return
                مثلا این خط
                Debounce Pinc.1 , 1 , Turn_off , Sub
                یعنی اینکه پایه ۱ پورت c رو چک کن اگر ۱ بود به زیر برنامه turn_off پرش کن
                جدیدترین ویرایش توسط test001; ۱۵:۴۰ ۱۳۹۷/۱۱/۱۹.

                دیدگاه

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