Thông báo

Collapse
No announcement yet.

Giao tiep voi ds 12887

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

  • Giao tiep voi ds 12887

    Mọi người ơi cho mình hỏi về ds12887.mình đã nối đúng sơ đồ chân với 89c51
    RS(CHAN SO 4)-->P2.7
    ;R/W(CHAN SO 5)-->P2.6
    ;E(CHAN SO 6)-->P2.5
    ;DB0...DB7-->P1.0 ...P1.7
    /irq với /int0
    nhưng mình viết code cách nào cũng không đọc đươc dữ liêu của nó cả.bây giờ mình rối quá không biết phải làm sao đây.p/s hình như mấy lần đầu mình đã đọc đc dữ liệu nhưng khi minh chinh sửa gì đó thi không dc nữa.ai co cach gì thi giup mình với.loại trừ khả năng ds bi hỏng nhé vì minh có mua con khác nhưng cũng vậy.còn nữa mình hay đọc dc dữ liệu giờ phút giây là la 040200.đây là code cua mình nhé
    xuất led 7 đoạn p1
    p2.0->p2.5 enable led1->led6 tương ứng hh mm ss
    ORG 0000H
    LJMP MAIN
    ORG 0003H
    LJMP NGAT0
    ORG 0030H
    MAIN:
    MOV R5,#50
    L2:MOV R6,#100
    L1:MOV R7,#100
    DJNZ R7,$
    DJNZ R6,L1
    DJNZ R5,L2
    MOV DPTR,#TABLE
    MOV 30H,#0
    MOV 31H,#0
    MOV 32H,#0
    MOV R0,#0BH
    MOV A,#82H
    MOVX @R0,A
    MOV R0,#0BH
    MOV A,#42H
    MOVX @R0,A
    MOV R0,#0AH
    MOV A,#2FH
    MOVX @R0,A
    MOV IE,#81H
    SETB IT0
    LAP:
    MOV A,32H
    ANL A,#0F0H
    SWAP A
    MOVC A,@A+DPTR
    MOV P1,A
    SETB P2.0
    LCALL DELAY
    MOV A,32H
    ANL A,#0FH
    MOVC A,@A+DPTR
    MOV P1,A
    CLR P2.0
    SETB P2.1
    LCALL DELAY
    MOV A,31H
    ANL A,0F0H
    SWAP A
    MOVC A,@A+DPTR
    MOV P1,A
    CLR P2.1
    SETB P2.2
    LCALL DELAY
    MOV A,31H
    ANL A,0FH
    MOVC A,@A+DPTR
    MOV P1,A
    CLR P2.2
    SETB P2.3
    LCALL DELAY
    MOV A,30H
    ANL A,0F0H
    SWAP A
    MOVC A,@A+DPTR
    MOV P1,A
    CLR P2.3
    SETB P2.4
    LCALL DELAY
    MOV A,30H
    ANL A,0FH
    MOVC A,@A+DPTR
    MOV P1,A
    CLR P2.4
    SETB P2.5
    LCALL DELAY
    LJMP LAP
    DELAY:
    MOV R6,#25
    TTUC:MOV R5,#100
    DJNZ R5,$
    DJNZ R6,TTUC
    RET
    NGAT0:
    MOV R0,#00H
    MOVX A,@R0
    MOV 30H,A
    MOV R0,#02H
    MOVX A,@R0
    MOV 31H,A
    MOV R0,#04H
    MOVX A,@R0
    MOV 32H,A
    RETI
    TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
    END

  • #2
    Không có tắt led 6 ( Clr p2.5 ) ah
    Trần Đức Sơn

    tel:0934691385

    Comment


    • #3
      Don't ask why!

      Xem cái này đi bạn ơi!
      Attached Files

      Comment


      • #4
        Trả lời cho bạn lemoon !!!

        Bạn thử sửa lại phần cứng như sau:
        + Từ AD0 --> AD7 kết nối với P0.
        + Chân ALE kết nối với chân AS.
        + Chân p3.6 kết nối với chân R/W.
        + Chân p3.7 kết nối với chân DS.
        + Chân Vss, CS\, MOT nối mass.
        + Chân RST (Dalass) nối nguồn.
        + Chân SQW và IRQ bỏ trống.
        + Chân Vdd treo nguồn ( Nhớ mắc thêm tụ chống nhiễu 0,1uF ngay tại chân này).
        Sau đó bạn xem lại một vài chỗ phần mềm sau:
        + Khởi tạo Dalass:
        MOV R0,#0BH
        MOV A,#06H
        MOVX @R0,A

        MOV R0,#0AH
        MOV A,#20H
        MOVX @R0,A
        + Lấy giờ, phút, giậy:
        MOV R0,#00H ;Đọc giây
        MOVX A,@R0 ;Chuyển giây vào thanh ghi A
        MOV 30H,A ; Đưa giây vào ô nhớ có địa chỉ 30H

        MOV R0,#02H ;Đọc phút
        MOVX A,@R0
        MOV 31H,A ;Đưa phút vào ô nhớ có địa chỉ 31H

        MOV R0,#04H ; Đọc giờ
        MOVX A,@R0
        MOV 32H,A ;Đưa giờ vào ô nhớ có địa chỉ 32H

        Như vậy giờ chứa trong ô nhớ 30H
        phút chứa trong ô nhớ 31H
        Giây chứa trong ô nhớ 32H
        Bạn chỉ cần viết thêm chương trình con chuyển từ Hex --> BCD, BCD--> 7 đoạn, và chương trình con hiển thị là OK rồi.
        Chúc bạn thành công !!!

        Comment


        • #5
          thank các bác nhé.ủa vậy mình không dùng ngắt ah.nghĩa là chương trình chính mình chỉ có nhiệm vụ hiển thị nội dung của 30 31 32 con khi có ngắt thì mình update từ 00 02 04 của ds vào 30 31 32.minh đã làm theo bạn sonngoc va đã chạy rồi.bác sonngoc co thể thêm vào code để có báo thức không.thêm phím báo thức p3.3 ,loa ở p1.7.mình thử thêm vào rồi nhưng không đựoc do chưa hiểu code lắm.bác có thể ghi nó vào ds luôn để khi mất điện thì không bị mất báo thức nhé.
          mà ta có thể chọn chế độ data cho ds là bcd luôn để khỏi phải chuyển cho mệt mà.
          ps đoan code của mình cũng đúng mà sao không chạy nhỉ
          Last edited by lemoon; 03-12-2008, 19:04.

          Comment


          • #6
            Don't ask why!

            Đồng hồ này mình làm vội để tặng bạn ....
            Bạn cứ đọc kĩ datasheet of ds là làm đc ngày mà.
            Khởi tạo ô nhớ Alarm cho ds.
            Tạo 1 chương trình con để set giờ cần báo thức và lưu vào ô nhớ Alarm trên ds.
            Khi ds chạy tới giá trị trong Alarm, nó sẽ xuất 1 xung yêu cầu ngắt ở chân IRQ,
            dùng chân này để điều khiển loa.OK?

            Comment


            • #7
              Nguyên văn bởi sonngoc Xem bài viết
              Tạo 1 chương trình con để set giờ cần báo thức và lưu vào ô nhớ Alarm trên ds.
              Khi ds chạy tới giá trị trong Alarm, nó sẽ xuất 1 xung yêu cầu ngắt ở chân IRQ,
              dùng chân này để điều khiển loa.OK?
              Vậy có cần set bit AIE của thanh ghi B lên 1 ko vậy bạn?

              Comment


              • #8
                Nguyên văn bởi sonngoc Xem bài viết
                Xem cái này đi bạn ơi!
                hi bro, code của viết khá hay
                nhưng mình đọc code hình như chỉ thấy phần xử lý nút mode thì phải
                mình hok thấy đoạn xử lý nút set và up

                và nếu bạn có xử lý thì bạn có làm nhấp nháy led ko (ví dụ chỉnh h thì chớp chớp led giờ)
                đg wan tâm có gì bro trả lời giùm heng

                thks
                Kit thí nghiệm 8051 + mạch nạp + cable + LCD16x2 + CD hướng dẫn, giá chỉ

                Comment


                • #9
                  Don't ask why!

                  Nguyên văn bởi team.hatlife Xem bài viết
                  hi bro, code của viết khá hay
                  nhưng mình đọc code hình như chỉ thấy phần xử lý nút mode thì phải
                  mình hok thấy đoạn xử lý nút set và up

                  và nếu bạn có xử lý thì bạn có làm nhấp nháy led ko (ví dụ chỉnh h thì chớp chớp led giờ)
                  đg wan tâm có gì bro trả lời giùm heng

                  thks
                  Mình làm vội nên chỉ khi set h hay phút thì hiện 2 led tương ứng thôi.
                  Nếu bạn muốn làm nhấp nháy cho pro cũng đc.
                  Ví dụ set phút nhá:
                  + Quét 6 led h..mm..ss 3 lần
                  + Quét 4 led h..ss (ko quét led phút) 3 lần
                  + Sau đó lại quét 6 led h..mm..ss 3 lần
                  Cơ bản là làm thế nào 2 led phút hiện ra trong mắt mình < 24 hình/s
                  OK?

                  Comment


                  • #10
                    Don't ask why!

                    Nguyên văn bởi lupin87 Xem bài viết
                    Vậy có cần set bit AIE của thanh ghi B lên 1 ko vậy bạn?
                    Có chứ!
                    Bạn sẽ ghi vào B giá trị 22h chảng hạn! OK?

                    Comment


                    • #11
                      Nguyên văn bởi sonngoc Xem bài viết
                      Có chứ!
                      Bạn sẽ ghi vào B giá trị 22h chảng hạn! OK?
                      nếu không dùng chân irq mà dùng kiểu đọc thanh ghi c cua rtc thì làm sao
                      mình viết như sau nhưng khôg được
                      mainn:
                      mov r7,#33
                      main1:
                      mov r6,#0ffh
                      thoigian:
                      jnb mode,lich ;neu fim mode nhan, chuyen sang hien thi lich
                      jnb alarm,caibaothuc
                      acall timetimetime ;neu ko se hien thi thoi gian
                      acall xetbaothuc
                      jnb up,tatbaothuc
                      jnb mode,lich
                      djnz r6,thoigian
                      djnz r7,main1
                      lich:
                      mov r7,#2
                      lich1:
                      mov r6,#0ffh
                      lich2:
                      acall datedatedate ;hien thi lich
                      djnz r6,lich2 ;trong 5 giay roi tu dong tro ve hien thi thoi gian
                      djnz r7,lich1

                      sjmp mainn
                      tatbaothuc:
                      acall delay90ms
                      clr p2.7
                      sjmp mainn
                      caibaothuc:
                      mov dptr,#table
                      mov p2,#0
                      mov a,32h ;o nho chua gio bao thuc
                      mov b,#10
                      div ab
                      movc a,@a+dptr
                      mov p1,a
                      setb p2.5
                      clr p2.4
                      acall delay4ms
                      mov a,b
                      movc a,@a+dptr
                      mov p1,a
                      clr p2.5
                      setb p2.4
                      acall delay4ms
                      jnb sot,caiamin1
                      jb up,caibaothuc
                      acall delay90ms
                      inc 32h
                      mov a,32h
                      cjne a,#24,ttuc1
                      mov 32h,#0
                      ttuc1:
                      mov r0,#03h
                      mov a,32h
                      da a
                      movx @r0,a
                      mov r0,#01h
                      mov a,#0
                      movx @r0,a
                      sjmp caibaothuc
                      caiamin1:
                      acall delay90ms
                      caiamin:
                      mov p2,#0
                      mov dptr,#table
                      mov a,31h
                      mov b,#10
                      div ab
                      movc a,@a+dptr
                      mov p1,a
                      setb p2.3
                      acall delay4ms
                      mov a,b
                      movc a,@a+dptr
                      mov p1,a
                      clr p2.3
                      setb p2.2
                      acall delay4ms
                      jnb sot,ttuc5
                      jb up,caiamin
                      acall delay90ms
                      inc 31h
                      mov a,31h
                      cjne a,#60,ttuc2
                      mov 31h,#0
                      ttuc2:
                      mov r0,#05h
                      mov a,31h
                      da a
                      movx @r0,a
                      sjmp caiamin
                      xetbaothuc:
                      mov r0,#0ch
                      movx a,@r0
                      jnb acc.5,ttuc3
                      setb p2.7
                      ttuc3:
                      ret
                      ttuc5:
                      acall delay90ms
                      ljmp mainn
                      ô nhớ 31h,32h là ô nhớ chứa phút báo thức nhị phân(ko phải bcd)
                      mình ghi vào ô nhớ 03h 05h của ds
                      mình không hiểu lệnh da a của mình có biến số nhị phân trong 32h 31h thành bcd để ghi vào ds không nữa.bạn sonngoc chỉ mình với nhé

                      Comment


                      • #12
                        pác nào bít phần mềm mô phỏng vi xử lý có con ds12887 em dang làm vít chương trình rồi mà ko mô phỏng được vì protues ko có con đó. pác nào có phần mềm mô phòng thì gửi cho em :ltbbc199@gmail.com
                        cảm ơn các pác

                        Comment


                        • #13
                          hello bạn Lemoon, bạn làm phần báo thức chạy chưa, jo mình đang làm thêm phần đó mà chưa bjt làm thế nào. Cần cài đặt những giá trị nào cho DS, mong bạn giúp đỡ.
                          - -

                          Comment

                          Về tác giả

                          Collapse

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

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

                          Collapse

                          Đang tải...
                          X