اطلاعیه

Collapse
No announcement yet.

ساختن ساعت

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

    #91
    پاسخ : ساختن ساعت

    نه با باتری بکاپ ساختمش.
    ساعت رو هم با lcd و هم با سون سگمنت ساختمش و هر دوتا خوب کار می کنه :agree:
    بازم متشکرم. :job:
    انا لله و انا اليه الراجعون

    دیدگاه


      #92
      پاسخ : ساختن ساعت

      سلام
      توی درس آز ریز از ما خواستن ساعتی بسازیم با ds1307 و با atmega32همچنین استادمون خواسته با صفحه کلید زمان وتاریخ بدیم و طبق زمان وتاریخ مورد نظر شروع کنه به زنگ زدن.خواهش می کنم هر چه سریعتر کمکم کنیدددد.ممنونممممممممم

      دیدگاه


        #93
        پاسخ : ساختن ساعت

        سلام.بیا رفیق. این پروژه ساعت زنگدار منه به عنوان پروژه ساختم و تحویل دادم:
        http://up.iranblog.com/images/it2ixfiagdahx11zmjqu.zip

        با اتمگا8 و ds1307 و سون سگمنت و کلید ساختم.فعلا دست به نقد اینو داشته باش. :job:

        انا لله و انا اليه الراجعون

        دیدگاه


          #94
          پاسخ : ساختن ساعت

          مرسی.اما مهم صفحه کلید.لطف کنید کمکم کنید با صفحه کلید راه بندازم

          دیدگاه


            #95
            پاسخ : ساختن ساعت

            سلام دوستان نیاز به کمکم فوری تون دارممممممممممممممممممم.
            کمکم کنید واسه خطاشششششششششششششششششششش
            کد:
            $regfile = "M32def.dat"
            $crystal = 12000000
            $baud = 19200
            '$lib "mcsbyte.1bx"
            $lib "mcsbyte.lbx"                     ' for smaller code
            $lib "ds1307clock.lib"                   ' modified lib
            $framesize = 16
            $hwstack = 24
            $swstack = 16
            
            '$lib "ds1307clock.lib"
            Config Sda = Portc.1
            Config Scl = Portc.0
            
            Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
            Config Lcd = 16 * 4
            Config Kbd = Portb , Debounce = 70 , Delay = 50
            Config Portd.5 = Output
            
            Const Ds1307w = &HD0                    ' Addresses of Ds1307 clock
            Const Ds1307r = &HD1
            
            Config Clock = User
            Dim Weekday As Byte
            Dim Key As Byte
            
            Dim Day As Byte
            Dim Day_1 As Byte
            Dim Day_10 As Byte
            Dim Month As Byte
            Dim Month_1 As Byte
            Dim Month_10 As Byte
            Dim Year As Word
            Dim Year_1 As Byte
            Dim Year_10 As Byte
            Dim Year_100 As Byte
            Dim Year_1000 As Byte
            Dim Hour As Byte
            Dim Hour_1 As Byte
            Dim Hour_10 As Byte
            Dim Minute As Byte
            Dim Minute_1 As Byte
            Dim Minute_10 As Byte
            Dim Second As Byte
            Dim Second_1 As Byte
            Dim Second_10 As Byte
            
            Dim Temp_byte As Byte
            Dim Temp_word As Word
            Dim Temp_string As String * 8
            
            Cursor Off
            Print "DS1307"
            Waitms 100
            
            
            
            'Time$ = "23:58:59"                     '
            'Date$ = "11-13-02"
             Do                             ' 13 november 2002
             Print "Date Time : " ; Date$ ; " " ; Time$
             Waitms 500
             Locate 1 , 1 : Lcd "tarikh:" : Locate 1 , 8 : Lcd Date$
             Locate 2 , 1 : Lcd "time:" : Locate 2 , 8 : Lcd Time$
            
            
              'Cls
             Locate 3 , 1 : Lcd "Enter Year:"
              Do
               Gosub Get_key
               If Key = 10 Then
                 Year = Year_1000 * 1000
                 Temp_word = Year_100 * 100
                 Year = Year + Temp_word
                 Temp_word = Year_10 * 10
                 Year = Year + Temp_word
                 Year = Year + Year_1
                 If Year > 2000 And Year < 2050 Then Exit Do
                 If Year <= 2000 Or Year => 2050 Then
                  Cls
                  Lcd "  Year Error"
                  Locate 2 , 1
                  Lcd "Year=2001...2050"
                  Wait 3
                  Cls
                  Lcd "Enter Year:"
                  Locate 2 , 1
                  Lcd Year
                 End If
               End If
               If Key < 10 Then
                 Year_1000 = Year_100
                 Year_100 = Year_10
                 Year_10 = Year_1
                 Year_1 = Key
            
                 Year = Year_1000 * 1000
                 Temp_word = Year_100 * 100
                 Year = Year + Temp_word
                 Temp_word = Year_10 * 10
                 Year = Year + Temp_word
                 Year = Year + Year_1
            
                 Cls
                 Lcd "Enter Year:"
                 Locate 2 , 1
                 Lcd Year
            
               End If
              Loop
            
              Cls
              Lcd "Enter Month:"
              Locate 2 , 1
              Lcd Month
            
              Do
               Gosub Get_key
               If Key = 10 Then
                 Month = Month_10 * 10
                 Month = Month + Month_1
                 If Month > 1 And Month < 13 Then Exit Do
                 If Month = 0 Or Month > 12 Then
                  Cls
                  Lcd "  Month Error"
                  Locate 2 , 1
                  Lcd "Month=1...12"
                  Wait 3
                  Cls
                  Lcd "Enter Month:"
                  Locate 2 , 1
                  Lcd Month
                 End If
               End If
               If Key < 10 Then
                 Month_10 = Month_1
                 Month_1 = Key
            
                 Month = Month_10 * 10
                 Month = Month + Month_1
            
                 Cls
                 Lcd "Enter Month:"
                 Locate 2 , 1
                 Lcd Month
               End If
              Loop
            
              Cls
              Lcd "Enter Day:"
              Locate 2 , 1
              Lcd Day
              Do
               Gosub Get_key
               If Key = 10 Then
                 Day = Day_10 * 10
                 Day = Day + Day_1
                 If Day > 1 And Day < 32 Then Exit Do
                 If Day = 0 Or Day > 31 Then
                  Cls
                  Lcd "  Day Error"
                  Locate 2 , 1
                  Lcd "Day=1...31"
                  Wait 3
                  Cls
                  Lcd "Enter Day:"
                  Locate 2 , 1
                  Lcd Day
                 End If
               End If
               If Key < 10 Then
                 Day_10 = Day_1
                 Day_1 = Key
            
                 Day = Day_10 * 10
                 Day = Day + Day_1
            
                 Cls
                 Lcd "Enter Day:"
                 Locate 2 , 1
                 Lcd Day
               End If
              Loop
            
              Cls
              Lcd "Enter Hour:"
              Locate 2 , 1
              Lcd Hour
              Do
               Gosub Get_key
               If Key = 10 Then
                 Hour = Hour_10 * 10
                 Hour = Hour + Hour_1
                 If Day < 24 Then Exit Do
                 If Day > 23 Then
                  Cls
                  Lcd "  Hour Error"
                  Locate 2 , 1
                  Lcd "Hour=0...23"
                  Wait 3
                  Cls
                  Lcd "Enter Hour:"
                  Locate 2 , 1
                  Lcd Hour
                 End If
               End If
               If Key < 10 Then
                 Hour_10 = Hour_1
                 Hour_1 = Key
            
                 Hour = Hour_10 * 10
                 Hour = Hour + Hour_1
            
                 Cls
                 Lcd "Enter Hour:"
                 Locate 2 , 1
                 Lcd Hour
               End If
              Loop
            
              Cls
              Lcd "Enter Minute:"
              Locate 2 , 1
              Lcd Minute
              Do
               Gosub Get_key
               If Key = 10 Then
                 Minute = Minute_10 * 10
                 Minute = Minute + Minute_1
                 If Minute < 60 Then Exit Do
                 If Minute > 59 Then
                  Cls
                  Lcd " Minute Error"
                  Locate 2 , 1
                  Lcd "Minute=0...59"
                  Wait 3
                  Cls
                  Lcd "Enter Minute:"
                  Locate 2 , 1
                  Lcd Minute
                 End If
               End If
               If Key < 10 Then
                 Minute_10 = Minute_1
                 Minute_1 = Key
            
                 Minute = Minute_10 * 10
                 Minute = Minute + Minute_1
            
                 Cls
                 Lcd "Enter Minute:"
                 Locate 2 , 1
                 Lcd Minute
               End If
              Loop
            
              Cls
              Lcd "Enter Second:"
              Locate 2 , 1
              Lcd Second
              Do
               Gosub Get_key
               If Key = 10 Then
                 Second = Second_10 * 10
                 Second = Second + Second_1
                 If Second < 60 Then Exit Do
                 If Second > 59 Then
                  Cls
                  Lcd " Second Error"
                  Locate 2 , 1
                  Lcd "Second=0...59"
                  Wait 3
                  Cls
                  Lcd "Enter Second:"
                  Locate 2 , 1
                  Lcd Second
                 End If
               End If
               If Key < 10 Then
                 Second_10 = Second_1
                 Second_1 = Key
            
                 Second = Second_10 * 10
                 Second = Second + Second_1
            
                 Cls
                 Lcd "Enter Second:"
                 Locate 2 , 1
                 Lcd Second
               End If
              Loop
            
            
              Do
            
            
              Cls
              Gosub Getdatetime
              Temp_word = _year + 2000
              Lcd Temp_word ; "/" ; _month ; "/" ; _day ;
              Locate 2 , 1
              Lcd _hour ; ":" ; _min ; ":" ; _sec
              Wait 1
              If Temp_word = Year And _
                _month = Month And _
                _day = Day And _
                _hour = Hour And _
                _min = Minute  And _
                _sec = Second _
                Then Set Portd.5
                                    'Portd.5 = 1
            
              Loop
            
            
            
            
            Loop
            
            End
            
            Get_key:
              Do
               Temp_byte = Getkbd()
              Loop Until Temp_byte <> 16
            
              Select Case Temp_byte
               Case 0
                 Key = 1
               Case 1
                 Key = 2
               Case 2
                 Key = 3
               Case 3
                 Key = 11
               Case 4
                 Key = 4
               Case 5
                 Key = 5
               Case 6
                 Key = 6
               Case 7
                 Key = 11
               Case 8
                 Key = 7
               Case 9
                 Key = 8
               Case 10
                 Key = 9
               Case 11
                 Key = 11
               Case 12
                 Key = 11
               Case 13
                 Key = 0
               Case 14
                 Key = 11
               Case 15
                 Key = 10
              End Select
              'Cls
            
              Do
               Temp_byte = Getkbd()
              Loop Until Temp_byte = 16
            
            Return
            
            
            
            Getdatetime:
             I2cstart
             I2cwbyte Ds1307w
             I2cwbyte 0
            
             I2cstart
             I2cwbyte Ds1307r
             I2crbyte _sec , Ack
             I2crbyte _min , Ack
             I2crbyte _hour , Ack
             I2crbyte Weekday , Ack
             I2crbyte _day , Ack
             I2crbyte _month , Ack
             I2crbyte _year , Nack
             I2cstop
             _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
             _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
            Return
            
            Setdate:
             _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
             I2cstart
             I2cwbyte Ds1307w
             I2cwbyte 4
             I2cwbyte _day
             I2cwbyte _month
             I2cwbyte _year
             I2cstop
            Return
            
            Settime:
             _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
             I2cstart
             I2cwbyte Ds1307w
             I2cwbyte 0
             I2cwbyte _sec
             I2cwbyte _min
             I2cwbyte _hour
             I2cstop
            Return

            دیدگاه


              #96
              پاسخ : ساختن ساعت

              :angry: :angry: :angry: :angry: :angry: :angry:بابابرنامه ام گذاشتمممممممم کسی نیست کمکم کنهههههههههههههه؟

              دیدگاه


                #97
                پاسخ : ساختن ساعت

                کد:
                $regfile = "M32def.dat"
                $crystal = 12000000
                $baud = 19200
                '$lib "mcsbyte.1bx"
                $lib "mcsbyte.lbx"                     ' for smaller code
                $lib "ds1307clock.lib"                   ' modified lib
                $framesize = 16
                $hwstack = 24
                $swstack = 16
                
                '$lib "ds1307clock.lib"
                Config Sda = Portc.1
                Config Scl = Portc.0
                
                Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
                Config Lcd = 16 * 4
                Config Kbd = Portb , Debounce = 70 , Delay = 50
                Config Portd.5 = Output
                
                Const Ds1307w = &HD0                    ' Addresses of Ds1307 clock
                Const Ds1307r = &HD1
                
                Config Clock = User
                Dim Weekday As Byte
                Dim Key As Byte
                
                Dim Day As Byte
                Dim Day_1 As Byte
                Dim Day_10 As Byte
                Dim Month As Byte
                Dim Month_1 As Byte
                Dim Month_10 As Byte
                Dim Year As Word
                Dim Year_1 As Byte
                Dim Year_10 As Byte
                Dim Year_100 As Byte
                Dim Year_1000 As Byte
                Dim Hour As Byte
                Dim Hour_1 As Byte
                Dim Hour_10 As Byte
                Dim Minute As Byte
                Dim Minute_1 As Byte
                Dim Minute_10 As Byte
                Dim Second As Byte
                Dim Second_1 As Byte
                Dim Second_10 As Byte
                
                Dim Temp_byte As Byte
                Dim Temp_word As Word
                Dim Temp_string As String * 8
                
                Cursor Off
                Print "DS1307"
                Waitms 100
                
                
                
                'Time$ = "23:58:59"                     '
                'Date$ = "11-13-02"
                 Do                             ' 13 november 2002
                 Print "Date Time : " ; Date$ ; " " ; Time$
                 Waitms 500
                 Locate 1 , 1 : Lcd "tarikh:" : Locate 1 , 8 : Lcd Date$
                 Locate 2 , 1 : Lcd "time:" : Locate 2 , 8 : Lcd Time$
                
                
                  'Cls
                 Locate 3 , 1 : Lcd "Enter Year:"
                
                
                
                
                
                
                Loop
                
                End
                
                Get_key:
                  Do
                   Temp_byte = Getkbd()
                  Loop Until Temp_byte <> 16
                
                  Select Case Temp_byte
                   Case 0
                     Key = 1
                   Case 1
                     Key = 2
                   Case 2
                     Key = 3
                   Case 3
                     Key = 11
                   Case 4
                     Key = 4
                   Case 5
                     Key = 5
                   Case 6
                     Key = 6
                   Case 7
                     Key = 11
                   Case 8
                     Key = 7
                   Case 9
                     Key = 8
                   Case 10
                     Key = 9
                   Case 11
                     Key = 11
                   Case 12
                     Key = 11
                   Case 13
                     Key = 0
                   Case 14
                     Key = 11
                   Case 15
                     Key = 10
                  End Select
                  'Cls
                
                  Do
                   Temp_byte = Getkbd()
                  Loop Until Temp_byte = 16
                
                Return
                
                
                
                Getdatetime:
                 I2cstart
                 I2cwbyte Ds1307w
                 I2cwbyte 0
                
                 I2cstart
                 I2cwbyte Ds1307r
                 I2crbyte _sec , Ack
                 I2crbyte _min , Ack
                 I2crbyte _hour , Ack
                 I2crbyte Weekday , Ack
                 I2crbyte _day , Ack
                 I2crbyte _month , Ack
                 I2crbyte _year , Nack
                 I2cstop
                 _sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
                 _day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
                Return
                
                Setdate:
                 _day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)
                 I2cstart
                 I2cwbyte Ds1307w
                 I2cwbyte 4
                 I2cwbyte _day
                 I2cwbyte _month
                 I2cwbyte _year
                 I2cstop
                Return
                
                Settime:
                 _sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)
                 I2cstart
                 I2cwbyte Ds1307w
                 I2cwbyte 0
                 I2cwbyte _sec
                 I2cwbyte _min
                 I2cwbyte _hour
                 I2cstop
                Return
                دوست من شما توی برنامه نویسی مشکل دارین
                نیباید چندین تا do loop داخل هم بزارین
                یا باید جوری بنویسین که وقتی از یکی خارج شدین یه بعدی برین
                علم چندانکه بيشتر خواني چون عمل در تو نيست ناداني

                دیدگاه


                  #98
                  پاسخ : ساختن ساعت

                  مرسی دوست عزیز اما وقتی خطاهای DO LOOP هم برطرف میشه از این'$lib "mcsbyte.1bx" خطا میگیره غیر فعالش میکنم تو عمل ساعت کار نمی کنه گیججججججججججججج شدممممممممم کمکممممممممم کنید :cry2: :cry2:

                  دیدگاه


                    #99
                    پاسخ : ساختن ساعت

                    سلام.من کیبورد رو بهش اضافه کردم و می تونی با کیبورد ساعت رو تنظیم کنی.تا بعد از ظهر مدار زنگ رو هم کامل می کنم و همش رو واست می زارم.....خونسرد باش
                    انا لله و انا اليه الراجعون

                    دیدگاه


                      پاسخ : ساختن ساعت

                      متشکرمممممممممم .واقعا درست می شه؟؟؟؟؟؟؟ :surprised:

                      دیدگاه


                        پاسخ : ساختن ساعت

                        دوستای عزیز می دونید مشکل برنامه ام چیهه؟؟؟؟ خودم اومدم برنامه ds1307نوشتم پروگرامم کردممم اما رو ال سی دی کد درستی نشون نمیداد اومدم ازsampel بسکام استفاده کردم برنامه ام را داخلش گذاشتم خطا میده وقتی اینو غیر فعال می کنم$lib "mcsbyte.lbx" خطارفع می شه اما در عمل درست کار نمی کنه من فهمیدم باید این دستور باشه که تو پیاده سازی دزست کار کنه اما تو نرم افزاری خطا میدههههه کمکم کنید که گیج شدم اساسییییییییی :cry: :cry: :cry:

                        دیدگاه


                          پاسخ : ساختن ساعت

                          اینم برنامه شما با فایل پروتئوس که کار میکنه از همین فایل hex استفاده کن ببین جواب میده اینم فایل
                          http://www.persiangig.com/pages/download/?dl=http://zavar.persiangig.com/document/clock.rar

                          دیدگاه


                            پاسخ : ساختن ساعت

                            من پروگرام کردم رو بردم گذاشتم هیچ کاری انجام نمیده فقط رو ال سی دی نوشته00/00/00 ببین من بردم درست وصل کردم چون خود برنامه sampelo پروگرام می کنم درست نشون میده این برنامه مشکل نرم افزاری داره الان شما اومدید اینو حذف کردید با حذف این '$lib "mcsbyte.1bx" ساعت کار نمی کنه دوست عزیز کمکممم کنیدددددد من بیشتر راهها رو رفتمممممممممم :angry: :angry: :angry: این راهها هیچ کدوم جواب ندادههههه

                            دیدگاه


                              پاسخ : ساختن ساعت

                              با سلام این را امتحان کن قبلش اینا را رو سخت افزارت چک کن اگر بازم جواب نداد بگو
                              1- در مثال بیسکام sda,scl به پورت d وصل شده در برنامه شما بهportc چک کن در عمل پایه ها را درست وصل کرده باشی
                              2-شما پایه های rs, e ال سی دی را به پایه های کلاک خارجی وصل کردی که اگر از کلاک خارجی استفاده میکنی مشکل ساز میشه
                              http://www.persiangig.com/pages/download/?dl=http://zavar.persiangig.com/document/clock.rar
                              منتظرم خبر بدی در ضمن تو پروتئوس جواب میده در عمل هم باید جواب بده

                              دیدگاه


                                پاسخ : ساختن ساعت

                                دوست عزیز خیلی لطف کردی الان ساعتو درست نمایش می ده مشکلش حل شد :wow: ولی 1چیزی هست که داخل do loop هست وبه gosub date time mire دیگه داخل get keyنمیره صفحه کلید کار نمی کنه :sad:1کی از مشکلات حل شد اما الان مشکل صفحه کلید :cry:اوکییییی

                                دیدگاه

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