Đang tải...

Vi điều khiển Hướng dẫn mô phỏng Vi điều khiển bằng Proteus

Thảo luận trong 'Điện - Điện tử' bắt đầu bởi bkdn, 11/4/10.

Thành viên đang xem bài viết (Users: 0, Guests: 0)

  1. bkdn
    Offline

    Tài xế O-H
    Expand Collapse

    Tham gia ngày:
    8/4/10
    Số km:
    294
    Được đổ xăng:
    54
    Mã lực:
    51
    Xăng dự trữ:
    146 lít xăng
    Học Vi xử lý qua sách vở thật là một nỗi ác mộng của sinh viên. Nếu ta không thể thử nghiệm thực tế trên mạch thì bạn phải tưởng tượng rất nhiều để biết chương trình của mình chạy như thế nào. Nếu chưa đủ tự tin làm mạch thật, bạn hoàn toàn có thể mô phỏng chúng trên máy tính. Dù không thể có được kết quả thực tế nhưng mô phỏng giúp bạn có cái nhìn trực quan hơn về chương trình học của mình.
    Bạn chọn linh kiện bằng cách nhấn lần lượt vào các nút Component Mode(1), Pick Devices (2) và đánh tên linh kiện vào ô số (3).

    Sau khi chọn được các linh kiện cần thiết bạn nối chúng vào với nhau. Lưu ý 1 điều là chương trình mô phỏng không cần thiết phải nối tất cả các phần mở rộng như trong thực tế. Ví dụ: Bạn không cần lắp mạch phát xung cho vi xử lý mà chỉ cần điều chỉnh tần số xung ở bên trong con vi xử lý bằng cách nhấp đúp vào nó, không cần nối trở thanh, Đèn LED sáng luôn ở ...5V...

    Nạp chương trình bằng cách nhấn đúp vào con vi xử lý và chọn đường dẫn đến file hex đã dịch.
    Cuối cùng là nhấn nút Run và xem xem cái mạch của mình nó chạy như thế nào.

    Mình lấy luôn cái mạch bấm chuông dùng cho chương trình khoa điện tranh tài 2008 làm ví dụ.
    Mã:
           ORG     0H
    PRES:   MOV     P2,#0FFH
            JNB     P1.0,NUT0
            JNB     P1.1,NUT1
            JNB     P1.2,NUT2
            JNB     P1.3,NUT3
            JNB     P1.4,NUT4
            JNB     P1.5,NUT5
            JNB     P1.6,NUT6
            JNB     P1.7,NUT7
            SJMP    PRES
    
    NUT0:   MOV     P2,#11111110B
            JNB     P1.0,NUT0
            ACALL   DELAY
            SJMP    PRES
    
    NUT1:   MOV     P2,#11111101B
            JNB     P1.1,NUT1
            ACALL   DELAY
            SJMP    PRES
    
    NUT2:   MOV     P2,#11111011B
            JNB     P1.2,NUT2
            ACALL   DELAY
            SJMP    PRES
    
    NUT3:   MOV     P2,#11110111B
            JNB     P1.3,NUT3
            ACALL   DELAY
            SJMP    PRES
    
    NUT4:   MOV     P2,#11101111B
            JNB     P1.4,NUT4
            ACALL   DELAY
            SJMP    PRES
    
    NUT5:   MOV     P2,#11011111B
            JNB     P1.5,NUT5
            ACALL   DELAY
            SJMP    PRES
    
    NUT6:   MOV     P2,#10111111B
            JNB     P1.6,NUT6
            ACALL   DELAY
            SJMP    PRES
    
    NUT7:   MOV     P2,#01111111B
            JNB     P1.7,NUT7
            ACALL   DELAY
            SJMP    PRES
    
    DELAY:  MOV     R2,#010
    LOOP0:  MOV     R1,#0250
    LOOP1:  MOV     R0,#0200
    LOOP2:  DJNZ    R0,LOOP2
            DJNZ    R1,LOOP1
            DJNZ    R2,LOOP0
            RET
            END
    Phần mềm mở rộng cho cả 8 nút bấm, 8 đèn. Trong mạch thật thì phải kết hợp Otto quang với Rơle điều khiển đèn và chuông. Bạn nào quan tâm tớ sẽ post cả sơ đồ nguyên lý đầy đủ.
    Hồi trước làm thỉnh thoảng có lỗi về nút bấm với chuông. Bây giờ đã phát hiện ra rồi. Đó là xử lý rung cho phím bấm. Thật đơn giản là dùng delay. Có thể có cách khác là nối song song tụ với phím nhưng mà dùng phần mềm cho nó tiết kiệm:mad:
    Theo phần mềm ở trên. 1 đội bấm đèn sẽ sáng liên tục. Khi nào đội đó nhả phím ra thì đèn tiếp tục sáng trong 1s nữa rồi mới tắt để cho phép nhận tín hiệu bấm từ các đội còn lại.
    PS: Lười quên rồi ko viết comment vào phần mềm. Ai thích thì pm tớ sẽ edit bài sau vậy.
    Dưới đây up tạm file Proteus cùng phần mềm kèm theo.
     

    Các file đính kèm:

    Bài viết khác:

  2. bkdn
    Offline

    Tài xế O-H
    Expand Collapse

    Tham gia ngày:
    8/4/10
    Số km:
    294
    Được đổ xăng:
    54
    Mã lực:
    51
    Xăng dự trữ:
    146 lít xăng

Chia sẻ trang này