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

Collapse
X
 
  • Giờ
  • Show
Clear All
new posts
  • jimhawkins
    Thành viên mới
    • Jun 2012
    • 14

    #1

    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:20H, 1FH, 30H, 31H, 32H,33H, 34H
    ;--------------------------------
    ;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 GIAN, CLR 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        HEN, K_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_HEN, KT_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        HEN, LAP              
            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
  • jimhawkins
    Thành viên mới
    • Jun 2012
    • 14

    #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...