Using bit arrays will make adding of information simpler - it can be visualized during entering the graphical data. Say I want to draw a circle, in BIT, it will look like

001100
010010
010010
001100

Here is the working code, but it has two problems:

1. It is dead huge - 3.3k, so had to use 16F876A
2. If I decrease refresh time, for display to less flicker, some non-needed pixels also come on, but at lower brightness. I suspect, this is because MCU isn't giving "true" gnd connection?

Code:
L1 var PORTB.0
L2 VAR PORTB.1
L3 VAR PORTB.2
L4 VAR PORTB.3
L5 VAR PORTB.4
L6 VAR PORTB.5
L7 VAR PORTC.1

C1 VAR PORTC.5
C2 VAR PORTC.4
C3 VAR PORTC.6
C4 VAR PORTC.2
C5 VAR PORTC.3
DEFINE OSC 4

DRO VAR BYTE 'char redraw timing
SVLA VAR BYTE    'char scroll value
SVLA=0         
TRIALI VAR BYTE 'char holdon timing


'define arrays

line1 var bit[12]
line2 var bit[12]
line3 var bit[12]
line4 var bit[12]
line5 var bit[12]
line6 var bit[12]
line7 var bit[12]

'write data to array

'line 1
line1[0]=0
line1[1]=1
line1[2]=1
line1[3]=1
line1[4]=0
line1[5]=0
line1[6]=0
line1[7]=1
line1[8]=1
line1[9]=1
line1[10]=0
line1[11]=0

'line 2
line2[0]=1
line2[1]=0
line2[2]=0
line2[3]=0
line2[4]=1
line2[5]=0
line2[6]=1
line2[7]=0
line2[8]=0
line2[9]=0
line2[10]=1
line2[11]=0

'line 3
line3[0]=0
line3[1]=0
line3[2]=0
line3[3]=0
line3[4]=1
line3[5]=0
line3[6]=0
line3[7]=0
line3[8]=0
line3[9]=0
line3[10]=1
line3[11]=0

'line 4
line4[0]=0
line4[1]=1
line4[2]=1
line4[3]=1
line4[4]=1
line4[5]=0
line4[6]=0
line4[7]=0
line4[8]=0
line4[9]=0
line4[10]=1
line4[11]=0

'line 5
line5[0]=1
line5[1]=0
line5[2]=0
line5[3]=0
line5[4]=1
line5[5]=0
line5[6]=1
line5[7]=0
line5[8]=0
line5[9]=0
line5[10]=1
line5[11]=0

'line 6
line6[0]=1
line6[1]=0
line6[2]=0
line6[3]=0
line6[4]=1
line6[5]=0
line6[6]=1
line6[7]=0
line6[8]=0
line6[9]=0
line6[10]=1
line6[11]=0

'line 7
line7[0]=0
line7[1]=1
line7[2]=1
line7[3]=1
line7[4]=0
line7[5]=0
line7[6]=0
line7[7]=1
line7[8]=1
line7[9]=1
line7[10]=0
line7[11]=0


DRO=2   'time refresh set

'turn off display
HIGH L1
HIGH L2
HIGH L3
HIGH L4
HIGH L5
HIGH L6
HIGH L7
LOW C1
LOW C2
LOW C3
LOW C4
LOW C5

cikleri:
FOR SVLA=0 TO 6 'scroll through the array
FOR TRIALI=1 TO 30  'time to show individual char
low L1 'ENABLE LINE 1
IF LINE1[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE1[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE1[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE1[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE1[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L1

low L2 'ENABLE LINE 2
IF LINE2[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE2[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE2[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE2[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE2[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L2

low L3 'ENABLE LINE 3
IF LINE3[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE3[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE3[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE3[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE3[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L3

low L4 'ENABLE LINE 4
IF LINE4[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE4[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE4[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE4[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE4[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L4

low L5 'ENABLE LINE 5
IF LINE5[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE5[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE5[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE5[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE5[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L5

low L6 'ENABLE LINE 6
IF LINE6[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE6[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE6[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE6[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE6[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L6

low L7 'ENABLE LINE 7
IF LINE7[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE7[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE7[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE7[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE7[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L7
NEXT

PAUSE 5
NEXT
 'ROTATE BACK
 
FOR SVLA=6 TO 0 STEP -1
FOR TRIALI=1 TO 30
low L1 'ENABLE LINE 1
IF LINE1[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE1[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE1[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE1[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE1[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L1

low L2 'ENABLE LINE 2
IF LINE2[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE2[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE2[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE2[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE2[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L2

low L3 'ENABLE LINE 3
IF LINE3[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE3[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE3[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE3[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE3[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L3

low L4 'ENABLE LINE 4
IF LINE4[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE4[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE4[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE4[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE4[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L4

low L5 'ENABLE LINE 5
IF LINE5[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE5[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE5[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE5[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE5[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L5

low L6 'ENABLE LINE 6
IF LINE6[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE6[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE6[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE6[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE6[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L6

low L7 'ENABLE LINE 7
IF LINE7[0+SVLA]=1 THEN
HIGH C1
ELSE
LOW C1
ENDIF

IF LINE7[1+SVLA]=1 THEN
HIGH C2
ELSE 
LOW C2
ENDIF

IF LINE7[2+SVLA]=1 THEN
HIGH C3
ELSE 
LOW C3
ENDIF

IF LINE7[3+SVLA]=1 THEN
HIGH C4
ELSE 
LOW C4
ENDIF

IF LINE7[4+SVLA]=1 THEN
HIGH C5
ELSE 
LOW C5
ENDIF
PAUSE DRO
HIGH L7
NEXT

PAUSE 5
NEXT

GOTO CIKLERI