Thông báo

Collapse
No announcement yet.

Cách giao tiếp DS1877 và PIC6F877A

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

  • Cách giao tiếp DS1877 và PIC6F877A

    Có bạn nào biết cách giao tiếp con RTC DS12C887 và PIC 16F877A, dùng 3 con Led 16 đoạn để hiển thị thứ, 9 con 7 đoạn dùng hiển thị ngày giờ, tôi dùng con DS12C887 làm mạch đồng hồ thời gian thực,để cúp điện không bị mất dữ liệu. Hiện Thứ= Led1+Led2+Led3 (16 đoạn), ngày=Led4, tháng=Led5, năm=Led6+Led7, giờ=Led8+Led9, phút=Led10+Led11.Dùng 3 phím để cái đặt thời gian: Phím1=Set (ngày,tháng,năm,giờ,phút). Phím2=Up. Phím3=down
    Nếu dùng Remote điều khiển từ xa gồm 3 nút chỉnh càng hay
    Thí dụ: FRI 27/10/06
    21:15
    Last edited by nbqvdp; 27-10-2006, 22:46.

  • #2
    Nguyên văn bởi nbqvdp Xem bài viết
    Có bạn nào biết cách giao tiếp con RTC DS12C1887 và PIC 16F877A, dùng 3 con Led 16 đoạn để hiển thị thứ, 9 con 7 đoạn dùng hiển thị ngày giờ, tôi dùng con DS12C887 làm mạch đồng hồ thời gian thực,để cúp điện không bị mất dữ liệu. Hiện Thứ= Led1+Led2+Led3 (16 đoạn), ngày=Led4, tháng=Led5, năm=Led6+Led7, giờ=Led8+Led9, phút=Led10+Led11.Dùng 3 phím để cái đặt thời gian: Phím1=Set (ngày,tháng,năm,giờ,phút). Phím2=Up. Phím3=down
    Nếu dùng Remote điều khiển từ xa gồm 3 nút chỉnh càng hay
    Thí dụ: FRI 27/10/06
    21:15
    Giao tiếp giữa DS12887 với PIC bị một bệnh rất mất dạy, mà không bị khi làm với 8051. Bác viết code lên em sửa cho, chứ code nguồn của em thì em không share
    Mà bác nào dám đập thử con DS12887 ra xem trong đó có gì chưa ?

    Comment


    • #3
      Giao tiếp giữa DS12887 với PIC bị một bệnh rất mất dạy, mà không bị khi làm với 8051.

      Bác nói xem "PIC bị một bệnh rất mất dạy" nghĩa là làm sao tôi không hiểu, nó chạy không ổn à? thế theo bác có kinh nghiệm thì nên dùng con nào cho PIC, bác trích 1 đoạn code của bác, để tớ xem cách giao tiếp ra sao, rồi tớ tìm cách phát triển sau. Cám ơn

      Comment


      • #4
        Nguyên văn bởi nbqvdp Xem bài viết
        Giao tiếp giữa DS12887 với PIC bị một bệnh rất mất dạy, mà không bị khi làm với 8051.

        Bác nói xem "PIC bị một bệnh rất mất dạy" nghĩa là làm sao tôi không hiểu, nó chạy không ổn à? thế theo bác có kinh nghiệm thì nên dùng con nào cho PIC, bác trích 1 đoạn code của bác, để tớ xem cách giao tiếp ra sao, rồi tớ tìm cách phát triển sau. Cám ơn
        Bác tò mò sớm làm gì, bệnh đó em không giải thích được, nhưng phải làm thế mới chạy, bác cứ tìm hiểu, rùi tự tìm ra mới zui, chứ em nói ngay mất hứng , không ra thì em sửa cho.

        Bác dùng con PIC nào cũng được, em làm với 877A chạy tốt, không sao cả.

        Comment


        • #5
          Vì muốn rút ngắn thời gian và tránh thương đau mới lên đây bày tỏ để các cao thủ giúp chứ. Nêu không vào đây đàm tiếu cho vui

          Comment


          • #6
            Có bác nào dùng DS12C887 mà nó chạy chậm chưa? em vừa làm 50 cái mạch, mà hết 10 cái con realtime chạy rất chậm, ít thì 1 ngày chậm vài phút, nhiều thì 1 ngày chậm gần 20 tiếng
            Bác nào đã gặp lô hàng DS12887 kém chất lượng nhiều vậy chưa? hay do mạch hay code của em sai? Chỉ có mỗi việc set bộ bit 010 cho nó bắt đầu chạy thôi mà, có chỗ nào để set tốc độ cho nó đâu nhỉ, auto hết mà ???
            Lưu data vào vùng 114byte ram của nó cũng dễ mất nữa, lâu lâu lại sai vài byte. Chắc lô hàng này kém chất lượng quá
            Phạm Minh Tuấn

            (+84) 982006467

            Comment


            • #7
              Chạy sai thi tôi chưa gặp bao giờ ( toàn xài hàng cũ rã máy ra thôi, lâu lâu nó hết pin chết đầy).
              Còn chuyện ram bị sai thì rất có thể bạn đọc nhầm, hoặc quá trình ghi-đọc bị nhiễu (rất dễ gặp). Mình thì khi đọc ra hoặc ghi vào đều phải kiểm tra nhiều lần.

              Comment


              • #8
                hàng cũ rã máy thì mua ở đâu hả anh? (HCM)
                Phạm Minh Tuấn

                (+84) 982006467

                Comment


                • #9
                  Tiệm 158B LTK ấy, giá hồi trước mua khoảng 22k/con. Tiệm ông Thuần cũng có bán. Có điều về lục lại, trong nhà còn gần chục con hồi đó mua về làm còn dư, kiểm tra thì chết hơn phân nửa. Hai năm nay không dùng đến. Mà cũng lạ, trong datasheet ghi minimum 10years lack of main power, nhưng mấy con đó sản xuất 1999-2000, đến nay chưa đầy 10 năm mà, chưa kể thời gian nó được cấp điện.

                  Comment


                  • #10
                    Nguyên văn bởi phamthaihoa Xem bài viết
                    Giao tiếp giữa DS12887 với PIC bị một bệnh rất mất dạy, mà không bị khi làm với 8051. Bác viết code lên em sửa cho, chứ code nguồn của em thì em không share
                    Mà bác nào dám đập thử con DS12887 ra xem trong đó có gì chưa ?
                    Ngày trước em làm cái đồng hồ với con DS12887 này, nói chung hay bị dở chứng, em hay dùng DS1307 hơn vì ổn định hơn, giá lại rẻ hơn.
                    Có mấy con 12887 đó, em đập ra xem có gì mà nó to thế, hóa ra có 1 con IC cõng trên mình một cục pin cúc áo, 2 cực pin hàn vào 2 chân của con IC.

                    Comment


                    • #11
                      Mình gặp một lỗi là đọc ghi vào thanh ghi đều ok nhưng sau khi thiết lập giá trị đầu cho thanh ghi A, B đọc thanh ghi thời gian ra thì không thấy nó cập nhật gì hết chi toàn 0 thôi, DS12c887 mới mua ở Thiên Minh code đây mọi người coi giùm cái, nếu sai hay thiếu sót ở đâu cho minh cách sửa với, đang cần hoàn thành gấp hix hix
                      Code:
                      #include <16F877a.h>
                      #include <DEFS_16F877A.h>
                      #fuses HS,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
                      #use delay(clock=20000000)
                      #define use_portb_lcd TRUE
                      #include <lcd.c>
                      #define DS  RE2
                      #define R_W RE1
                      #define AS RE0
                      #define RTC PORTD
                      int DCD,DCV,DLV,DCS,x; // dia chi doc , dia chi viet, du lieu viet, dia chi giay,x.
                      //ham doc rtc
                      void docrtc(void)
                      {
                       set_tris_D(0);
                       set_tris_E(0);
                       DS =1;
                       R_W=1;
                       AS =1;
                       RTC=DCD;
                       delay_us(10);
                       AS =0;
                       DS =0;
                       set_tris_D(0xff);
                       delay_us(10);
                      void vietrtc(void)
                      {
                       set_tris_D(0);
                       set_tris_E(0);
                       AS = 1;
                       DS = 1;
                       R_W= 1;
                       RTC= DCV;
                       delay_us(10);
                       AS = 0;
                       delay_ms(1);
                       RTC= DLV;
                       R_W= 0;
                       delay_us(10);
                       AS = 1;
                       delay_us(10);
                      void main(void)
                      {
                         delay_ms(100);          // tao tre 100ms cho LCD khoi dong
                          set_tris_D(0);
                          set_tris_E(0);
                          DCV = 0;
                          DLV = 0;
                          delay_us(10);
                          DCV = 0x10;   //  dia chi thanh ghi A
                          DLV = 0x20;   // gia tri cap nhat
                          vietrtc();
                          DCV = 0;
                          DLV = 0;
                          delay_us(10);
                          DCV = 0x11;   //  dia chi thanh ghi B
                          DLV = 0x06;   // gia tri cap nhat
                          vietrtc();
                          delay_us(10);
                      while(1)
                       {  
                          DCS = 0;    
                          DCD = 0;
                          delay_ms(1);
                          DCD = 0;   // doc gia tri thanh ghi giay
                          docrtc();
                          DCS = RTC;
                          delay_us(10);
                          AS = 1;
                          x = DCS;
                          lcd_init();
                          lcd_gotoxy(7,1);        // vi tri (x,y)=(7,1)= hang 1, cot 7
                          lcd_putc(x);  
                          delay_ms(100);
                       }
                      }
                      Lỗi mất dạy bác ấy nói có phải lỗi này không nhỉ?
                      Last edited by 008; 24-12-2009, 08:51.
                      ^^ DD3N điên nặng gấp 3 lần người thường ^^

                      Comment


                      • #12
                        sao không có cao thủ nào tư vấn nhỉ, em cũng đang làm cái này nhưng bí quá nên mò lên diễn đàn, ai dze đâu,hix,cao thủ đi nhậu hết rùi sao?

                        Comment


                        • #13
                          Nguyên văn bởi tranvanan Xem bài viết
                          sao không có cao thủ nào tư vấn nhỉ, em cũng đang làm cái này nhưng bí quá nên mò lên diễn đàn, ai dze đâu,hix,cao thủ đi nhậu hết rùi sao?
                          qua đây:
                          http://www.picvietnam.com/forum/showthread.php?t=5591
                          |

                          Comment


                          • #14
                            Nguyên văn bởi tranvanan Xem bài viết
                            sao không có cao thủ nào tư vấn nhỉ, em cũng đang làm cái này nhưng bí quá nên mò lên diễn đàn, ai dze đâu,hix,cao thủ đi nhậu hết rùi sao?
                            hihi vấn đề mình giải quyết rùi, Thực tế là làm theo turial của bên picvn ghi la thanh ghi A có địa chỉ 10h còn B có địa chỉ 11h. Nhưng coi kĩ lại datasheet phát hiện ra thanh ghi A la 0Ah, thanh ghi B la 0Bh. Bạn coi thử lại coi, chỉ cần set 010 cho đúng là nó chạy rồi không cần làm gì khác hết.
                            Chúc may mắn! Tết rùi mà vẫn quyết chiến nhỉ
                            ^^ DD3N điên nặng gấp 3 lần người thường ^^

                            Comment


                            • #15
                              @008:Bạn có thể giúp đỡ mình làm cái mạch này được không, vì mình mới mày mò học PIC được gần 1 tháng nay thôi, mình cũng dùng 16f877a va ds12c887, cung với lcd11602, nhưng mà chưa biết bắt đầu như thế nào nữa, bạn làm qua rồi thì giúp mình với, cảm ơn bạn nhiều lắm.

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X