اطلاعیه

Collapse
No announcement yet.

[پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت + منبع ت

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

    پاسخ : پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دم

    نوشته اصلی توسط masoud.moghaddam21
    میتونین دستورشو تو بیسیک واسم بنویسین ؟
    چیز خاصی نداره :

    [code=vb]Sub procedure Ds1307_set_dayofweek(dim Dayofweek_1_7 As Byte )[/code]


    برنامه کلی DS1307 :

    [code=vb]
    '
    '
    $regfile = "m8def.dat" 'config micro
    $crystal = 8000000
    Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , Db7 = Portd.3 , E = Portd.4 , Rs = Portd.5

    Declare Function Ds1307_is_play0_pause1()as Byte
    Declare Sub Ds1307_play()
    Declare Sub Ds1307_pause()
    Declare Sub Ds1307_config()
    Declare Sub Ds1307_set_second(byval Second_0_59 As Byte)
    Declare Function Ds1307_get_second_0_59() As Byte
    Declare Sub Ds1307_set_minute(byval Minute_0_59 As Byte)
    Declare Function Ds1307_get_minute_0_59() As Byte
    Declare Function Ds1307_is_24h_0_12h_1_mode() As Byte
    Declare Sub Ds1307_set_24h_or_12h_mode(byval _24h_0_12h_1 As Byte)
    Declare Function Ds1307_is_pm_1_am_0() As Byte
    Declare Function Ds1307_get_hour_0_23() As Byte
    Declare Function Ds1307_get_hour_0_12() As Byte
    Declare Sub Ds1307_set_hour_0_23(byval Hour_0_23 As Byte )
    Declare Sub Ds1307_set_hour_0_11(byval Hour_0_12 As Byte , Byval Am0_pm1 As Byte )
    Declare Function Ds1307_get_dayofweek_1_7()as Byte
    Declare Sub Ds1307_set_dayofweek(byval Dayofweek_1_7 As Byte )
    Declare Function Ds1307_get_dayofmonth_1_31()as Byte
    Declare Sub Ds1307_set_dayofmonth(byval Dayofmonth_1_31 As Byte )
    Declare Function Ds1307_get_monthofyear_1_12()as Byte
    Declare Sub Ds1307_set_monthofyear(byval Monthofyear_1_12 As Byte )
    Declare Function Ds1307_get_year_0_99()as Byte
    Declare Sub Ds1307_set_year(byval Year_0_99 As Byte )
    Declare Sub Ds1307_external_1hz_on()
    Declare Sub Ds1307_external_4096hz_on()
    Declare Sub Ds1307_external_8192hz_on()
    Declare Sub Ds1307_external_32768hz_on()
    Declare Sub Ds1307_external_off_sqwe_0()
    Declare Sub Ds1307_external_off_sqwe_1()
    Declare Function Ds1307_read_ram(byval Ram_byte_index_0_55 As Byte) As Byte
    Declare Sub Ds1307_write_ram(byval Ram_byte_index_0_55 As Byte , Byval Value As Byte)




    End

    Sub Ds1307_config() 'Config ds1307
    Waitms 50
    Dim A As Byte
    Dim B As Byte
    'i2c pin config
    Config Scl = Portc.5 'set scl_i2c pin
    Config Sda = Portc.4 'set sda_i2c pin
    'i2cspeed=100khz for ds1307 'set i2c speed 100khz
    Config I2cdelay = 10
    End Sub


    Function Ds1307_is_play0_pause1()as Byte 'timer and date counter is pause or play?
    I2cstart 'i2c start
    I2cwbyte &B11010000 'write mode
    I2cwbyte 0 'set registr in index 0
    I2cstart 'restart i2c for change mode
    I2cwbyte &B11010001 'read mode
    I2crbyte A , Nack 'read defult registr(reister 0)
    I2cstop 'stop i2c
    A = A And &B10000000 '==> 0 or 10000000
    If A = 0 Then 'bit_7 is 0
    Ds1307_is_play0_pause1 = 0
    Else 'bit_7 is 1
    Ds1307_is_play0_pause1 = 1
    End If
    End Function


    Sub Ds1307_play() 'timer and date conter-->play
    I2cstart
    'set defult register index
    I2cwbyte &B11010000
    I2cwbyte 0
    'change to reade mode
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    B = A
    A = A And &B01111111 'bit_7=0 ==> set counter to play
    If B = A Then
    I2cstop
    Exit Sub
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 0
    I2cwbyte A
    I2cstop
    End Sub


    Sub Ds1307_pause() 'timer and date conter-->pause
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 0
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    B = A
    A = A Or &B10000000 'bit_7=1 ==> set counter to pause
    If B = A Then
    I2cstop
    Exit Sub
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 0
    I2cwbyte A
    I2cstop
    End Sub

    '--------------921203-------
    Sub Ds1307_set_second(byval Second_0_59 As Byte)
    If Second_0_59 > 59 Then
    Exit Sub
    End If
    A = Makebcd(second_0_59)
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 0
    I2cstart
    I2cwbyte &B11010001
    I2crbyte B , Nack
    B = B And &B10000000 'extract bit_7
    A = A Or B 'merge
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 0
    I2cwbyte A
    I2cstop
    End Sub
    '-------------921205---------
    Function Ds1307_get_second_0_59() As Byte
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 0
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    A = A And &B01111111 'clear bit_7
    Ds1307_get_second_0_59 = Makedec(a)
    End Function


    Sub Ds1307_set_minute(byval Minute_0_59 As Byte) 'ok
    If Minute_0_59 > 59 Then
    Exit Sub
    End If
    A = Makebcd(minute_0_59)
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 1
    I2cwbyte A
    I2cstop
    End Sub


    Function Ds1307_get_minute_0_59() As Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 1
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    Ds1307_get_minute_0_59 = Makedec(a)
    End Function

    '-------------921206---------
    Function Ds1307_is_24h_0_12h_1_mode() As Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    A = A And &B01000000
    If A = 0 Then
    Ds1307_is_24h_0_12h_1_mode = 0
    Else
    Ds1307_is_24h_0_12h_1_mode = 1
    End If
    End Function

    '-------------921209---------
    Sub Ds1307_set_24h_or_12h_mode(byval _24h_0_12h_1 As Byte) 'ok
    If _24h_0_12h_1 > 1 Then
    Exit Sub
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    B = A And &B01000000
    If B = _24h_0_12h_1 Then
    I2cstop
    Exit Sub
    End If
    If B = 0 Then 'is 24h mode -->change to 12h mode
    B = A And &B00111111
    B = Makedec(b)
    If B < 12 Then 'set am
    A = A And &B00011111
    A = A Or &B01000000
    Elseif B = 12 Then 'set pm
    A = A And &B00011111
    A = A Or &B01100000
    Else 'b > 12 ->set pm and houre= h -12
    A = A And &B00111111
    A = Makedec(a)
    A = A - 12
    A = Makebcd(a)
    A = A Or &B01100000
    End If
    Else 'is 12h mode -->change to 24h mode
    B = A
    B = B And &B00100000
    If B = 0 Then 'is am
    A = A And &B00111111
    Else 'is pm
    A = A And &B00011111
    A = Makedec(a)
    If A = 12 Then
    A = Makebcd(a)
    Else 'is<12
    A = A + 12
    A = Makebcd(a)
    End If
    End If
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cwbyte A
    I2cstop
    End Sub


    Function Ds1307_is_pm_1_am_0() As Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    B = A And &B01000000
    If B = 0 Then 'is 24h mode
    B = A And &B00111111
    B = Makedec(b)
    If B < 12 Then 'is am
    Ds1307_is_pm_1_am_0 = 0
    Else 'is pm
    Ds1307_is_pm_1_am_0 = 1
    End If
    Else 'is 12h mode
    B = A And &B00100000
    If B = 0 Then 'is am
    Ds1307_is_pm_1_am_0 = 0
    Else ' is pm
    Ds1307_is_pm_1_am_0 = 1
    End If
    End If
    End Function

    Function Ds1307_get_hour_0_23() As Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    B = A And &B01000000
    If B = 0 Then 'is 24h mode
    B = A And &B00111111
    Ds1307_get_hour_0_23 = Makedec(b)
    Else 'is 12h mode
    B = A And &B00100000 'is am or pm?
    A = A And &B00011111
    A = Makedec(a)
    If B = 0 Then 'is am
    Ds1307_get_hour_0_23 = A
    Else 'is pm
    If A = 12 Then
    Ds1307_get_hour_0_23 = A
    Else
    Ds1307_get_hour_0_23 = A + 12
    End If
    End If
    End If
    End Function


    Function Ds1307_get_hour_0_12() As Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    B = A And &B01000000
    If B = 0 Then 'is 24h mode
    B = A And &B00111111
    B = Makedec(b)
    If B > 12 Then B = B - 12
    Ds1307_get_hour_0_12 = B
    Else 'is 12h mode
    B = A And &B00011111
    B = Makedec(b)
    Ds1307_get_hour_0_12 = B
    End If
    End Function



    Sub Ds1307_set_hour_0_23(byval Hour_0_23 As Byte ) 'ok
    If Hour_0_23 > 23 Then
    Exit Sub
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    B = A And &B01000000
    A = A And &B11000000
    If B = 0 Then 'is 24h mode
    Hour_0_23 = Makebcd(hour_0_23)
    Hour_0_23 = Hour_0_23 And &B00111111
    A = A Or Hour_0_23
    Else 'is 12h mode
    If Hour_0_23 < 12 Then 'am
    Hour_0_23 = Makebcd(hour_0_23)
    Hour_0_23 = Hour_0_23 And &B00011111
    A = A Or Hour_0_23
    Elseif Hour_0_23 = 12 Then
    Hour_0_23 = Makebcd(hour_0_23)
    Hour_0_23 = Hour_0_23 And &B00011111
    A = A Or Hour_0_23
    A = A Or &B00100000
    Else 'pm is>12
    Hour_0_23 = Hour_0_23 - 12
    Hour_0_23 = Makebcd(hour_0_23)
    Hour_0_23 = Hour_0_23 And &B00011111
    A = A Or Hour_0_23
    A = A Or &B00100000
    End If
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cwbyte A
    I2cstop
    End Sub


    Sub Ds1307_set_hour_0_11(byval Hour_0_12 As Byte , Byval Am0_pm1 As Byte ) 'ok
    If Hour_0_12 > 12 Then
    Exit Sub
    Elseif Am0_pm1 > 1 Then
    Exit Sub
    Elseif Hour_0_12 = 0 Then
    Am0_pm1 = 0
    Elseif Hour_0_12 = 12 Then
    Am0_pm1 = 1
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    B = A And &B01000000
    A = A And &B11000000
    If B = 0 Then 'is 24h mode
    If Am0_pm1 = 1 Then
    If Hour_0_12 <> 12 Then 'is <> 12
    Hour_0_12 = Hour_0_12 + 12
    End If
    End If
    A = A Or Makebcd(hour_0_12)
    Else 'is 12h mode
    A = A Or Makebcd(hour_0_12)
    If Am0_pm1 = 1 Then
    A = A Or &B00100000 'pm
    Else
    A = A And &B11011111 'am
    End If
    End If
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 2
    I2cwbyte A
    I2cstop
    End Sub



    Function Ds1307_get_dayofweek_1_7()as Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 3
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    Ds1307_get_dayofweek_1_7 = Makedec(a)
    End Function


    Sub Ds1307_set_dayofweek(byval Dayofweek_1_7 As Byte ) 'ok
    If Dayofweek_1_7 = 0 Then
    Exit Sub
    Elseif Dayofweek_1_7 > 7 Then
    Exit Sub
    End If
    Dayofweek_1_7 = Makebcd(dayofweek_1_7)
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 3
    I2cwbyte Dayofweek_1_7
    I2cstop
    End Sub


    Function Ds1307_get_dayofmonth_1_31()as Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 4
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    Ds1307_get_dayofmonth_1_31 = Makedec(a)
    End Function


    Sub Ds1307_set_dayofmonth(byval Dayofmonth_1_31 As Byte ) 'ok
    If Dayofmonth_1_31 = 0 Then
    Exit Sub
    Elseif Dayofmonth_1_31 > 31 Then
    Exit Sub
    End If
    Dayofmonth_1_31 = Makebcd(dayofmonth_1_31)
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 4
    I2cwbyte Dayofmonth_1_31
    I2cstop
    End Sub


    Function Ds1307_get_monthofyear_1_12()as Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 5
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    Ds1307_get_monthofyear_1_12 = Makedec(a)
    End Function


    Sub Ds1307_set_monthofyear(byval Monthofyear_1_12 As Byte ) 'ok
    If Monthofyear_1_12 = 0 Then
    Exit Sub
    Elseif Monthofyear_1_12 > 12 Then
    Exit Sub
    End If
    Monthofyear_1_12 = Makebcd(monthofyear_1_12)
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 5
    I2cwbyte Monthofyear_1_12
    I2cstop
    End Sub


    Function Ds1307_get_year_0_99()as Byte 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 6
    I2cstart
    I2cwbyte &B11010001
    I2crbyte A , Nack
    I2cstop
    Ds1307_get_year_0_99 = Makedec(a)
    End Function


    Sub Ds1307_set_year(byval Year_0_99 As Byte ) 'ok
    If Year_0_99 > 99 Then
    Exit Sub
    End If
    Year_0_99 = Makebcd(year_0_99)
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 6
    I2cwbyte Year_0_99
    I2cstop
    End Sub


    Sub Ds1307_external_1hz_on() 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 7
    I2cwbyte &B00010000
    I2cstop
    End Sub

    Sub Ds1307_external_4096hz_on() 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 7
    I2cwbyte &B00010001
    I2cstop
    End Sub

    Sub Ds1307_external_8192hz_on() 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 7
    I2cwbyte &B00010010
    I2cstop
    End Sub

    Sub Ds1307_external_32768hz_on() 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 7
    I2cwbyte &B00010011
    I2cstop
    End Sub

    Sub Ds1307_external_off_sqwe_0() 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 7
    I2cwbyte &B00000000
    I2cstop
    End Sub

    Sub Ds1307_external_off_sqwe_1() 'ok
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte 7
    I2cwbyte &B10000000
    I2cstop
    End Sub

    Function Ds1307_read_ram(byval Ram_byte_index_0_55 As Byte) As Byte 'ok
    If Ram_byte_index_0_55 > 55 Then
    Exit Function
    End If
    Ram_byte_index_0_55 = Ram_byte_index_0_55 + 8
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte Ram_byte_index_0_55
    I2cstart
    I2cwbyte &B11010001
    I2crbyte Ds1307_read_ram , Nack
    I2cstop
    End Function

    Sub Ds1307_write_ram(byval Ram_byte_index_0_55 As Byte , Byval Value As Byte) 'ok
    If Ram_byte_index_0_55 > 55 Then
    Exit Sub
    End If
    Ram_byte_index_0_55 = Ram_byte_index_0_55 + 8
    I2cstart
    I2cwbyte &B11010000
    I2cwbyte Ram_byte_index_0_55
    I2cwbyte Value
    I2cstop
    End Sub
    [/code]

    برگرفته از : www.Rahmanian.US
    - اَللّهُمَّ عَجِّل لِوَلیِّکَ الفَرَج -
    ارتباط با من : ir02x6
    طراحی و ساخت انواع منابع تغذیه سوئیچینگ - SMPS Designer

    دیدگاه


      پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت

      توضیحات اضافی :

      کد:
      '----------------------------------------------- 1.Edit “Sub Ds1307_config()” Config : For ex) ' Soft_I2C config pins--------------------------- Sub Ds1307_config()              'Config ds1307 Waitms 50  Dim A As Byte  Dim B As Byte   Config Scl = Portc.5                 'set scl_i2c pin  Config Sda = Portc.4                 'set sda_i2c pin  'set i2c speed 100khz  Config I2cdelay = 10 End Sub '------------------------------------------------ 2. call Ds1307_config() 3. if is first Run ds1307 then call Ds1307_play() 4.Enjoy! '------------------------------------------ sub procedure Ds1307_config() Init software_i2c  '------------------------------------------ sub Function Ds1307_is_play0_pause1()as Byte
      If return 0 then ds1307 is Pause
      If return 1 then …
      --------------------------------------
      Sub procedure Ds1307_play()
      Play ds1307
      if is first Run ds1307 then call Ds1307_play()
      '------------------------------------------
      Sub procedure Ds1307_pause()
      Pause ds1307 time counter
      '------------------------------------------
      Sub procedure Ds1307_set_second(dim Second_0_59 As Byte)
      Set second
      Second_0_59 = 0 … 59
      '------------------------------------------
      sub Function Ds1307_get_second_0_59() As Byte
      Get second
      Return 0…59
      '------------------------------------------
      Sub procedure Ds1307_set_minute(dim Minute_0_59 As Byte)
      Set minuite
      Minute_0_59 = 0…59
      '------------------------------------------
      sub Function Ds1307_get_minute_0_59() As Byte
      Get minute
      Return 0…59
      '------------------------------------------
      sub Function Ds1307_is_24h_0_12h_1_mode() As Byte
      If ds1307 is 24h mode then
      Return 0 and … return 1
      '------------------------------------------
      Sub procedure Ds1307_set_24h_or_12h_mode(dim _24h_0_12h_1 As Byte)
      Set ds1307 to 24h or 12h mode If _24h_0_12h_1=0 then 24h mode
      Else if _24h_0_12h_1=1 then 12h mode
      '------------------------------------------
      sub Function Ds1307_is_pm_1_am_0() As Byte
      If time is am then return 0 and … return 1 This Function worked in 24h and 12h mode !
      '------------------------------------------
      sub Function Ds1307_get_hour_0_23() As Byte
      Get Hour
      Return 0…23
      This Function worked in 24h and 12h mode !
      '------------------------------------------
      sub Function Ds1307_get_hour_0_12() As Byte
      Get Hour
      Return 0…12
      If is 0:00Am retrun 0
      Then is 12:00pm Return 12
      And otherwise is 1…11 This Function worked in 24h and 12h mode !
      '------------------------------------------
      sub procedure Ds1307_set_hour_0_23(dim Hour_0_23 As Byte )
      Set Hour
      Hour_0_23 = 0…23
      This Function worked in 24h and 12h mode !
      '------------------------------------------
      Sub procedure Ds1307_set_hour_0_11(dim Hour_0_12 , Am0_pm1 As Byte )
      Set Hour
      Hour_0_12 = 0…12
      Am0_pm1 = 0 or 1
      0 is AM and 1 is Pm
      This Function worked in 24h and 12h mode !
      '------------------------------------------
      sub Function Ds1307_get_dayofweek_1_7()as Byte
      Get Day of Week
      Return 1…7
      1 is first day of week and 7 is …
      '------------------------------------------
      Sub procedure Ds1307_set_dayofweek(dim Dayofweek_1_7 As Byte )
      Set day Of week
      Dayofweek_1_7 = 1…7
      1 is first day of week and 7 is …
      '------------------------------------------
      sub Function Ds1307_get_dayofmonth_1_31()as Byte
      Get day Of Month
      Return 1…31 '------------------------------------------
      Sub procedure Ds1307_set_dayofmonth(dim Dayofmonth_1_31 As Byte)
      Set Day Of Month
      Dayofmonth_1_31 = 1…31
      '------------------------------------------
      sub Function Ds1307_get_monthofyear_1_12()as Byte
      Get Month Of Year
      Return 1…12
      1 is “jan” and 12 is “Dec”
      '------------------------------------------
      Sub procedure Ds1307_set_monthofyear(dim Monthofyear_1_12 As Byte )
      Set Month of Year
      Monthofyear_1_12 = 1…12
      1 is “jan” and 12 is “Dec”
      '------------------------------------------
      sub Function Ds1307_get_year_0_99()as Byte
      Get Year
      Return 0…99
      0 is 2000 and 99 is 2099
      '------------------------------------------
      Sub procedure Ds1307_set_year(dim Year_0_99 As Byte )
      Set Year
      Year_0_99 = 0…99
      0 is 2000 and 99 is 2099
      '------------------------------------------
      Sub procedure Ds1307_external_1hz_on()
      External 1hz Clock on
      Please Read Ds1307 DataSheet
      '------------------------------------------
      sub procedure Ds1307_external_4096hz_on()
      External 4096hz Clock on
      Please Read Ds1307 DataSheet
      '------------------------------------------
      sub procedure Ds1307_external_8192hz_on()
      External 8192hz Clock on
      Please Read Ds1307 DataSheet
      '------------------------------------------
      sub procedure Ds1307_external_32768hz_on()
      External 32768hz Clock on
      Please Read Ds1307 DataSheet
      '------------------------------------------
      sub procedure Ds1307_external_off_sqwe_0()
      Set External Clock Off
      And Digital Level of SQWE pin set 0
      Please Read Ds1307 DataSheet
      '------------------------------------------
      sub procedure Ds1307_external_off_sqwe_1()
      Set External Clock Off
      And Digital Level of SQWE pin set 1
      Please Read Ds1307 DataSheet
      '------------------------------------------
      sub Function Ds1307_read_ram(dim Ram_byte_index_0_55 As Byte) As Byte
      Read byte in ds1307 Ram
      Ram_byte_index_0_55= 0…55 address of ram
      '------------------------------------------
      sub procedure Ds1307_write_ram(dim Ram_byte_index_0_55 , Value As Byte)
      Write byte in ds1307 Ram
      Ram_byte_index_0_55= 0…55 address of ram
      Value = Ram value!
      - اَللّهُمَّ عَجِّل لِوَلیِّکَ الفَرَج -
      ارتباط با من : ir02x6
      طراحی و ساخت انواع منابع تغذیه سوئیچینگ - SMPS Designer

      دیدگاه


        پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

        هیچ جوری نمیشه پایه هارو خلوت کرد
        تا بشه هفته هارو هم با ledنمایش داد

        دیدگاه


          پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

          نوشته اصلی توسط 2alborz
          هیچ جوری نمیشه پایه هارو خلوت کرد
          تا بشه هفته هارو هم با ledنمایش داد
          با شیفت رجیستر SIPO تنها با دو پایه میتوانید این کار را کنید ...
          SIPO برگرفته از واژه های Serial-In,Parallel-Out است ...
          یعنی اطلاعات به طور سری وارد و به صورت موازی خارج خواهد شد ...
          شما میتوانید با آی سی های 74HC595 یا 74HC164 کار کنید ...
          موفق باشید
          [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
          معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
          معرفی نرم افزار Codewizard PWM
          با من بیشتر آشنا شوید

          دیدگاه


            پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

            سلام دوستان
            توسط led سون سگمنت ساختم، مدار 7 سگمنت led هم طبق دیتاشیت BQ-M362RD-A طراحی کردم
            اول از هرچیز از آقا وحید که در طراحی pcb و انتخاب قطعات خیلی راهنمایی و کمک کردند تشکر ویژه میکنم
            خب دوستان ما دو pcb برای این ساعت داریم، اولی مربوط به قرار دادن led ها و مقاومت led هاست و دومی هم برای میکرو و قطعات دیگه، اصل
            کاری برد میکرو هستش، دلیل این کار هم مرتب بودن ساعت هستش و اینکه من led هارو روی یک mdf 3 میل سیاه قرار دادم ، طرز کار هم
            اینطوری هست که pcb مربوط به led رو بعد آماده کردنش (بعد اسیدکاری، سوراخکاری نمیکنیم!) به پشت mdf 3 میل (طرف سیاهش نه اون
            طرف پشتش) چسب میزنیم، چسب هم طوری باشه که بعدا با کاتر جدا کنیم، چهار گوش pcb رو با یک قطره چسب 123 به پشت mdf چسب
            میکنیم (طرف مدار مسی pcb هم به بیرون باشه و طرف دیگش رو به پشت mdf چسب میکنیم).
            خب بعد خشک شدن چسب پدهای جا led رو با مته نمره 0.7 یا 0.8 سوراخ میکنیم (فقط جای پایه های led سوراخ میکنیم و بقیه جاهارو بعد
            جدا سازی از mdf سوراخ میکنیم)، خب بعد تمام شدن سوراخ کاری پدهای led ها pcb از mdf جدا میکنیم، این کار برای این هست که led ها با
            mdf و pcb مطابق هم و دقیق باشند.
            خب نوبت به سوراخ کردن پدهای مقاومت و جامپر ها میشه، بعد سوراخ کردن بقیه پدها باید مقاومت ها رو روی pcb لحیم کاری کنیم و جامپرها
            (برای جامپرها من از سیم فلت استفاده کردم). خب بعد این کار هم توسط سیم فلت باید پدهای a تا b و 1 تا 4 و dp و ctp لحیم کاری و بیرون
            بکشیم، خب حالا pcb دقیق بررسی کنید ببینید مشکلی نداره و اشتباهی نکردید یا چیزی جا نزاشتید، بعد بررسی میاید pcb طوری که قسمت
            مسیش به بیرون باشه روی پشت mdf قرار بدید و led هارو داخل پدهای خودشون قرار بدید، بعد قرار دادن تمام led ها از پشت لحیم کاریشون
            کنید.
            طقریبا قسمت سخت و طولانی تموم شد
            بعد این کارها برد اصلی رو هم مونتاژ کنید.
            اینم یک سری عکس از مراحل کار و یک عکس از کار کردن ساعت در آخر :








            اینم ویدیو ساعت :
            تماشای ویدیو ساعت

            هردو pcb :
            دانلود هردو PCB

            برنامه مدار هم میتونید از صفحه اول دانلود کنید (نسخه 2.1)

            PCB مربوط به LED ها شلوغ هست به بزرگی خودتون ببخشید چون عجله ای طراحی کردم، اگر کسی خواست میتونه مقاومت های SMD بزاره که بهتره و راحت عوض میشن اما مدل عادی عوض کردنشون دردسر داره...

            توجه : مقاومت های مربوط به هر 4 تا دیجیت 82 اهم هستند، مقاومت مربوط به دو نقطه وسط (دو نقطه ساعت) هم 82 اهم هستند، مقاومت مربوط به نقطه تاریخ یا همون DP مقدارش 300 اهم هست.

            در آخر هم اینرو بگم اگر عمری باقی باشه حتما در اندازه بزرگتر و زیباتر هم میسازم (فعلا که باید 2 تا ساعت دیگه بسازم، یکی به همین شکل و یکی دیگه در یک طرح زیبا که با CNC روی MDF گل در آورده شده و وسطش ساعته، ازش هم عکس میزارم حتما)
            عکسهای جعبه مدار و ساعت گذاشتم


            نظری داشتید خوشحال میشیم...

            دیدگاه


              پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگم

              نوشته اصلی توسط hamidelectroniic
              نظری داشتید خوشحال میشیم...
              سلام ، تبریک میگم خیلی خوب از آب در اومد ...

              مدار+توضیحات به صفحه اول اضافه شدند :nerd:
              - اَللّهُمَّ عَجِّل لِوَلیِّکَ الفَرَج -
              ارتباط با من : ir02x6
              طراحی و ساخت انواع منابع تغذیه سوئیچینگ - SMPS Designer

              دیدگاه


                پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,می

                سلام
                یک مشکل بوجود اومده
                روی کریستال چسب نزده بودم، امروز چسب زدم دورش رو
                الان که روشنش میکنم وقتی روی نمایش ساعت می افته خود به خود شماره هاش تغییر میکنه اول اهسته بعد سریع میشه
                مثل این میمونه ثانیه بشمره، بعد بره صدم ثانیه نمایش بده!
                البته یه بار اینجوری هست یه دفعه درست میشه و باز اینجوری میشه!
                دور کریستال هم کامل با چسب برق (همون چسب سیاه نواری) چسب زدم و بالاش هم چسب زدم یعنی فقط پایه هاش بیرونه

                دیدگاه


                  پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت

                  نوشته اصلی توسط hamidelectroniic
                  سلام
                  یک مشکل بوجود اومده
                  روی کریستال چسب نزده بودم، امروز چسب زدم دورش رو
                  الان که روشنش میکنم وقتی روی نمایش ساعت می افته خود به خود شماره هاش تغییر میکنه اول اهسته بعد سریع میشه
                  مثل این میمونه ثانیه بشمره، بعد بره صدم ثانیه نمایش بده!
                  البته یه بار اینجوری هست یه دفعه درست میشه و باز اینجوری میشه!
                  دور کریستال هم کامل با چسب برق (همون چسب سیاه نواری) چسب زدن و بالاش هم چسب زدم یعنی فقط پایه هاش بیرونه
                  سلام ، باطری بکاپ رو در بیار مدار رو ریست کن ،،،
                  - اَللّهُمَّ عَجِّل لِوَلیِّکَ الفَرَج -
                  ارتباط با من : ir02x6
                  طراحی و ساخت انواع منابع تغذیه سوئیچینگ - SMPS Designer

                  دیدگاه


                    پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

                    نوشته اصلی توسط ir02x6
                    سلام ، باطری بکاپ رو در بیار مدار رو ریست کن ،،،
                    سلام مهندس عزیز خوبید؟
                    اتفاقا بدون باتری این مشکل دیدم، الان باتری رو میزارم ببینم با باتری هم اینجوری هستش

                    دیدگاه


                      پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

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






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

                      دیدگاه


                        پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

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

                        دیدگاه


                          پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

                          از دوستان کسی میتونه کمکم کنه؟ممنون میشم

                          دیدگاه


                            پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

                            اگر از صفحه اول دانلود کرده باشی واسی هر دو 7سگمنت داره هم کاتد و هم اند

                            دیدگاه


                              پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

                              شرمنده.منظورت دونوع سون سگمنت صفحه اوله؟آخه تو دیتا شیتشون هردو آند مشترکن.راستش من میخوام این مدار رو با سون سگمنت بزرگ 9ولتی که آند مشترکه ببندم.تو مدارم میخوام از ULN2803استفاده کنم ولی ورودی این آی سی مثبته و دیتای این مدار منفیه.

                              دیدگاه


                                پاسخ : [پروژه] ساعت دقیق (باDS1307) + تاریخ (شمسی,میلادی) + دما + سون سگمنت +

                                دوستان لطفا جواب بدن.من این مدار رو با 4 تاسون سگمنت 9ولت تکی آند مشترک بستم.خروجی دیتای میکرو رو به آی سی لچ 74HC573و فعالسازها رو هم برای چهار تا لچ بعنوان ENABLE استفاده کردم.
                                آند سون سگمنتها رو مستقیم به تغذیه 9 ولت زدم.مدار تو حالت دما و ست اولیه خوب کار میکنه ولی ساعت و تاریخ رو درست نشون نمیده.حالا سئوال من اینه که آیا میشه حالت رفرشی این مدار رو بصورت لچ که توضیح دادم استفاده کرد؟

                                دیدگاه

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