Hi everyone,
I m trying to drive 8x8 dot matrix and i m facing a weird problem.
when i try to display simple pattern like this
i got
if you notice, the third and eight rows is supposed to be OFF but they are not. instead, they are ON with a little brightness than the second and the seventh ( ON rows )
i tried to figure out whats the problem. is there any reason that the shift register used to sink column currents isnt able to change its state instantly from logic 1 to logic 0 ? is there some capacitance related to its latch function ?
** i used hef4094 to sink columns current and it receives its data serially from PIC16f84
** i used 8 transistors to source current to rows. they are connected to portb
this is the code i used
Code:INCLUDE "MODEDEFS.BAS" TRISB = 0 TRISA = 0 SYMBOL STRB = PORTA.0 SYMBOL DAT = PORTA.1 SYMBOL CLK = PORTA.2 SYMBOL EN = PORTA.3 TEMP VAR BYTE CNTR1 VAR BYTE CNTR2 VAR BYTE COL VAR BYTE ROW VAR BYTE COLVAR VAR BYTE[8] ROWVAR VAR BYTE[8] PORTB = 0 PORTA = 0 CNTR1 = 0 CNTR2 = 0 EN = 1 start: COLVAR[0] = %11000000:COLVAR[1]=%11000000:COLVAR[2]=0:COLVAR[3]=0 COLVAR[4] = 0:COLVAR[5] = 0:COLVAR[6] = %11000000:COLVAR[7] = 0 MAIN: FOR CNTR2 = 0 TO 100 PORTB = 1 FOR CNTR1 = 0 TO 7 STRB = 0 COL = COLVAR[CNTR1]^255 SHIFTOUT DAT,CLK,0,[COL] SHIFTOUT DAT,CLK,0,[COL] STRB = 1 PAUSE 2 PORTB = PORTB *2 NEXT CNTR1 NEXT CNTR2 'FOR CNTR1 = 0 TO 7 'COLVAR[CNTR1] = COLVAR[CNTR1]<<1 'NEXT CNTR1 GOTO MAIN




Bookmarks