Thông báo

Collapse
No announcement yet.

Trợ giúp về giao tiếp giữa ADC0804 với 8051, code ASM

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

  • Trợ giúp về giao tiếp giữa ADC0804 với 8051, code ASM

    Em đang mô phỏng cái mạch đo nhiệt độ sử dụng Sensor nhiệt LM35 và ADC0804 giao tiếp với 8051 hiển thị trên led 7 đoạn. Code em đã viết xong nhưng hoạt động không đúng. Cụ thể là khi em thay đổi nhiệt độ trên LM35 thì hiển thị không chính xác. Em loay hoay đã rất lâu mà không biết lỗi tại đâu.
    Mong các anh chị bớt chút thời gian chỉ giúp !
    Dưới đây là code và file mô phỏng đính kèm.

    Code:
    ;*******************************************************************************
    ; CHUONG TRINH        : DO NHIET DO HIEN THI TREN LED 7 DOAN
    ;                          ******************************
    ; MO TA            :
    ;     - Phan cung    :
    ;        + AT89C51 (thach anh 12MHz)
    ;        + 4 Led 7 Seg (Anot chung)
    ;        + 1 IC chuyen doi tin hieu tuong tu - so ADC0804
    ;        + 1 Temperature Sensors LM35
    ;    - Ket noi        :
    ;        + Cac thanh A-B-C-D-E-F-G cua Led 7 Seg lan luot noi voi P3.0, ... , P3.7 cua 8051
    ;        + Anot cua cac Led 1 den 4 (tinh tu trai sang) P1.0 den P1.3 thong qua cac Tranzito dem PNP
    ;        + Cac dau ra DB0 den DB7 cua ADC duoi noi toi P0.0 den P0.7 cua 8051
    ;        + Cac chan RD, WR, INTR cua ADC duoc noi voi P2.0, P2.1, P2.2 cua 8051
    ;    - Chu thich    :
    ;        + Cac LED 7 doan tich cuc muc 0
    ;    - Ten file        : ADC0804_LM35_LED7Seg.asm
    ;
    ; HOAN THANH        : ... - Successful
    ;
    ; COPYRIGHT            : Ck33spkt
    ;*******************************************************************************
    ;
    ;--------------------------------------------
    ;        C O N S T A N T                        ;
    ;--------------------------------------------
        DATA_IN        equ        P0
        READ        bit        P2.0
        WRITE        bit        P2.1
        INTR        bit        P2.2
        CS            bit        P2.3
        DATA_OUT    equ        P3
        MACHU_C        equ        30h                    ; cac o nho tu 30h den 33h luu giu ma 7 doan
        MACHU_DO    equ        31h
        LED_DV        equ        32h
        LED_CH        equ        33h
    ;
        org        0000h
        mov        P2, #0ffh                        ; chon P0, P2 lam dau vao
        mov        P0, #0ffh
        mov        P1, #0ffh                        ; tat LED
        mov        MACHU_C,    #0c6h                ; dua ma 7 seg cua chu C vao o nho 30h
        mov        MACHU_DO,    #9ch                ; dua ma 7 seg cua dau DO vao o nho 31h
        clr        INTR                            ; dat INTR = 0 de dam bao hoat dong binh thuong
    ;--------------------------------------------
    ; MAIN:                                        ;
    ;    - Thuc hien viec doc ADC va hien thi du    ;
    ; lieu ra led 7 doan bang phuong phap quet.    ;
    ;     - Trong main co cac chuong trinh con nhu;
    ; sau:
    ;
    ;===========================================;
    ;    M A I N    P R O G R A M                    ;
    ;===========================================;
    main:
        acall    doc_adc
        acall    xuly
        acall    hien_thi
        sjmp    main
    ;--------------------------------------------
    ; Ket thuc ham main                            ;
    ;--------------------------------------------
    ;
    ;--------------------------------------------
    ; doc _adc:                                    ;
    ;    - Thuc hien viec doc ADC de lay du lieu    ;
    ; dua vao thanh ghi Acc de xu ly.            ;
    ;     - Ket thuc chuong trinh, thanh ghi Acc    ;
    ; chua ma hex.
    ;--------------------------------------------
    doc_adc:
        clr        WRITE                            ; dat WR = 0
        setb    WRITE                            ; dat WR = 1 de bat dau chuyen doi
        jb        INTR, $                            ; cho ket thuc chuyen doi
        clr        READ                            ; ket thuc chuyen doi: cho phep doc du lieu
        mov        A, DATA_IN                        ; doc du lieu vao thanh ghi a
    ret                                            ; ket thuc cong viec doc adc
    ;--------------------------------------------
    ; xuly:                                        ;
    ;    - Thuc hien viec chuyen doi du lieu nhan;
    ; duoc tu ADC thanh ma BCD roi chuyen thanh ;
    ; ma 7 Seg.                                    ;
    ;    - Ket thuc chuong trinh o nho 32h va 33h;
    ; chua ma 7 Seg.                            ;
    ;--------------------------------------------
    xuly:
        mov        B, #100                            ; nap 100 vao thanh ghi B
        div        AB                                ; chia A cho 10 (bo di so hang tram,  chi lay so hang chuc va hang don vi)
        mov        R1, B                            ; luu so du vao R1
        mov        B, #10
        mov        A, R1                            ; luu so du vao A
        div        AB                                ; chia A cho 10
        acall    bcd_to_7seg                        ; doi so bcd hang chuc thanh ma 7 doan
        mov        LED_CH, A                        ; cat ma 7 doan cua led hang chuc
        mov        A, B                            ; dua phan du vao Acc
        acall    bcd_to_7seg                        ; doi so bcd hang don vi thanh ma 7 doan
        mov        LED_DV, A                        ; cat ma 7 doan cua led hang don vi
    ret                                            ; ket thuc cong viec xu ly du lieu
    ;--------------------------------------------
    ;--------------------------------------------
    ;    hien_thi:
    ;    - Thuc hien viec lay ma 7 doan tu cac o    ;
    ; nho va xuat ra P3 va quet Led.            ;
    ;--------------------------------------------
    hien_thi:
        mov        P1, #11111110b                    ; khoi tao xung quet, led chu C sang
        mov        DATA_OUT, MACHU_C                ; xuat du lieu ma chu C
        acall    delay_5ms                        ; tre 5ms
        mov        DATA_OUT, #0ffh                    ; tat LED
    ;    
        mov        A, P1                            ; A = P1
        RL        A                                ; quay trai thanh ghi A 1 don vi
        mov        P1, A                            ; P1 = A: quet led do
        mov        DATA_OUT, MACHU_DO                ; xuat du lieu ma chu DO
        acall    delay_5ms                        ; tre 5ms
        mov        DATA_OUT, #0ffh                    ; tat LED
    ;
        mov        A, P1                            ; A = P1
        RL        A                                ; quay trai thanh ghi A 1 don vi
        mov        P1, A                            ; P1 = A: quet led don vi
        mov        DATA_OUT, LED_DV                ; xuat du lieu ma chu don vi
        acall    delay_5ms                        ; tre 5ms
        mov        DATA_OUT, #0ffh                    ; tat LED
    ;
        mov        A, P1                            ; A = P1
        RL        A                                ; quay trai thanh ghi A 1 don vi
        mov        P1, A                            ; P1 = A: quet led chuc
        mov        DATA_OUT, LED_CH                ; xuat du lieu ma chu hang chuc
        acall    delay_5ms                        ; tre 5ms
        mov        DATA_OUT, #0ffh                    ; tat LED
    ret                                            ; ket thuc cong viec hien thi du lieu
    ;--------------------------------------------
    ; bcd_ to_7seg:
    ;     - Thuc hien viec doi ma bcd thanh ma 7s ;
    ;--------------------------------------------
    bcd_to_7seg:
        mov        dptr, #ma7seg
        movc    A, @A+dptr
    ret
    ;--------------------------------------------
    ;    CHUONG TRINH CON TAO TRE                ;
    ;--------------------------------------------
    delay_5ms:
        push    00
        push    01
        push    02
        mov        R0, #5
        mov        R1, #2
        mov        R2, #248
        djnz    R2, $
        djnz    R1, $-4
        djnz    R0, $-8
        pop        02
        pop        01
        pop        00
    ret
    ;--------------------------------------------
    ma7seg:                                        ; ma 7 doan cho led Anot chung
    ;            0       1     2    3     4    5    6     7    8    9
    ;            |       |     |    |     |    |    |     |    |    |
        db        0c0h, 0f9h, 0a4h, 0b0h, 99h, 92h, 82h, 0f8h, 80h, 90h
    ;--------------------------------------------
    ;
        end
    P/s: Mô phỏng bằng phần mềm Proteus v 7.10
    Attached Files

  • #2
    Code của bạn mình chạy mô phỏng rất tốt, không bị lỗi gì hết. Bạn thử kiểm tra lại phần cứng xem kết nối đúng hay chưa !

    Comment


    • #3
      Nguyên văn bởi tramng Xem bài viết
      Code của bạn mình chạy mô phỏng rất tốt, không bị lỗi gì hết. Bạn thử kiểm tra lại phần cứng xem kết nối đúng hay chưa !
      Cám ơn bạn đã quan tâm. Code của mình biên dịch thì không có lỗi, nhưng khi đang chạy mô phỏng mà ấn thay đổi nhiệt độ của con LM35 thì nó hiển thị không chính xác. Mình không biết sai tại khâu nào nữa. Nếu bạn có thời gian thì xem lại giúp mình với.

      Comment

      Về tác giả

      Collapse

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

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

      Collapse

      Đang tải...
      X