Thông báo

Collapse
No announcement yet.

Thay đổi led 7 đoạn 8051 asm

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

  • Thay đổi led 7 đoạn 8051 asm


    Giúp e code assembly mô phỏng này vs ạ khi nhấn nút lần đầu tiên thì màn hình hiển thị 05. Khi nhấn nút lần thứ hai thì hiển thị 08 và lần thứ ba thì hiển thị 06


  • #2
    Nguyên văn bởi hei9029 Xem bài viết
    Giúp e code assembly mô phỏng này vs ạ khi nhấn nút lần đầu tiên thì màn hình hiển thị 05. Khi nhấn nút lần thứ hai thì hiển thị 08 và lần thứ ba thì hiển thị 06
    Dưới đây là đoạn code Assembly cho vi điều khiển AT89C51, thực hiện chức năng như bạn yêu cầu:

    Nhấn nút lần 1, LED 7 đoạn hiển thị số 05.

    Nhấn nút lần 2, LED 7 đoạn hiển thị số 08.

    Nhấn nút lần 3, LED 7 đoạn hiển thị số 06.

    Tiếp tục lặp lại theo vòng tròn.



    ---

    Sơ đồ kết nối

    Chân 39 (P0.7): Kết nối nút nhấn (có điện trở kéo lên).

    Port 1 (P1.0 → P1.7): Điều khiển LED 7 đoạn loại anode chung.



    ---

    Bảng mã 7 đoạn (Anode chung):


    ---

    Code Assembly

    ORG 0000H ; Điểm bắt đầu chương trình
    MOV P1, #0FFH ; Xóa LED 7 đoạn (Anode chung: Tắt khi = 1)
    MOV P3, #0FFH ; Kéo cao các chân của P3 (nút nhấn ở P3.7)

    MOV R0, #00H ; Biến đếm số lần nhấn

    MAIN:
    JB P3.7, MAIN ; Chờ nhấn nút (P3.7 = 0 khi nhấn)
    ACALL DELAY ; Chống dội phím
    INC R0 ; Tăng biến đếm R0
    CJNE R0, #03, CHECK ; Nếu chưa đến lần thứ 3, kiểm tra tiếp
    MOV R0, #00H ; Reset về 0 sau lần thứ 3

    CHECK:
    MOV A, R0 ; Kiểm tra giá trị R0
    CJNE A, #01, CHECK2
    MOV P1, #0C8H ; Hiển thị "05" nếu lần nhấn 1
    SJMP WAIT

    CHECK2:
    CJNE A, #02, CHECK3
    MOV P1, #080H ; Hiển thị "08" nếu lần nhấn 2
    SJMP WAIT

    CHECK3:
    MOV P1, #088H ; Hiển thị "06" nếu lần nhấn 3

    WAIT:
    JB P3.7, WAIT ; Đợi nút thả ra
    ACALL DELAY ; Chống dội phím
    SJMP MAIN ; Quay lại vòng lặp chính

    ; Chương trình delay chống dội phím (~20ms)
    DELAY:
    MOV R2, #255
    L1: MOV R3, #255
    L2: DJNZ R3, L2
    DJNZ R2, L1
    RET

    END


    ---

    Giải thích code:

    1. Khởi tạo:

    P1 = 0FFH: Xóa LED 7 đoạn.

    P3 = 0FFH: Kéo cao các chân P3 (nút nhấn kết nối P3.7).

    R0 = 0: Biến đếm số lần nhấn.



    2. Vòng lặp chính (MAIN):

    Chờ nút nhấn (P3.7 = 0).

    Gọi hàm chống dội phím.

    Tăng biến đếm R0.

    So sánh R0 với 3, nếu bằng 3 thì reset về 0.



    3. Kiểm tra R0 để hiển thị số:

    R0 = 1 → Hiển thị 05 (0xC8).

    R0 = 2 → Hiển thị 08 (0x80).

    R0 = 3 → Hiển thị 06 (0x88).



    4. Chờ nút thả ra (WAIT):

    Chờ P3.7 = 1 (nút nhả).

    Gọi hàm chống dội phím.

    Quay lại vòng lặp.





    ---

    Tóm tắt hoạt động:

    1. Lần 1 nhấn → LED hiển thị 05.


    2. Lần 2 nhấn → LED hiển thị 08.


    3. Lần 3 nhấn → LED hiển thị 06.


    4. Lần 4 nhấn → Quay về 05 và tiếp tục lặp.




    ---

    Lưu ý:

    Mạch LED 7 đoạn phải được kết nối với P1 theo chuẩn anode chung.

    Nút nhấn cần có điện trở kéo lên (pull-up resistor) để hoạt động đúng.

    Thời gian chống dội phím có thể điều chỉnh trong hàm DELAY nếu cần.


    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X