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