NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3687 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
نمایش نتایج: از 1 به 3 از 3

موضوع: ds1307

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Dec 2012
    نوشته ها
    33
    تشکر
    27
    تشکر شده 9 بار در 7 پست

    Red face ds1307

    با سلام
    سال نو بر تمام دوستان مبارک
    دوستان من با میکرو pic18 یه برنامه نوشتم که از ds1307 میخونه و روی lcd زمان رو نمایش میده. ولی متاسفانه همیشه زمان رو صفر نشون میده.
    با برنامه های دیگه هم که روی اینترنت بود چک کردم اما به نتیجه نرسیدم. ممنون میشم کمک کنید. فرکانس میکرو با PLL به 40MHz میرسه.
    کامپایلر microC

    کد:
    // Lcd pinout settings
    sbit LCD_RS at RB3_bit;
    sbit LCD_EN at RB1_bit;
    sbit LCD_D7 at RB7_bit;
    sbit LCD_D6 at RB6_bit;
    sbit LCD_D5 at RB5_bit;
    sbit LCD_D4 at RB4_bit;
    
    // Pin direction
    sbit LCD_RS_Direction at TRISB3_bit;
    sbit LCD_EN_Direction at TRISB1_bit;
    sbit LCD_D7_Direction at TRISB7_bit;
    sbit LCD_D6_Direction at TRISB6_bit;
    sbit LCD_D5_Direction at TRISB5_bit;
    sbit LCD_D4_Direction at TRISB4_bit;
    
    /////////
    char txt_1[4],txt_2[4],txt_3[4],txt_4[4];
    char i2c_txt[4];
    unsigned short tst[4];
    ////////
    unsigned char rtc_read(unsigned char address);
    void rtc_write(unsigned char address,unsigned char _data);
    void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out);
    void rtc_get_time(unsigned char *hur,unsigned char *min,unsigned char *sec);
    void rtc_set_time(unsigned char hur,unsigned char min,unsigned char sec);
    void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year);
    void rtc_set_date(unsigned char date,unsigned char month,unsigned char year);
    
    
    ////
    void main() {
         PORTA=LATA=0x00;
         PORTB=LATB=0x00;
         PORTC=LATC=0x00;
         ADCON1=0x0f;
         TRISA=0xa7;
         TRISB=0x00;
         TRISC=0x87;
         Lcd_Init();
         Lcd_Cmd(_LCD_CLEAR);
         Lcd_Cmd(_LCD_CURSOR_OFF);
         ///
         I2C1_Init(100000);
         while (!I2C1_Is_Idle());
         rtc_init(0,0,0);
         hour=12;
         minute=1;
         seconde=1;
         rtc_set_time(hour,minute,seconde);
         while(1){
              Lcd_Chr(1, 1, (hour/10+48));
              Lcd_Chr(1, 2, (hour%10+48));
              Lcd_Out(1, 3, ":");
              Lcd_Chr(1, 4, (minute/10+48));
              Lcd_Chr(1, 5, (minute%10+48));
              Lcd_Out(1, 6, ":");
              Lcd_Chr(1, 7, (seconde/10+48));
              Lcd_Chr(1, 8, (seconde%10+48));
    
              rtc_get_time(&hour,&minute,&seconde);
              delay_ms(500);
         }
    }
    
    
    
    unsigned char rtc_read(unsigned char address)
    {
          unsigned char _data;
          i2c1_start();
          I2C1_Repeated_Start();
          i2c1_wr(0xd0);
          i2c1_wr(address);
          i2c1_start();
          i2c1_wr(0xd1);
          _data=I2C1_Rd(0);
          i2c1_stop();
          return _data;
    }
    //
    
    void rtc_write(unsigned char address,unsigned char _data)
    {
          i2c1_start();
          I2C1_Repeated_Start();
          i2c1_wr(0xd0);
          i2c1_wr(address);
          i2c1_wr(_data);
          i2c1_stop();
    }
    
    void rtc_init(unsigned char rs,unsigned char sqwe,unsigned char out)
    {
          rs&=3;
          if (sqwe) rs|=0x10;
          if (out) rs|=0x80;
          i2c1_start();
          i2c1_wr(0xd0);
          i2c1_wr(7);
          i2c1_wr(rs);
          i2c1_stop();
    }
    
    void rtc_get_time(unsigned char *hur,unsigned char *min,unsigned char *sec)
    {
          I2c1_start();
          I2c1_wr(0xd0);
          I2c1_wr(0);
          I2C1_Repeated_Start();
          I2c1_wr(0xd1);
          *sec=Bcd2Dec(I2C1_Rd(1));
          *min=Bcd2Dec(I2C1_Rd(1));
          *hur=Bcd2Dec(I2C1_Rd(0));
          while (!I2C1_Is_Idle());
          I2c1_stop();
    }
    
     void rtc_set_time(unsigned char hur,unsigned char min,unsigned char sec)
    {
          I2c1_start();
          I2C1_Repeated_Start();
          I2c1_wr(0xd0);
          I2c1_wr(0x00);
          I2c1_wr(sec);
          I2c1_wr(Dec2Bcd(min));
          I2c1_wr(Dec2Bcd(hur));
          while (!I2C1_Is_Idle());
          I2c1_stop();
    }
    
     void rtc_get_date(unsigned char *date,unsigned char *month,unsigned char *year)
    {
          i2c1_start();
          I2C1_Repeated_Start();
          i2c1_wr(0xd0);
          i2c1_wr(4);
          i2c1_start();
          i2c1_wr(0xd1);
          *date=Bcd2Dec(I2C1_Rd(1));
          *month=Bcd2Dec(I2C1_Rd(1));
          *year=Bcd2Dec(I2C1_Rd(0));
          i2c1_stop();
    }
    
    void rtc_set_date(unsigned char date,unsigned char month,unsigned char year)
    {
          i2c1_start();
          I2C1_Repeated_Start();
          i2c1_wr(0xd0);
          i2c1_wr(4);
          i2c1_wr(Bcd2Dec(date));
          i2c1_wr(Bcd2Dec(month));
          i2c1_wr(Bcd2Dec(year));
          i2c1_stop();
    }

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    Banned
    تاریخ عضویت
    Apr 2013
    نام
    صادق علی بخشی
    نوشته ها
    1,148
    تشکر
    1,183
    تشکر شده 1,276 بار در 702 پست

    پیش فرض

    سلام
    من با mikroC زیاد کار نکردم ولی تونستم این مثال رو از خود سایت پیدا کنم
    که برای تمامی کامپایلرها و میکرو نوشته شده
    میتونید از ادرس زیر دانلود کنید
    /www.mikroe.com/downloads/get/258/rtc2_examples.zip
    اگر هم برای کامپایلر ccs خواستی من یکبار نوشتمش
    بگو تا اون هم آپلود کنم

  4. #3
    کاربر علاقه مند
    تاریخ عضویت
    Dec 2012
    نوشته ها
    33
    تشکر
    27
    تشکر شده 9 بار در 7 پست

    پیش فرض

    سلام، ممنون از پاسخت،
    ظاهراً پروتئوس مشکل داره.
    چون که این پروژه ای رو هم که گذاشتید رو هم تست کردم با همون فایل هگزی که داخل پوشه بود و شماتیک رو هم طبق توضیحات داخل سورس کد بستم . همه چیز روی lcd درست بود به غیر از زمان که بازم زمان رو صفر برمیگردوند. نظر شما عزیزان چیه؟
    شماتیک:
    نام: ds1307.PNG نمایش: 70 اندازه: 40.5 کیلو بایت

موضوعات مشابه

  1. کتابخانه ds1307
    توسط titery در انجمن LPC series (NXP)
    پاسخ: 10
    آخرين نوشته: 07-06-2014, 18:27
  2. ds1307 در اسمبلی ؟
    توسط Deadman در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 11-02-2014, 19:55
  3. Ds1307
    توسط cmuiran در انجمن LPC series (NXP)
    پاسخ: 32
    آخرين نوشته: 02-12-2013, 12:44
  4. ds1307
    توسط pooriya_nic18 در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 25-10-2013, 23:34
  5. مشکل در ds1307
    توسط esmaeil57 در انجمن AVR
    پاسخ: 0
    آخرين نوشته: 07-10-2013, 11:34

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •