Thông báo

Collapse
No announcement yet.

Hỏi Về Cách Giao Tiếp Giữa Vdk Với Ic Thời Gian Thực

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

  • Hỏi Về Cách Giao Tiếp Giữa Vdk Với Ic Thời Gian Thực

    mình muốn làm một cái đồng hồ số hiện thị thứ giờ phút giây , nhưng chỉ làm bằng VDK thì nó chạy ko nổi, nghe người ta nói phải dùng con IC thời gian thực
    chạy mới chính xác
    VẬY :ai có sơ đồ mạch giao tiếp giữa VDK với IC realtime cho tui xin , hoạc chỉ cách giao tiếp với IC thời gian thực cũng dc , xin chân thành cảm ơn
    rất mong nhận dc hồi âm của các bạn, thanks so much


    CẨN BÚT
    LacTu is online now Report Post Edit/Delete Message

  • #2
    dùng vdk cũng chạy được chỉ có điều là nó không được chuẩn cho lắm
    và không có hiển thị được ngày tháng
    RTC thì có thể khắc phục được điều này
    nó có đầy đủ ngày tháng thứ và thời gian,có thể lưu trữ thời gian và ngày tháng khi mất điện
    bạn down datasheet nhiều lắm
    bạn đọc datasheet là ok hết mà
    nó liên quan đến i2c đó
    bạn tìm hiểu trước có gì khó khăn liên hệ với mình
    vocam.h@gmail.com
    chúc bạn thành công
    0945061338(vocam.h@gmail.com,lehanhdtk3@gmail.com)
    ||
    PROGRAMING(C,ASM),HARDWARE,LMD,RTC,GPRS,GPS....ALL OF VDK

    Comment


    • #3
      Bạn vào xem trong Mục lục của box nhé.
      AVR đã quay trở lại: ATMEGA32: 66k, ATMEGA8A: 30k, ATMEGA48: 30k.
      Xem thêm tại Online Store ---> Click here
      Mob: 0982.083.106

      Comment


      • #4
        Nguyên văn bởi vo_cam Xem bài viết
        dùng vdk cũng chạy được chỉ có điều là nó không được chuẩn cho lắm
        và không có hiển thị được ngày tháng
        RTC thì có thể khắc phục được điều này
        nó có đầy đủ ngày tháng thứ và thời gian,có thể lưu trữ thời gian và ngày tháng khi mất điện
        bạn down datasheet nhiều lắm
        bạn đọc datasheet là ok hết mà
        nó liên quan đến i2c đó
        bạn tìm hiểu trước có gì khó khăn liên hệ với mình
        vocam.h@gmail.com
        chúc bạn thành công
        bạn có sơ đồ mạch ko, mình có đọc datasheet rùi nhưng ko hiểu cái chân swq nối sao nữa, hình như là chân cấp xung thì phải, nhưng mình ko biết cấp xung bao nhiêu, cách tính thời gian thế nào,tiếng anh mình hơi tệ

        Comment


        • #5
          Nguyên văn bởi TrucQuanTu Xem bài viết
          bạn có sơ đồ mạch ko, mình có đọc datasheet rùi nhưng ko hiểu cái chân swq nối sao nữa, hình như là chân cấp xung thì phải, nhưng mình ko biết cấp xung bao nhiêu, cách tính thời gian thế nào,tiếng anh mình hơi tệ
          Chân SQW là 1 ngõ ra. Chân này có thể xuất xung có tần số 1Hz, 4kHz, 8kHz hoặc 32kHz tùy vào giá trị nạp vào thanh ghi Control (địa chỉ 07H) của DS1307.
          Nếu không có nhu cầu, bạn có thể bỏ qua chân này trong thiết kế của mình.

          Comment


          • #6
            Giao tiếp DS12887 và VXL... Các chân còn lại bạn tự kết nối nhé.
            Attached Files

            Comment


            • #7
              ko biết mình nối chân như vậy có đúng ko, mọi người chỉ dùm nha
              tui dùng con ds1307
              theo các bạn dùng ds12887 hay con ds 1307 cái nào lập trình khó hơn
              cảm ơn bigsky nhiều
              về phần lập trình thì ai có lưu đồ hướng dẩn ko? tuần tự ctrinh sao?
              viết giao tiếp giửa vdk với RTC rùi tới ctrinh quét led rùi tới hẹn giờ hay sao?
              tui hơi bèo có gì chỉ tui nhiệt tình nha cảm ơn nhiều
              mình còn gà chỉ biết viết bằng hợp ngử thôi, vả lại thầy giáo bắt viết bằng hợp ngữ chứ ko cho viết bằng C

              Comment


              • #8
                file đây mọi người xem dùm cảm ơn

                Comment


                • #9
                  sao gửi ko dc

                  Comment


                  • #10
                    ko biết mình nối chân như vậy có đúng ko, mọi người chỉ dùm nha
                    tui dùng con ds1307
                    theo các bạn dùng ds12887 hay con ds 1307 cái nào lập trình khó hơn
                    cảm ơn bigsky nhiều
                    về phần lập trình thì ai có lưu đồ hướng dẩn ko? tuần tự ctrinh sao?
                    viết giao tiếp giửa vdk với RTC rùi tới ctrinh quét led rùi tới hẹn giờ hay sao?
                    tui hơi bèo có gì chỉ tui nhiệt tình nha cảm ơn nhiều
                    mình còn gà chỉ biết viết bằng hợp ngử thôi, vả lại thầy giáo bắt viết bằng hợp ngữ chứ ko cho viết bằng C
                    Tất nhiên là DS1307 khó hơn rồi. Với DS12887, chỉ cần 1-2 lệnh là có thể đọc được 1 byte giây hoặc phút... rồi.
                    Ví dụ\ đọc ô nhớ giây:
                    mov r0,#0
                    movx a,@r0

                    Lần sao có cám ơn ai thì nhấn vào nút cám ơn nhé.

                    Comment


                    • #11
                      Mình đang gặp khó khăn về con DS12887 đây.Mong các anh chi giúp đỡ nhé.
                      Mình thấy trong datashite ghi địa chỉ của giây,phút,giờ.....có dạng số hex nhưng mình đọc một số chương trình mãu thì lại truy cập mấy cái địa chỉ ở dạng decimo.Mình vẫn còn chưa hiểu ró điều này lắm
                      Mong các anh chị giải thích rõ dùm mình chỗ này nhé.
                      Cảm ơn rất nhiều!

                      Comment


                      • #12
                        Còn nữa.Sẵn cho e hỏi chổ này luôn.
                        Giá trị dữ liệu khi mình đọc từ 12887 ra ngoài ở dạng BCD(mình đã khai báo trước rồi)nhưng mình chưa thấy dữ liệu xuất ra ngoài được.
                        Mình rất mê tính chuyên dụng và tiện lợi của 12887(để làm đồng hồ)nhưng tiếc là vẫn chưa điều khiển nó được.
                        Mong các anh chị đã trị con này được rồi truyền lại vài chiêu cho người mới lơ mơ như mình.

                        Comment


                        • #13
                          Ví dụ địa chỉ phút là 02h = 2 thập phân = 00000010 b
                          Đọc được dữ liệu rồi mà không hiển thị lên được thì phải xem bạn hiển thị như thế nào, phần cứng như thế nào.

                          Comment


                          • #14
                            CÁC BẠN THAM KHẢO TRƯƠNG TRÌNH NÀY.
                            ;.....................chung trinyh nay da chay 0.k...................
                            ORG 00H

                            ;JB P3.7,$
                            ;LCALL KHOITAODALAS


                            TD: mov p2,#0ffh
                            LCALL DOC_GPG
                            lcall dieukhien
                            LCALL BCD_7DOAN
                            LCALL HIENTHI
                            LJMP TD
                            ;******************************************
                            ;chon so hien thi la BCD va hien thi 24h 00000010
                            KHOITAODALAS:
                            MOV R0,#0AH ;dia chi thanh ghi A la 1010
                            MOV A,#0A0H ;cho thanh ghi A la(00100000)
                            MOVX @R0,A ; thanh ghi A o ben ngoai

                            MOV R0,#0BH ;dia chi thanh ghi B 1011
                            MOV A,#02H ;thiet lap cho thanh ghi B 010
                            MOVX @R0,A ;truy xuat thanh ghi A o ben ngoai

                            MOV R0,#00H ;dia chi o nho giay la 00h
                            MOV A,#00 ;bat dau chay la 00 giay
                            MOVX @R0,A ; thanh ghi A o ben ngoai giay 00

                            MOV R0,#02H ;dia chi o nho phut la 02h
                            MOV A,#24h ;khai bao phut
                            MOVX @R0,A ;kq phut =34

                            MOV R0,#04H ;o nho gio la 04h
                            MOV A,#20h ;gio duoc hien thi
                            MOVX @R0,A ;thanh ghi A o ben ngoai

                            RET
                            ;*********************************************
                            DOC_GPG:

                            MOV R0,#00H ;dua noi dung o nho giay vao R0
                            MOV R1,#10H
                            DOC: MOVX A,@R0
                            MOV @R1,A ;DO THANH GHI A VAO R1
                            INC R0 ;tang 00h len
                            INC R0 ;tang 00h len
                            INC R1 ;tang o nho 10h len
                            CJNE R0,#06H,DOC ;02h doc giay, 04h doc phut, 06h doc ret ;gio,con muon co ngay,thang,nam ;thi cu tang len
                            dieukhien:
                            mov r0,#00h
                            movx a,@r0
                            cjne a,#25h,tt ;25 giay
                            clr p2.0
                            LCALL DELAY1
                            tt: RET
                            ;******************************************

                            BCD_7DOAN:

                            MOV DPTR,#500H
                            MOV R0,#10H
                            MOV R1,#20H
                            BC: MOV A,@R0 ;DUA NOI DUNG 0 nho 10h vao A
                            ANL A,#0FH ;AND A VOI 0FH DE LAY 4 bit thap
                            MOVC A,@A+DPTR
                            MOV @R1,A
                            INC R1
                            MOV A,@R0 ;tiep tuc dua noi dung o nho R0 vao A
                            ANL A,#0F0H
                            SWAP A ;chuyen 4 bit thap thanh 4 bit cao
                            MOVC A,@A+DPTR
                            MOV @R1,A
                            INC R0
                            INC R1
                            CJNE R0,#13H,BC
                            RET
                            ;**************************************

                            HIENTHIXXX:
                            MOV R0,#20H
                            MOV A,#0FEH ;cho hien thi led thu 1(0fbh)
                            HT: MOV P0,@R0
                            MOV P1,A
                            LCALL DELAY
                            MOV P1,#0FFH
                            INC R0
                            RL A
                            CJNE A,#0FEH,HT ;neu du 6 led roi thi dung
                            RET

                            HIENTHI:
                            MOV R0,#20H
                            MOV A,#0FEH ;led so 1
                            MOV P0,@R0
                            MOV P1,A
                            LCALL DELAY
                            MOV P1,#255
                            INC R0
                            MOV A,#0FDH ;led so 2
                            MOV P0,@R0 ;DU LIEU P0
                            MOV P1,A
                            LCALL DELAY ;QUET LED P1
                            MOV P1,#255
                            INC R0
                            MOV A,#0FBH
                            MOV P0,@R0
                            MOV P1,A
                            LCALL DELAY
                            MOV P1,#255
                            INC R0
                            MOV A,#0F7H
                            MOV P0,@R0
                            MOV P1,A
                            LCALL DELAY
                            MOV P1,#255
                            INC R0
                            MOV A,#0EFH
                            MOV P0,@R0
                            MOV P1,A
                            LCALL DELAY
                            MOV P1,#255
                            INC R0
                            MOV A,#0DFH
                            MOV P0,@R0
                            MOV P1,A
                            LCALL DELAY
                            MOV P1,#255

                            RET
                            ;********************************

                            DELAY:
                            MOV 7FH,#50
                            DJNZ 7FH,$
                            RET
                            delay1: mov r6,#100
                            dl1: mov r7,#100
                            dl2: djnz r7,dl2
                            djnz r6,dl1
                            ret
                            ;*******************************
                            ORG 500H
                            DB 0c0h,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H

                            END

                            Comment


                            • #15
                              Vấn đề đọc ra là Binary hay BCD thì các bạn lưu ý phải khởi tạo giá trị thanh ghi A trong DS12887 cho đúng. Tham khảo hàm init và một số hàm khác dùng để truy xuất ngày giờ qua DS12887 dưới đây nhé:

                              #define INT_REG_A 0x20
                              #define INT_REG_B 0x06 //normal
                              #define UDP_REG_B 0x86 //read candelar
                              #define RTC_ADDR 0x0000 //0x7000

                              #define RTC_DATA (RTC_ADDR+0x0E)
                              #define NVR_SIZE (0x7F-0x0E+1)

                              xdata char volatile _RTC_SS_ _at_ (RTC_ADDR+0);
                              xdata char volatile _RTC_MI_ _at_ (RTC_ADDR+2);
                              xdata char volatile _RTC_HH_ _at_ (RTC_ADDR+4);
                              xdata char volatile _RTC_TH_ _at_ (RTC_ADDR+6);
                              xdata char volatile _RTC_DD_ _at_ (RTC_ADDR+7);
                              xdata char volatile _RTC_MO_ _at_ (RTC_ADDR+8);
                              xdata char volatile _RTC_YY_ _at_ (RTC_ADDR+9);

                              xdata char volatile regA _at_ (RTC_ADDR+0x0A);
                              xdata char volatile regB _at_ (RTC_ADDR+0x0B);
                              xdata char volatile regC _at_ (RTC_ADDR+0x0C);
                              xdata char volatile regD _at_ (RTC_ADDR+0x0D); // 11 bytes

                              //xdata char volatile NVRAM[NVR_SIZE] _at_ RTC_DATA;
                              //IniRTC: intal Real time clock run at mode 24 hour in binary counter
                              //return=0: init OK return 0x0D: Battery error
                              //0x0A: can not inital Register A (RTC not Exist !)
                              //0x0B: can not inital Register B (RTC not Exist !)
                              //0xFF: (RTC not Exist !)
                              //------------------------------------------------------------------

                              #define XSIZE 108
                              void Setdefault(void){
                              unsigned int *p;
                              unsigned char ch;
                              p=&t_delay_a; //Dau vung du lieu Rtc xdata
                              for(ch=0;ch<XSIZE/2;ch++){
                              (*p)=0xffff;
                              p++;
                              }
                              t_delay_a=120; // default =120 phut
                              t_delay_b=60; // default =60 phut
                              UpdateChkSum();
                              }
                              //-----------------------------------
                              unsigned int RtcSum(void){
                              unsigned int Sum;
                              unsigned int *p;
                              unsigned char ch;
                              p=&t_delay_a;
                              Sum=0;
                              for(ch=0;ch<XSIZE/2;ch++){
                              Sum=Sum+(*p);
                              p++;
                              }
                              return Sum;
                              }
                              //-------------------------------------------------
                              unsigned int XDataCheckSum(){ //return 0:Ok #:CheckSum error
                              unsigned int Sum;
                              Sum=RtcSum();
                              return (Sum+ChkSum);
                              }
                              //-------------------------------------------------------------
                              void UpdateChkSum(void){
                              ChkSum=RtcSum();
                              ChkSum=(~ChkSum)+1;
                              }
                              //-------------------------------------------------------------

                              char IniRtc(){
                              char ch;
                              ch=0xFF;
                              do{
                              regA=0x20;
                              regB=0x06;
                              ch--;
                              _nop_(); //do nothing one clock cycle
                              }while(ch&&((regA!=0x20)||(regB!=0x06)));
                              ch=0;
                              if (regA!=0x20) ch=0x0A;
                              if (regB!=0x06) ch=ch+0x0B;
                              if (regD!=0x80){
                              if (ch==0) ch=0x0D;
                              else ch=0xFF;
                              }
                              return ch;
                              }
                              //-------------------------------------------
                              //return current time (hour,minute,second)
                              //-------------------------------------------
                              char GetRtcTime(struct time *rtc_time){
                              if((regC&0x10)!=0){
                              regB=UDP_REG_B;
                              (*rtc_time).ss=_RTC_SS_;
                              (*rtc_time).mm=_RTC_MI_;
                              (*rtc_time).hh=_RTC_HH_;
                              regB=INT_REG_B;
                              return 1; //update time
                              }
                              else
                              return 0; //no change
                              }
                              //-------------------------------------------
                              //return current date (day,month,year)
                              //-------------------------------------------
                              char GetRtcDate(struct date *rtc_date){
                              regB=UDP_REG_B;
                              (*rtc_date).th=_RTC_TH_;
                              (*rtc_date).dd=_RTC_DD_;
                              (*rtc_date).mm=_RTC_MO_;
                              (*rtc_date).yy=_RTC_YY_;
                              regB=INT_REG_B;
                              return 0;
                              }

                              //-------------------------------------------
                              //set time (hour,minute,second)
                              //-------------------------------------------
                              char SetRtcTime(struct time *newtime){
                              regB=UDP_REG_B;
                              _RTC_SS_=(*newtime).ss;
                              _RTC_MI_=(*newtime).mm;
                              _RTC_HH_=(*newtime).hh;
                              regB=INT_REG_B;
                              return 0;
                              }
                              //-------------------------------------------
                              //set date (day,month,year)
                              //-------------------------------------------
                              char SetRtcDate(struct date *newdate){
                              regB=UDP_REG_B;
                              _RTC_TH_=(*newdate).th;
                              _RTC_DD_=(*newdate).dd;
                              _RTC_MO_=(*newdate).mm;
                              _RTC_YY_=(*newdate).yy;
                              regB=INT_REG_B;
                              return 0;
                              }

                              Comment

                              Về tác giả

                              Collapse

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

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

                              Collapse

                              Đang tải...
                              X