اطلاعیه

Collapse
No announcement yet.

یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

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

    پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

    سلام
    کسی میتونه مدار تایمر(شمارنده)با atmeg وrtc8583 با دقت 0.01 بده؟

    دیدگاه


      پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

      :applause:sghسلام خدمت برادران عزیز شما مرا تاحدی در مورد ساخت ساعت با 7سگمنت کمک کردید من در برنامه شما تغییراتی دادم و مدا را با4511 تکمیل کردم البته برای مگا16 اما مانددم چگونه توسط کلید بروی پرتها cتنظیم ساعت رابه دست بگیرم اگر می توانید مرا کمک کنید برنامه به شرح زیر است :NO:
      $regfile = "m16def.dat"
      $crystal = 8000000

      Dim A1 As Byte
      Dim A2 As Byte
      Dim F1 As Byte
      Dim F2 As Byte
      Dim A3 As Byte
      Dim A4 As Byte
      Dim F3 As Byte
      Dim F4 As Byte
      Dim A5 As Byte
      Dim A6 As Byte
      Dim F5 As Byte
      Dim F6 As Byte

      Const Ds1307w = &HD0
      Const Ds1307r = &HD1

      Config Sda = Portc.1
      Config Scl = Portc.0

      Config Portb = Output
      Config Portd = Output
      Config Porta = Output
      Portc.2 = 1
      Portc.3 = 1
      Portc.4 = 1
      Portc.5 = 1
      Dim _sec As Byte , _min As Byte , _hour As Byte
      Dim Weekday As Byte , _day As Byte , _month As Byte , _year As Byte

      ' _sec = 50
      '_min = 20
      '_hour = 1

      _sec = Makebcd(_sec)
      _min = Makebcd(_min)
      _hour = Makebcd(_hour)


      'I2cstart
      'I2cwbyte Ds1307w
      'I2cwbyte 0
      'I2cwbyte _sec
      'I2cwbyte _min
      'I2cwbyte _hour


      Do
      If Portc.2 = 0 Then

      _min = 20


      '_sec = Makebcd(_sec)
      _min = Makebcd(_min)
      '_hour = Makebcd(_hour)


      I2cstart
      I2cwbyte Ds1307w
      I2cwbyte 0
      I2cwbyte _sec
      I2cwbyte _min
      I2cwbyte _hour


      End If


      _sec = Makedec(_sec)
      _min = Makedec(_min)
      _hour = Makedec(_hour)



      A1 = _sec Mod 10
      A2 = _sec / 10
      A3 = _min Mod 10
      A4 = _min / 10
      A5 = _hour Mod 10
      A6 = _hour / 10





      F1 = Lookup(a1 , 7segmentd)
      F2 = Lookup(a2 , 7segmenty)
      F3 = Lookup(a4 , 7segmenty)
      F4 = Lookup(a3 , 7segmentd)
      F5 = Lookup(a5 , 7segmenty)
      F6 = Lookup(a6 , 7segmentd)

      Porta = F1 Or F2
      Portd = F3 Or F4
      Portb = F5 Or F6


      Waitms 10
      'Reset Portd.0

      Gosub Rezar



      Loop
      End

      Rezar:
      I2cstart
      I2cwbyte Ds1307w
      I2cwbyte 0

      I2cstart
      I2cwbyte Ds1307r
      I2crbyte _sec , Ack
      I2crbyte _min , Ack
      I2crbyte _hour , Ack
      I2crbyte Weekday , Ack ' Day of Week
      I2crbyte _day , Ack ' Day of Month
      I2crbyte _month , Ack ' Month of Year
      I2crbyte _year , Nack ' Year
      I2cstop
      Return

      7segmenty:
      Data &B00000000
      Data &B00000001
      Data &B00000010
      Data &B00000011
      Data &B00000100
      Data &B00000101
      Data &B00000110
      Data &B00000111
      Data &B00001000
      Data &B00001001
      7segmentd:
      Data &B00000000
      Data &B00010000
      Data &B00100000
      Data &B00110000
      Data &B01000000
      Data &B01010000
      Data &B01100000
      Data &B01110000
      Data &B10000000
      Data &B10010000
      :nice:

      دیدگاه


        پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

        به نظر من برای رفرش سون سگمنت ها از زمان سرریز تایمر استفاده کن. برای 6 تا 4 یا 5 میلی ثانیه عالیه.

        تو لوپ اصلی هم از 2 تا کلید استفاده کن که یکی دقیقه و دیگری ساعت رو زیاد کنه. دقیقا مثل ساعت پراید.
        بعد از هر بار زیاد کردن به ds1307 هم بفرست.


        سخت افزارت به چه صورته؟؟
        سون سگمنتها رو رفش میکنی یا با لچ؟ برنامه رو نگاه نکردم.
        www.icesi.ir

        دیدگاه


          پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

          اگر به برنامه بالا نگاه کنی من این قسمت رو برای تست عمل کلید قرار دادم اما تا زمان نگه داشتن کلید فقط مقدار min00میشود وبه محض قطع کلید مقدار بر میگردد به حالت قبلی باید چه کنم
          If Portc.2 = 0 Then

          _min = 20


          '_sec = Makebcd(_sec)
          _min = Makebcd(_min)
          '_hour = Makebcd(_hour)


          I2cstart
          I2cwbyte Ds1307w
          I2cwbyte 0
          I2cwbyte _sec
          I2cwbyte _min
          I2cwbyte _hour


          End If

          دیدگاه


            پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

            سلام.

            وقتی کلید رو میزنی متغییر دقیقه تغییر میکنه؟
            ولی دوباره بر میگرده به همان عدد قبلی؟

            چند تا تغییرات تو برنامه بده شاید تاثیر داشته باشه.

            فرکانس اسیلاتور رو 1000000 کن.
            برای تست کلید از دستور Debounce Pind.0 , 0 , Loop1 استفاده کن.
            مقدار _min رو incr کن. یعنی با هر بار فشار دادن کلید یکی به اون اضافه کن.
            برای سون سگمنت ها هم از سرریز تایمر استفاده کن تا موقع فشار داده کلید چشمک نزنه.
            www.icesi.ir

            دیدگاه


              پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

              سلام
              من برنامه را با گزاشتن Debounce Pinc.2 , 0 , Min1 در بین loop
              وهمچنین با قرار دادن
              Min1:

              _min = _min + 1


              '_sec = Makebcd(_sec)
              _min = Makebcd(_min)
              '_hour = Makebcd(_hour)


              I2cstart
              I2cwbyte Ds1307w
              I2cwbyte 0
              I2cwbyte _sec
              I2cwbyte _min
              I2cwbyte _hour
              آخر برنامه درست کردم و فرکانس اسیلاتور رو 1مگ کردم
              ودر عمل با صفر کردن پین تمام سگمنت ها صفر می شود
              "برای سون سگمنت ها هم از سرریز تایمر استفاده کن تا موقع فشار داده کلید چشمک نزنه"کمی بیشترتوضیح بدین ممنون می شوم

              دیدگاه


                پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                برنامه در حالت عالی خوب کار میکنه؟
                فقط با قسمت تنطیم ساعت مشکل داری؟

                وقتی داری تو لوپ اصلی برنامه سون سکمنت ها رو رفرش میکنی. وقتی از دستور Debounce استفاده میکنی چون در حالت پیش فرض 25 میلی ثانیه تاخیر ایجاد میکنه یه چشمک میزنه.
                ولی وقتی از تایمر استفاده کنی دیگه کاری با 25 میلی ثانیه نداره ...تایمر که سرریز بشه به برچسب میپره و سو ن سگمنت رو روشن میکنه.

                (شاید برای شما این اتفاق نیفته.... ولی من چندین بار این مشکل برام پیش اومده.)

                برای تنظیم ساعت هم میتونی برنامه آقای chia رو نگاه کنی و داخل همین تایپک هستش ..صفحات اول.
                www.icesi.ir

                دیدگاه


                  پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                  سلام من برنامه را با تغییر تابعmin1به شکل زیر اصلاح کردم Min1:

                  Waitms 10

                  Incr _min

                  If _min = 60 Then _min = 00
                  '_sec = Makebcd(_sec)
                  '_hour = Makebcd(_hour)
                  A1 = _sec Mod 10
                  A2 = _sec / 10
                  A3 = _min Mod 10
                  A4 = _min / 10
                  A5 = _hour Mod 10
                  A6 = _hour / 10

                  F1 = Lookup(a1 , 7segmentd)
                  F2 = Lookup(a2 , 7segmenty)
                  F3 = Lookup(a4 , 7segmenty)
                  F4 = Lookup(a3 , 7segmentd)
                  F5 = Lookup(a5 , 7segmenty)
                  F6 = Lookup(a6 , 7segmentd)

                  Porta = F1 Or F2

                  Portd = F3 Or F4

                  Portb = F5 Or F6
                  '_sec = Makedec(_sec)
                  '_min = Makedec(_min)
                  '_hour = Makedec(_hour)

                  I2cstart
                  I2cwbyte Ds1307w
                  I2cwbyte 1
                  'I2cwbyte _sec
                  I2cwbyte _min
                  'I2cwbyte _hour
                  Gosub Rezar

                  تغییر بالا باعث شد دقیقه یک عدد اضافه بشه ولی بلافاصله در مقادیر ساعت(حتی دقیقه)تغییر ایجاد می شه (من وقتی برنامه را درISIS 6اجرا می کنم در ساعت شبیه ساز دقیقه پس از فشار دادن کلید سه رقمی میشه)

                  دیدگاه


                    پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                    سه رقمی میشه؟ مگه با 7 سگمنت کار نمیکنی؟
                    تو عمل مهمه این پروتئوس بعضی موقع ها .....
                    www.icesi.ir

                    دیدگاه


                      پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                      در تابلویی که درست کردم دقیقه تا 16 درست میره بالا بعد از 16میشه 10 و روی 10-16 جابه جا می شه . . . (ساعت درست کا می کنه حتی موقع قطع برق حتی یک ثانیه هم عقب نمی مانه) تنظیمش دیگه داره خیلی عزیتم می کنه لطفا کمکم کنید :angry:

                      دیدگاه


                        پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                        برنامه رو کامل بذار.

                        اگه فایل پروتئوس هم داره اونم بذار تا برات یه کاری بکنیم.
                        www.icesi.ir

                        دیدگاه


                          پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                          نوشته اصلی توسط میلاد موسوی
                          سلام به همگی.

                          آقا من میخوام یه ساعت برای ارگان دولتی طراحی کنم و به تولید انبوه برسونیم. و میخوام ببینیم به نظر شما از چه ic برای این ساعت استفاده کنم که حداکثر در سال 3 دقیقه یا کمتر (در حد صفر) خطا داشته باشه . یعنی یه ساعت دقیق دقیق دقیق .البته نا گفته نماند با سون سگمنت ساخته میشه و به صورت رفرشی کار میکنه .(سون سگمنت مالتی پلس)
                          سلام
                          دوست من برنامه ات رو کامل کردی یا نه می خوام بدونم میتونی یک برنامه ساعت واسه ما بنوسی که فقط با کریستال کار کنه یا که فقط با تایمر ها باشه و سون گمنت ها وصل یک پورت شده باشه ممنون
                          مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

                          دیدگاه


                            پاسخ : یه RTC و یا یه راه حل خوب به من بگید.(پروژه ساعت)

                            ممنون از همه شما منم دنبال یه ساعت هستم.
                            اگه لطف کنید سخت افزار یک ساعت رو با lcd بزارین خیلی خوب میشه میخوام روش کار کنم (خواهش میکنم کمک کنید ضروری هست.)
                            سپاس گذارم.

                            دیدگاه

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