PDA

View Full Version : Mỗi 1 matrix 8x8 mà không làm xong:( Giúp em với:)


HTAluvBeBeo
03-06-2007, 07:38 PM
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 ạ:)
;************************************************* *******
;
; 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:)
;************************************************* *******
;
; 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
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
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
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