اطلاعیه

Collapse
No announcement yet.

راه اندازی ماژول ds3231

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

    راه اندازی ماژول ds3231

    سلام و خسته نباشید
    امروز حدودا 2 ساعت توی اینترنت دنبال برنامه ی بسکام راه اندازه این ماژول گشتم
    اما چیزی جز آردیونو و کد ویژن پیدا نکردم
    دیتاشیت رو خوندم چیزی متوجه نشدم که بتونم باهاش کد بنویسم چون مبتدی ام
    اگه کسی آموزش بده یا کد بسکام این ماژول رو بزاره به خیلیا کمک کرده

    #2
    پاسخ : راه اندازی ماژول ds3231

    سلام
    میتونی از ds1302 استفاده کنی
    ساعتش دقیقه

    Sent from my HTC Amaze 4G using Tapatalk
    قومي متفکرند اندر ره دين
    قومي بگمان فتاده در راه يقين
    ميترسم از آن که بانگ آيد روزي
    که اي بي خبران ، راه نه آن است و نه اين...!

    دیدگاه


      #3
      پاسخ : راه اندازی ماژول ds3231

      سلام ممنون از پاسختون
      من ماژول 3231 رو خریداری کردم و شنیدم خیلی دقیق تره

      دیدگاه


        #4
        پاسخ : راه اندازی ماژول ds3231

        منم خریدم ، هم مدل دیپ که پروتکلش پین های موازی هست و هم مدل smd که پروتکلش i2c هست
        اکه قبلا با ds1307 کار کرده باشی میتونی این رو هم راه اندازی
        تقریبا همون آدرس دهی رو داره

        Sent from my HTC Amaze 4G using Tapatalk
        قومي متفکرند اندر ره دين
        قومي بگمان فتاده در راه يقين
        ميترسم از آن که بانگ آيد روزي
        که اي بي خبران ، راه نه آن است و نه اين...!

        دیدگاه


          #5
          پاسخ : راه اندازی ماژول ds3231

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

          دیدگاه


            #6
            پاسخ : راه اندازی ماژول ds3231

            من فکر کنم یه نمونه کد برای ۱۳۰۷ داشته باشم
            اگه باشه برات می فرستم از همون استفاده کن

            Sent from my HTC Amaze 4G using Tapatalk
            قومي متفکرند اندر ره دين
            قومي بگمان فتاده در راه يقين
            ميترسم از آن که بانگ آيد روزي
            که اي بي خبران ، راه نه آن است و نه اين...!

            دیدگاه


              #7
              پاسخ : راه اندازی ماژول ds3231

              لطف میکنی
              فقط بی زحمت توضیح تغییراتی که باید بدم رو هم بدین

              دیدگاه


                #8
                پاسخ : راه اندازی ماژول ds3231

                من خیلی وقته بیسیک کار نمیکنم
                این کد رو ببین نحوه خوندن و نوشتن رو میتونی داخلش ببینی
                میتونی از همین کد استفاده کنی
                کار ساده ای هست ، داخلش تبدیل میلادی به شمسی هم هست.
                توی پروتیوس هم میتونی شبیه سازی کنی
                کد:
                $regfile = "m16def.dat"
                $crystal = 16000000
                '------------------------- Config LCD 16*2 -------------------------------------------------------------------------
                'Config Lcdpin = Portc , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.1 , Rs = Portc.0
                'Config Lcd = 16 * 2
                '-------------------------------------------------------------------------------------------------------------------
                '************************** Functon ********************************************
                Declare Sub Get_time
                Declare Sub Get_date
                Declare Sub Convert_date_hejri(y As Integer , M As Byte , D As Byte)
                Declare Sub Key
                'Declare Sub Setting_ds1307(byval Adress As Byte , Var As Integer)
                '*******************************************************************************
                '---------------------------- Config Input Key ---------------------------------
                Ddrb = &H00
                Portb = &H0F
                '-------------------------------------------------------------------------------
                '-------------------------------------------------------------------------------
                '-------------------------- Config A.D.C ---------------------------------------
                'Config Adc = Single , Prescaler = 8 , Reference = Internal
                'Stop Adc
                '-------------------- Variable -------------------------------------------------
                Dim Sd As Byte , Mm As Byte , Hy As Integer
                Dim Counterr As Byte
                'Dim G As Word
                Dim Strr As String * 6
                Dim Temp As Byte
                '-------------------------------------------------------------------------------
                '---------------------- Config I2c ---------------------------------------------
                Config Sda = Porta.0 : Config Scl = Porta.1
                Const W = &HD0 : Const R = &HD1
                '-------------------------------------------------------------------------------
                '--------------------------- Set Ds1307-----------------------------------------
                '(
                I2cstart
                I2cwbyte W
                I2cwbyte &H07
                I2cwbyte &B10010000
                I2cstop
                ')
                'Peykar bandiye rtc va tanzime 1S baraye khuruji
                '-------------------------------------------------------------------------------
                Config Debounce = 50
                'when the config statement is not used a default of 25mS will be used but we override to use 30 mS
                '-------------------------------------------------------------------------------
                'Cursor Off
                Mm = Makebcd(mm)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H01
                         I2cwbyte Mm
                         I2cstop
                       Mm = Makedec(mm)
                
                
                
                
                         I2cstart
                         I2cwbyte &HD0
                         I2cwbyte &H07
                         I2cwbyte &B10010000
                         I2cstop
                
                
                   Mm = Makebcd(mm)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H01
                         I2cwbyte Mm
                         I2cstop
                       Mm = Makedec(mm)
                
                
                
                
                Do
                
                
                
                
                '(
                    G = Getadc(0)
                    Locate 2 , 1
                   Lcd G ; "       "
                ')
                
                
                ' Get_time
                '  Locate 1 , 1
                '   Lcd Hy ; ":" ; Mm ; ":" ; Sd ; " "
                '    Locate 1 , 11
                '     Lcd Strr ; "  "
                
                
                '  Get_date
                '   Call Convert_date_hejri(hy , Mm , Sd)
                '  Locate 2 , 4
                '   Lcd Sd ; "/" ; Mm ; "/" ; Hy ; "  "
                
                
                ' Debounce Pinb.0 , 0 , Key , Sub
                
                
                'Waitms 100
                Loop
                
                
                End
                
                
                '-------------------------------------------------------------------------------
                Sub Key:
                'Local Counterr As Byte
                 Incr Counterr
                  Cls
                  If Counterr > 2 Then
                   Counterr == 00
                  End If
                '------------------------------------------
                
                
                 While Counterr = 1
                '   Locate 1 , 5
                '    Lcd "Set Time"
                '     Locate 2 , 1
                '   Get_time
                   Debounce Pinb.0 , 0 , Key , Sub
                    Debounce Pinb.1 , 0 , Mine , Sub
                     Debounce Pinb.2 , 0 , Hour , Sub
                      Debounce Pinb.3 , 0 , Ruz , Sub
                       Lcd Hy ; ":" ; Mm ; ":" ; Sd ; "  "
                        Locate 2 , 12
                         Lcd Strr ; "  "
                 Wend
                '-------------------------------------------
                
                
                 While Counterr = 2
                '   Locate 1 , 5
                '    Lcd "Set Date"
                '     Get_date
                  Debounce Pinb.0 , 0 , Key , Sub
                   Debounce Pinb.1 , 0 , Day , Sub
                    Debounce Pinb.2 , 0 , Month , Sub
                     Debounce Pinb.3 , 0 , Year , Sub
                
                
                '     Locate 2 , 4
                '     Hy = Hy Or 2000
                '      Lcd Sd ; "/" ; Mm ; "/" ; Hy ; "  "
                 Wend
                
                
                 Cls
                End Sub
                
                
                '-------------------------------------------------------------------------------
                
                
                '-------------------------------------
                Mine:
                         Incr Mm
                         If Mm > 59 Then Mm = 0
                       Mm = Makebcd(mm)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H01
                         I2cwbyte Mm
                         I2cstop
                       Mm = Makedec(mm)
                Return
                '-------------------------------------
                Hour:
                         Incr Hy
                         If Hy > 23 Then Hy = 0
                         Hy = Makebcd(hy)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H02
                         I2cwbyte Hy
                         I2cstop
                       Hy = Makedec(hy)
                Return
                '-------------------------------------
                '-------------------------------------
                Ruz:
                         Incr Temp
                         If Temp > 7 Then Temp = 1
                       Temp = Makebcd(temp)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H03
                         I2cwbyte Temp
                         I2cstop
                       Temp = Makedec(temp)
                Return
                '-------------------------------------
                Day:
                         Incr Sd
                         If Sd > 31 Then Sd = 0
                       Sd = Makebcd(sd)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H04
                         I2cwbyte Sd
                         I2cstop
                       Sd = Makedec(sd)
                Return
                '-------------------------------------
                '-------------------------------------
                Month:
                         Incr Mm
                         If Mm > 12 Then Mm = 0
                         Mm = Makebcd(mm)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H05
                         I2cwbyte Mm
                         I2cstop
                       Mm = Makedec(mm)
                Return
                '-------------------------------------
                '-------------------------------------
                Year:
                        Incr Hy
                         If Hy > 99 Then Hy = 00
                         Hy = Makebcd(hy)
                         I2cstart
                         I2cwbyte W
                         I2cwbyte &H06
                         I2cwbyte Hy
                         I2cstop
                       Hy = Makedec(hy)
                Return
                '-------------------------------------------------------------------------------
                
                
                Sub Get_time:
                
                
                    I2cstart
                     I2cwbyte W
                      I2cwbyte 0
                      '------------
                        I2cstart
                        I2cwbyte R
                        I2crbyte Sd , Ack
                        I2crbyte Mm , Ack
                        I2crbyte Hy , Ack
                        I2crbyte Temp , Nack
                     I2cstop
                
                
                 Sd = Makedec(sd)
                  Mm = Makedec(mm)
                   Hy = Makedec(hy)
                    Temp = Makedec(temp)
                    Strr = Lookupstr(temp , Rooz)
                End Sub
                
                
                '-------------------------------------------------------------------------------
                Sub Get_date
                
                
                    I2cstart
                     I2cwbyte W
                      I2cwbyte &H4
                      '------------
                        I2cstart
                        I2cwbyte R
                        I2crbyte Sd , Ack
                        I2crbyte Mm , Ack
                        I2crbyte Hy , Nack
                     I2cstop
                
                
                 Sd = Makedec(sd)
                  Mm = Makedec(mm)
                   Hy = Makedec(hy)
                
                
                End Sub
                '-------------------------------------------------------------------------------
                
                
                Sub Convert_date_hejri(y As Integer , M As Byte , D As Byte)
                '----------------------
                 Dim Myear As Integer                                       'input Miladi(gregorian) Year
                  Dim Mday As Integer                                       'input Miladi Day
                   Dim Mmonth As Integer                                    'input Miladi Month
                '------------------------
                    Dim Mdayofyear As Integer
                     Dim Myear_ As Integer
                '--------------------------
                 Dim Jday As Integer                                        'output (shamsi) Day
                  Dim Jmonth As Integer                                     'output (shamsi) Month
                   Dim Jyear As Integer                                     'output (shamsi) Year
                    Dim Jdayofyear As Integer
                '------------------------------
                Dim Gnumdayofyear As Integer
                 Dim Isleapyear As Bit
                  Dim Isleapyearp As Bit
                   Dim Iloop As Byte
                    Dim Temp1 As Integer
                     Dim Temp2 As Integer
                      Dim Temp3 As Integer
                       Dim Temp4 As Integer
                        Dim Jmonth_a(12) As Byte
                         Dim Mmonth_a(12) As Byte
                '-----------------------------------
                '–28 Ya 29 Agar Sall Kabiseh Bashad In Mah 29 Roz Mibashad...
                Mmonth_a(1) = 31
                 Mmonth_a(2) = 28
                  Mmonth_a(3) = 31
                
                
                   Mmonth_a(4) = 30
                    Mmonth_a(5) = 31
                     Mmonth_a(6) = 30
                
                
                      Mmonth_a(7) = 31
                       Mmonth_a(8) = 31
                        Mmonth_a(9) = 30
                
                
                         Mmonth_a(10) = 31
                          Mmonth_a(11) = 30
                           Mmonth_a(12) = 31
                
                
                            Gnumdayofyear = 365
                '--------------------------------------------
                'Myear = 2011                                                'sample Miladi(gregorian) Year
                'Mday = 7                                                    'sample Miladi Day
                'Mmonth = 12
                Y = Y Or 2000                                               'sample Miladi Month
                Myear = Y
                 Mday = D
                  Mmonth = M
                Mdayofyear = 0
                
                
                '————–shart Kabiseh Bodane Sal..
                 Temp1 = Myear Mod 4
                  Temp2 = Myear Mod 100
                   Temp3 = Myear Mod 400
                    Temp4 = Temp1 And Temp2
                '----------------------------
                 If Temp4 <> 0 Or Temp3 = 0 Then
                  Mmonth_a(2) = 28
                 Else
                  Mmonth_a(2) = 29
                 End If
                '--------------------------------
                Myear_ = Myear - 1
                 Temp1 = Myear_ Mod 4
                  Temp2 = Myear_ Mod 100
                   Temp3 = Myear_ Mod 400
                    Temp4 = Temp1 And Temp2
                '-----------------------------------
                 If Temp4 <> 0 Or Temp3 = 0 Then
                  Reset Isleapyearp
                 Else
                  Set Isleapyearp
                 End If
                '--------------------------------------
                Temp1 = Mmonth - 1
                
                
                 For Iloop = 1 To Temp1
                  Mdayofyear = Mmonth_a(iloop) + Mdayofyear
                 Next
                
                
                Mdayofyear = Mday + Mdayofyear
                
                
                 If Mdayofyear > 79 Then
                  Temp1 = Mdayofyear - 79
                   Jyear = Myear - 621
                  If Temp1 < 186 Then
                   Temp2 = Temp1 Mod 31
                    Temp3 = Temp1 / 31
                   If Temp2 = 0 Then
                    Jmonth = Temp3
                     Jday = 31
                   Else
                    Jmonth = Temp3 + 1
                     Jday = Temp2
                   End If
                  Else
                   Temp2 = Temp1 - 186
                    Temp3 = Temp2 Mod 30
                     Temp4 = Temp2 / 30
                    If Temp3 = 0 Then
                     Jmonth = Temp4 + 6
                      Jday = 30
                    Else
                     Jmonth = Temp4 + 7
                      Jday = Temp3
                    End If
                
                
                  End If
                
                
                 Else
                 Jyear = Myear - 622
                  If Isleapyearp = 1 Then
                   Mdayofyear = Mdayofyear + 11
                    Else
                     Mdayofyear = Mdayofyear + 10
                  End If
                
                
                 Temp2 = Mdayofyear Mod 30
                  Temp3 = Mdayofyear / 30
                
                
                 If Temp2 = 0 Then
                  Jmonth = Temp3 + 9
                   Jday = 30
                 Else
                  Jmonth = Temp3 + 10
                   Jday = Temp2
                  End If
                 End If
                
                
                 Y = Jyear
                  M = Jmonth
                   D = Jday
                End Sub
                '-------------------------------------------------------------------------------
                Rooz:
                Data "  " , "Sun" , "Mon" , "Tues" , "Wednes" , "Thurs" , "Fri" , "Satur"
                قومي متفکرند اندر ره دين
                قومي بگمان فتاده در راه يقين
                ميترسم از آن که بانگ آيد روزي
                که اي بي خبران ، راه نه آن است و نه اين...!

                دیدگاه


                  #9
                  پاسخ : راه اندازی ماژول ds3231

                  میشه یه نفر توضیح بده این برنامرو
                  قسمت تبدیل میلادی به شمسی مد نظرم نیست
                  قسمت ماژول مد نظرم هست و ساعت
                  مثلا این یعنی چی ؟
                  کد HTML:
                  Const W = &HD0 : Const R = &HD1

                  دیدگاه


                    #10
                    پاسخ : راه اندازی ماژول ds3231

                    این که دیگه مشخصه
                    برای خوندن از ساعت با یه مقداری عددی رو براش بفرستید که بفهمه تو مد خوندن هست ، و برعکس برای تنظیم ساعت هم باید یه مقدار عددی دیگه رو بفرستید
                    که اینجا متغیر w با مقدار D0 مقدار دهی شده
                    توی دیتاشیت هم توضیح داده
                    سختش نکنید
                    فقط باید کمی وقت بزارید
                    در ضمن اگه تو برنامه نوشتن مشکل دارید کارتون سخت میشه


                    Sent from my HTC Amaze 4G using Tapatalk
                    جدیدترین ویرایش توسط mr_hadi; ۱۷:۲۸ ۱۳۹۵/۱۰/۰۶.
                    قومي متفکرند اندر ره دين
                    قومي بگمان فتاده در راه يقين
                    ميترسم از آن که بانگ آيد روزي
                    که اي بي خبران ، راه نه آن است و نه اين...!

                    دیدگاه


                      #11
                      پاسخ : راه اندازی ماژول ds3231

                      ممنون mr_hadi
                      همونطور که گفتید دقیقا مشابه 1307 هست و اصلا با سورس و دیتا شیت اونم کار میکنه
                      توی این لینک هم هم شماتیک هم سورس کد به زبان بسکام کاملا توضیح داده شده

                      دیدگاه

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