اطلاعیه

Collapse
No announcement yet.

(کمک) تایمر دیجیتال

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

    (کمک) تایمر دیجیتال

    سلام دوستان
    من میخوام یک تایمر با قابلیت تنظیم دقیقه و ثانیه رو بسازم که خودم زمان شمارش رو تعیین کنم و بتونه مثلا 5 دقیقه و 30 ثانیه بشماره led سبزو روشن کنه ومثلا 3 دقیقه 20 ثانیه بشماره و led قرمز رو روشن کنه و این کار رو دائم انجام بده
    این کار تعیین زمان رو با سه کلید set و incr و decr انجام بده
    قطعاتی هم که دارم یک سون سگمنت 4 دیجیت مالتی پلکس هست
    یک atmega8 و 3 تا پوش باتون
    هر کاری میکنم برنامه جواب نمیده
    میخوام با یکبار زدن دکمه ست میزان تایم ال ای دی سبز رو تعیین کنه بار دوم تایم ال ای دی قرمز رو و بار سوم سیو کنه توی حافظه میکروکنترلر که با خاموش و روشن شدن میزان تعیین شده تغییر نکنه و شروع کنه به شمارش
    از دوستان کسی هست بتونه کمک کنه؟ باید تا آخر هفته تحویل استاد بدم

    اینم برنامه نوشته شده که خیلی اشکال داره
    http://s3.picofile.com/file/8288765418/New_folder.rar.html
    جدیدترین ویرایش توسط pouria66; ۱۷:۲۰ ۱۳۹۵/۱۲/۱۷.

    #2
    پاسخ : (کمک) تایمر دیجیتال

    بهتره از یک RTC استفاده کنی
    ! Life doesn't get easier , you just get stronger

    دیدگاه


      #3
      پاسخ : (کمک) تایمر دیجیتال

      نوشته اصلی توسط Amirlopez نمایش پست ها
      بهتره از یک RTC استفاده کنی
      میشه در موردش یکم توضیح بدید
      در ضمن برنامه ای که با بسکام نوشتم فایلشو گذاشتم
      جدیدترین ویرایش توسط pouria66; ۱۷:۱۹ ۱۳۹۵/۱۲/۱۷.

      دیدگاه


        #4
        پاسخ : (کمک) تایمر دیجیتال

        از آیسی DS1307 استفاده کن
        با پروتکل I2C راه میوفته و امکانات خوبی داره
        بهتره دیتاشیت شو بخونی تا متوجه بشی
        توی نت هم نمونه برنامه زیاد داره
        هم به زبان بیسیک و هم سی
        البته احتمالا باید به خاطر استفادت ادیت کنی چون معمولا باهاش ساعت طراحی کردن
        کار سختی نیست روش کار کن
        ! Life doesn't get easier , you just get stronger

        دیدگاه


          #5
          پاسخ : (کمک) تایمر دیجیتال

          نوشته اصلی توسط Amirlopez نمایش پست ها
          از آیسی DS1307 استفاده کن
          با پروتکل I2C راه میوفته و امکانات خوبی داره
          بهتره دیتاشیت شو بخونی تا متوجه بشی
          توی نت هم نمونه برنامه زیاد داره
          هم به زبان بیسیک و هم سی
          البته احتمالا باید به خاطر استفادت ادیت کنی چون معمولا باهاش ساعت طراحی کردن
          کار سختی نیست روش کار کن
          اتفاقا دارم برنامشو آی سیشم دارم ولی نمیخوام استفاده کنم ازش چون استاد فقط برای ذخیره خواسته از حافظه eeprom استفاده بشه
          برنامه خودمو نگاه کنید ببینید کجاش اشکال داره که تو شبیه سازی چیزی نمایش نمیده روی سون سگمنت

          دیدگاه


            #6
            پاسخ : (کمک) تایمر دیجیتال

            نوشته اصلی توسط pouria66 نمایش پست ها
            برنامه خودمو نگاه کنید ببینید کجاش اشکال داره که تو شبیه سازی چیزی نمایش نمیده روی سون سگمنت
            فایلش باز نمیشه!!!
            در قالب تکست یا پی دی اف بزار
            ! Life doesn't get easier , you just get stronger

            دیدگاه


              #7
              پاسخ : (کمک) تایمر دیجیتال

              نوشته اصلی توسط Amirlopez نمایش پست ها
              فایلش باز نمیشه!!!
              در قالب تکست یا پی دی اف بزار

              خدمت شما

              دیدگاه


                #8
                پاسخ : (کمک) تایمر دیجیتال

                تا الان این برنامه رو نوشتم دوتا اشکال وجود داره
                یک اینکه تایمی که وارد میکنم رو حالت چراغ سبز یا قرمز رو نمی شماره
                دوم اینکه این تایم رو ذخیره نمیکنه رو حافظه میکرو برای زمان قطع و وصل جریان




                $regfile = "m8def.dat"
                $crystal = 8000000


                $hwstack = 64
                $swstack = 64
                $framesize = 64


                Config Clock = Soft

                Config Timer1 = Timer , Prescale = 64
                Config Portb = Output
                Config Portd = Output
                Config Portc.0 = Output
                Config Portc.1 = Output
                Config Portc.5 = Output
                Ddrc.2 = 0 : Ddrc.3 = 0 : Ddrc.4 = 0
                Dp Alias Portb.4
                Enable Interrupts


                Dim Em As Eram Byte
                Dim Em2 As Eram Byte

                Dim Num As Byte , _wait As Byte , Numb As Byte , Yek2 As Byte , Yek3 As Byte
                Dim Dah As Byte , X As Byte , Dah2 As Byte , Dah3 As Byte , Yek As Byte
                Dim S1 As Byte , S2 As Byte , S3 As Byte , S4 As Byte
                Dim M1 As Byte , M2 As Byte , M3 As Byte , M4 As Byte , Yek4 As Byte

                Cursor Off
                Do
                Portb = &B00000000
                Portd.0 = 1
                If Pinc.3 = 0 Then Goto Shoro

                Loop

                Shoro:
                _wait = 5
                Cls

                Do
                Gosub Taghsim
                Gosub Segment
                If Pinc.3 = 0 Then Jmp Tanzim
                Loop


                Ebi:
                'Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111
                Data 126 , 48 , 109 , 121 , 51 , 91 , 95 , 112 , 127 , 123
                'Data &B01111110 , &B00110000 , &B01101101 , &B01111001 , &B00110011 , &B01011011 , &B01011111 , &B01110000 , &B01111111 , &B01111011

                Segment:
                Portb = &B00001110
                Portd = Lookup(dah , Ebi)
                Waitms _wait
                Portb = &B00001101
                Portd = Lookup(yek , Ebi)
                Waitms _wait
                Portb = &B00001011
                Portd = Lookup(dah2 , Ebi)
                Waitms _wait
                Portb = &B00000111
                Portd = Lookup(yek2 , Ebi)
                Waitms _wait

                Return

                Zaman:

                If Numb > 59 And Numb < 61 Then Numb = 0
                If Numb > 254 Or Numb < 0 Then Numb = 59
                If Num > 59 And Num < 61 Then Num = 0
                If Num > 254 Or Num < 0 Then Num = 59
                If Numb > 60 Then Num = 0


                If M4 > 59 And M4 < 61 Then M4 = 0
                If M4 > 254 Or M4 < 0 Then M4 = 59
                If S4 > 59 And S4 < 61 Then S4 = 0
                If S4 > 254 Or S4 < 0 Then S4 = 59
                If M4 > 60 Then S4 = 0




                Return

                '.............................................
                Taghsim:
                Dah = Numb / 10
                Yek3 = Dah * 10
                Yek = Numb - Yek3
                '.............................................
                Dah2 = Num / 10
                Yek4 = Dah2 * 10
                Yek2 = Num - Yek4

                '.............................................

                M1 = M4 / 10
                M2 = M1 * 10
                M3 = M4 - M2
                '.............................................
                S1 = S4 / 10
                S2 = S1 * 10
                S3 = S4 - S2




                Return

                Tanzim:
                'SECOND
                Portb = &B00011111
                While Pinc.3 = 0
                Wend
                Do
                If Pinc.2 = 0 Then : Waitms 200 : Incr Num
                Elseif Pinc.4 = 0 Then : Waitms 200 : Decr Num
                Elseif Pinc.3 = 0 Then : Jmp Daghighe : End If
                Gosub Zaman
                Gosub Taghsim

                Portb = &B00011011
                Portd = Lookup(dah2 , Ebi)
                Waitms _wait
                Portb = &B00010111
                Portd = Lookup(yek2 , Ebi)
                Em = Dah2
                Em2 = Yek2
                Waitms _wait




                Loop

                Daghighe:



                While Pinc.3 = 0
                Wend
                Do
                If Pinc.2 = 0 Then : Waitms 200 : Incr Numb
                Elseif Pinc.4 = 0 Then : Waitms 200 : Decr Numb
                Elseif Pinc.3 = 0 Then : Jmp Second2 : End If
                Gosub Zaman
                Gosub Taghsim

                Portb = &B00011110 '
                Portd = Lookup(dah , Ebi)
                Waitms _wait
                Portb = &B00011101 '
                Portd = Lookup(yek , Ebi)
                Waitms _wait
                Loop


                Second2:
                While Pinc.3 = 0
                Wend
                Do

                If Pinc.2 = 0 Then : Waitms 200 : Incr S4
                Elseif Pinc.4 = 0 Then : Waitms 200 : Decr S4
                Elseif Pinc.3 = 0 Then : Jmp Daghighe2 : End If
                Gosub Zaman
                Gosub Taghsim


                Portb = &B00101011
                Portd = Lookup(s1 , Ebi)
                Waitms _wait
                Portb = &B00100111
                Portd = Lookup(s3 , Ebi)
                Waitms _wait
                Loop


                Daghighe2:
                While Pinc.3 = 0
                Wend
                Do

                If Pinc.2 = 0 Then : Waitms 200 : Incr M4
                Elseif Pinc.4 = 0 Then : Waitms 200 : Decr M4
                Elseif Pinc.3 = 0 Then : Jmp Save : End If
                Gosub Zaman
                Gosub Taghsim




                Portb = &B00101110
                Portd = Lookup(m1 , Ebi)
                Waitms _wait
                Portb = &B00101101
                Portd = Lookup(m3 , Ebi)
                Waitms _wait

                Loop



                Save:
                For X = 0 To 20

                Portb = &B00001110 ': E = 0 : F = 1 : G = 1 : H = 1 '
                Portd = &B1011011 'S
                Waitms _wait
                Portb = &B00001101 ': E = 1 : F = 0 : G = 1 : H = 1 '
                Portd = &B1110111 'A
                Waitms _wait

                Portb = &B00001011 ' E = 1 : F = 1 : G = 0 : H = 1 '
                Portd = &B0111110 'V
                Waitms _wait
                Portb = &B00000111 ' : E = 1 : F = 1 : G = 1 : H = 0 '
                Portd = &B1001111 'E
                Waitms _wait

                Next

                Portd = 0 : Portb = 1



                Goto Shoro
                جدیدترین ویرایش توسط pouria66; ۰۲:۰۵ ۱۳۹۵/۱۲/۱۸.

                دیدگاه


                  #9
                  قطع و وصل رله با تایم دلخواه

                  سلام دوستان
                  میشه هم فکری بدین به بنده در خصوص کامل کردن برنامه؟
                  خودم یک برنامه نوشتم برای قطع و وصل رله با تایم دلخواه ولی عمل شمارش انجام نمیشه
                  برنامه من دو تایم باید بگیره یکی برای وصل کردن رله و توی تایم دوم باید رله قطع باشه
                  و این زمان دریافتی رو توی حافظه ذخیره کنه تا زمانی که تایم جدید تنظیم کنیم
                  دانلود برنامه با شبیه ساز پروتئوس

                  دیدگاه


                    #10
                    پاسخ : قطع و وصل رله با تایم دلخواه

                    نوشته اصلی توسط pouria66 نمایش پست ها
                    سلام دوستان
                    میشه هم فکری بدین به بنده در خصوص کامل کردن برنامه؟
                    خودم یک برنامه نوشتم برای قطع و وصل رله با تایم دلخواه ولی عمل شمارش انجام نمیشه
                    برنامه من دو تایم باید بگیره یکی برای وصل کردن رله و توی تایم دوم باید رله قطع باشه
                    و این زمان دریافتی رو توی حافظه ذخیره کنه تا زمانی که تایم جدید تنظیم کنیم
                    دانلود برنامه با شبیه ساز پروتئوس
                    با سلام:
                    حد اکثرمدت زمان قطع و وصل رله باید چقدر باشد.؟
                    علم را در آزمایشگاه باید یاد گرفت نه در دانشگاه
                    نابغه بودن 99 درصد با پشتکار و یک درصد با الهام است. (ادیسون)

                    دیدگاه


                      #11
                      پاسخ : قطع و وصل رله با تایم دلخواه

                      نوشته اصلی توسط علی تحیری نمایش پست ها
                      با سلام:
                      حد اکثرمدت زمان قطع و وصل رله باید چقدر باشد.؟
                      سلام
                      حداکثر تا 100 دقیقه تا 60 دقیقه باشه کفایت میکنه یعنی نمایش بر روی یک سون سگمنت 4 دیجیت
                      جدیدترین ویرایش توسط pouria66; ۱۸:۴۲ ۱۳۹۵/۱۲/۱۸.

                      دیدگاه


                        #12
                        پاسخ : (کمک) تایمر دیجیتال

                        تو برنامت کدوم قسمت مربوط به تولید زمانه؟!!!
                        دستور تکراری تو برنامت زیاد داره میتونی تو زیر برنامه بنویسیشون و هروقت لازم داشتی دستور gosub استفاده کنی
                        برای کلیدا هم بهتره از debounce استفاده کنی

                        دیدگاه


                          #13
                          پاسخ : (کمک) تایمر دیجیتال

                          نوشته اصلی توسط mashroti نمایش پست ها
                          تو برنامت کدوم قسمت مربوط به تولید زمانه؟!!!
                          دستور تکراری تو برنامت زیاد داره میتونی تو زیر برنامه بنویسیشون و هروقت لازم داشتی دستور gosub استفاده کنی
                          برای کلیدا هم بهتره از debounce استفاده کنی
                          گیج شدم دو روزه دارم بالا و پایینش میکنم نمیشه
                          الان برنامه اصلا بعد از گرفتن تایم شروع به شمردن نمیکنه

                          دیدگاه


                            #14
                            پاسخ : (کمک) تایمر دیجیتال

                            متغیرات ثابتن واسه همین شمارش نداری دیگه
                            یه تایمر تعریف کن که هر یه ثانیه یکی ب متغیرات اضافه کنه

                            دیدگاه


                              #15
                              پاسخ : (کمک) تایمر دیجیتال

                              نوشته اصلی توسط mashroti نمایش پست ها
                              متغیرات ثابتن واسه همین شمارش نداری دیگه
                              یه تایمر تعریف کن که هر یه ثانیه یکی ب متغیرات اضافه کنه
                              به کدوم متغیر یک اضافه کنم برای شمارش؟

                              دیدگاه

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