اطلاعیه

Collapse
No announcement yet.

کمک در مورد ساعتی که با سون سگمنت و کریستال ساعت نوشتم

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

    #16
    پاسخ : کمک در مورد ساعتی که با سون سگمنت و کریستال ساعت نوشتم

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

    دیدگاه


      #17
      پاسخ : کمک در مورد ساعتی که با سون سگمنت و کریستال ساعت نوشتم

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

      دیدگاه


        #18
        پاسخ : کمک در مورد ساعتی که با سون سگمنت و کریستال ساعت نوشتم

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

        '-------------------------------------------------------------------------------
        ' Filename : colock.bas
        ' Purpose : 7segment colock
        ' Version : 1.0
        ' Support Mail: jshaterian@gmail.com
        ' Author : j.ShATERIAN
        ' Controller : ATMega8
        ' Compiler : BASCOM-AVR Rev. 1.11.7.4
        ' date : 87/05/08
        '-------------------------------------------------------------------------------
        $regfile = "m8def.dat"
        '$sim
        $crystal = 1000000
        '-------------------------------------------
        'Dim H As Byte , M As Byte , S As Byte , Z As Word
        '-------------------------------------------
        Dim Hour1 As Byte , Minut1 As Byte , Secend1 As Byte
        Dim Hour2 As Byte , Minut2 As Byte , Secend2 As Byte
        '-------------------------------------------
        Dim A As Byte
        Dim Month1 As Byte , Day1 As Byte
        Dim Month2 As Byte , Day2 As Byte

        Dim Hour_ring1 As Byte , Hour_ring2 As Byte , Ring_h As Byte , Ring_m As Byte
        Dim Minut_ring1 As Byte , Minut_ring2 As Byte , K As Bit , S As Bit , L As Bit
        '------------------------------------------------------------------
        Dim Hr1 As String * 2 , Mt1 As String * 2 , Sd1 As String * 2
        Dim Hr2 As String * 2 , Mt2 As String * 2 , Sd2 As String * 2
        Dim Hr As String * 2 , Mt As String * 2 , Sd As String * 2 , Q As Byte

        Dim Mh1 As String * 2 , Mh2 As String * 2 , Rh As String * 2 , Rh1 As String * 2 , Rh2 As String * 2
        Dim Dy1 As String * 2 , Dy2 As String * 2 , Rm As String * 2 , Rm1 As String * 2 , Rm2 As String * 2
        Dim Mh As String * 2 , Dy As String * 2 ', Sd As String * 2
        '------------------------------------------------------------------
        Config Clock = Soft , Gosub = Sectic
        Enable Interrupts
        Config Date = Ymd
        Date$ = "00.01.01"
        Time$ = "01:00:00"
        '===========================
        'Config Timer0 = Timer , Prescale = 1024
        'Enable Interrupts
        'Enable Timer0
        ''-----------------------------------------
        'On Timer0 Reftime
        'Start Timer0
        '------------------------------------------
        Config Debounce = 10
        '===========================
        Config Portd = Output
        Config Portc = Output
        Config Pinb.0 = Output
        Config Pinb.1 = Output
        Config Pinb.2 = Input
        Config Pinb.3 = Input
        Config Pinb.4 = Input
        '===========================
        Clk Alias Pinb.1
        Sw1 Alias Pinb.2
        Sw2 Alias Pinb.3
        Sw3 Alias Pinb.4
        '===========================
        En Alias Portc
        7smt Alias Portd
        '===========================
        Portb.0 = 1
        Q = 1

        K = 0
        Gosub Saat
        '---------------------------------------------
        'Readeeprom Dagige , 4
        'If Dagige = 65535 Then Dagige = 0
        'Waitms 8
        '----------------------------------------------
        'Readeeprom Saat , 2
        'If Saat = 65535 Then Saat = 6
        'Waitms 8

        '============================================ ===================================
        Main:

        Do
        S = 1
        Debounce Sw2 , 0 , Tarikh
        Debounce Sw1 , 0 , Seting , Sub
        If L = 1 Then Exit Do
        7smt = Lookup(hour1 , Number)
        En = 1
        Waitms Q
        En = 0
        7smt = Lookup(hour2 , Number)
        En = 2
        Waitms Q
        En = 0
        7smt = Lookup(minut1 , Number)
        En = 4
        Waitms Q
        En = 0
        7smt = Lookup(minut2 , Number)
        En = 8
        Waitms Q
        En = 0
        7smt = Lookup(day1 , Number)
        En = 16
        Waitms Q
        En = 0
        7smt = Lookup(day2 , Number)
        En = 32
        Waitms Q
        En = 0

        If Ring_h = _hour And Ring_m = _min Then
        If K = 1 Then
        Sound Portb.1 , 100 , 50
        End If
        Else
        Portb.1 = 0
        End If

        Loop
        Goto H_set
        '============================================ ======
        Seting:
        S = 0
        Portb.1 = 0
        A = _sec + 2
        Do
        Portb.0 = 0
        Gosub Segment
        If A > 59 Then A = 2
        If _sec = A Then
        A = 0
        L = 1
        Exit Do
        End If
        Loop Until Sw1 = 1
        Return
        '============================================ ======
        Tarikh:
        S = 0
        A = 0
        A = _sec + 5
        If A > 59 Then A = 5
        Do
        Portb.0 = 0
        Debounce Sw1 , 0 , Main
        Debounce Sw2 , 0 , Ring
        Gosub Segment1
        Loop Until A = _sec
        A = 0
        L = 0
        Goto Main
        '============================================ ======
        H_set:
        A = _sec + 15
        If A > 59 Then A = 15
        Do
        En = 2 : 7smt = Lookup(hour2 , Number)
        Waitms 4
        En = 0
        En = 1 : 7smt = Lookup(hour1 , Number)
        Waitms 4
        En = 0
        En = 16 : 7smt = 120
        Waitms 4
        En = 0
        En = 32 : 7smt = 6
        Waitms 4
        En = 0
        Debounce Sw1 , 0 , M_set
        Debounce Sw3 , 0 , Up_h , Sub
        Debounce Sw2 , 0 , Down_h , Sub
        Loop Until A = _sec
        L = 0
        A = 0
        Goto Main
        'Return
        '============================================ ======
        Up_h:
        _hour = _hour + 1
        Gosub Hh
        A = _sec + 15
        Return
        '============================================ ======
        Down_h:
        If _hour = 0 Then _hour = 24
        _hour = _hour - 1
        Gosub Hh
        A = _sec + 15
        Return
        '============================================ ======
        M_set:
        A = _sec + 15
        If A > 59 Then A = 15
        Do
        Portb.0 = 0
        En = 8 : 7smt = Lookup(minut2 , Number)
        Waitms 4
        En = 0
        En = 4 : 7smt = Lookup(minut1 , Number)
        Waitms 4
        En = 0
        En = 16 : 7smt = 120
        Waitms 4
        En = 0
        En = 32 : 7smt = 6
        Waitms 4
        En = 0
        Debounce Sw1 , 0 , Mh_set
        Debounce Sw3 , 0 , Up_m , Sub
        Debounce Sw2 , 0 , Down_m , Sub
        Loop Until A = _sec
        L = 0
        A = 0
        Goto Main
        '============================================ ======
        Up_m:
        _min = _min + 1
        Gosub Mm
        A = _sec + 15
        Return
        '============================================ ======
        Down_m:
        If _min = 0 Then _min = 60
        _min = _min - 1
        Gosub Mm
        A = _sec + 15
        Return
        '============================================ ======
        Mh_set:
        A = _sec + 15
        If A > 59 Then A = 15
        Do
        Portb.0 = 0
        En = 2 : 7smt = Lookup(month2 , Number)
        Waitms 4
        En = 0
        En = 1 : 7smt = Lookup(month1 , Number)
        Waitms 4
        En = 0
        En = 16 : 7smt = 94
        Waitms 4
        En = 0
        En = 32 : 7smt = 119
        Waitms 4
        En = 0
        Debounce Sw1 , 0 , Dy_set
        Debounce Sw3 , 0 , Up_mh , Sub
        Debounce Sw2 , 0 , Down_mh , Sub
        Loop Until A = _sec
        A = 0
        L = 0
        Goto Main

        '============================================ ======
        Up_mh:
        _month = _month + 1
        Gosub Mth
        A = _sec + 15
        Return
        '============================================ ======
        Down_mh:
        _month = _month - 1
        If _month = 0 Then _month = 12

        Gosub Mth
        A = _sec + 15
        Return

        '============================================ ======
        Dy_set:
        A = _sec + 15
        If A > 59 Then A = 15
        Do
        Portb.0 = 0
        En = 8 : 7smt = Lookup(day2 , Number)
        Waitms 4
        En = 0
        En = 4 : 7smt = Lookup(day1 , Number)
        Waitms 4
        En = 0
        En = 16 : 7smt = 94
        Waitms 4
        En = 0
        En = 32 : 7smt = 119
        Waitms 4
        En = 0
        Debounce Sw1 , 0 , Ring_h_set
        Debounce Sw3 , 0 , Up_dy , Sub
        Debounce Sw2 , 0 , Down_dy , Sub
        Loop Until A = _sec
        A = 0
        L = 0
        Goto Main
        '============================================ ======
        Up_dy:
        _day = _day + 1
        Gosub Ddy
        A = _sec + 15
        Return
        '============================================ ======
        Down_dy:
        _day = _day - 1
        If _day = 0 Then _day = 31

        Gosub Ddy
        A = _sec + 15
        Return
        '============================================ ======
        Ring:
        A = 0
        A = _sec + 5
        If A > 59 Then A = 5
        If K = 0 Then
        Hour_ring1 = 11
        Hour_ring2 = 11
        Minut_ring1 = 11
        Minut_ring2 = 11
        End If
        Do
        Portb.0 = 1
        Debounce Sw2 , 0 , Main
        Debounce Sw3 , 0 , Ringoff , Sub
        Gosub Segment_ring
        Loop Until A = _sec
        A = 0
        L = 0
        Goto Main
        '============================================ ======
        Ring_h_set:
        A = _sec + 15
        If A > 59 Then A = 15
        Do
        Portb.0 = 0
        En = 2 : 7smt = Lookup(hour_ring2 , Number)
        Waitms 4
        En = 0
        En = 1 : 7smt = Lookup(hour_ring1 , Number)
        Waitms 4
        En = 0
        En = 16 : 7smt = 119
        Waitms 4
        En = 0
        En = 32 : 7smt = 56
        Waitms 4
        En = 0
        Debounce Sw1 , 0 , Ring_m_set
        Debounce Sw3 , 0 , Up_ring_h , Sub
        Debounce Sw2 , 0 , Down_ring_h , Sub
        Loop Until A = _sec
        A = 0
        L = 0
        Goto Main
        '============================================ ======
        Up_ring_h:
        K = 1
        Ring_h = Ring_h + 1
        Gosub Ringh
        A = _sec + 15
        Return
        '============================================ ======
        Down_ring_h:
        K = 1
        If Ring_h = 0 Then Ring_h = 24
        Ring_h = Ring_h - 1
        Gosub Ringh
        A = _sec + 15
        Return
        '============================================ ======
        Ring_m_set:
        L = 0
        A = _sec + 15
        If A > 59 Then A = 15
        Do
        Portb.0 = 0
        En = 8 : 7smt = Lookup(minut_ring2 , Number)
        Waitms 4
        En = 0
        En = 4 : 7smt = Lookup(minut_ring1 , Number)
        Waitms 4
        En = 0
        En = 16 : 7smt = 119
        Waitms 4
        En = 0
        En = 32 : 7smt = 56
        Waitms 4
        En = 0
        Debounce Sw1 , 0 , Main
        Debounce Sw3 , 0 , Up_ring_m , Sub
        Debounce Sw2 , 0 , Down_ring_m , Sub
        Loop Until A = _sec
        A = 0
        Goto Main
        '============================================ ======
        Up_ring_m:
        K = 1
        Ring_m = Ring_m + 1
        Gosub Ringm
        A = _sec + 15
        Return
        '============================================ ======
        Down_ring_m:
        K = 1
        If Ring_m = 0 Then Ring_m = 60
        Ring_m = Ring_m - 1
        Gosub Ringm
        A = _sec + 15
        Return
        '============================================ ======
        Ringoff:
        Toggle K
        If K = 0 Then
        Hour_ring1 = 11
        Hour_ring2 = 11
        Minut_ring1 = 11
        Minut_ring2 = 11
        Else
        Gosub Ringh
        Gosub Ringm
        End If
        Return

        '============================================ ======
        Sectic:

        If _sec = 0 Then Gosub Saat
        If S = 1 Then Toggle Portb.0

        Return
        '-------------------------------------------------------
        Saat:

        If _hour > 9 Then
        Hr = Str(_hour)
        Hr1 = Mid(hr , 1 , 1) : Hour1 = Val(hr1)
        Hr2 = Mid(hr , 2 , 1) : Hour2 = Val(hr2)
        Else
        Hour1 = 10
        Hour2 = _hour
        End If


        If _min > 9 Then
        Mt = Str(_min)
        Mt1 = Mid(mt , 1 , 1) : Minut1 = Val(mt1)
        Mt2 = Mid(mt , 2 , 1) : Minut2 = Val(mt2)
        Else
        Minut1 = 0
        Minut2 = _min
        End If



        If _month > 9 Then
        Mh = Str(_month)
        Mh1 = Mid(mh , 1 , 1) : Month1 = Val(mh1)
        Mh2 = Mid(mh , 2 , 1) : Month2 = Val(mh2)
        Else
        Month1 = 10
        Month2 = _month
        End If



        If _day > 9 Then
        Dy = Str(_day)
        Dy1 = Mid(dy , 1 , 1) : Day1 = Val(dy1)
        Dy2 = Mid(dy , 2 , 1) : Day2 = Val(dy2)
        Else
        Day1 = 11
        Day2 = _day
        End If

        If Ring_h > 9 Then
        Rh = Str(ring_h)
        Rh1 = Mid(rh , 1 , 1) : Hour_ring1 = Val(rh1)
        Rh2 = Mid(rh , 2 , 1) : Hour_ring2 = Val(rh2)
        Else
        Hour_ring1 = 10
        Hour_ring2 = Ring_h
        End If


        If Ring_m > 9 Then
        Rm = Str(ring_m)
        Rm1 = Mid(rm , 1 , 1) : Minut_ring1 = Val(rm1)
        Rm2 = Mid(rm , 2 , 1) : Minut_ring2 = Val(rm2)
        Else
        Minut_ring1 = 0
        Minut_ring2 = Ring_m
        End If


        Return




        '-------------------------------------------------------

        Hh:
        If _hour > 23 Then _hour = 0
        If _hour > 9 Then
        Hr = Str(_hour)
        Hr1 = Mid(hr , 1 , 1) : Hour1 = Val(hr1)
        Hr2 = Mid(hr , 2 , 1) : Hour2 = Val(hr2)
        Else
        Hour1 = 10
        Hour2 = _hour
        End If
        Return

        Mm:
        If _min > 59 Then _min = 0
        If _min > 9 Then
        Mt = Str(_min)
        Mt1 = Mid(mt , 1 , 1) : Minut1 = Val(mt1)
        Mt2 = Mid(mt , 2 , 1) : Minut2 = Val(mt2)
        Else
        Minut1 = 0
        Minut2 = _min
        End If
        _sec = 0
        Return





        Mth:
        If _month > 12 Then _month = 1
        If _month > 9 Then
        Mh = Str(_month)
        Mh1 = Mid(mh , 1 , 1) : Month1 = Val(mh1)
        Mh2 = Mid(mh , 2 , 1) : Month2 = Val(mh2)
        Else
        Month1 = 10
        Month2 = _month
        End If
        Return

        Ddy:
        If _day > 31 Then _day = 1
        If _day > 9 Then
        Dy = Str(_day)
        Dy1 = Mid(dy , 1 , 1) : Day1 = Val(dy1)
        Dy2 = Mid(dy , 2 , 1) : Day2 = Val(dy2)
        Else
        Day1 = 11
        Day2 = _day
        End If
        Return

        Ringh:
        If Ring_h > 23 Then Ring_h = 0
        If Ring_h > 9 Then
        Rh = Str(ring_h)
        Rh1 = Mid(rh , 1 , 1) : Hour_ring1 = Val(rh1)
        Rh2 = Mid(rh , 2 , 1) : Hour_ring2 = Val(rh2)
        Else
        Hour_ring1 = 10
        Hour_ring2 = Ring_h
        End If
        Return

        Ringm:
        If Ring_m > 59 Then Ring_m = 0
        If Ring_m > 9 Then
        Rm = Str(ring_m)
        Rm1 = Mid(rm , 1 , 1) : Minut_ring1 = Val(rm1)
        Rm2 = Mid(rm , 2 , 1) : Minut_ring2 = Val(rm2)
        Else
        Minut_ring1 = 0
        Minut_ring2 = Ring_m
        End If

        Return





        Segment:
        En = 1 : 7smt = Lookup(hour1 , Number)
        Waitms Q
        En = 0
        En = 2 : 7smt = Lookup(hour2 , Number)
        Waitms Q
        En = 0
        En = 4 : 7smt = Lookup(minut1 , Number)
        Waitms Q
        En = 0
        En = 8 : 7smt = Lookup(minut2 , Number)
        Waitms Q
        En = 0
        En = 16 : 7smt = Lookup(day1 , Number)
        Waitms Q
        En = 0
        En = 32 : 7smt = Lookup(day2 , Number)
        Waitms Q
        En = 0
        Return


        Segment1:
        En = 1 : 7smt = Lookup(month1 , Number)
        Waitms Q
        En = 0
        En = 2 : 7smt = Lookup(month2 , Number)
        Waitms Q
        En = 0
        En = 4 : 7smt = Lookup(day1 , Number)
        Waitms Q
        En = 0
        En = 8 : 7smt = Lookup(day2 , Number)
        Waitms Q
        En = 0
        En = 16 : 7smt = 94
        Waitms Q
        En = 0
        En = 32 : 7smt = 119
        Waitms Q
        En = 0
        Return


        Segment_ring:
        En = 1 : 7smt = Lookup(hour_ring1 , Number)
        Waitms Q
        En = 0
        En = 2 : 7smt = Lookup(hour_ring2 , Number)
        Waitms Q
        En = 0
        En = 4 : 7smt = Lookup(minut_ring1 , Number)
        Waitms Q
        En = 0
        En = 8 : 7smt = Lookup(minut_ring2 , Number)
        Waitms Q
        En = 0
        En = 16 : 7smt = 119
        Waitms Q
        En = 0
        En = 32 : 7smt = 56
        Waitms Q
        En = 0
        Return
        '----------------------- DTAT LOOKUP TABLE ------------------------------------
        Number:
        Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 39 , 127 , 111 , 0 , 64
        '-----0---1----2----3-----4-----5-----6-----7----8-----9

        Alpha:
        Data 119 , 94 , 56 , 6 , 120
        '-----A-----d----L----I----t




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

        دیدگاه


          #19
          پاسخ : کمک در مورد ساعتی که با سون سگمنت و کریستال ساعت نوشتم

          سلام
          ممنون
          نگاه ش می کنم
          انشاالله که بدردمون می خوره
          خیلی تشکر
          مولا علی (ع) میفرمایند : آسوده باش , آستین هارا بالا بزن , بر خدا توکل کن , آنگاه خدا را خواهی دید که زودتر از تو دست به کار شده است .

          دیدگاه

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