اطلاعیه

Collapse
No announcement yet.

راه انداز ic ds1307

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

    راه انداز ic ds1307

    سلام
    این کد ایجاد ساعت با ic ds1307 هست کسی میتونه به این سوالا جواب بده؟
    define های اول برنامه
    buffer []
    i2c_init()
    rtc_init(0,0,0)0
    دقیقا چیکار می کنند و اگه کسی فایل آموزشی چیزی داره که توضیح کاملی داده ممنون میشم اینجا بزارید.




    #include <mega16a.h>
    // I2C Bus functions
    #include <i2c.h>
    // DS1307 Real Time Clock functions
    #include <ds1307.h>
    // Alphanumeric LCD functions
    #include <alcd.h>
    #include <delay.h>
    #include <stdio.h>
    //><><><><><><&g t;<><><><><><> <><><><><><>&l t;><><><\\
    #define downclock PINB.0
    #define downmin PINB.1
    #define downsec PINB.2
    #define upsec PINB.3
    #define upmin PINB.4
    #define upclock PINB.5
    //><><><><><><&g t;<><><><><><> <><><><><><>&l t;><><><\\
    void main(void)
    {
    int hh=0,mm=0,ss=0;
    char buffer[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},h=0,m=0,s=0;
    //><><><><><><&g t;<><><><><><> <><><><><><>&l t;><><><\\
    DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0);
    PORTB=(0<<PORTB7) | (0<<PORTB6) | (1<<PORTB5) | (1<<PORTB4) | (1<<PORTB3) | (1<<PORTB2) | (1<<PORTB1) | (1<<PORTB0);
    //><><><><><><&g t;<><><><><><> <><><><><><>&l t;><><><\\
    // Bit-Banged I2C Bus initialization
    // I2C Port: PORTC
    // I2C SDA bit: 1
    // I2C SCL bit: 0
    // Bit Rate: 100 kHz
    // Note: I2C settings are specified in the
    // Project|Configure|C Compiler|Libraries|I2C menu.
    i2c_init();
    //><><><><><><&g t;<><><><><><> <><><><><><>&l t;><><><\\
    // DS1307 Real Time Clock initialization
    // Square wave output on pin SQW/OUT: Off
    // SQW/OUT pin state: 0
    rtc_init(0,0,0);
    //><><><><><><&g t;<><><><><><> <><><><><><>&l t;><><><\\
    lcd_init(16);
    //><><><><><><&g t;<><><><><><> <><><><><><>&l t;><><><\\
    while (1)
    {
    rtc_get_time(&h,&m,&s);

    if( upclock == 0 )
    {
    delay_ms(200);
    hh++;
    if( hh == 24 ) hh=0;
    rtc_set_time(hh,mm,ss);
    }

    if( upmin == 0 )
    {
    delay_ms(200);
    mm++;
    if( mm == 60 ) mm=0;
    rtc_set_time(hh,mm,ss);
    }

    if( upsec == 0 )
    {
    delay_ms(200);
    ss++;
    if( ss == 60 ) ss=0;
    rtc_set_time(hh,mm,ss);
    }

    lcd_clear();
    lcd_gotoxy(0,0);
    sprintf(buffer,"%d:%d:%d",h,m,s);
    lcd_puts(buffer);
    delay_ms(100);
    }
    }

    #2
    پاسخ : راه انداز ic ds1307

    سلام.
    تو چند خط اول برنامه چند ماکرو یا همون دیفاین که خودتون گفتید معرفی شده که ظاهرا برای تنظیم ثانیه و دقیقه و ساعت است یعنی برای تنظیم هر کدومشون دو تا پین رو اختصاص داده یکی برای افزایش و یکی هم برای کاهش که کار خیلی عجیبیه!
    ارایه buffer هم ازش تو برنامه واسه نمایش استفاده کرده.
    [code=c]i2cinit();[/code]
    هم برای پیکره بندی پروتکل I2C استفاده شده.
    [code=c]rtc_init(0,0,0);[/code]
    اینم ظاهرا برای پیکره بندی rtc هستش که ساعت و دقیقه و ثانیه رو به صفر تنظیم کرده.
    البته شما دو تا کتابخونه به نام های i2c و ds1307 دارید که من از درونشون بی خبرم.
    [img width=281 height=100]http://cdn.persiangig.com/preview/acPBCNLNNr/images.jpg[/img]

    دیدگاه


      #3
      پاسخ : راه انداز ic ds1307

      سلام
      این کد ها چیه گذاشتی هفتاد درصدش اضافه هستش,برا یه ساعت و تاریخ ساده با ds1307 که تاریخش به میلادی باشه,این همه محاسبات نمیخواد که همه اینا تو ای سی محاسبه میشه و فقط شما باید با i2cبخونی و رو lcd نمایش بدی,اتفاقا من خودم اینو دو سه روز پیش راه انداختم خیلی هم ساده بود اگه به تاریخ میلادی بخوای,برنامه رو پیدا کنم قرار بدم اینجا ببین شاید به کارت اومد

      اضافه شده در تاریخ :
      [code=c]
      #include<mega32.h>
      #include<lcd.h>
      #include<stdio.h>
      #include<i2c.h>
      #include<ds1307.h>
      #asm
      .equ __lcd_PORT=0x18;//PORTB
      #endasm
      void main(void)
      {
      unsigned char H,M,S,Y,P,D,W;
      char A[25];
      char B[25];
      i2c_init();
      rtc_init(0,0,0);
      lcd_init(16);
      rtc_set_time(20,30,0);
      rtc_set_date(4,24,2,16);

      while(1)
      {
      rtc_get_time(&H,&M,&S);
      rtc_get_date(&W,&D,&P,&Y);
      sprintf(A,"time:%02d,%02d,%02d",H,M,S);
      sprintf(B,"Date:%02d/%02d/%02d",Y,P,D);
      lcd_gotoxy(0,0);
      lcd_puts(A);
      lcd_gotoxy(0,1);
      lcd_puts(B);
      }
      }

      [/code]
      البته باید پس از نوشتن برنامه تو قسمتproject,configure,c compile,libraries,i2c /i2cرو فعال کنی و پورت و پین هاش رو مشخص کنی و تمام,این ساده ترین برنامه هستش که خود منم ازش استفاده کردم و جواب داد,باز اگه مشکلی بود تو برنامه و سوالی داشتی تا حد اطلاعاتی که دارم در خدمتم ,البته حجم برنامه خیلی هم کم نشد ها :mrgreen: ولی قابل فهم هستش چیز خاصی نداره

      دیدگاه


        #4
        پاسخ : راه انداز ic ds1307

        سلام دوستان من با این ایسی به یه مشکل برخوردم اونم اینه که نمشموره ثانیه دقیقه ساعت افزایش پیدا نمیکنه وقتی ساعت یا دقیقه یا ثانیه رو ست یا مقدار میدم رو همون مقدار باقی میمونه پین باتری بکاپ زمین کردم کریستال گذاشتم خروجی رو هم با مقاومت 10k پول اپ کردم زمانی که تغذیه رو قطع میکنم 165 خونده میشه زمانی که وصله اگه مقدار ندم مقدار 80 خونده میشه اگه مقدار بدم همون مقدار خونده میشه و تغییری نمیکنه
        برنامم:
        کد:
        #include <io.h>
        #include <mylcd.h>
        #include <ds1307.h>
        #include <string.h>
        #asm
          .equ __i2c_port=0x15
          .equ __scl_bit=5
          .equ __sda_bit=4
        #endasm
        
        
        void main(void)
        {
        unsigned char a,b,c,d[10],t=0;
          DDRB=0xff;
          
        lcd_init();
        rtc_init(0,0,0);
        rtc_set_time(5,0,0);
        while (1)
          {
          lcd_cls();
          rtc_get_time(&a,&b,&c);
          itoa(c,d);
        
          lcd_puts(d);
          delay_ms(1000);
        
          }
        }
        سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

        دیدگاه


          #5
          پاسخ : راه انداز ic ds1307

          این برنامه ای رو که گذاشتم یه امتحانی بکن,تنظیمات i2cرو هم از همون جا که نوشتم انجام بده فکر نکنم به مشکل بخوری

          دیدگاه


            #6
            پاسخ : راه انداز ic ds1307

            نوشته اصلی توسط MeysaM M32
            این برنامه ای رو که گذاشتم یه امتحانی بکن,تنظیمات i2cرو هم از همون جا که نوشتم انجام بده فکر نکنم به مشکل بخوری
            مشکل اینه که شمارش نمیکنه
            سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

            دیدگاه


              #7
              پاسخ : راه انداز ic ds1307

              با این برنامه شمارش نکرد؟مگه میشه /مطمعنی سخت افزار درسته چون خود من با این نتیجه گرفتم :eek:

              دیدگاه


                #8
                پاسخ : راه انداز ic ds1307

                نوشته اصلی توسط MeysaM M32
                با این برنامه شمارش نکرد؟مگه میشه /مطمعنی سخت افزار درسته چون خود من با این نتیجه گرفتم :eek:
                ارتباط برقرار میشه مقدار مورد نظر نوشته میشه تو ایسی اما موقع خوندن همون مقدار نوشته شدرو برمیگردونه سخت افزارم همونی که بالا گفتم بستم
                سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

                دیدگاه


                  #9
                  پاسخ : راه انداز ic ds1307

                  اگه رو برد برد میبندی پایه های کریستال رو چک کن چون در صورتی نمیشماره که کریستال بهش وصل نباشه,اگه هم رو پروتوس شبیه سازی کردی عملی ببندی بهتره چون پروتوس هر ده ثانیه واقعی یه ثانیه جلو تر میرفت حداقل رو سیستم من اینجوری بود ,در غیر این صورت چیزی به ذهنم نمیرسه oo:

                  دیدگاه


                    #10
                    پاسخ : راه انداز ic ds1307

                    اگه اخرین مقدار نوشته شده روی ds خونده میشه برنامه مشکل داره . به پایه sqw یه led وصل کن و با فعال کردنش مطمئن شو که ds مورد نداره . باطری "بک پ" رو چک کن ببین سالمه .

                    دیدگاه


                      #11
                      پاسخ : راه انداز ic ds1307

                      نوشته اصلی توسط saeiddiod
                      اگه اخرین مقدار نوشته شده روی ds خونده میشه برنامه مشکل داره . به پایه sqw یه led وصل کن و با فعال کردنش مطمئن شو که ds مورد نداره . باطری "بک پ" رو چک کن ببین سالمه .
                      باتر بک اپ نزاشتم
                      پایه باتری بک اپ هم زمین کردم led حتما تست میکنم برنامم تو پروتئوس جواب میده برنامه این دوست عزیز هم پروگرم گردم ولی همچنان مشکل باقی در ضمن روی برد برد هم بستم مدار رو
                      سقراط : دانش من بدانجایی رسید که فهمیدم هیچ نمیدانم.

                      دیدگاه


                        #12
                        پاسخ : راه انداز ic ds1307

                        نوشته اصلی توسط سید سجاد احدزاده
                        برنامم تو پروتئوس جواب میده
                        تو پروژه های دقیق نمیشه رو پروتئوس حساب کرد . من قبلا تو پروتئوس پایه sda ,scl رو وصل کردم برنامه کار کرد ولی در عمل این سخت افزار که تو پروتئوس هست جواب نمیده . پروتئوس رو بی خیال شو و عملی امتحان کن اگه جواب نگرفتی شماتیک سخت افزارتو بذار تا نمونه برنامه بهت بدم تا مطمئن بشی سخت افزار مشکل نداره .
                        موفق باشی

                        دیدگاه


                          #13
                          پاسخ : راه انداز ic ds1307

                          نوشته اصلی توسط سید سجاد احدزاده
                          باتر بک اپ نزاشتم
                          پایه باتری بک اپ هم زمین کردم led حتما تست میکنم برنامم تو پروتئوس جواب میده برنامه این دوست عزیز هم پروگرم گردم ولی همچنان مشکل باقی در ضمن روی برد برد هم بستم مدار رو
                          امکان داره کریستالت خراب باشه
                          و همچنین وصل نکردن پایه باتری بکاب مشکلاتی رو ایجااد میکنه

                          دیدگاه


                            #14
                            پاسخ : راه انداز ic ds1307

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

                            دیدگاه


                              #15
                              پاسخ : راه انداز ic ds1307

                              خب به احتمال خراب یا سوخته

                              شایدم برنامه ت مشکل داره !! تو پروتیئوس جواب میده ؟
                              این تابع دیگه چیه ؟ rtc_get_data(&W,&D,&P,&Y);

                              دیدگاه

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