PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Mỗi 1 matrix 8x8 mà không làm xong:( Giúp em với:) (http://www.picvietnam.com/forum/showthread.php?t=1166)

HTAluvBeBeo 03-06-2007 07:38 PM

Mỗi 1 matrix 8x8 mà không làm xong:( Giúp em với:)
 
HIX đến cái ma trận một màu em làm cũng chưa được: 1 ma trận 8x8 thôi, mọi người giúp với ạ:)
HC595 nối với anode, hc138 nối với cathode,
hc595 nối vào RB0, RB1,RB2,RB3
HC138 nối vào RA2, RA3, RA4.
Hiện tượng: matrix chỉ sáng có một nửa:P:D, chẳng nhìn ra cái gì cả:))
Code đây ạ:)
Code:

;********************************************************
;
;            THE LED FLASH 595
;
;                                AUTHOR : HTALUVBEBEO
;********************************************************

        LIST            P=PIC16F84A
        INCLUDE        P16F84A.INC
        __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF


;****************  LABEL DEFINITION  ********************
RA0    EQU    00              ;RA0 BIT
RA1    EQU    01              ;RA1 BIT
RA2    EQU    02              ;RA2 BIT
RA3    EQU    03              ;RA3 BIT
RA4    EQU    04              ;RA4 BIT
CNT500U EQU    0x0C              ;500USEC COUNTER ADDRESS
CNT1M  EQU    0x0D              ;1MSEC COUNTER ADDRESS

SHIFT        EQU        0x11                ;CHUA BIT CAN DICH
COUNTS        EQU        0x12                ;KIEM TRA SO LUONG BIT DICH
ROW1        EQU        0x13
ROW2        EQU        0x14
ROW3        EQU        0x15
ROW4        EQU        0x16
ROW5        EQU        0x17
ROW6        EQU        0x18
ROW7        EQU        0x19
ROW8        EQU        0x1A
CNTTAB        EQU        0x1B                ;COUNT CHO TABLE
CNTSC1        EQU        0x1C                ;COUNT NUMBER OF SCAN1


;****************  KHAI BAO PHANCUNG VOI 595  *************

        #DEFINE        DATA        PORTB,0
        #DEFINE        CLOCK        PORTB,1
        #DEFINE        CLEAR        PORTB,2
        #DEFINE        LATCH        PORTB,3

;****************  PROGRAM START  ***********************
        ORG    0              ;RESET VECTOR
        GOTO    INIT
        ORG    4              ;INTERRUPT VECTOR
        GOTO    INIT
;****************  INITIAL PROCESS  *********************
        ORG    5
INIT          BCF        STATUS,RP1
        BSF    STATUS,RP0      ;CHANGE TO BANK1
        MOVLW  B'00011'        ;SET INPUT MODE DATA
        MOVWF  TRISA          ;SET PORTA TO INPUT MODE
        MOVLW        B'11110000'
        MOVWF        TRISB
        BCF    STATUS,RP0      ;CHANGE TO BANK0
     

;**************** ELEVATOR UP ************************
RUN1        CLRF        ROW1                ;XOA HANG GHOST
        CLRF        ROW2                ;XOA HANG GHOST
        CLRF        ROW3                ;XOA HANG GHOST
        CLRF        ROW4                ;XOA HANG GHOST
        CLRF        ROW5                ;XOA HANG GHOST
        CLRF        ROW6                ;XOA HANG GHOST
        CLRF        ROW7                ;XOA HANG GHOST
        CLRF        ROW8                ;XOA HANG GHOST
        CLRF        CNTTAB                ;CHOBIEN  DEM TABLE VE 0
RUN2        MOVLW        D'100'                ;SO LAN SCAN
        MOVWF        CNTSC1                ;CHO VAO BIEN DEM SCAN1
        CALL        UP                ;GOI CT UP HANG
        INCF        CNTTAB,1        ;TANG BIEN DEM TABLE THEM 1 SAU MOT VONG
        MOVF        CNTTAB,0        ;DUA BIEN DEM TABLE VAO W
        CALL        TABLE1                ;TRA BANG
        MOVWF        ROW8                ;DUA GIA TRI VAO HANG CUOI 8
        XORLW        0xFF                ;GT TRONG W CO BANG GT CUOI CUA BANG 0FFh?
        BTFSC        STATUS,Z        ;KIEM TRA BIT Z, KHAC FF THI BO QUA
        GOTO        RUN1                ;QUAY LAI TU DAU KHI HET BANG
RUN3        DECFSZ        CNTSC1,1        ;GIAM BIEN DEM SCAN1, 100 LAN
        GOTO        RUN4
        GOTO        RUN2
RUN4        CALL        SCAN
        GOTO        RUN3
;************************** SCAN**************************
SCAN        CALL        CLR                ;XOA 595
        MOVF        ROW8,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR8                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW7,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR7                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW6,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR6                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW5,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR5                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW4,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR4                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW3,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR3                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW2,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR2                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW1,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR1                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS
       
        RETURN
;**********************CT UP******************
UP        MOVF        ROW2,0                ;ROW DUOI VAO W
        MOVWF        ROW1                ; W VAO ROW TREN

        MOVF        ROW3,0                ;ROW DUOI VAO W
        MOVWF        ROW2                ; W VAO ROW TREN

        MOVF        ROW4,0                ;ROW DUOI VAO W
        MOVWF        ROW3                ; W VAO ROW TREN

        MOVF        ROW5,0                ;ROW DUOI VAO W
        MOVWF        ROW4                ; W VAO ROW TREN

        MOVF        ROW6,0                ;ROW DUOI VAO W
        MOVWF        ROW5                ; W VAO ROW TREN

        MOVF        ROW7,0                ;ROW DUOI VAO W
        MOVWF        ROW6                ; W VAO ROW TREN

        MOVF        ROW8,0                ;ROW DUOI VAO W
        MOVWF        ROW7                ; W VAO ROW TREN

        RETURN
;********************************************************
;          TIMER  SUBROUTINE FOR 10MHZ CLOCK
;********************************************************

;*************  1MSEC TIMER SUBROUTINE  *****************
T1M    MOVLW  D'2'            ;(1)      SET LOOP CNT1
        MOVWF  CNT1M          ;(1)      SAVE LOOP CNT1
TM1LP1  MOVLW  D'249'          ;(1)*2    SET LOOP CNT2
        MOVWF  CNT500U        ;(1)*2    SAVE LOOP CNT2
TM1LP2  NOP                    ;(1)*249*2 TIME ADJUST
        NOP                    ;(1)*249*2 TIME ADJUST
        DECFSZ  CNT500U,F      ;(1)*249*2 CNT500U-1=0 ?
        GOTO    TM1LP2          ;(2)*248*2 NO, CONTINUE
        DECFSZ  CNT1M,F        ;(1)*2    CNT1M-1=0 ?
        GOTO    TM1LP1          ;(2)      NO. CONTINUE
        RETURN                  ;(2)      YES. CNT END
                                ;TOTAL 2501*0.4USEC=1MSEC

;*********** CHUONG TRINH CON DICH BIT **********
SHIFTOUT
        MOVWF        SHIFT                ;DUA DU LIEU VAO THANH GHI SHIFT
        MOVLW        D'8'                ;DEM 8BIT DU LIEU
        MOVWF        COUNTS
TESTBIT
        BCF        DATA                ;DU LIEC BAN DAU LA 0
        BTFSC        SHIFT,7                ;SHIFT CO BIT7 BANG 0 KKO??
        BSF        DATA                ;NEU KO SET DU LIEU TU O THANH 1
        BSF        CLOCK                ;DUA DU LIEU VAO
        NOP
        BCF        CLOCK                ;DUA CHAN CLOCK VE MUC THAP
        RLF        SHIFT,0                ;DICH TRAI THANH GHI DU LIEU
        MOVWF        SHIFT                ;TRA GIA TRI LAI THANH GHI SHIFT
        DECFSZ        COUNTS,1        ; XEM BIEN COUNT KHI GIAM BANG 0???
        GOTO        TESTBIT                ;NEU CHUA THI DICH TIEP

        RETURN

;**************** KHOI TAO 595  *********************
CLR        BCF        CLEAR                ;RESET DU LIEU TRONG 595
        NOP                        ; CLEAR TAC DONG CANH XUONG
        BSF        CLEAR                ; DUA CHAN RESET VE MUC LOGIC CAO
        RETURN
;*********** CHUONG TRINH CHOT **********
CHOT
        BSF        LATCH                ;LEN MUC CAO DE DUA BYTE VAO
        NOP
        BCF        LATCH                ;XUONG THAP KET THUC
       
        RETURN
;*********** SCAN ROW *************
SCR1        MOVLW        B'00011'
        MOVWF        PORTA
        RETURN
       
SCR2        MOVLW        B'00111'
        MOVWF        PORTA
        RETURN
       
SCR3        MOVLW        B'01011'
        MOVWF        PORTA
        RETURN
       
SCR4        MOVLW        B'01111'
        MOVWF        PORTA
        RETURN
       
SCR5        MOVLW        B'10011'
        MOVWF        PORTA
        RETURN
       
SCR6        MOVLW        B'10111'
        MOVWF        PORTA
        RETURN
       
SCR7        MOVLW        B'11011'
        MOVWF        PORTA
        RETURN
       
SCR8        MOVLW        B'11111'
        MOVWF        PORTA
        RETURN

;******************** BANG DU LIEU ****************
TABLE1        ADDWF        PCL,1        ;Add W to Program Counter
        RETLW        0x00       
        RETLW        B'00110000'
        RETLW        B'01001000'
        RETLW        B'10000100'
        RETLW        B'11000010'
        RETLW        B'01000001'
        RETLW        B'11000010'
        RETLW        B'10000100'
        RETLW        B'01001000'
        RETLW        B'00110000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'11111111'
        RETLW        B'10010001'
        RETLW        B'10010001'
        RETLW        B'01101001'
        RETLW        B'00000110'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        B'00000000'
        RETLW        0xFF
;************************************************************

        END

Xin các huynh chỉ với ạ:(

namqn 03-06-2007 10:28 PM

Có vẻ như bạn đang dùng cách quét hàng (các LED trong cùng một hàng nối chung cathode)?

Bạn chưa nói rõ sáng một nửa ma trận là theo chiều nào, hàng hay cột?

Sao bạn không thử quét một ma trận tĩnh trước khi cho dữ liệu chạy, nghĩa là chỉ quét 8 hàng/cột với dữ liệu cố định trong vòng lặp chính.

Thân,

HTAluvBeBeo 03-06-2007 11:43 PM

vâng ạ:) Em quét hàng ạ row 5->8 không sáng anh ạ.
Cái matrix em có ở nhà là bi-colour, nhưng mà làm một màu còn chưa được ạ:). Để em thử với matrix tĩnh;)

HTAluvBeBeo 04-06-2007 12:37 AM

Có thể là do phần cứng chăng,
đây là code matrix tĩnh em vừa sửa lại:) tình trạng tương tự Row 5>8 do hc138 đảm nhận không sáng, phần còn lại thì hiển thị lung tung:)
Code:

;********************************************************
;
;            THE LED FLASH 595
;
;                                AUTHOR : HTALUVBEBEO
;********************************************************

        LIST            P=PIC16F84A
        INCLUDE        P16F84A.INC
        __CONFIG _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF


;****************  LABEL DEFINITION  ********************
RA0    EQU    00              ;RA0 BIT
RA1    EQU    01              ;RA1 BIT
RA2    EQU    02              ;RA2 BIT
RA3    EQU    03              ;RA3 BIT
RA4    EQU    04              ;RA4 BIT
CNT500U EQU    0x0C              ;500USEC COUNTER ADDRESS
CNT1M  EQU    0x0D              ;1MSEC COUNTER ADDRESS

SHIFT        EQU        0x11                ;CHUA BIT CAN DICH
COUNTS        EQU        0x12                ;KIEM TRA SO LUONG BIT DICH
ROW1        EQU        0x13
ROW2        EQU        0x14
ROW3        EQU        0x15
ROW4        EQU        0x16
ROW5        EQU        0x17
ROW6        EQU        0x18
ROW7        EQU        0x19
ROW8        EQU        0x1A
CNTTAB        EQU        0x1B                ;COUNT CHO TABLE
CNTSC1        EQU        0x1C                ;COUNT NUMBER OF SCAN1


;****************  KHAI BAO PHANCUNG VOI 595  *************

        #DEFINE        DATA        PORTB,0
        #DEFINE        CLOCK        PORTB,1
        #DEFINE        CLEAR        PORTB,2
        #DEFINE        LATCH        PORTB,3

;****************  PROGRAM START  ***********************
        ORG    0              ;RESET VECTOR
        GOTO    INIT
        ORG    4              ;INTERRUPT VECTOR
        GOTO    INIT
;****************  INITIAL PROCESS  *********************
        ORG    5
INIT          BCF        STATUS,RP1
        BSF    STATUS,RP0      ;CHANGE TO BANK1
        MOVLW  B'00011'        ;SET INPUT MODE DATA
        MOVWF  TRISA          ;SET PORTA TO INPUT MODE
        MOVLW        B'11110000'
        MOVWF        TRISB
        BCF    STATUS,RP0      ;CHANGE TO BANK0
;***************** NHET CHU VAO DAY ***********
        MOVLW        B'01110000'
        MOVWF        ROW1

        MOVLW        B'01000100'
        MOVWF        ROW2

        MOVLW        B'01000100'
        MOVWF        ROW3

        MOVLW        B'01001000'
        MOVWF        ROW4

        MOVLW        B'01110000'
        MOVWF        ROW5

        MOVLW        B'01001000'
        MOVWF        ROW6

        MOVLW        B'01001000'
        MOVWF        ROW7

        MOVLW        B'01110000'
        MOVWF        ROW8
;************************** SCAN**************************
SCAN        CALL        CLR                ;XOA 595
        MOVF        ROW8,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR8                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW7,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR7                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW6,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR6                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW5,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR5                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW4,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR4                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW3,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR3                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW2,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR2                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS

        CALL        CLR                ;XOA 595
        MOVF        ROW1,0                ;DUA DU LIEU ROW1 VAO W
        CALL        SHIFTOUT        ;GOI CT DICH BIT
        CALL        CHOT                ;CHOT DU LIEU RA O 595
        CALL        SCR1                ;GOI CT SCAN ROW, TURN ROW ON
        CALL        T1M                ;DELAY 1MS
       
        GOTO        SCAN
;********************************************************
;          TIMER  SUBROUTINE FOR 10MHZ CLOCK
;********************************************************

;*************  1MSEC TIMER SUBROUTINE  *****************
T1M    MOVLW  D'2'            ;(1)      SET LOOP CNT1
        MOVWF  CNT1M          ;(1)      SAVE LOOP CNT1
TM1LP1  MOVLW  D'249'          ;(1)*2    SET LOOP CNT2
        MOVWF  CNT500U        ;(1)*2    SAVE LOOP CNT2
TM1LP2  NOP                    ;(1)*249*2 TIME ADJUST
        NOP                    ;(1)*249*2 TIME ADJUST
        DECFSZ  CNT500U,F      ;(1)*249*2 CNT500U-1=0 ?
        GOTO    TM1LP2          ;(2)*248*2 NO, CONTINUE
        DECFSZ  CNT1M,F        ;(1)*2    CNT1M-1=0 ?
        GOTO    TM1LP1          ;(2)      NO. CONTINUE
        RETURN                  ;(2)      YES. CNT END
                                ;TOTAL 2501*0.4USEC=1MSEC

;*********** CHUONG TRINH CON DICH BIT **********
SHIFTOUT
        MOVWF        SHIFT                ;DUA DU LIEU VAO THANH GHI SHIFT
        MOVLW        D'8'                ;DEM 8BIT DU LIEU
        MOVWF        COUNTS
TESTBIT
        BCF        DATA                ;DU LIEC BAN DAU LA 0
        BTFSC        SHIFT,7                ;SHIFT CO BIT7 BANG 0 KKO??
        BSF        DATA                ;NEU KO SET DU LIEU TU O THANH 1
        BSF        CLOCK                ;DUA DU LIEU VAO
        NOP
        BCF        CLOCK                ;DUA CHAN CLOCK VE MUC THAP
        RLF        SHIFT,0                ;DICH TRAI THANH GHI DU LIEU
        MOVWF        SHIFT                ;TRA GIA TRI LAI THANH GHI SHIFT
        DECFSZ        COUNTS,1        ; XEM BIEN COUNT KHI GIAM BANG 0???
        GOTO        TESTBIT                ;NEU CHUA THI DICH TIEP

        RETURN

;**************** KHOI TAO 595  *********************
CLR        BCF        CLEAR                ;RESET DU LIEU TRONG 595
        NOP                        ; CLEAR TAC DONG CANH XUONG
        BSF        CLEAR                ; DUA CHAN RESET VE MUC LOGIC CAO
        RETURN
;*********** CHUONG TRINH CHOT **********
CHOT
        BSF        LATCH                ;LEN MUC CAO DE DUA BYTE VAO
        NOP
        BCF        LATCH                ;XUONG THAP KET THUC
       
        RETURN
;*********** SCAN ROW *************
SCR1        MOVLW        B'00011'
        MOVWF        PORTA
        RETURN
       
SCR2        MOVLW        B'00111'
        MOVWF        PORTA
        RETURN
       
SCR3        MOVLW        B'01011'
        MOVWF        PORTA
        RETURN
       
SCR4        MOVLW        B'01111'
        MOVWF        PORTA
        RETURN
       
SCR5        MOVLW        B'10011'
        MOVWF        PORTA
        RETURN
       
SCR6        MOVLW        B'10111'
        MOVWF        PORTA
        RETURN
       
SCR7        MOVLW        B'11011'
        MOVWF        PORTA
        RETURN
       
SCR8        MOVLW        B'11111'
        MOVWF        PORTA
        RETURN

;************************************************************

        END


tranvanthuong 04-06-2007 11:17 AM

bạn xem lại phần cứng mình đi led phai kiểm soất bằng phần mền trưoc da bạn cho tung dong roi tung cot roi tung led neu chay on moi viet chuong trinh chay chu , phần mền bạn chaư ổn lám, chạy đúng chỉ 1 vài chu kì đầu thôi,

HTAluvBeBeo 04-06-2007 01:54 PM

bro chỉ cho em chỗ nào sai với ạ:) làm sao để nó chạy đúng hết được ạ:).
Hehe, em hơi nhảy cóc, bắt tay viết luôn chạy rồi: đê em thử lại ạ, thanks

namqn 04-06-2007 07:09 PM

À, chân RA4 của PIC16F84A là loại cực máng hở, bạn phải có điện trở kéo lên (khoảng vài k) thì mới có thể có mức 1 ở chân RA4, lúc đó các hàng 5->8 của bạn mới được kích hoạt.

Thân,

thaithienanh 04-06-2007 09:12 PM

Câu trả lời của anh Namq bảo đảm chính xác 100% :D , Hì 74138 có 3 đầu vào song song nên sẽ giải mà ra đuợc 8 đường, bây giừ chỉ còn hai chân nên tất nhiên chỉ giải mã đuợc 4 đường thui ;), làm theo là xong :D

HTAluvBeBeo 05-06-2007 12:08 AM

hehe
Vui quá, thanks anh Nam nhé:cả hai cái code em post lên đều hoạt động tốt ạ. Mã hóa font hơi ngu:P:D Bi h em có câu hỏi thế này ạ:)
- Em không hiểu cái cực máng hở là gì ạ:) tiếng anh là gì ạ, để em đọc thêm:) Lúc đầu em lại nghĩ là do chân C của 138 bị đơ:P:D
- Việc mã hóa font thế nào cho hợp lý nhất, chứ mỗi lần thay đổi nội dung lại phải thay nội dung để tra lại bảng:)
- Em vẫn chưa hiểu giải thuật để quét được nhiều màu hơn ạ:) matrix em có ở nhà là bicolor Red và Green. Sau khi làm cái đầu tiên này, em định dùng 2 con 138 quét hàng, mỗi con phụ trách một màu, 595 vẫn để dịch dữ liệu vào. Các bro gợi ý cho em giải thuật ở đây với:)
Thanks mọ người, vui quá;)

namqn 05-06-2007 12:31 AM

Trích:

Nguyên văn bởi HTAluvBeBeo (Post 9121)
hehe
Vui quá, thanks anh Nam nhé:cả hai cái code em post lên đều hoạt động tốt ạ. Mã hóa font hơi ngu:P:D Bi h em có câu hỏi thế này ạ:)
- Em không hiểu cái cực máng hở là gì ạ:) tiếng anh là gì ạ, để em đọc thêm:) Lúc đầu em lại nghĩ là do chân C của 138 bị đơ:P:D
- Việc mã hóa font thế nào cho hợp lý nhất, chứ mỗi lần thay đổi nội dung lại phải thay nội dung để tra lại bảng:)
- Em vẫn chưa hiểu giải thuật để quét được nhiều màu hơn ạ:) matrix em có ở nhà là bicolor Red và Green. Sau khi làm cái đầu tiên này, em định dùng 2 con 138 quét hàng, mỗi con phụ trách một màu, 595 vẫn để dịch dữ liệu vào. Các bro gợi ý cho em giải thuật ở đây với:)
Thanks mọ người, vui quá;)

- Cực máng hở dịch từ thuật ngữ tiếng Anh open-drain. Trong các vi mạch CMOS, ngõ ra thường là một cặp MOSFET bổ phụ, bao gồm kênh P và kênh N. Trong một số trường hợp, người ta bỏ MOSFET kênh P đi, và đưa cực máng của MOSFET kênh N ra ngoài. Như vậy, ngõ ra trong trường hợp này chỉ có thể rút dòng về Vss, chứ không thể cấp dòng từ Vdd. Ứng dụng trong chuyển mức điện áp, AND nối dây, ...

- Để quét nhiều màu, bạn phải xem các LED ở cùng vị trí sử dụng chung chân hàng hay là cột, thì mới có cách quét thích hợp. Chẳng hạn, cả 2 LED dùng chung chân anode, là chân hàng, như vậy bạn phải có một mạch quét hàng với khả năng cấp dòng. Các chân cathode riêng biệt của từng LED sẽ được dùng để bật/tắt LED đó. Với ví dụ này, bạn dùng cách quét hàng, có thể dùng các transistor để cấp dòng cho các hàng, các vi mạch như 595 để đưa trạng thái LED, một 595 cho mỗi màu.

Thân,

HTAluvBeBeo 05-06-2007 01:12 AM

theo đúng datasheet em tìm được thì loai ở nhà em là column cathode, giống như anh lấy ví dụ: chung anode và là hàng.
Nhưng do đặc tình của 138 ( output có 1 chân Low) và 595 nên em quay 90 dộ, cho tiện làm,
do đó hàng của em giờ đây là cathode màu đỏ, bật tắt là nhờ 138. Còn anode chung là do 595 dịch dữ liệu vào. heheem xoay thế nên data trong bảng đưa vào 595 cũng hơi ngược:P:D
Anyway cái dữ liệu đưa vào này không phải vấn đề:)
Theo như em hiểu bài của anh, với ví dụ chính xác của anh thì là mình vẫn dùng 138 để bật tắt các hàng ở đây là anode chung. Còn 2 con 595 nói với cột cathode , mỗi con với 1 màu, thế thì ở đây nên mắc nồi tiếp hai con 595 này ạ:) hay là để tách nó ra, tức là mỗi con gắn vào PIC là riêng biệt, mất 8 chân để đk 2 côn 595:-?. Trong cả hai trường hợp, em cũng chưa tưởng tượng ra hai màu đấy khi mà tạo hiệu ứng thì nó thể nào ạ:) VD em muốn chạy một dòng chữ từ trái qua, phải qua, len trên, xuống dưới,etc.... như là 'ABC' mà A là red, B green, còn C orange:) anh Nam có thể gợi ý cho em giải thuật ở đây không ạ:) Thêm một tí xíu nữa là led sáng không đều, chỗ ít led sẽ sáng hơn nhièu led, phải giải quyết sao đây ạ:)
Hehe còn vụ open drain em không học điện tử nên không biết, nhưng bi h hiểu rồi ạ:)

namqn 05-06-2007 02:48 AM

Nếu bạn quay ma trận LED 90 độ thì lúc này bạn phải quét cột, vì các LED xanh và đỏ bây giờ có chung anode cột. Bạn vẫn phải dùng transistor để cấp dòng cho các anode, bây giờ là các cột. Nếu dùng 74138 thì bạn có thể dùng các transistor BJT loại PNP để cấp dòng cho các cột. Như vậy bạn có thể cấp dòng đồng thời cho cả LED xanh và LED đỏ, để tạo ra màu cam (orange).

Về chuyện hàng nào có ít LED thì sáng mạnh hơn, theo tôi lý do là bạn chỉ dùng 1 điện trở hạn dòng cho cả hàng, mắc giữa LED ma trận và 74138. Nếu có ít LED sáng thì dòng điện chia cho mỗi LED sẽ nhiều hơn. Để các LED sáng đều bất chấp số lượng LED được kích hoạt ở mỗi hàng, bạn nên dùng điện trở hạn dòng riêng biệt cho mỗi LED, tức là mắc các điện trở hạn dòng giữa 595 và LED ma trận. Cần tính lại giá trị điện trở, vì lúc này mỗi điện trở chỉ cấp dòng cho 1 LED.

Bạn có thể nối các 595 thành chuỗi nối tiếp (đây là ưu thế của 595) hay kết nối từng con riêng biệt với PIC.

Thân,

HTAluvBeBeo 05-06-2007 08:54 AM

Vậng ạ, về phần cứng như thế em hiểu thế này ạ:)
Tóm lại là em sẽ không quay kiếc gì nữa, cho nó thống nhât:P(tại lần trước lười dùng thêm transitor nên mới quay ra mắc như thế:)
Bây giờ để quét hàng đúng như cái loại matrix mà anh Nam lấy làm ví dụ:) Em dùng 138 và trans (A1015 chắc là ổn:) )để quét hàng anode chung. Hai con 595 mắc nối tiếp với nhau và mỗi con mắc với cathode của một màu:)ở giữa là trở hạn dòng Vcc là 5V, dòng qua 1 led là 20mA, V led khoảng 2V thì trở tầm 150 Ohm;):). Phần cứng thế là OK;)
Em làm nốt cái hiệu ứng cũ với phần cứng mới này:) rồi 1 tháng sau em hỏi tiếp:P (bây giờ phải ôn thi HK rồi:)
Thanks anh Nam và mọi người nhiều;)

vuhungdtk36 25-02-2008 09:30 PM

co ai co phan cung ve quang cao bang ma tran led dung vi dieu khien 8051 ko .Post len cho em dc khong .Em xin cam on > manhhung107@gmail.com

huuquynh08 11-07-2010 11:29 AM

giup e bai nay voi
 
e dang lam quet led ma tran .cho em hoi mo phong cua em co dung ko ,sao no chay lung tung .em co lam theo bai trong dien dan .nhung no chay lung tung wa .nho may anh chi giup e

huuquynh08 11-07-2010 11:32 AM

sao ko tai len dc
 
1 Attachment(s)
em up lai bai .cac anh sua dum e voi .

davidquan73 24-02-2011 07:52 PM

may anh cho e hoi ve cach quet cot trong led ma tran 2 mau. E dung C de viet, ma sao viet hoai ko dc. Cho du lieu chay tu trai wa phai ma sang dog thoi ca 2 mau lun ah


Múi giờ GMT. Hiện tại là 04:59 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam