Thông báo

Collapse
No announcement yet.

Hiển thị tốc độ động cơ bước ra led 7 đoạn

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

  • Hiển thị tốc độ động cơ bước ra led 7 đoạn

    Chào các bạn mình có 1 đoạn chương trình viết bằng asm hiển thị tốc độ động cơ bước xem nó chạy bao nhiêu vòng trên phút như sau:

    ORG 0000H
    LJMP MAIN
    MAIN:
    MOV TMOD,#11H ;khai báo sử dụng T1 và T0
    MOV IE,#10010101B ;cho phép ngắt ngoài 0, ngắt ngoài 1, và ngắt Serial
    ;===================
    ; CHO T0 ĐẾM 1 PHÚT
    ;===================
    LAP: MOV R0,#200
    MOV R1,#6
    LOOP: MOV TH0,#HIGH(-50000)
    MOV TL0,#LOW(-50000)
    SETB TR0
    JNB TF0,$
    CLR TR0
    CLR TF0
    DJNZ R0,LOOP
    MOV R0,#200
    DJNZ R1,LOOP
    ;================================================= ==
    ; NHẢY ĐẾN NGẮT SERIAL CHO HIỂN THỊ RA LED 7 ĐỌAN
    ;================================================= ==
    SETB RI
    SETB TI
    LJMP LAP ;cho T0 đếm tiếp
    ;====================
    ; CHO Đ/CƠ BƯỚC CHẠY
    ;====================
    MOV 20H,#0 ;giá trị dùng để đếm số vòng của đ/cơ
    LOOP3: MOV R2,#50
    MOV R4,#4
    LOOP1: MOV A,#00000001B
    LOOP2: MOV P1,A
    LCALL DELAY
    RL A
    DJNZ R4,LOOP2
    DJNZ R2,LOOP1
    INC 20H ;đ/cơ bước quay được 1 vòng thì tăng 20H lên 1
    MOV A,20H
    LJMP LOOP3 ;cho đ/cơ bước quay tiếp
    .....
    END

    Trong đoạn chương trình này mình sử dụng ngắt serial vì T0 được lặp nhiều lần nên việc sử dụng cờ TF0 để ngắt T0 là ko được. Còn T1 đã được dùng để delay giữa các lần kích đ/cơ. Nhưng xem ra chương trình vẫn chưa ổn. Vì khi xem lại thì thấy rằng tốc độ đ/cơ sẽ ko được hiển thị liên tục mà cứ 1 phút mới hiển thị 1 lần. Nên chương trình sẽ hiển thị 1 phút quay được bao nhiêu vòng, chứ ko phải bao nhiêu vòng trên phút. Các bạn xem rồi góp ý dùm mình với!!!

  • #2
    Giá trị bạn cần đo là vòng/phút. Nhưng nếu cứ để 1p mới cập nhật thì không hay. Cách làm là bạn dùng thời gian lấy mẫu nhanh hơn, ví dụ, 1p có 60giây, như vậy nếu bạn dùng timer cho ngắt 1s để đo, bạn sẽ có thông số vòng/giây, giá trị đo được bạn nhân với 60 sẽ ra được vòng/phút. Tuy nhiên cách làm này sẽ làm giảm độ chính xác, nên khắ phục bằng cách dùng Encoder có độ phân giải đủ cao.
    Ethernet-RS232, PIC Webserver, RFID Reader
    CallerID, Cảnh báo BTS, ...
    0988006696
    linhnc308@gmail.com
    http://linhnc308.blogspot.com

    Comment


    • #3
      Mình không hiểu chương trình của bạn, có thể là bạn viết lên diễn dàn chưa đầy đủ, bạn dùng ngắt nhưng không thấy vector ngắt của bạn đặt ở đâu. Suốt cả chương trình bạn chờ T0 đếm chứ có làm cái gì đâu, đếm xong thì ép cho ngắt serial, vậy viết luôn chương trình con cho khỏe, tốn có vài us không ảnh hưởng đến kết quả đâu.

      Mình nghĩ với bài toán này thì giải pháp là bạn cho Timer0 đếm, và sử dụng ngắt của nó để xử lý nhiều tác vụ cùng lúc.

      Ví dụ như thế này:
      timer0_int:
      call capnhat ;cap nhat lai gia tri cho timer
      djnz biendem, thoat_int
      mov biendem, #xxx ; nap lai gia tri thoi gian tre
      inc bientacvu
      mov A, bientacvu
      cjne A,demtacvu1, ktra_tacvu2
      call tacvu1
      ktra_tacvu2:
      cjne A, demtacvu2, ktra_tacvu3
      call tacvu2
      ktra_tacvu3:
      ....
      thoat_int:
      reti
      Diễn đàn Vi điều khiển:

      Comment


      • #4
        Hổm rày bận thi ko có lên diễn đàn nên chưa kịp thank bạn minhtuan04. thiệt bất lịch sự quá. Tiếp thu ý kiến của bạn mình đã sửa lại chương trình. Nhưng xem ra phần hiển thị vẫn chưa ổn. Thôi để mình tóm tắt yêu cầu rồi post chương trình lên nhờ các bạn góp ý dùm.
        Mục đích của chương trình là điều khiển đco bước: tăng tốc, giảm tốc qua ngắt ngoài 0 và ngắt ngoài 1, và hiển thị tốc độ ra led 7 đoạn sau mỗi giây. Dco mình xài là 48 bước là đủ 1 vòng. Đây là chương trình nhờ các bạn xem giúp.


        ORG 0000H
        LJMP MAIN
        ORG 0003H
        LJMP EXT0
        ORG 000BH
        LJMP ISRT0
        ORG 0013H
        LJMP EXT1
        ORG 0030H
        MAIN:
        MOV TMOD,#11H ;KHAI BAO SU DUNG T0 VA T1
        MOV IE,#10000111B ;CHO PHEP NGAT NGOAI 0, NGAT T0 NGAT NGOAI1
        SETB IT0 ;XAC LAP NGAT NGOAI 0 TAC DONG MUC THAP
        SETB IT1 ;XAC LAP NGAT NGOAI 1 TAC DONG MUC THAP
        MOV 30H,#20 ;GIA TRI NAP CHO T1 LAP DE THAY DOI TOC DO DCO
        MOV R6,#20 ;CHO T0 LAP 1 S DE CAP NHAT SO BUOC
        MOV 20H,#0 ;GIA TRI DUNG DE DEM SO VONG CUA DCO
        MOV R5,#0 ;GIA TRI DUNG DE DEM SO BUOC CUA DCO
        ;=========================================
        ;KIEM TRA XEM NUT START DA NHAN CHUA
        ;=========================================
        JNB P3.0,X1
        LJMP MAIN
        X1: JB P3.0,X2
        LJMP X1
        ;=========================================
        X2:
        MOV TH0,#HIGH(-50000)
        MOV TL0,#LOW(-50000)
        SETB TR0 ;CHO T0 HOAT DONG
        ;=================================================
        ;CHO DONG CO CHAY
        ;=================================================
        X3:
        MOV P1,#00000001B
        INC R5
        LCALL DELAY
        MOV P1,#00000010B
        INC R5
        LCALL DELAY
        MOV P1,#00000100B
        INC R5
        LCALL DELAY
        MOV P1,#00001000B
        INC R5
        LCALL DELAY
        LJMP X3
        ;=================================================
        ;NGAT NGOAI 0 (TANG TOC DONG CO)
        ;=================================================
        EXT0:
        DEC 30H
        RETI
        ;=================================================
        ;NGAT NGOAI 1 (GIAM TOC DONG CO)
        ;=================================================
        EXT1:
        INC 30H
        RETI
        ;=================================================
        ;NGAT T0 CAP NHAT SO VONG RA LED 7 DOAN
        ;=================================================
        ISRT0:
        CLR TR0
        DJNZ R6,ESCAPE
        MOV R6,#20
        CJNE R5,#48,ESCAPE ;KIEM TRA XEM DA DU 48 BUOC CHUA
        INC 20H
        MOV A,20H
        MOV R5,#0
        MOV B,#10
        DIV AB
        XCH A,B
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        ;==================================
        ;XUAT HANG DON VI RA LED 7 DOAN
        ;==================================
        CLR P1.4
        SETB P1.5
        SETB P1.6
        MOV P0,A
        LCALL DELAY20
        ;==================================
        XCH A,B
        MOV B,#10
        DIV AB
        XCH A,B
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        ;=================================
        ;XUAT HANG CHUC RA LED 7 DOAN
        ;=================================
        SETB P1.4
        CLR P1.5
        SETB P1.6
        MOV P0,A
        LCALL DELAY20
        ;=================================
        XCH A,B
        MOV DPTR,#TABLE
        MOVC A,@A+DPTR
        ;=================================
        ;XUAT HANG TRAM RA LED 7 DOAN
        ;=================================
        SETB P1.4
        SETB P1.5
        CLR P1.6
        MOV P0,A
        LCALL DELAY20
        ESCAPE:
        MOV TH0,#HIGH(-50000)
        MOV TL0,#LOW(-50000)
        SETB TR0
        RETI
        ;=================================================
        ;THOI GIAN DELAY DE XUAT LED
        ;=================================================
        DELAY20:
        MOV R4,#100
        LOOP:
        DJNZ R4,LOOP
        RET
        ;=================================================
        ;THOI GIAN DELAY DE KICH DONG CO
        ;=================================================
        DELAY:
        MOV R7,30H
        LOOP1:
        MOV TH1,#HIGH(-26000)
        MOV TL1,#LOW(-26000)
        SETB TR1
        JNB TF1,$
        CLR TR1
        CLR TF1
        ;=================================================
        ;KIEM TRA XEM NUT STOP CO NHAN KO, NEU CO NHAN THI DUNG DCO, NEU KO THI CHAY BTHUONG
        ;=================================================
        DJNZ R7,LOOP1
        JNB P3.1,DUNG
        LJMP KTCTCON
        DUNG:
        LJMP MAIN
        KTCTCON:
        RET
        ;=================================================
        ;BANG DB XUAT RA LED 7 DOAN
        ;=================================================
        TABLE:
        DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
        ;=================================================
        END
        Last edited by minhlong; 10-05-2008, 18:04.

        Comment


        • #5
          Sao ko ai xem hết vậy?

          Comment


          • #6
            Giúp dùm em đi mấy bác ơi! Em sắp nộp bài rồi

            Comment

            Về tác giả

            Collapse

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

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

            Collapse

            Đang tải...
            X