اطلاعیه

Collapse
No announcement yet.

کمک در ساخت ساعت

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

    کمک در ساخت ساعت

    سلام
    من برنامه ساعت با ds1307 رو نوشتم تو پروتئوس کار میکنه هیچ مشکلی هم نداره ولی رو برد میبندمش اصلن کار نمیکنه باتری پشتیبان هم گذاشتم برنامه رو میزارم ببینین مشکل از برنامه هست یا چیزه دیگه اییه
    اگه کمک کنین ممنون میشم
    کد:
    $regfile = "M16def.dat"
    $crystal = 8000000
    Dim Minute As Word
    Dim Hour As Word
    Dim K As Word
    Config Scl = Portc.0
    Config Sda = Portc.1
    Dim _sec As Byte
    Dim _min As Byte
    Dim _hour As Byte
    Dim Strg1 As Word
    Dim Strg2 As Word
    Dim Strg3 As Word
    Dim Saniye1 As Word
    Dim Saniye2 As Word
    Dim Daghighe1 As Word
    Dim Daghighe2 As Word
    Dim Saat1 As Word
    Dim Saat2 As Word
    Config Portd = Output
    Config Portb = Output
    Const Ds1307w = &HD0
    Const Ds1307r = &HD1
    Config Pinc.0 = Input
    Config Pinc.1 = Input
    Config Pina.0 = Input
    Config Pina.1 = Input
    'Pina.0 Alias Minute
    'Pina.1 Alias Hour
    
    Do
    Gosub Settime
    Debounce Pina.0 , 0 , Main
    
    Strg1 = Makedec(_sec)
    Strg2 = Makedec(_min)
    Strg3 = Makedec(_hour)
    Saniye1 = Strg1 / 10
    Saniye2 = Strg1 Mod 10
    Daghighe1 = Strg2 / 10
    Daghighe2 = Strg2 Mod 10
    Saat1 = Strg3 / 10
    Saat2 = Strg3 Mod 10
    Portb = &B00000001
    Portd = Lookup(saniye2 , Lable1)
    Waitms 5
    Portb = &B00000010
    Portd = Lookup(saniye1 , Lable1)
    Waitms 5
    Portb = &B00000100
    Portd = Lookup(daghighe2 , Lable1)
    Waitms 5
    Portb = &B00001000
    Portd = Lookup(daghighe1 , Lable1)
    Waitms 5
    Portb = &B00010000
    Portd = Lookup(saat2 , Lable1)
    Waitms 5
    Portb = &B00100000
    Portd = Lookup(saat1 , Lable1)
    Waitms 5
    
    Loop
    End
    
    
    Minute:
    Incr _min
    If _min = 10 Then
    _min = 0
    End If
    Return
    
    
    Hour:
    Incr _hour
    Return
    
    
    
    Main:
    Gosub Getdatetime
    Strg1 = Makedec(_sec)
    Strg2 = Makedec(_min)
    Strg3 = Makedec(_hour)
    Saniye1 = Strg1 / 10
    Saniye2 = Strg1 Mod 10
    Daghighe1 = Strg2 / 10
    Daghighe2 = Strg2 Mod 10
    Saat1 = Strg3 / 10
    Saat2 = Strg3 Mod 10
    Portb = &B00000001
    Portd = Lookup(saniye2 , Lable1)
    Waitms 5
    Portb = &B00000010
    Portd = Lookup(saniye1 , Lable1)
    Waitms 5
    Portb = &B00000100
    Portd = Lookup(daghighe2 , Lable1)
    Waitms 5
    Portb = &B00001000
    Portd = Lookup(daghighe1 , Lable1)
    Waitms 5
    Portb = &B00010000
    Portd = Lookup(saat2 , Lable1)
    Waitms 5
    Portb = &B00100000
    Portd = Lookup(saat1 , Lable1)
    Waitms 5
    Goto Main
    
    
    
    Getdatetime:
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 0
    I2cstart
    I2cwbyte Ds1307r
    I2crbyte _sec , Ack
    I2crbyte _min , Ack
    I2crbyte _hour , Nack
    I2cstop
    Return
    
    Settime:
    _sec = Makebcd(_sec)
    _min = Makebcd(_min)
    _hour = Makebcd(_hour)
    Debounce Pina.1 , 0 , Minute
    Debounce Pina.2 , 0 , Hour
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 3
    I2cwbyte _sec
    I2cwbyte _min
    I2cwbyte _hour
    I2cstop
    Return
    
    Lable1:
    Data &B11000000                       '00111111
    Data &B11111001                       '00000110
    Data &B10100100                       '01011011
    Data &B10110000                       '01001111
    Data &B10011001                       '01100110
    Data &B10010010                       '01101101
    Data &B10000010                       '01111101
    Data &B11111000                       '00000111
    Data &B10000000                       '01111111
    Data &B10010000

    #2
    پاسخ : کمک در ساخت ساعت

    سلام.

    این برنامه رو تست کن به همین صورت هیچ چیزی بهش اضافه نکن. و تغییری توش نده:

    $regfile = "M16def.dat"
    $crystal = 8000000
    Dim Minute As Word
    Dim Hour As Word
    Dim K As Word
    Config Scl = Portc.0
    Config Sda = Portc.1
    Dim _sec As Byte
    Dim _min As Byte
    Dim _hour As Byte
    Dim Strg1 As Word
    Dim Strg2 As Word
    Dim Strg3 As Word
    Dim Saniye1 As Word
    Dim Saniye2 As Word
    Dim Daghighe1 As Word
    Dim Daghighe2 As Word
    Dim Saat1 As Word
    Dim Saat2 As Word
    Config Portd = Output
    Config Portb = Output
    Const Ds1307w = &HD0
    Const Ds1307r = &HD1
    Config Pina.0 = Input
    Config Pina.1 = Input
    Config Pina.2 = Input
    'Pina.0 Alias baraye tanzime time bayad zade shavad
    'Pina.1 Alias Minute
    'Pina.2 Alias Hour

    Main:
    Do
    Gosub Getdatetime
    Strg1 = Makedec(_sec)
    Strg2 = Makedec(_min)
    Strg3 = Makedec(_hour)
    Saniye1 = Strg1 / 10
    Saniye2 = Strg1 Mod 10
    Daghighe1 = Strg2 / 10
    Daghighe2 = Strg2 Mod 10
    Saat1 = Strg3 / 10
    Saat2 = Strg3 Mod 10
    Portb = &B00000001
    Portd = Lookup(saniye2 , Lable1)
    Waitms 5
    Portb = &B00000010
    Portd = Lookup(saniye1 , Lable1)
    Waitms 5
    Portb = &B00000100
    Portd = Lookup(daghighe2 , Lable1)
    Waitms 5
    Portb = &B00001000
    Portd = Lookup(daghighe1 , Lable1)
    Waitms 5
    Portb = &B00010000
    Portd = Lookup(saat2 , Lable1)
    Waitms 5
    Portb = &B00100000
    Portd = Lookup(saat1 , Lable1)
    Waitms 5
    Debounce Pina.0 , 0 , Settime1
    Loop




    Settime1:
    Gosub Getdatetime
    Do
    Strg1 = Makedec(_sec)
    Strg2 = Makedec(_min)
    Strg3 = Makedec(_hour)
    Saniye1 = Strg1 / 10
    Saniye2 = Strg1 Mod 10
    Daghighe1 = Strg2 / 10
    Daghighe2 = Strg2 Mod 10
    Saat1 = Strg3 / 10
    Saat2 = Strg3 Mod 10
    Portb = &B00000001
    Portd = Lookup(saniye2 , Lable1)
    Waitms 5
    Portb = &B00000010
    Portd = Lookup(saniye1 , Lable1)
    Waitms 5
    Portb = &B00000100
    Portd = Lookup(daghighe2 , Lable1)
    Waitms 5
    Portb = &B00001000
    Portd = Lookup(daghighe1 , Lable1)
    Waitms 5
    Portb = &B00010000
    Portd = Lookup(saat2 , Lable1)
    Waitms 5
    Portb = &B00100000
    Portd = Lookup(saat1 , Lable1)
    Waitms 5
    Debounce Pina.1 , 0 , Minute
    Debounce Pina.2 , 0 , Hour
    Debounce Pina.0 , 0 , Settime
    Loop
    End


    Minute:
    Incr _min
    If _min > 59 Then
    _min = 0
    End If
    Return


    Hour:
    Incr _hour
    If _hour > 23 Then
    _hour = 0
    End If
    Return







    Getdatetime:
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 0
    I2cstart
    I2cwbyte Ds1307r
    I2crbyte _sec , Ack
    I2crbyte _min , Ack
    I2crbyte _hour , Nack
    I2cstop
    Return

    Settime:
    _sec = Makebcd(_sec)
    _min = Makebcd(_min)
    _hour = Makebcd(_hour)

    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 0
    I2cwbyte _sec
    I2cwbyte _min
    I2cwbyte _hour
    I2cstop
    Goto Main
    Return

    Lable1:
    Data &B11000000 '00111111
    Data &B11111001 '00000110
    Data &B10100100 '01011011
    Data &B10110000 '01001111
    Data &B10011001 '01100110
    Data &B10010010 '01101101
    Data &B10000010 '01111101
    Data &B11111000 '00000111
    Data &B10000000 '01111111
    Data &B10010000

    در حالت عادی ساعت رو نشون میده و برای تنظیم ساعت باید کلیدی که به Pina.0 وصل هست رو بزنی و با اون دو کلیدی که به Pina.1 و Pina.2 وصل است ساعت و دقیقه رو تنظیم کنی.
    و در آخر برای ذخیره باید کلیدی که به Pina.0 وصل است رو بزنی.

    *دوست عزیز اگه دوباره مشکل داشتی بیا توی همین تایپک سوالتو بپرس برای این کار کافیه بیای داخل این تایپک و کلید پاسخ رو بزنی(دیگه یه تایپک دیگه ایجاد نکن)*
    www.icesi.ir

    دیدگاه


      #3
      پاسخ : کمک در ساخت ساعت

      سلام
      دست شما درد نکنه برنامه درست شد
      الان داره کار میکنه فقط یه مشکل داره کلیدی که به pina.0 وصل هست رو بزنی ساعت میمونه بعدش کلیدهای دیگه رو بزنی اصلان دقیقه و ساعت تغییر نمیکنه
      بعدش دوباره شروع میکنه به شمارش
      یعنی کلیدهای دقیقه و ساعت عمل نمیکنه
      اگه میتونی این مشکل رو حل کنی
      خیلی ممنون میشم

      دیدگاه


        #4
        پاسخ : کمک در ساخت ساعت

        سلام.

        اینو تست کن...من خودم تست نکردم..

        $regfile = "M16def.dat"
        $crystal = 8000000
        Dim Minute As Word
        Dim Hour As Word
        Dim K As Word
        Config Scl = Portc.0
        Config Sda = Portc.1
        Dim _sec As Byte
        Dim _min As Byte
        Dim _hour As Byte
        Dim Strg1 As Word
        Dim Strg2 As Word
        Dim Strg3 As Word
        Dim Saniye1 As Word
        Dim Saniye2 As Word
        Dim Daghighe1 As Word
        Dim Daghighe2 As Word
        Dim Saat1 As Word
        Dim Saat2 As Word
        Config Portd = Output
        Config Portb = Output
        Const Ds1307w = &HD0
        Const Ds1307r = &HD1
        Config Pina.0 = Input
        Config Pina.1 = Input
        Config Pina.2 = Input
        'Pina.0 Alias baraye tanzime time bayad zade shavad
        'Pina.1 Alias Minute
        'Pina.2 Alias Hour

        Main:
        Do
        Gosub Getdatetime
        Strg1 = Makedec(_sec)
        Strg2 = Makedec(_min)
        Strg3 = Makedec(_hour)
        Saniye1 = Strg1 / 10
        Saniye2 = Strg1 Mod 10
        Daghighe1 = Strg2 / 10
        Daghighe2 = Strg2 Mod 10
        Saat1 = Strg3 / 10
        Saat2 = Strg3 Mod 10
        Portb = &B00000001
        Portd = Lookup(saniye2 , Lable1)
        Waitms 5
        Portb = &B00000010
        Portd = Lookup(saniye1 , Lable1)
        Waitms 5
        Portb = &B00000100
        Portd = Lookup(daghighe2 , Lable1)
        Waitms 5
        Portb = &B00001000
        Portd = Lookup(daghighe1 , Lable1)
        Waitms 5
        Portb = &B00010000
        Portd = Lookup(saat2 , Lable1)
        Waitms 5
        Portb = &B00100000
        Portd = Lookup(saat1 , Lable1)
        Waitms 5
        Debounce Pina.0 , 0 , Settime1
        Loop




        Settime1:
        Gosub Getdatetime
        time1:
        Do
        Strg1 = Makedec(_sec)
        Strg2 = Makedec(_min)
        Strg3 = Makedec(_hour)
        Saniye1 = Strg1 / 10
        Saniye2 = Strg1 Mod 10
        Daghighe1 = Strg2 / 10
        Daghighe2 = Strg2 Mod 10
        Saat1 = Strg3 / 10
        Saat2 = Strg3 Mod 10
        Portb = &B00000001
        Portd = Lookup(saniye2 , Lable1)
        Waitms 5
        Portb = &B00000010
        Portd = Lookup(saniye1 , Lable1)
        Waitms 5
        Portb = &B00000100
        Portd = Lookup(daghighe2 , Lable1)
        Waitms 5
        Portb = &B00001000
        Portd = Lookup(daghighe1 , Lable1)
        Waitms 5
        Portb = &B00010000
        Portd = Lookup(saat2 , Lable1)
        Waitms 5
        Portb = &B00100000
        Portd = Lookup(saat1 , Lable1)
        Waitms 5
        Debounce Pina.1 , 0 , Minute
        Debounce Pina.2 , 0 , Hour
        Debounce Pina.0 , 0 , Settime
        Loop
        End


        Minute:
        Incr _min
        If _min > 59 Then
        _min = 0
        End If
        jmp time1


        Hour:
        Incr _hour
        If _hour > 23 Then
        _hour = 0
        End If
        jmp time1







        Getdatetime:
        I2cstart
        I2cwbyte Ds1307w
        I2cwbyte 0
        I2cstart
        I2cwbyte Ds1307r
        I2crbyte _sec , Ack
        I2crbyte _min , Ack
        I2crbyte _hour , Nack
        I2cstop
        Return

        Settime:
        _sec = Makebcd(_sec)
        _min = Makebcd(_min)
        _hour = Makebcd(_hour)

        I2cstart
        I2cwbyte Ds1307w
        I2cwbyte 0
        I2cwbyte _sec
        I2cwbyte _min
        I2cwbyte _hour
        I2cstop
        Goto Main
        Return

        Lable1:
        Data &B11000000 '00111111
        Data &B11111001 '00000110
        Data &B10100100 '01011011
        Data &B10110000 '01001111
        Data &B10011001 '01100110
        Data &B10010010 '01101101
        Data &B10000010 '01111101
        Data &B11111000 '00000111
        Data &B10000000 '01111111
        Data &B10010000

        ساعت خوب کار میکنه؟ عقب نمیمونه؟؟
        اگه درست شد برنامه و فایل پروتئوس رو بذار تا همه بچه ها استفاده کنن.
        www.icesi.ir

        دیدگاه


          #5
          پاسخ : کمک در ساخت ساعت

          سلام
          دستت درد نکنه برنامه دیگه هیچ مشکلی نداره
          4-5 روزه که داره کار میکنه یک ثانیه هم عقب نیفتاده

          دیدگاه


            #6
            پاسخ : کمک در ساخت ساعت

            سلام.
            خوب موفق باشی ...
            اگه امان داره شماتیک و برنامه و فایل پروتئوس رو بذار اینجا یا تو قسمت پروژه ها تا دوستان همگی استفاده کنن. :applause:
            فکر کنم چند تا دیگه از دوستان دنبال همچین چیزی میگشتنن.
            www.icesi.ir

            دیدگاه


              #7
              پاسخ : کمک در ساخت ساعت

              سلام
              میخواستم اگه ممکنه بگید که چه طور پورت شماره 3 ds رو فعال کنم . چه تغییری تو برنامه بدم
              خیلی ممنون

              دیدگاه


                #8
                پاسخ : کمک در ساخت ساعت

                نوشته اصلی توسط hamed_avr
                سلام
                میخواستم اگه ممکنه بگید که چه طور پورت شماره 3 ds رو فعال کنم . چه تغییری تو برنامه بدم
                خیلی ممنون
                www.icesi.ir

                دیدگاه


                  #9
                  پاسخ : کمک در ساخت ساعت

                  نوشته اصلی توسط hamed_avr
                  سلام
                  دستت درد نکنه برنامه دیگه هیچ مشکلی نداره
                  4-5 روزه که داره کار میکنه یک ثانیه هم عقب نیفتاده
                  سلام
                  ممکنه بگبد این برنامه با سون سگمنت کار می کنه یا lcd
                  اگر با سون سگمنت کار میکنه
                  چه تغیری لزمه برای کار با lcd
                  ممنون
                  موفق و پیروز باشید

                  دیدگاه


                    #10
                    پاسخ : کمک در ساخت ساعت

                    این برنامه با 7seg نوشته شده. برای نمایش رو LCD باید مقادیر ثانیه و دقیقه و ... رو از DS1307 بخونی و دسیمالش کنی بعد نمایش بدی. همین

                    دیدگاه


                      #11
                      پاسخ : کمک در ساخت ساعت

                      نوشته اصلی توسط حامد جعفری
                      این برنامه با 7seg نوشته شده. برای نمایش رو LCD باید مقادیر ثانیه و دقیقه و ... رو از DS1307 بخونی و دسیمالش کنی بعد نمایش بدی. همین
                      سلام
                      ممکنه یک نمونه برنامه رو تو سایت قرار بدین
                      ممنون میشم
                      موفق و پیروز باشید

                      دیدگاه


                        #12
                        پاسخ : کمک در ساخت ساعت

                        سلام
                        من پروژم سیستم امنیتی منزله .اولین کاری که کردم شمای کلی منزلو رو glcd انداختم و تو دروپنجره و.. پیکسلی رو به عنوان سنسور روشن کردم.حالا باید کاری کنم که در زمان نبودن کاربر تغییر در هر سنسور و زمان تغییر اونو ذخیره کنه و زمانی که کاربر اومد بتونه این هارو رو glcd ببینه.لطفا هر کی که کار کرده کمکم کنه؟؟؟؟؟؟؟؟ :cry:

                        دیدگاه


                          #13
                          پاسخ : کمک در ساخت ساعت

                          نوشته اصلی توسط idin67
                          سلام
                          ممکنه یک نمونه برنامه رو تو سایت قرار بدین
                          ممنون میشم
                          موفق و پیروز باشید

                          سلام.
                          برنامه ساعت و تقویم میلادی و دما سنج با قابلیت تنظیم ساعت و تاریخ که با lcd کار میکنه رو براتون ضمیمه کردم.
                          فایل پروتئوس و برنامه رو هم براتون گذاشتم.


                          نوشته اصلی توسط banyamin
                          سلام
                          من پروژم سیستم امنیتی منزله .اولین کاری که کردم شمای کلی منزلو رو glcd انداختم و تو دروپنجره و.. پیکسلی رو به عنوان سنسور روشن کردم.حالا باید کاری کنم که در زمان نبودن کاربر تغییر در هر سنسور و زمان تغییر اونو ذخیره کنه و زمانی که کاربر اومد بتونه این هارو رو glcd ببینه.لطفا هر کی که کار کرده کمکم کنه؟؟؟؟؟؟؟؟ :cry:
                          سلام.
                          شما 2 راه میتونی انجام بدی!!!!
                          1- وقتی سنسور فعال شد زمان رو از ds1307 بخونی و در eeprom ذخیره کنی.
                          2- وقتی سنسور فعال شد زمان رو از ds1307 بخونی و در حافظه(ram) خود ds1307 ذخیره کنی.
                          و هر موقع که کاربر اومد از همان محل حافظه دیتا رو بخونی و بر روی lcd نمایش بدی.

                          فایل های پیوست شده
                          www.icesi.ir

                          دیدگاه


                            #14
                            پاسخ : کمک در ساخت ساعت

                            سلام
                            کسی فایل سالم و درست شده این پروژه رو نداره اینجا پلود کن
                            { خلاف قوانین - پاک شد }

                            دیدگاه

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