Thông báo

Collapse
No announcement yet.

Giúp mình giải đáp về mạch đồng hồ

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

  • Giúp mình giải đáp về mạch đồng hồ

    hi các bạn hiện tại mình đang làm cái đồ án vi xử lý làm về đồng hồ LCD như chạy thời gian thực mình đặt trước nó rồi hẹn giờ (giờ với phút thôi)
    Trước hết các bạn xem cái video về cái đồng hồ này

    Mặc dù code hơi dài nhưng mình đọc qua cũng hỉu chút chút có điều vài chỗ chưa rõ, các bạn chuyên về cái này chắc đọc qua là sẽ hỉu hết được,vì mình không phải chuyên về lĩnh vực này chỉ học cho qua môn nên mang lên đây mong các bác bỏ chút thời gian xem qua giúp mình,cảm ơn nhìu lắm
    PHP Code:
    ;KHAI BAO TAI NGUYEN DA SU DUNG
    ;THANH GHI:R7,R6
    ;RAM DA MUC DICH:20H1FH30H31H32H,33H34H
    ;--------------------------------
    ;
    KHAI BAO BIEN
            RS              EQU     P2.0
            LCD_E           EQU     P2.2
            LCD_DATA        EQU     P1
            GIO             EQU     30H
            PHUT            EQU     31H
            GIAY            EQU     32H
            GIO_HEN         EQU     33H
            PHUT_HEN           EQU     34H
            DEN             EQU     P3.0
            NUT_CHON        EQU     P3.1
            NUT_TANG        EQU     P3.2
            NUT_GIAM        EQU     P3.3
            NUT_HEN         EQU     P3.4
            HEN                EQU        1FH
            KT_CHAY            EQU        20H
                   
                   
    ;---------------------------------
    ORG     0000H
    LJMP    START
    ;---------------------------------
    ORG     03H                   ;external interrupt 0

    RETI

    ORG     0BH                   
    ;timer 0 interrupt

    RETI

    ORG     13H                   
    ;external interrupt 1

    RETI

    ORG     1BH                   
    ;timer 1 interrupt
            LJMP    NGAT_T1 
    RETI

    ORG     23H                   
    ;serial port interrupt

    RETI
    ;=====================================
    ORG     30H
    ;=====================================
    KHOI_TAO:                     ;set up control registers

         MOV           TCON
    ,#00H
         
    MOV           TMOD,#00010000B     ;timer 0 o che do 1
         
    MOV           PSW,#00H             
         
    MOV           IE,#10001000B      ;CHO PHEP NGAT TIMER1
         
    MOV        GIO,#23
         
    MOV        PHUT,#59
         
    MOV        GIAY,#55
         
    MOV        GIO_HEN,#0
         
    MOV        PHUT_HEN,#0
         
    MOV        P0,#0
         
    CLR        DEN
         SETB        HEN
         CLR        KT_CHAY
    SET BANG 1 DE HIEN THI THOI GIANCLR DE KHONG HIEN THI THOI GIAN
    RET


    ;-------------------------------------
    DELAY_MS:
            
    PUSH    07H
            MOV     R7
    ,#00H
     
    LOOP_MS:
            
    INC     R7
            MOV     A
    ,R7
            CJNE    A
    ,#0FAH,LOOP_MS
            
    POP     07H
    RET
    ;-------------------------------------
    DELAY_100MS:
            
    PUSH    07
            MOV     R7
    ,#100
     
    LOOP_100MS:
            
    ACALL   DELAY_MS
            DJNZ    R7
    ,LOOP_100MS
            POP     07
    RET
    ;-------------------------------------
    DELAY_HS:       ; DE LAY 0.5s
            PUSH    07
            MOV     R7
    ,#5
     
    LOOP_HS:
            
    ACALL   DELAY_100MS
            DJNZ    R7
    ,LOOP_HS
            POP     07
    RET
    ;-------------------------------------
    DELAY_100US
            
    PUSH    07H
            MOV     R7
    ,# 50 ; 100 us
            
    DJNZ    R7,$
            
    POP     07H
    RET
    ;-------------------------------------



    KHOI_TAO_LCD:
            
    MOV     A,#38h ;8 BIT - 2 HANG
            
    CALL    GHI_LENH
            
            MOV     A
    ,#0CH ;BAT LCD ON - TAT CON TRO
            
    CALL    GHI_LENH

            MOV     A
    ,#01h ;XOA MAN HINH
            
    CALL    GHI_LENH
            
            MOV     A
    ,#80h  ;THIET LAP DIA CHI CHO LCD – HANG 1
            
    ACALL   GHI_LENH
           
    RET
    ;-------------------------------------
    XOA_LCD:
            
    MOV     A,#01H          ;XOA MAN HINH
            
    CALL    GHI_LENH
            MOV     A
    ,#80H          ;THIET LAP DIA CHI CHO LCD – HANG 1
            
    ACALL   GHI_LENH
    RET



    ;-------------------------------------
    GHI_LENH:       ; Ghi lenh cho LCD
            MOV     LCD_DATA
    ,A      CHEP THANH GHI A DEN DATA
            CLR     RS              
    DAT RS 0 DE GUI LENH 
            SETB    LCD_E           
    LCD_E 1 cho xung cao
            ACALL   DELAY_100US
            CLR     LCD_E           
    LCD_E 0 cho xung cao XUONG THAP
            ACALL   DELAY_MS
    RET
    ;-------------------------------------
    GHI_DLIEU: ; GHI DU LIEU RA LCD
            MOV     LCD_DATA
    ,A      SAO CHEP THANH GHI A VAO P0
            SETB    RS              
    DAT RS 1 DE GHI DU LIEU
            SETB    LCD_E           
    DAT LCD_E 1 CHO XUNG CAO
            ACALL   DELAY_100US
            CLR     LCD_E           
    CHO LCD_E 0 CHO XUNG CAO XUONG THAP
            ACALL   DELAY_MS
    RET

    ;-------------------------------------


    ;
    HAM MAIN
    ;-------------------------------------
    ;
    ORG 30H
    START
    :
            
    ACALL   KHOI_TAO        ;KHOI TAO CAC THANH GHI
            MOV     TH1
    ,#0B1H
            
    MOV     TL1,#0DFH
            
    SETB    TR1
            
            
            ACALL   KHOI_TAO_LCD
            MOV     DPTR
    #TEN3
            
    ACALL   IN_XAU
            ACALL   DELAY_HS
            ACALL   XOA_LCD
                    
    LAP
    :
            
    JB        HENK_HEN
            MOV     A
    ,#0C8H
            
    ACALL   GHI_LENH       
               MOV     A
    ,#'A'
               
    ACALL   GHI_DLIEU
               SJMP    TIEP_LAP
                   
    K_HEN
    :
               
    MOV     A,#0C8H
               
    ACALL   GHI_LENH       
               MOV     A
    ,#' '
               
    ACALL   GHI_DLIEU
                   
    TIEP_LAP
    :
                           
            
    JB        NUT_HENKT_CHON
            CPL        HEN
            ACALL    DELAY_HS                   
            LJMP    LAP
                    
    KT_CHON
    :
            
    JB      NUT_CHON,KT_HEN
            ACALL   CHINH_THOI_GIAN
            ACALL   CHINH_HEN                          
            ACALL   DELAY_HS               
                       
    KT_HEN
    :               
            
    JB        HENLAP              
            MOV     A
    ,GIO   
            CJNE    A
    ,GIO_HEN,QUIT
            MOV     A
    ,PHUT
            CJNE    A
    ,PHUT_HEN,QUIT
            SETB    DEN    
    ;CHO DEN NHAP NHAY
            ACALL   DELAY_HS
            CLR        DEN 
            ACALL   DELAY_HS
                         
                  
                  
      QUIT
    :     
      
    LJMP    LAP


    ;--------------------------------------------------
    ;
    GOI NGAT
    NGAT_T1
    :

            
    CLR     TR1
            MOV     TH1
    ,#0B1H
            
    MOV     TL1,#0DFH
            
    SETB     TR1
            INC     R1
            
            CJNE     R1
    ,#50,TIEP_TUC
            
    MOV     R1,#0    
            
    ACALL   DC_THOI_GIAN
            JB        KT_CHAY
    TIEP_TUC ;KT_CHAY 0 THI HIEN THI
            ACALL   HIEN_TG
            
    TIEP_TUC
    :
                   
    RETI


    ;-------------------------------------
    ;
    CAP NHAT THOI GIAN THUC
    DC_THOI_GIAN
    :
            
    INC     GIAY
            MOV     A
    ,GIAY
            CJNE    A
    ,#60,EXIT_DC_THOI_GIAN
            
    MOV     GIAY,#0
            
    ;----------------
            
    INC     PHUT
            MOV     A
    ,PHUT
            CJNE    A
    ,#60,EXIT_DC_THOI_GIAN
            
    MOV     PHUT,#0
            
    ;----------------
            
    INC     GIO
            MOV     A
    ,GIO
            CJNE    A
    ,#24,EXIT_DC_THOI_GIAN
            
    MOV     GIO,#0
            
    ;----------------
     
    EXIT_DC_THOI_GIAN:
    RET


    ;--------------------------------------------------
    CHINH_THOI_GIAN:
            

    TIME_OK2:
           
    MOV     A,#0C3h    ;TAI VI TRI PHUT CHO NHAP NHAY HIEN THI CHINH PHUT
           
    ACALL   GHI_LENH
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           ACALL   DELAY_HS

           
           
           JB     NUT_TANG
    ,QUET_TIME_GIAM2
           
    ;NEU AN NUT TANG
           MOV     A
    ,PHUT
           CJNE    A
    ,#59,TANG_TIME_PHUT
           
    ;NEU PHUT=59
           MOV     PHUT
    ,#0
           
    SJMP    TIME_OK2
    TANG_TIME_PHUT
    :
           
    INC     PHUT
           SJMP    TIME_OK2
    QUET_TIME_GIAM2
    :
           
    JB     NUT_GIAM,QUET_TIME_OK2
           
    ;NEU AN NUT GIAM
           MOV     A
    ,PHUT
           CJNE    A
    ,#00,GIAM_TIME_PHUT
           
    ;NEU PHUT=00
           MOV     PHUT
    ,#59
           
    SJMP    TIME_OK2
    GIAM_TIME_PHUT
    :
           
    DEC     PHUT
           SJMP    TIME_OK2
    QUET_TIME_OK2
    :
           
    JB     NUT_CHON,TIME_OK2
    TIME_OK3
    :
           
    MOV     A,#0C0h    ;TAI VI TRI GIO NHAP NHAY HIEN THI CHINH GIO
           
    ACALL   GHI_LENH
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           ACALL   DELAY_HS
           

           
    ;QUET NUT
           JB     NUT_TANG
    ,QUET_TIME_GIAM3
           
    ;NEU AN NUT TANG
           MOV     A
    ,GIO
           CJNE    A
    ,#23,TANG_TIME_GIO
           
    ;NEU GIO=23
           MOV     GIO
    ,#0
           
    SJMP    TIME_OK3
    TANG_TIME_GIO
    :
           
    INC     GIO
           SJMP    TIME_OK3
    ;------------------------------------------------
    QUET_TIME_GIAM3:
           
    JB     NUT_GIAM,QUET_TIME_OK3
           
    ;NEU AN NUT GIAM
           MOV     A
    ,GIO
           CJNE    A
    ,#00,GIAM_TIME_GIO
           
    ;NEU GIAY=00
           MOV     GIO
    ,#23
           
    SJMP    TIME_OK3
    GIAM_TIME_GIO
    :
           
    DEC     GIO
           SJMP    TIME_OK3

    QUET_TIME_OK3
    :
           
    JB     NUT_CHON,TIME_OK3
                         
    RET


    ;-------------------------------------------------
    CHINH_HEN:
           
    SETB        KT_CHAY   
           ACALL   XOA_LCD
           ACALL        HIEN_HEN
           
    CODE_HEN
    :
                
           
    MOV     A,#0C3h    ; TAI VI TRI HEN THOI GIAN CHO NHAP NHAY PHUT DE HIEN THI CHINH PHUT
           
    ACALL   GHI_LENH
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           ACALL   DELAY_HS       
           ACALL   HIEN_HEN
           ACALL   DELAY_HS  

           
    ;QUET NUT
           JB     NUT_TANG
    ,QUET_NUT_GIAM1
           
    ;NEU AN NUT TANG
           MOV     A
    ,PHUT_HEN
           CJNE    A
    ,#59,TANG_PHUT_HEN
           
    ;NEU PHUT_HEN=59
           MOV     PHUT_HEN
    ,#0
           
    SJMP    CODE_HEN
    TANG_PHUT_HEN
    :
           
    INC     PHUT_HEN
           SJMP    CODE_HEN

    QUET_NUT_GIAM1
    :
           
    JB     NUT_GIAM,QUET_NUT_CHON1
           
    ;NEU AN NUT GIAM
           MOV     A
    ,PHUT_HEN
           CJNE    A
    ,#00,GIAM_PHUT_HEN
           
    ;NEU PHUT_HEN=00
           MOV     PHUT_HEN
    ,#59
           
    SJMP    CODE_HEN
    GIAM_PHUT_HEN
    :
           
    DEC     PHUT_HEN
           SJMP    CODE_HEN

    QUET_NUT_CHON1
    :
           
    JB     NUT_CHON,CODE_HEN
          
    CHON2
    :
           
    MOV     A,#0C0H    ;TAI VI TRI HEN THOI GIAN CHO NHAP NHAY DE HIEN THI HEN GIO
           
    ACALL   GHI_LENH
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           MOV     A
    ,#' '
           
    ACALL   GHI_DLIEU
           
           ACALL   DELAY_HS
           ACALL   HIEN_HEN
           ACALL   DELAY_HS 

           
    ;QUET NUT
           JB     NUT_TANG
    ,QUET_NUT_GIAM2
           
    ;NEU AN NUT TANG
           MOV     A
    ,GIO_HEN
           CJNE    A
    ,#23,TANG_GIO_HEN
           
    ;NEU GIO_HEN=23
           MOV     GIO_HEN
    ,#0
           
    SJMP    CHON2
    TANG_GIO_HEN
    :
           
    INC     GIO_HEN
           SJMP    CHON2

    QUET_NUT_GIAM2
    :
           
    JB     NUT_GIAM,QUET_NUT_CHON2
           
    ;NEU AN NUT GIAM
           MOV     A
    ,GIO_HEN
           CJNE    A
    ,#00,GIAM_GIO_HEN
           
    ;NEU GIO_HEN=00
           MOV     GIO_HEN
    ,#23
           
    SJMP    CHON2
    GIAM_GIO_HEN
    :
           
    DEC     GIO_HEN
           SJMP    CHON2

    QUET_NUT_CHON2
    :
           
    JB     NUT_CHON,CHON2
              
           CLR        KT_CHAY
            RET

    ;--------------------------------------

    IN_XAU:
            
    CLR         A
            MOVC     A
    ,@A+DPTR
            
    ;INC     R0
            INC     DPTR
            CJNE    A
    ,#0AH,TTUC1 ;NEU DOC DEN KY TU LF(0AH) THI DUNG LAI
            
    JMP     THOAT1
    TTUC1
    :
            
    ACALL   GHI_DLIEU
            LJMP    IN_XAU
    THOAT1
    :
            
    RET
            
    ;-----------------------------------
                   
    IN_XAU_TG:
                   
    MOV             A,@R0
                   INC             R0
                   CJNE    A
    ,#0AH,TTUC2 ;NEU DOC DEN KY TU LF(0AH) THI DUNG LAI
                   
    JMP             THOAT2
                   TTUC2
    :
                   
    ACALL   GHI_DLIEU
                   LJMP    IN_XAU_TG
                   THOAT2
    :
            
    RET                         
                   
    ;-----------------------------------

    TAO_XAU_TG:
                   
            
    MOV                             A,GIO
            ACALL                        XAU_CHUC
            MOV                          35H
    ,A
                                                     
            MOV                          A
    ,GIO
            ACALL                        XAU_DVI
            MOV                          36H
    ,A
                              
            MOV                          37H
    ,#':'
                                                     
                                                     
            
    MOV                          A,PHUT
            ACALL                        XAU_CHUC
            MOV                          38H
    ,A
                                                     
                                                     
            MOV                          A
    ,PHUT
            ACALL                        XAU_DVI
            MOV                          39H
    ,A
                              
            MOV                          3AH
    ,#':'
                              
            
    MOV                          A,GIAY
            ACALL                        XAU_CHUC
            MOV               3BH
    ,A
                              
            MOV             A
    ,GIAY
            ACALL           XAU_DVI
            MOV               3CH
    ,A   
                              
            MOV     3DH
    ,#0AH
    RET


    ;-----------------------------------

    TAO_XAU_HEN:
                   
                              
    MOV                           A,GIO_HEN
                              ACALL                        XAU_CHUC
                              MOV                          35H
    ,A
                                                     
                              MOV                          A
    ,GIO_HEN
                              ACALL                        XAU_DVI
                              MOV                          36H
    ,A
                              
                              MOV                          37H
    ,#':'
                                                     
                                                     
                              
    MOV                          A,PHUT_HEN
                              ACALL                        XAU_CHUC
                              MOV                          38H
    ,A
                                                     
                                                     
                              MOV                          A
    ,PHUT_HEN
                              ACALL                        XAU_DVI
                              MOV                          39H
    ,A
                               
                              MOV             3AH
    ,#0AH
    RET



    ;-----------------------------------
    HIEN_TG:
                
    MOV     A,#80h  ;THIET LAP DIA CHI CHO LCD – HANG 1
                
    ACALL   GHI_LENH
                MOV     R0
    ,#35H
                
    MOV     DPTR,#TEN1
                
    ACALL   IN_XAU
                MOV     A
    ,#0C0h  ;THIET LAP DIA CHI CHO LCD – HANG 1
                
    ACALL   GHI_LENH
                ACALL   TAO_XAU_TG                         
                ACALL   IN_XAU_TG
                   
    RET

    ;-----------------------------------
    HIEN_HEN:               
            
    MOV     A,#80h  ;THIET LAP DIA CHI CHO LCD – HANG 1        
            
    ACALL   GHI_LENH
            MOV     R0
    ,#35H
            
    MOV     DPTR,#TEN2
                      
    ACALL   IN_XAU
                       MOV     A
    ,#0C0h  ;THIET LAP DIA CHI CHO LCD – HANG 1
                       
    ACALL   GHI_LENH
                       ACALL   TAO_XAU_HEN                        
                       ACALL   IN_XAU_TG
                   
    RET


    ;-----------------------------------
    XAU_CHUC:
            
    MOV     B,#10
            
    DIV     AB
            ACALL   DOI_MA
            
    RET
    ;-------------------------------------
    XAU_DVI:
            
    MOV     B,#10
            
    DIV     AB
            MOV     A
    ,B
            ACALL   DOI_MA
            
    RET

    ;-----------------------------------
    DOI_MA:
            
    INC     A
            MOVC    A
    ,@A+PC
    RET


    ;-----------------------------------
    ;
    TEXT SE XUAT HIEN TREN LCD
    DB 00110000B
    ,00110001B,00110010B,00110011B,00110100B
    DB 00110101B
    ,00110110B,00110111B,00111000B,00111001B
    TEN1
    DB      'THOI GIAN:',0AH
    TEN2
    :  DB     'HEN GIO:',0AH
    TEN3
    DB               'By thanhlikes09',0AH
    ;------------------------------------
    END 
    Mình có một số câu hỏi mún hỏi các bác là :
    -Khi mình chọn phút,giờ ah làm sao nó lại nhấp nháy được cái chỗ chọn giờ hoặc phút như trong video phần còn lại thì nó không nhấp nháy
    -Làm sao mình xác đinh địa chỉ tức vị trí để mình cần in cái chuôi ra ở LCD vậy,mình có đọc qua về cái LCD bên này thấy nó quy đinh địa chỉ LCD ở phần DDRAM Text LCD nhưng trong code này nó set địa chỉ sao mình không hiểu lắm
    -Các bạn có thể giải thích giúp mình ở cái hàm KHOI_TAO_LCD được không

  • #2
    có bạn nào giúp mình xem qua với

    Comment

    Về tác giả

    Collapse

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

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

    Collapse

    Đang tải...
    X