Thông báo

Collapse
No announcement yet.

mạch đồng hồ DS1307 hiển thị trên LCD

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

  • #16
    RTC không chạy và hiển thị không đúng...mong các bác giúp đỡ

    Em test mãi không thể nào phát hiên ra lỗi là do đâu mà đồng hồ không chạy chỉ đứng im và hiện thị cố định như hình vẽ này nhé (mạch em mô phỏng có nhiệt độ và đồng hồ RTC, nhiệt độ thì được rồi, đồng hồ thì chưa)
    Mong các bác xem giúp em lỗi do đâu nhé, thank all.
    dưới đây là hình ảnh lỗi và link file mô phỏng proteus+ codevision:
    http://www.mediafire.com/?osepan0la5793az
    Attached Files

    Comment


    • #17
      Bạn phải gửi cả code lên chứ, mạch thì chẳng sai gì đâu.
      Hôm nay trời nắng chang chang.
      Mèo con đi học chẳng mang thứ gì.
      Chỉ mang một cái bút chì.
      Và mang một mẩu bánh mì con con.

      Comment


      • #18
        Nguyên văn bởi Acxen_lupine Xem bài viết
        Bạn phải gửi cả code lên chứ, mạch thì chẳng sai gì đâu.
        bác ơi, link mô phỏng và code của em đó, bác down về xem giúp em nhé, thanks

        Comment


        • #19
          Thằng DS1307 nó định dạng các thanh ghi thời gian của nó ở dạng BCD, vd 19h thì có dạng 0x19 (0001 1001) bạn dùng lênh chia, chia lấy dư cho 10 là không ổn rồi. Nhưng chí ít thì giá trị giây nó phải thay đổi chứ nhỉ. Mình chưa đọc kỹ, bạn gửi tất cả project lên đc không, ngại tạo để dịch quá.
          Hôm nay trời nắng chang chang.
          Mèo con đi học chẳng mang thứ gì.
          Chỉ mang một cái bút chì.
          Và mang một mẩu bánh mì con con.

          Comment


          • #20
            Nguyên văn bởi Acxen_lupine Xem bài viết
            Thằng DS1307 nó định dạng các thanh ghi thời gian của nó ở dạng BCD, vd 19h thì có dạng 0x19 (0001 1001) bạn dùng lênh chia, chia lấy dư cho 10 là không ổn rồi. Nhưng chí ít thì giá trị giây nó phải thay đổi chứ nhỉ. Mình chưa đọc kỹ, bạn gửi tất cả project lên đc không, ngại tạo để dịch quá.
            EM cũng thấy thế, mã dữ liệu từ ds1307 là BCD, cần phải chuyển rồi mới dùng thuật toán hiện tách từng số một ra ( và cần kiểm soát cả các bit liên quan ở trong thanh ghi giây, và một số thanh ghi khác, khi chuyển đổi thì phải để ý đến các bit đó) bác thấy sao
            link full, phiền bác xem giúp
            http://www.mediafire.com/?fx3rtlq5ikg1ge2

            Comment


            • #21
              Nguyên văn bởi matrix Xem bài viết
              EM cũng thấy thế, mã dữ liệu từ ds1307 là BCD, cần phải chuyển rồi mới dùng thuật toán hiện tách từng số một ra ( và cần kiểm soát cả các bit liên quan ở trong thanh ghi giây, và một số thanh ghi khác, khi chuyển đổi thì phải để ý đến các bit đó) bác thấy sao
              link full, phiền bác xem giúp
              http://www.mediafire.com/?fx3rtlq5ikg1ge2
              alo alo... cả nhà có biết "bệnh' trên là gi không nhỉ? giúp em nhé, thanks all

              Comment


              • #22
                Trong code chân SDA & SCL của bạn bị lộn, không giống sơ đồ.
                Hôm nay trời nắng chang chang.
                Mèo con đi học chẳng mang thứ gì.
                Chỉ mang một cái bút chì.
                Và mang một mẩu bánh mì con con.

                Comment


                • #23
                  Nguyên văn bởi Acxen_lupine Xem bài viết
                  Trong code chân SDA & SCL của bạn bị lộn, không giống sơ đồ.
                  thanks bác nhiều nhé, bù đầu nhìn mãi không ra, nhưng vẫn sơ đồ như vậy, chạy đúng được chút rồi lại bị lỗi. Tât cả là do bản proteus bị lỗi nên mô phỏng lỗi vậy.Ai gặp lỗi như vậy thì dowload bản proteus version nào không lỗi, cài lại là chạy ngon lành. ( Nhớ vẽ mạch lại toàn bộ, vì linh kiện trong bản cũ bị lỗi, em đã thử dùng bản lỗi đó, nhưng lấy thư viện linh kiện của bản mà người khác chạy không có lỗi thì vẫn chạy ngon lanh>>> linh kiện bản đang dùng bị lỗi ). Chúc các bác nào gặp lỗi như vậy sửa được nhé.

                  Comment


                  • #24
                    Nguyên văn bởi matrix Xem bài viết
                    thanks bác nhiều nhé, bù đầu nhìn mãi không ra, nhưng vẫn sơ đồ như vậy, chạy đúng được chút rồi lại bị lỗi. Tât cả là do bản proteus bị lỗi nên mô phỏng lỗi vậy.Ai gặp lỗi như vậy thì dowload bản proteus version nào không lỗi, cài lại là chạy ngon lành. ( Nhớ vẽ mạch lại toàn bộ, vì linh kiện trong bản cũ bị lỗi, em đã thử dùng bản lỗi đó, nhưng lấy thư viện linh kiện của bản mà người khác chạy không có lỗi thì vẫn chạy ngon lanh>>> linh kiện bản đang dùng bị lỗi ). Chúc các bác nào gặp lỗi như vậy sửa được nhé.
                    Sao down code về báo lỗi là sao vậy, mọi người tải về mở lên ko thấy bị lỗi à?
                    Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
                    Liên hệ sđt: 0902.808.371

                    Comment


                    • #25
                      Nguyên văn bởi hungmc Xem bài viết
                      Để cài đặt lại thời gian dùng phím, bạn có thể dùng 4 phím: Function, Up, Down, OK.
                      Trong đó phím F có nhiệm vụ hiển thị các chức năng của mạch: ví dụ
                      F1 = set giờ; F2=set phút; F3=set giây.......Fn = tùy bạn. Để biết đang ở Fi nào ta dùng một biến var_func chẳng hạn. Ví dụ trong ngắt phím:

                      if(key==F)
                      {
                      if(var_func<10)var_func++; // ví dụ có 10 chức năng
                      else var_func=0;

                      if(var_func==1)
                      {
                      //chương trình thực hiện cho phím F1
                      }
                      ..........................

                      }

                      Nếu phát hiện ra là phím UP, thì ta sẽ tìm var_func để biết là mình sẽ tăng biến thời gian nào, chẳng hạn, var_func=1 thì tăng giờ, =2 thì tăng phút.....
                      Phím DOWN giống phím UP nhưng tác động theo chiều ngược lại.
                      Phím OK sẽ tác động tới DS1307 bằng các hàm set_time, các đối số của hàm này sẽ là kết quả của việc bạn tăng hay giảm ở các Function trên.

                      Đây là một ví dụ của việc cài đặt thời gian một cách dễ tiếp cận nhất, thực tế người ta có thể cài đặt bằng các phương pháp dịch con trỏ trên màn LCD, hoặc truyền từ máy tính, hoặc dùng một phím kết hợp với biến trở dùng ADC.

                      Chúc bạn thành công!

                      Đây là đoạn code của em, ngày giờ thì chạy được rồi, nhờ bác thêm cho phần 4 phím điều chỉnh thời gian vào cho em với. Em cảm ơn nhiều!

                      #include <mega16.h>

                      // I2C Bus functions
                      #asm
                      .equ __i2c_port=0x15 ;PORTC
                      .equ __sda_bit=1
                      .equ __scl_bit=0
                      #endasm
                      #include <i2c.h>

                      // DS1307 Real Time Clock functions
                      #include <ds1307.h>

                      // Alphanumeric LCD Module functions
                      #asm
                      .equ __lcd_port=0x18 ;PORTB
                      #endasm
                      #include <lcd.h>
                      unsigned char h,m,s,d,t,n;
                      unsigned char h1,h2,m1,m2,s1,s2,d1,d2,t1,t2,n1,n2;
                      void CH_clear(void)
                      {
                      i2c_start();
                      i2c_write(0xd0);
                      i2c_write(0);
                      i2c_write(0);
                      i2c_stop();
                      }
                      void main(void)
                      {
                      PORTA=0xFF;
                      DDRA=0xFF;
                      PORTB=0x00;
                      DDRB=0xF7;
                      PORTC=0xF0;
                      DDRC=0xF0;
                      PORTD=0x00;
                      DDRD=0x04;

                      i2c_init();
                      rtc_init(3,1,0);
                      lcd_init(16);
                      rtc_set_time(0,0,0,);
                      rtc_set_date(1,1,11);
                      CH_clear();
                      while (1)
                      {

                      // Hien thi gio, phut,giay o hang 1
                      rtc_get_time(&h,&m,&s);
                      lcd_gotoxy(0,0);
                      lcd_putsf("time:");
                      //set hour
                      h1=h%10;
                      h2=h/10;
                      lcd_putchar(h2+0x30);
                      lcd_putchar(h1+0x30);
                      lcd_putsf(":");

                      //set min
                      m1=m%10;
                      m2=m/10;
                      lcd_putchar(m2+0x30);
                      lcd_putchar(m1+0x30);
                      lcd_putsf(":");

                      //set giay
                      s1=s%10;
                      s2=s/10;
                      lcd_putchar(s2+0x30);
                      lcd_putchar(s1+0x30);

                      rtc_get_date(&d,&t,&n);
                      lcd_gotoxy(0,1);
                      lcd_putsf("date:");
                      // set ngay
                      d1=d%10;
                      d2=d/10;
                      lcd_putchar(d2+0x30);
                      lcd_putchar(d1+0x30);
                      lcd_putsf("/");
                      //set thang
                      t1=t%10;
                      t2=t/10;
                      lcd_putchar(t2+0x30);
                      lcd_putchar(t1+0x30);
                      lcd_putsf("/");
                      // set nam
                      n1=n%10;
                      n2=n/10;
                      lcd_putchar(n2+0x30);
                      lcd_putchar(n1+0x30);


                      }
                      }
                      Nhận làm mạch, ĐAMH sử dụng vđk Pic & AVR tại tp.HCM
                      Liên hệ sđt: 0902.808.371

                      Comment


                      • #26
                        cho mình hỏi mạch đồng hồ số dùng ds1307 mình sài tụ bao nhiêu cho thạch anh.

                        Comment


                        • #27
                          Nguyên văn bởi thanhtam_cdd Xem bài viết
                          cho mình hỏi mạch đồng hồ số dùng ds1307 mình sài tụ bao nhiêu cho thạch anh.
                          thạch anh của ai bạn. cho 1307 là 0.0000000nF.
                          email:
                          chỉ được liên lạc từ 19h00 - 21h30



                          Comment


                          • #28
                            co moi bai hay thi cac hinh anh lai hong het rụ!chan wa di!bac nao co bai hay ve mo phong Mạch giao tiếp với DS1307 Dùng chuẩn I2C chi giup em voi! thanks!

                            Comment

                            Về tác giả

                            Collapse

                            danet Tìm hiểu thêm về danet

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

                            Collapse

                            Đang tải...
                            X