Multiplexing 7-segment-CA 4 digit watch

Hi all,
I managed to build a LED watch using 4 7-segment (HH:MM) displays with 4 PNP transistors (3906). I was trying to implement the RTC 1307 into the whole picture because i ddint want to have button for adjusting time once the watch was disconnected from power supply. I used the schematics for RTC 1307 from ladyada site DS1307 RTC tutorial.
I hit the wall in writing code, basicly I want to read data (exp. Serial.println(now.hour()); from RTC and feed it to the LED display.
here is the code snippet from the main program. I'm also posting the schematics

int tra1= 12; //first tranzistor...
int tra2 = 13; //second and so on.. 
int tra3 = 11; 
int tra4 = 10;
#define G 2
#define S 3
#define A 5
#define B 6
#define E 7
#define D 8
#define C 9
#define DP 4


int timer=0; 

int j=0;
// functions to display digits


void digit0 () {
// for 0 needed to turn ON F A B C D E segments, so:

digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, LOW);

//////////////////////// G segment should be turn OFF
digitalWrite(G, HIGH);

};

void digit1 () {

digitalWrite(A,HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(S, HIGH);
digitalWrite(G, HIGH);
};

void digit2 () {

digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(C, HIGH);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, HIGH);
digitalWrite(G, LOW);
};

void digit3 () {

digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(S, HIGH);
digitalWrite(G, LOW);
};

void digit4 () {

digitalWrite(A,HIGH);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};

void digit5 () {

digitalWrite(A,LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};

void digit6 () {

digitalWrite(A,LOW);
digitalWrite(B, HIGH);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, LOW);
digitalWrite(G, LOW);
};

void digit7 () {

digitalWrite(A,LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, HIGH);
digitalWrite(E, HIGH);
digitalWrite(S, HIGH);
digitalWrite(G, HIGH);
};

void digit8 () {

digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, LOW);
digitalWrite(S, LOW);
digitalWrite(G, LOW);

};

void digit9 () {

digitalWrite(A, LOW);
digitalWrite(B, LOW);
digitalWrite(C, LOW);
digitalWrite(D, LOW);
digitalWrite(E, HIGH);
digitalWrite(S, LOW);
digitalWrite(G, LOW);

};

//function to display digit from inputed int

void showdigit (int digit)

{

switch (digit) {

case 0:
digit0 ();
break;

case 1:
digit1 ();
break;

case 2:
digit2 ();
break;

case 3:
digit3 ();
break;

case 4:
digit4 ();
break;

case 5:
digit5 ();
break;

case 6:
digit6 ();
break;

case 7:
digit7 ();
break;

case 8:
digit8 ();
break;

case 9:
digit9 ();
break;

default:

break;

};

}

/*
// showing 4 digits
void showdigits (int number)
{

// e.g. we have "1234"
showdigit(number/1000);  // segments are set to display "1"
digitalWrite(bla, LOW); // first digit on,
digitalWrite(bla1, HIGH); // other off
digitalWrite(bla2, HIGH);
digitalWrite(bla3, HIGH);

delay (1);

number = number%1000;  // remainder of 1234/1000 is 234
digitalWrite(bla, HIGH); // first digit is off
 showdigit(number/100); //// segments are set to display "2"
digitalWrite(bla1, LOW); // second digit is on
 delay (1); // and so on....

number =number%100;    
digitalWrite(bla1, HIGH);
showdigit(number/10);
digitalWrite(bla2, LOW);
delay (1);

number =number%10; 
digitalWrite(bla2, HIGH);
showdigit(number); 
digitalWrite(bla3, LOW);
 delay (1);

}; 

*/

void setup()

{
  
  Serial.begin(57600);
    Wire.begin();
    RTC.begin();
    
    pinMode(pin, INPUT);
    
  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }

pinMode(A, OUTPUT);
pinMode(B, OUTPUT);
pinMode(C, OUTPUT);
pinMode(D, OUTPUT);
pinMode(E, OUTPUT);
pinMode(S, OUTPUT);
pinMode(G, OUTPUT);
pinMode(DP, OUTPUT);
pinMode(tra1, OUTPUT);
pinMode(tra2, OUTPUT);
pinMode(tra3, OUTPUT);
pinMode(tra4, OUTPUT);
};

hope somone can help me out. thanks in advance!

Hardware suggestions:
Need current limit resistors on your cathode drive lines -will burn out the LEDs or the arduino pins.
Should put 0.1uF caps on uC VCC and AVCC pins.
Need a 10K pullup resistor on reset.

Software question:
Why do you call these tra in one place & bla in another?

pinMode(tra1, OUTPUT);
pinMode(tra2, OUTPUT);
pinMode(tra3, OUTPUT);
pinMode(tra4, OUTPUT);

digitalWrite(bla, LOW); // first digit on,
digitalWrite(bla1, HIGH); // other off
digitalWrite(bla2, HIGH);
digitalWrite(bla3, HIGH);

Hi. Yeah i was tihnking of putting these resistors and capacitos in after i finish with protoboarding. Now they are connected for short period of time.
Sorry, I used my native language for naming those transistors and changing it on the go to be more descriptive...since it was late and i was pretty tired of ttrying to make it work i missed those couple of places, srry my mistake :wink:

Anyway, forgot to mention that i was using "RTClib.h" and "Wire.h" libs to make it work. However I can't read those lines feed by 1307 to serial conncetion. I can see them on serila monitor but i cant use am :confused:
soory, im pretty new to C/Arduino...