Thông báo

Collapse
No announcement yet.

Làm sao lấy thứ của DS1307.

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Làm sao lấy thứ của DS1307.

    Lập trình bằng codevisionavr, trong chương trinh có hàm rtc_get_date(&date,&month,&year) không có day(thứ trong tuần) vậy làm sao lấy được thứ trong tháng, đọc datasheet thì thấy DS1307 có thanh ghi thứ.
    Mong anh em giúp đỡ...

  • #2
    đơn giản thôi bản , kích vào thư viện ds1307.h nó ra thế này .
    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 *hour,unsigned char *min,unsigned char *sec);
    void rtc_set_time(unsigned char hour,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);
    muốn sử dụng thứ thì khai báo .

    #define DAY 0x03

    char day;

    đọc thứ :

    day=rtc_read(DAY);
    ghi thứ :

    rtc_write(DAY,day);

    Chúc thành công

    Comment


    • #3
      cảm ơn Anh nhiều. làm mình mò viết hàm chuyển ngày,tháng,năm sang thứ.

      Nhưng e có ý kiến rtc_read(3) tại vì
      unsigned char rtc_read(unsigned char address);
      Thì địa chỉ kiểu char, chứ không phải là mã hex không biết có đúng không.
      Last edited by hohoanganhfu; 11-06-2012, 11:00.

      Comment


      • #4
        hình như bản 2.05.3 có cả thứ rồi thì phải.
        WS:
        Blog:

        Comment


        • #5
          Các bạn down bộ codevision mới ở đây Download


          Add: 97 Quán Nam - Lê Chân - Hải Phòng.
          Tel: 031 518648 Phone: 0904 283 505

          Comment


          • #6
            bản codevision mình không có thư viện của DS1307 ai có thì share với
            thank nhiều

            Comment


            • #7
              Nguyên văn bởi hungtrinh36 Xem bài viết
              bản codevision mình không có thư viện của DS1307 ai có thì share với
              thank nhiều
              Cho cái link thì ko down


              Add: 97 Quán Nam - Lê Chân - Hải Phòng.
              Tel: 031 518648 Phone: 0904 283 505

              Comment


              • #8
                sửa lại nội dụng trong file ds1307.h và ds1307.lib như thế này:
                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 *hour,unsigned char *min,unsigned char *sec);
                void rtc_set_time(unsigned char hour,unsigned char min,unsigned char sec);
                void rtc_get_date(unsigned char *day,unsigned char *date,unsigned char *month,unsigned char *year);
                void rtc_set_date(unsigned char day,unsigned char date,unsigned char month,unsigned char year);
                void rtc_get_date(unsigned char *day,unsigned char *date,unsigned char *month,unsigned char *year)
                {
                i2c_start();
                i2c_write(0xd0);
                i2c_write(3);
                i2c_start();
                i2c_write(0xd1);
                *day=bcd2bin(i2c_read(1));
                *date=bcd2bin(i2c_read(1));
                *month=bcd2bin(i2c_read(1));
                *year=bcd2bin(i2c_read(0));
                i2c_stop();
                }

                void rtc_set_date(unsigned char day,unsigned char date,unsigned char month,unsigned char year)
                {
                i2c_start();
                i2c_write(0xd0);
                i2c_write(3);
                i2c_write(bin2bcd(day));
                i2c_write(bin2bcd(date));
                i2c_write(bin2bcd(month));
                i2c_write(bin2bcd(year));
                i2c_stop();
                }

                Chúc thành công!
                Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
                Gmail: -Mobile: 0989.194.472

                Comment


                • #9
                  @hoangdai: ban của bác có ***** ko đấy, ko ***** thì hạn chế về dung lượng lắm
                  Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
                  Gmail: -Mobile: 0989.194.472

                  Comment


                  • #10
                    Nguyên văn bởi thiennv0109 Xem bài viết
                    sửa lại nội dụng trong file ds1307.h và ds1307.lib như thế này:
                    giả sử như mình muốn sửa kiểu biến trong hàm của DS1307, cụ thể là thư viện mặc định các giá trị về time của nó toàn dạng unsigned char, bây giờ mình mở 2 file thư viện đó lên sửa thành char rồi Save là oke chứ nhỉ, liệu có gây lỗi phần mềm j ko?
                    Website chính thức đổi địa chỉ website thành
                    Mời các bạn ghé thăm !!!

                    Comment


                    • #11
                      uh_ko có ***** thiệt/


                      Add: 97 Quán Nam - Lê Chân - Hải Phòng.
                      Tel: 031 518648 Phone: 0904 283 505

                      Comment


                      • #12
                        Nguyên văn bởi mast090 Xem bài viết
                        giả sử như mình muốn sửa kiểu biến trong hàm của DS1307, cụ thể là thư viện mặc định các giá trị về time của nó toàn dạng unsigned char, bây giờ mình mở 2 file thư viện đó lên sửa thành char rồi Save là oke chứ nhỉ, liệu có gây lỗi phần mềm j ko?
                        Mình chưa thử nhưng Cùng kiểu biến thì vẫn làm việc được (test thử biết liền ^^), nhưng nên để ở kiểu unsigned char vì giá trị của mình là giá không dấu mà
                        Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
                        Gmail: -Mobile: 0989.194.472

                        Comment


                        • #13
                          sao em mô phỏng thấy thứ nó chạy từ 0 đến 7 vậy.như vậy thì làm sao đúng thứ được.

                          Comment


                          • #14
                            Nguyên văn bởi voiviqua Xem bài viết
                            sao em mô phỏng thấy thứ nó chạy từ 0 đến 7 vậy.như vậy thì làm sao đúng thứ được.
                            làm gì có chuyện đó, chụp hình lại xem

                            Comment


                            • #15
                              thanh ghi thứ của Ds 8 bit nhưng chỉ dùng 3 bit thấp lưu giá trị của thứ 5 bit cao =0 hết
                              thứ có giá trị từ 1-7.....cậu lấy trực tiếp giá trị ở thanh ghi của nó
                              date=rtc_read(0x03);
                              date=1 là CN, bằng 7 là thứ 7

                              nếu k chắc thì cậu có thể thử đoạn code sau
                              Code:
                               void day_to_date(char ngay, char thang, char nam)
                              {
                              	int t=0;
                              	if(thang < 3)   
                              	{
                                      thang = thang + 12;
                                      nam = nam - 1;
                                  }
                                  t= ngay + 2*thang + 3*(thang + 1)/5 + nam+2500 + ((nam) / 4 );
                              	date=1+t%7;
                              }

                              Comment

                              Về tác giả

                              Collapse

                              hohoanganhfu Trường ĐH khoa Hoc Tự Nhiên Tìm hiểu thêm về hohoanganhfu

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X