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

B
Bình luận: 1Lượt xem: 6,099

bkdn

Tài xế O-H
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.
 

bkdn

Tài xế O-H

Bạn hãy đăng nhập hoặc đăng ký để phản hồi tại đây nhé.

Bên trên