اطلاعیه

Collapse
No announcement yet.

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

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

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

    سلام
    من یه برنامه ساعت با دی اس1307 نوشتم
    البته نصف برنامش رو از یه جای دیگه برداشتم
    اونجا که
    _sec / 20
    _sec Mod 20
    Daghighe1 = _min / 20
    Daghighe2 = _min Mod 20

    کارو انجام میده
    نمیفهمم برای چیه
    بدشم ثانیه رو خوب نشون نمیده یه دفعه از 9 میپره رویه 24
    اگه کمکم کنین ممنون میشم
    برنامش هم میزارم ببینین
    کد:
    $regfile = "M32def.dat"
    $crystal = 8000000
    Dim A As Word
    Dim N As Word
    Dim K As Word
    Config Scl = Portc.0
    Config Sda = Portc.1
    Dim _sec As Byte , _min As Byte , _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 Saat As Word
    Config Portd = Output
    Config Portb = Output
    Const Ds1307w = &HD0
    Const Ds1307r = &HD1
    Config Pinc.0 = Input
    Config Pinc.1 = Input
    
    
    Do
    Gosub Getdatetime
    Strg1 = Makebcd(_sec)
    Strg2 = Makebcd(_min)
    Strg3 = Makebcd(_hour)
    
    Saniye1 = _sec / 20
    Saniye2 = _sec Mod 20
    
    Daghighe1 = _min / 20
    Daghighe2 = _min Mod 20
    
    Portb = &B00000001
    Portd = Lookup(saniye2 , Lable1)
    Waitms 2
    Portb = &B00000010
    Portd = Lookup(saniye1 , Lable1)
    Waitms 2
    Portb = &B00000100
    Portd = Lookup(daghighe2 , Lable1)
    Waitms 2
    Portb = &B00001000
    Portd = Lookup(daghighe1 , Lable1)
    Waitms 2
    'Portb = &B0110000
    'Portd = Saat
    'Waitms 2
    Loop
    End
    
    
    
    
    
    Getdatetime:
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 0
    I2cstart
    I2cwbyte Ds1307r
    I2crbyte _sec , Ack
    I2crbyte _min , Ack
    I2crbyte _hour , Nack
    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
    پاسخ : کمک در ساخت ساعت با ds1307

    به نظر من کل برنامه رو عوض کن.
    با سرعت بالا داری از ds1307 میخونی !!!!!
    www.icesi.ir

    دیدگاه


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

      خوب چه طور این کارو بکنم شما راهنماییم کنید

      دیدگاه


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

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


        [move](---> موسیقی ایرانی <---) [/move]

        دیدگاه


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

          فکر کنم لایبرری خود DS1307 رو لود نکردی
          $lib "ds1307clock.lib"
          @RMIN

          دیدگاه


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

            http://projects.m32.ir/up/2012/03/RTC_DS1307.rar
            سلام میتونی از این مقاله کمک بگیری

            دیدگاه


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

              من با DS1307 کار کردم و هر کاری کردم جواب نگرفتم .
              علت کار کردن من هم با این ای سی این بود که نمیخواستم وقتی برق میره زمانم صفر بشه.
              تا بالا خره یکی از دوستان گفت که از تایمر 2 استفاده کنم و باطری بک اپ رو هم برای میکرو بزارم /
              دوستم میگفت قبلا باطری بک اپ برای میکرو گذاشته و براحتی جواب گرفته
              اینم پروژه
              http://www.picpars.com/downloads/file/109/

              الکترونیک همه کاره دنیا

              دیدگاه


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


                دوست عزیز من بسکام کار نکردم این کد رو به زبان کدویژن برات می زام امید وارم کمکت کنه .
                من خودم با این آی سی ساعت در کد ویژن با میکرو Mega16 کار کردم باتری هم برای ds1307 گذاشتم خیلی هم خوب کار میکنه . !

                rtc_get_time(&hour,&minite,&sec


                itoa(hour, Satr11) ;
                itoa(minite, Satr12) ;
                itoa(sec, Satr13) ;
                strcat(Satr11,":"
                strcat(Satr11,Satr12);
                strcat(Satr11,":"
                strcat(Satr11,Satr13 );

                rtc_get_date(&weekday,&day,&month,&amp ;year);


                itoa(day, Satr22) ;
                itoa(month, Satr23) ;
                itoa(year, Satr24) ;
                strcat(Satr21,Satr22);
                strcat(Satr21,"-"
                strcat(Satr21,Satr23 );
                strcat(Satr21,"-"
                strcat(Satr21,Satr24 ] );


                lcd_clear();
                lcd_gotoxy(0,0);
                lcd_puts(Satr11);

                lcd_gotoxy(0,1);
                lcd_puts(Satr21);

                که با این کار ساعت و تاریخ رو در lcd نمایش میده .
                موفق باشید
                - به دنبال فرصت عمری تباه کردم ! فرصت جوانی ام بود من اشتباه کردم .

                دیدگاه


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

                  منم قبلا با این آی سی کار کردم خوب و جالبه و خوندن این مقاله رو به دوستان توصیه میکتم چون بطور کامل توضیح داده موفق باشید
                  http://iseee.ir/article/50-%D8%B3%D8...D8%A7-avr.html
                  در جهان هرگز مشو مدیون احساس کسی - تا نباشد رایگان مهرت گروگان کسی
                  گوهر خود را نزن بر سنگ هر ناقابلی - صبر کن پیدا شود گوهر شناس قابلی

                  دیدگاه


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


                    دوست عزیز من بسکام کار نکردم این کد رو به زبان کدویژن برات می زام امید وارم کمکت کنه .
                    من خودم با این آی سی ساعت در کد ویژن با میکرو Mega16 کار کردم باتری هم برای ds1307 گذاشتم خیلی هم خوب کار میکنه . !
                    دوست عزیز مطمینی با این کدها کل پروژه ران میشه ؟

                    نوشته اصلی توسط sami222
                    منم قبلا با این آی سی کار کردم خوب و جالبه و خوندن این مقاله رو به دوستان توصیه میکتم چون بطور کامل توضیح داده موفق باشید
                    http://iseee.ir/article/50-%D8%B3%D8...D8%A7-avr.html
                    مقاله جالب و خوبی بود بعد امتحانا به c مینویسم و همینجا میزارم

                    دیدگاه


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

                      نوشته اصلی توسط alielec
                      من با DS1307 کار کردم و هر کاری کردم جواب نگرفتم .
                      علت کار کردن من هم با این ای سی این بود که نمیخواستم وقتی برق میره زمانم صفر بشه.
                      تا بالا خره یکی از دوستان گفت که از تایمر 2 استفاده کنم و باطری بک اپ رو هم برای میکرو بزارم /
                      دوستم میگفت قبلا باطری بک اپ برای میکرو گذاشته و براحتی جواب گرفته
                      اینم پروژه
                      http://www.picpars.com/downloads/file/109/
                      اینم از طرف من امیدوارم بدردتون بخوره
                      این ساعت هم تاریخ رو به شمسی نشون میده هم به میلادی وهم روز(شنبه یکشنبه دوشنبه......)هفته رو
                      لینک دانلود پروژه تو این ادرسه
                      http://www.eca.ir/forum2/index.php?topic=75661.0
                      من رو ای سی ds1307کاملا تسلط دارم اگه کسی از دوستان مشکلی با این ای سی داره بگه تا براش بر طرف کنم
                      اگریک فلج مادر زاد در مسابقه دو ماراتون نفراول نشود مقصر فقط وفقط خودش است...

                      دیدگاه


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

                        برنامه ی زیر بر روی ds1307 با avr کاملا صحیح کار می کند. اگر از باتری Backup استفاده نمی کنید، پایه ی 3 این آی سی را به زمین بزنید.
                        کد:
                        #include <bcd.h>
                        #include <i2c.h>
                        unsigned char rtc_read(unsigned char address)
                        {
                        unsigned char data;
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(address);
                        i2c_stop(); // 09022011_1
                        i2c_start();
                        i2c_write(0xd1);
                        data=i2c_read(0);
                        i2c_stop();
                        return data;
                        }
                        
                        void rtc_write(unsigned char address,unsigned char data)
                        {
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(address);
                        i2c_write(data);
                        i2c_stop();
                        }
                        
                        void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out)
                        {
                        rs&=3;
                        if (sqwe) rs|=0x10;
                        if (out) rs|=0x80;
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(7);
                        i2c_write(rs);
                        i2c_stop();
                        }
                        
                        void rtc_get_time(unsigned char *hour,unsigned char *min,unsigned char *sec)
                        {
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(0);
                        i2c_stop(); // 09022011_1
                        i2c_start();
                        i2c_write(0xd1);
                        *sec=bcd2bin(i2c_read(1));
                        *min=bcd2bin(i2c_read(1));
                        *hour=bcd2bin(i2c_read(0));
                        i2c_stop();
                        }
                        
                        void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec)
                        {
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(0);
                        i2c_write(bin2bcd(sec));
                        i2c_write(bin2bcd(min));
                        i2c_write(bin2bcd(hour));
                        i2c_stop();
                        }
                        
                        void rtc_get_date(unsigned char *week_day,unsigned char *day,unsigned char *month,unsigned char *year)
                        {
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(3); // 09022011_1
                        i2c_stop(); // 09022011_1
                        i2c_start();
                        i2c_write(0xd1);
                        *week_day=i2c_read(1); // 09022011_1
                        *day=bcd2bin(i2c_read(1));
                        *month=bcd2bin(i2c_read(1));
                        *year=bcd2bin(i2c_read(0));
                        i2c_stop();
                        }
                        
                        void rtc_set_date(unsigned char week_day,unsigned char day,unsigned char month,unsigned char year)
                        {
                        i2c_start();
                        i2c_write(0xd0);
                        i2c_write(3); // 09022011_1
                        i2c_write(week_day); // 09022011_1
                        i2c_write(bin2bcd(day));
                        i2c_write(bin2bcd(month));
                        i2c_write(bin2bcd(year));
                        i2c_stop();
                        }
                        در برنامه ی فوق تابع rtc_init برای تنظیم خروجی آی سی یا همان پایه ی 7 می باشد.
                        تابع rtc_set_date برای تنظیم تاریخ
                        تابع rtc_get_time برای دریافت ساعت
                        تابع rtc_get_date برای دریافت تاریخ (میلادی)
                        تابع rtc_set_time برای تنظیم ساعت می باشد.
                        { خلاف قوانین - پاک شد }
                        برد آموزشی ARM: http://www.eca.ir/forum2/index.php?topic=91977
                        آموزش DSP: http://www.eca.ir/forum2/index.php?topic=91940
                        آموزش Allegro: http://www.eca.ir/forum2/index.php?topic=79877

                        دیدگاه


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

                          میشه کلا پایه Vbat رو متصل نکرد ؟

                          دیدگاه


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

                            نوشته اصلی توسط navid.h
                            میشه کلا پایه Vbat رو متصل نکرد ؟
                            سلام دوست عزیز
                            نه نمیشه من امتحان کردم اعداد 166 یا 266 همچین چیزایی رو نشون میده
                            باز هم بگم هنگام کار کردن با DS دو تا مقاومت ها رو یادت نره
                            کمک خواستی در خدمتم
                            پیروزی یعنی : توانایی رفتن از یک شکست ، به شکستی دیگر بدون از دست دادن اشتیاق . . .
                            ------------------------------------------------------------ - - -
                            صبرت که تمام شد نرو!
                            "معرفت"
                            تازه از آن لحظه آغاز می شود...

                            دیدگاه


                              #15
                              پاسخ : کمک در ساخت ساعت با ds1307

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

                              دیدگاه

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