Thông báo

Collapse
No announcement yet.

help help các bác xem dùm em đoạn code với !!!!

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

  • help help các bác xem dùm em đoạn code với !!!!

    em mô phỏng trên pruteus thì chạy mà sao khi làm mạch nó không hiện thị LCD mong các sư huynh chỉ giúp em với....
    ;#include <sfr51.inc>
    LCDPORT EQU P1
    RS BIT P3.0
    RW BIT P3.1
    EN BIT P3.2

    ;**************************
    TD_THAP EQU 30H
    TD_CAO EQU 31H
    BUOC_cao EQU 32H
    buoc_thap EQU 33H
    CD EQU 34H
    MODE EQU 35H
    TRE_CAO EQU 36H
    TRE_THAP EQU 37H
    ;************************
    CHIEU_QUAY BIT 01H
    C_START BIT 02H
    C_STOP BIT 03H
    TANG BIT P0.1
    GIAM BIT P0.2
    SET_MODE BIT P0.3
    START BIT P0.4
    STOP BIT P0.5
    ;************
    ORG 00H
    LJMP MAIN
    ORG 0BH
    LJMP NGAT_T0
    ORG 30H
    MAIN:
    MOV IE,#82H
    MOV TMOD,#01H
    MOV TH0,#HIGH(6535-1000)
    MOV TL0,#LOW(6535-1000)
    ;***********KHOI TAO LCD**************

    MOV A,#3CH
    CLR C
    LCALL LCDOUT8
    MOV A,#0CH
    CLR C
    LCALL LCDOUT8
    MOV A,#01H
    CLR C
    LCALL LCDOUT8
    MOV DPTR,#STEPMOTOR
    LCALL OUTST
    MOV R0,#8
    MOV R1,#1
    LCALL GOTOXY
    MOV DPTR,#CONTROL
    LCALL OUTST
    LCALL DELAY3S
    MOV A,#01H
    CLR C
    LCALL LCDOUT8
    ;*************CHUONG TRINH CHINH**********
    LAP:
    LCALL DAT_THONG_SO
    LAP1:
    LCALL KT_START
    LCALL DK
    LCALL HIEN_THI
    MOV C,C_START
    JC LAP1
    LJMP LAP
    ;****************DAT THONG SO****************
    DAT_THONG_SO:
    KT_MODE:

    JB SET_MODE,KT_NUT_AN
    JNB SET_MODE,$
    MOV A,MODE
    INC A
    MOV MODE,A
    CJNE A,#5,KT_NUT_AN
    MOV MODE,#0

    KT_NUT_AN:
    MOV R3,MODE
    CJNE R3,#0,KT_TANG
    LJMP KT_START

    KT_TANG:
    JB TANG,KT_GIAM

    BUOC1:
    CJNE R3,#01,TOC_DO1
    MOV A,BUOC_THAP
    INC A
    MOV BUOC_THAP,A
    CJNE A,#100,KT_GIAM
    MOV BUOC_THAP,#0
    MOV A, BUOC_CAO
    INC A
    MOV BUOC_CAO,A
    CJNE A,#10,KT_GIAM
    MOV BUOC_CAO,#0
    SJMP KT_GIAM

    ;*********************************
    TOC_DO1:
    CJNE R3,#02,CHIEU_QUAY1
    MOV A,TD_THAP
    INC A
    MOV TD_THAP,A
    CJNE A,#100,KT_GIAM
    MOV TD_THAP,#0
    MOV A,TD_CAO
    INC A
    MOV TD_CAO,A
    CJNE A,#10,KT_GIAM
    MOV TD_CAO,#0
    SJMP KT_GIAM
    ;**********************************
    CHIEU_QUAY1:
    CJNE R3,#03,CHE_DO1
    SETB CHIEU_QUAY
    SJMP KT_GIAM
    ;************************************
    CHE_DO1:
    CJNE R3,#4,KT_GIAM
    MOV A,CD
    INC A
    MOV CD,A
    CJNE A,#3,KT_GIAM
    MOV CD,#0
    SJMP KT_GIAM
    ;*************************************************
    KT_GIAM:
    JB GIAM,THOAT_KT
    BUOC2:

    CJNE R3,#01,TOC_DO2
    MOV A,BUOC_THAP
    DEC A
    MOV BUOC_THAP,A
    CJNE A,#255,THOAT_KT
    MOV BUOC_THAP,#99
    MOV A, BUOC_CAO
    DEC A
    MOV BUOC_CAO,A
    CJNE A,#255,THOAT_KT
    MOV BUOC_CAO,#9
    SJMP THOAT_KT


    ;*********************************
    TOC_DO2:
    CJNE R3,#02,CHIEU_QUAY2
    MOV A,TD_THAP
    DEC A
    MOV TD_THAP,A
    CJNE A,#255,THOAT_KT
    MOV TD_THAP,#99
    MOV A, TD_CAO
    DEC A
    MOV TD_CAO,A
    CJNE A,#255,THOAT_KT
    MOV TD_CAO,#9
    SJMP THOAT_KT
    ;***************************
    CHIEU_QUAY2:
    CJNE R3,#03,CHE_DO2
    CLR CHIEU_QUAY
    SJMP THOAT_KT
    ;*************************
    CHE_DO2:
    CJNE R3,#4,THOAT_KT
    MOV A,CD
    DEC A
    MOV CD,A
    CJNE A,#255,THOAT_KT
    MOV CD,#2
    SJMP THOAT_KT


    THOAT_KT:
    LCALL TRE50MS
    RET



    ;******************************************
    KT_START:
    MOV R3,MODE
    CJNE R3,#0,THOAT_KT1
    JB START,KT_STOP
    SETB C_START
    CLR C_STOP
    KT_STOP:
    JB STOP,THOAT_KT1
    CLR C_START
    SETB C_STOP
    THOAT_KT1:

    RET
    ;**************************************
    DK:
    MOV C,C_START
    JNC DUNG_DC
    SETB TR0
    SJMP THOAT_DK
    DUNG_DC:

    MOV C,C_STOP
    JNC THOAT_DK
    CLR TR0
    LCALL TRE50MS
    MOV P2,#0FFH
    CLR C_STOP
    THOAT_DK:
    RET
    ;***************************
    HIEN_THI:
    LCALL TACH_SO
    LCALL LCD_OUT
    RET
    ;***************
    TACH_SO:
    MOV A,BUOC_THAP
    MOV B,#10
    DIV AB
    ADD A,#30H
    MOV 40H,A
    MOV A,B
    ADD A,#30H
    MOV 41H,A
    MOV A,TD_THAP
    MOV B,#10
    DIV AB
    ADD A,#30H
    MOV 42H,A
    MOV A,B
    ADD A,#30H
    MOV 43H,A
    RET
    ;********************************
    LCD_OUT:
    MOV A,#01H
    CLR C
    LCALL LCDOUT8
    MOV R3,MODE
    CJNE R3,#0,TT1
    MOV DPTR,#BUOC_LCD
    LCALL OUTST
    MOV A,BUOC_CAO
    ADD A,#30H
    SETB C
    LCALL LCDOUT8
    MOV A,40H
    LCALL LCDOUT8
    MOV A,41H
    LCALL LCDOUT8
    MOV DPTR,#C_DO_LCD
    LCALL OUTST
    MOV A,CD
    ADD A,#30H
    SETB C
    LCALL LCDOUT8
    MOV R0,#0
    MOV R1,#1
    LCALL GOTOXY
    MOV DPTR,#T_DO_LCD
    LCALL OUTST
    MOV A,TD_CAO
    ADD A,#30H
    SETB C
    LCALL LCDOUT8
    MOV A,42H
    LCALL LCDOUT8
    MOV A,43H
    LCALL LCDOUT8
    MOV DPTR,#BMS
    LCALL OUTST
    MOV C,CHIEU_QUAY
    JNC TRAI
    MOV A,#'P'
    LCALL LCDOUT8
    LJMP THOAT_HT
    TRAI:
    SETB C
    MOV A,#'T'
    LCALL LCDOUT8
    LJMP THOAT_HT

    TT1:
    CJNE R3,#01,TT2
    MOV DPTR,#SO_BUOC_LCD
    LCALL OUTST
    MOV A,BUOC_CAO
    ADD A,#30H
    SETB C
    LCALL LCDOUT8
    MOV A,40H
    LCALL LCDOUT8
    MOV A,41H
    LCALL LCDOUT8
    LJMP THOAT_HT

    TT2:
    CJNE R3,#02,TT3
    MOV DPTR,#TOC_DO_LCD
    LCALL OUTST
    MOV A,TD_CAO
    ADD A,#30H
    SETB C
    LCALL LCDOUT8
    MOV A,42H
    LCALL LCDOUT8
    MOV A,43H
    LCALL LCDOUT8
    MOV DPTR,#DV_TD_LCD
    MOV R0,#5
    MOV R1,#1
    LCALL GOTOXY
    LCALL OUTST
    LJMP THOAT_HT
    TT3:
    CJNE R3,#03,TT4
    MOV DPTR,#CHIEU_QUAY_LCD
    LCALL OUTST
    MOV C,CHIEU_QUAY
    JNC TRAI1
    MOV A,#'P'
    LCALL LCDOUT8
    LJMP THOAT_HT
    TRAI1:
    SETB C
    MOV A,#'T'
    LCALL LCDOUT8
    LJMP THOAT_HT
    TT4:
    MOV R3,MODE
    CJNE R3,#4,THOAT_HT
    MOV DPTR,#CD_LCD
    LCALL OUTST
    MOV A,CD
    M1: cjne a,0,M2
    MOV DPTR,#CA_BUOC_M_NHO
    SJMP M4
    M2:CJNE A,#1,M3
    MOV DPTR,#CA_BUOC_M_LON
    SJMP M4
    M3:
    MOV DPTR,#NUA_BUOC
    M4:
    ADD A,#30H
    SETB C
    LCALL LCDOUT8
    MOV R0,#0
    MOV R1,#1
    LCALL GOTOXY
    LCALL OUTST

    THOAT_HT:
    lcall tre50ms

    RET
    ;************************************************
    NGAT_T0:
    CLR TR0
    MOV TH0,#HIGH(65535-1000)
    MOV TL0,#LOW(65535-1000)
    SETB TR0
    PUSH DPH
    PUSH DPL
    PUSH PSW
    PUSH ACC
    ;*****
    MOV A,TRE_THAP
    DEC A
    MOV TRE_THAP,A
    CJNE A,#255,KT
    MOV TRE_THAP,#99
    MOV A, TRE_CAO
    DEC A
    MOV TRE_CAO,A
    CJNE A,#255,KT
    MOV TRE_THAP,TD_THAP
    MOV TRE_CAO,TD_CAO
    ;**************

    TH11: MOV A,CD
    CJNE A,#0,TH2
    MOV DPTR,#BANG_MA_1
    SJMP EN_DC
    TH2:
    CJNE A,#01,TH3
    MOV DPTR,#BANG_MA_2
    SJMP EN_DC
    TH3:
    CJNE A,#02,EN_DC
    MOV DPTR,#BANG_MA_3
    EN_DC:
    MOV C,C_START
    JNC KT
    MOV A,BUOC_THAP
    DEC A
    MOV BUOC_THAP,A
    CJNE A,#255,QUAY
    MOV BUOC_THAP,#99
    MOV A, BUOC_CAO
    DEC A
    MOV BUOC_CAO,A
    CJNE A,#255,QUAY
    MOV BUOC_THAP,#0
    MOV BUOC_CAO,#0
    CLR TR0
    CLR C_START
    SETB C_STOP
    LJMP KT

    QUAY:
    QUAY_PHAI: MOV C,CHIEU_QUAY
    JNC QUAY_TRAI
    MOV A,R2
    MOVC A,@A+DPTR
    MOV P2,A
    INC R2
    CJNE R2,#8,KT
    MOV R2,#0
    SJMP KT
    QUAY_TRAI:
    MOV A,R2
    MOVC A,@A+DPTR
    MOV P2,A
    DEC R2
    CJNE R2,#255,KT
    MOV R2,#7

    KT:

    POP ACC
    POP PSW
    POP DPL
    POP DPH
    RETI
    DELAY3S:
    MOV R7,#10
    DL1:
    MOV R6,#100
    DL2:
    MOV R5,#200
    DL3:
    NOP
    NOP
    NOP
    DJNZ R5,DL3
    DJNZ R3,DL2
    DJNZ R7,DL1
    RET
    ;***************
    TRE10MS:
    MOV R7,#10
    DL11:
    MOV R6,#200
    DLL2:
    NOP
    NOP
    NOP
    DJNZ R6,D2
    DJNZ R7,D1
    RET

    TRE2MS:
    MOV R7,#1
    D1:
    MOV R6,#200
    D2:
    NOP
    NOP
    NOP
    DJNZ R6,D2
    DJNZ R7,D1
    RET
    TRE50MS:
    MOV R7,#50
    D11:
    MOV R6,#200
    D22:
    NOP
    NOP
    NOP
    DJNZ R6,D22
    DJNZ R7,D11
    RET
    BANG_MA_1B 1H,2H,4H,8H,1H,2H,4H,8H
    BANG_MA_2B 3H,6H,0CH,9H,3H,6H,0CH,9H
    BANG_MA_3B 1H,3H,2H,6H,4H,0CH,8H,9H

    ;***************************************
    LCDOUT8:
    ;VAO: C BIT DIEU KHIEN TUONG UNG VOI RS
    ; A CHUA DU LIEU HOAC LENH CAN GUI DEN LCD
    ;MOV P2,#255
    ;SETB RW
    ;CLR RS
    ;SETB EN
    ;LAP:
    ;JB P2.7,LAP
    LCALL TRE2MS
    CLR EN
    CLR RW
    MOV RS,C
    MOV P1,A
    SETB EN
    CLR EN
    RET
    ;*****************************

    OUTST:
    ;VAO: DPTR CHUA DIA CHI BAT DAU CHUOI, VOI CHUOI KET THUC BANG #
    LAP2:
    MOV A,#0
    MOVC A,@A+DPTR
    CJNE A,#'#',HT
    SJMP KTO
    HT:
    SETB C
    LCALL LCDOUT8
    INC DPTR
    SJMP LAP2
    KTO:
    RET
    ;***********************
    GOTOXY:
    ;VAO: X (R0) COT 0...39
    ; Y (R1) DONG 0..1
    CJNE R1,#0,MOT
    MOV A,R0
    ADD A,#80H
    CLR C
    LCALL LCDOUT8
    SJMP KTGOTO
    MOT:
    MOV A,R0
    ADD A,#0C0H
    CLR C
    LCALL LCDOUT8
    KTGOTO:
    RET

    ;****************************************8
    STEPMOTOR: DB"STEPMOTOR#"
    BUOC_LCD: DB"BUOC:#"
    C_DO_LCD: DB" C_DO:#"
    T_DO_LCD: DB"T_D0:#"
    BMS: DB" MS/B_#"
    CONTROL: DB"CONTROL#"
    CD_LCD: DB"CHE DO:#"
    CHIEU_QUAY_LCD: DB"CHIEU QUAY:#"
    SO_BUOC_LCD: DB"SO BUOC:#"
    TOC_DO_LCD: DB"TOC DO:#"
    DV_TD_LCD: DB" MS/BUOC#"
    CA_BUOC_M_NHO: DB"(ca buoc M nho)#"
    CA_BUOC_M_LON: DB"(ca buoc M lon)#"
    NUA_BUOC: DB"(nua buoc)#"
    END

    Attached Files

  • #2
    Thông thường thì khi mô phỏng LCD được thì mạch thật cũng sẽ được. Mình ko rõ về ASM nên ko biết đoạn code trên sai ko, nhưng bạn thử kiểm tra lại chân số 3 của LCD(chân chọn độ tương phản của màn hình xem),trong mô phỏng bạn nối thẳng với mass nhưng trên mạch thật bạn có thể nối với con điện trở 2k2 xuống đất là được. Nếu LCD ko hiện(lỗi chương trình) thị thì LCD cũng phải hiện thị một hàng ô vuông.
    Mua bán thiết bị điện công nghiệp tại Hà Nội, toàn quốc.
    http://diencongnghiep360.com/
    http://tudienhathe.vn/

    Comment


    • #3
      chân số 3 mình nối với biến trở, điều chỉnh độ tương phản có hiển thị 1 hàng ô vuông ở dòng 2, mình đã test LCD và mạch đúng..
      nhưng sao chương trình không hiển thị được .......
      em gần bảo vệ rồi mà chưa được các huynh cố gắng giúp dùm với
      Last edited by hamster.khin; 12-06-2011, 12:47.

      Comment


      • #4
        hic sắp chết rồi mà sao không ai cứu thế

        Comment


        • #5
          mình cũng ko theo ASM mà theo C, mình đã làm nhiều mạch với LCD và tất cả khi mô phỏng được đều chạy được trên mạch thật
          một số lỗi thường gặp ở phần cứng là khi mô phỏng nhiều bạn ko chú tâm đến cái chân 31 là chân chọn bộ nhớ, trên mô phỏng ko cần cho 31 lên Vcc vì nó mặc định vì vậy khi làm mạch thật đôi khi quên chân này, bạn thử kiểm tra chân 31 đã đấu lên Vcc chưa
          lỗi thứ 2 thì một khi bạn đã cấp nguồn đúng cho LCD và đã thấy đèn hình của LCD sáng mà ko hiển thị được kí tự lên LCD thì lỗi như tất cả các lần mình gặp là do cái biến trở ở chân 3 của LCD, thường thì trở ở chân này là trở chấu, trở chấu nhiều con rất dễ bị lỗi, bạn thử thay bằng 1 con VR xoay loại vặn to ý, xem có được ko, lần nào mình thay = loại này cũng đều được(trở này chỉ để test thôi, nếu hiển thị rồi thì bạn lên kiếm 1 con VR chấu khác thay vào)
          còn đâu bạn vietthanh đã nói rồi, code có sai thì khi làm mạch thật nó cũng hiện được 1 hàng các ô màu đen ở hàng 1 khi bạn chỉnh VR, mô phỏng và thực tế có nhiều cái mô phỏng được mặc định kết nối nên ko để ý
          Good lucky
          Website chính thức đổi địa chỉ website thành
          Mời các bạn ghé thăm !!!

          Comment


          • #6
            Nguyên văn bởi mast090 Xem bài viết
            mình cũng ko theo ASM mà theo C, mình đã làm nhiều mạch với LCD và tất cả khi mô phỏng được đều chạy được trên mạch thật
            một số lỗi thường gặp ở phần cứng là khi mô phỏng nhiều bạn ko chú tâm đến cái chân 31 là chân chọn bộ nhớ, trên mô phỏng ko cần cho 31 lên Vcc vì nó mặc định vì vậy khi làm mạch thật đôi khi quên chân này, bạn thử kiểm tra chân 31 đã đấu lên Vcc chưa
            lỗi thứ 2 thì một khi bạn đã cấp nguồn đúng cho LCD và đã thấy đèn hình của LCD sáng mà ko hiển thị được kí tự lên LCD thì lỗi như tất cả các lần mình gặp là do cái biến trở ở chân 3 của LCD, thường thì trở ở chân này là trở chấu, trở chấu nhiều con rất dễ bị lỗi, bạn thử thay bằng 1 con VR xoay loại vặn to ý, xem có được ko, lần nào mình thay = loại này cũng đều được(trở này chỉ để test thôi, nếu hiển thị rồi thì bạn lên kiếm 1 con VR chấu khác thay vào)
            còn đâu bạn vietthanh đã nói rồi, code có sai thì khi làm mạch thật nó cũng hiện được 1 hàng các ô màu đen ở hàng 1 khi bạn chỉnh VR, mô phỏng và thực tế có nhiều cái mô phỏng được mặc định kết nối nên ko để ý
            Good lucky
            mình là hết các cách bạn chỉ thì nó hiện được chữ dòng đầu tiên khi chạy là STEPMOTOR...CONTROL, rồi nó tắt không hiện khúc menu khúc sau nữa nút nhấn có tác động mức mà vẫn không có hiệu ứng gì hết luôn, vậy là sao vậy nghĩ là bị code không, huynh nào rành LCD xem giúp mình với!
            Last edited by hamster.khin; 14-06-2011, 13:26.

            Comment


            • #7
              mình thì không theo ASM mà theo C.bạn muốn mình có thể gửi cho 1 bản viết bằng C.mình làm đã nộp rồi.đc đánh giá tương đối cao.
              cái bạn nói là đã hiện được 1 dòng rồi nhưng không hiện các dòng sau đúng không.nếu thế thì mạch đã ổn.vậy ct sau dòng đầu tiên đó bạn đã xóa màn hình và đưa con trỏ về đầu dòng chưa.hoặc là đang ở dòng 1 muốn xuống dòng 2 đã có lệnh xuống dòng chưa.mình không rành về ASM nên bạn tự xem lại :d

              Comment

              Về tác giả

              Collapse

              hamster.khin Tìm hiểu thêm về hamster.khin

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

              Collapse

              Đang tải...
              X