اطلاعیه

Collapse
No announcement yet.

زمانبندی multiplex در سون سگمنت 4 رقمی

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

    زمانبندی multiplex در سون سگمنت 4 رقمی

    با سلام؛

    متاسفانه در زمان بندی روشن و خاموش شدن ارقام سون سگمنت به مشکل برخوردم. زمانی که تاخیر بیش از یک میلی ثانیه را اعمال کردم، ارقام به شدت دچار پرش (چشمک زدن Flicker) شدند و با حذف تاخیر در عمل اجزا تشکیل دهنده (سگمنتها) ارقام در وضعیت روشن باقی ماندند. دوستان اگر راهنمایی کنند ممنون خواهم شد.

    میکرو: atmega 8
    سون سگمنت: 4digits common cathod
    زبان برنامه نویسی:basic

    #2
    پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

    سلام

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

    دیدگاه


      #3
      پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

      تایمر رو اینتراپتی کن
      خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

      دیدگاه


        #4
        پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

        سلام؛

        جناب خسروی وقتی تنها بر روی یک رقم از سون سگمنت کار میکنم مشکلی نیست و ارقام به راحتی نمایش داده میشوند. اما زمان نمایش ارقام 4 رقمی این مشکل بروز میکند. در حقیقت زمانی که با استفاده از 4 پایه کاتد میخواهم یکی از 4 سون سگمنت را انتخاب کنم، سگمنت ها دچار لرزش (Flicker) میشوند. در صورتی که نیاز است بفرمایید تا متن برنامه را بر روی سایت قرار دهم. با سپاس از توجه جناب عالی و سایر دوستان.

        دیدگاه


          #5
          پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

          شما باید بازه های زمانیت رو کوچیکتر کنی.اینقدر کوچیک کن تا پرش از بین بره.
          حتما هم اینتراپتی کن تایمر رو
          خدا گفت : به جهنم ببریدش، او برگشت و با تعجب به خدا نگاه کرد. خدا گفت : به بهشت ببریدش. فرشتگان پرسیدند: چرا؟! خدا گفت : او هنوز به من امیدوار است...

          دیدگاه


            #6
            پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

            سلام

            یه امتحان کن: سرعتو کم کن بطویکه هر دیجیت حدود 1 ثانیه روشن بمونه و سپس دیجیت بعدی روشن بشه. ببین آیا در این وضعیت کار بدرستی انجام میشه؟ :smile:

            دیدگاه


              #7
              پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

              نوشته اصلی توسط حمید نجفی
              شما باید بازه های زمانیت رو کوچیکتر کنی.اینقدر کوچیک کن تا پرش از بین بره.
              حتما هم اینتراپتی کن تایمر رو
              به نظر من روتین نمایش 7SEG ها رو توی وقفه تایمر قرار بده و مقدار تایمر رو هم طوری تنظیم کن که در زمانی کمتر از 60ms وقفه اتفاق بیفته و توی هر بار وقفه یکی از 7SEG ها روشن بشن

              دیدگاه


                #8
                پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

                با عرض سلام؛

                بالاخره فرصت شد که مجددن روی پروژه کار کنم و به کمک راهنمایی همه دوستان عزیز مشکل نمایش ارقام روی سون سگمنت 4 رقمی را حل کنم. با توجه به این که ممکن است بعدها عزیزی با همین مشکل مواجه بشود، بد ندیدم که نتیجه آزمون و خطاهای انجام شده را به استحضار برسانم:
                همان طور که اساتید امر فرموده بودند از اینتراپت جهت نمایش ارقام استفاده کردم. برای این کار کافی است این تنظیمات را اعمال نمایید (بر روی atmega8):
                1- تنظیم prescale تایمر بر روی عدد 8
                2- تاخیر 200 تا 500 میکروثانیه ای بعد از روشن کردن هر رقم (پیش از switch به رقم بعدی)


                نظر به این که این بخش از مدار قرار است به عنوان شمارنده عمل کند و با برقراری یک جریان، یک واحد به شمارنده اضافه کند، Int0 را فعال و باز هم از طریق اینتراپت یک واحد به شمارنده اضافه میکنم. متاسفانه به دلیل Debounce، با برقراری جریان هر بار 2 واحد به شمارنده اضافه میشود. با گذاشتن یک تاخیر 15 الی 30 میلی ثانیه ای این مشکل قابل حال است، ولی زمانبندی نمایش ارقام به هم میخورد.حتا سعی کردم با ساختن یک تایمر مجازی (با شمارش و بهره گیری از تاخیر 400 میکرو ثانیه ای سون سگمنت) این نقیصه را برطرف کنم، لیکن به نتیجه دلخواه نرسیدم. آیا راه حلی به نظر دوستان میرسد؟

                کدهای مربوط بخش Int0 و نمایش به شرح ذیل است:

                Count:
                Disable Int0
                Incr I
                If I > 9999 Then I = 1
                Call Show(i)
                Deb = 1
                Return
                ...
                Sub Show(byval No As Integer)
                If Deb > 0 Then Incr Deb
                If Deb > 80 Then
                Deb = 0
                Enable Int0
                End If
                Z = Z + 1
                If Z > 4 Then Z = 1
                Digits = Str(i)
                Temp = 4 - Len(digits)
                If Temp > 0 Then Digits = String(temp , "0&quot + Digits
                Char = Mid(digits , Z , 1)
                Temp = Val(char)
                Temp = Seven_seg(temp)
                Portb = Temp
                Call Switching(z)
                Waitus 400
                Call Switching(5)
                End Sub

                دیدگاه


                  #9
                  پاسخ : زمانبندی multiplex در سون سگمنت 4 رقمی

                  سلام

                  من برنامه رو نخوندم. ولی قبل از هر چیز یه نکته بگم:
                  مشکلی که می گفتید " با حذف تاخیر در عمل اجزا تشکیل دهنده (سگمنتها) ارقام در وضعیت روشن باقی ماندند" شاید ناشی از این بوده که تغییر اطلاعات مربوط به سون سگمنت بعدی، قبل از قطع کردن پایه کاتد سون سگمنت قبلی صورت می گرفته!
                  یعنی هنوز سون سگمنت اول فعال بوده و ما اطلاعات مربوط به اون رو تغییر میدادیم.

                  برای مشکل Debounce، باید بگم که می تونید از مدار Debounce سخت افزاری استفاده کنید.

                  دیدگاه

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