tpic6b595 problem

Hi
I'm new with arduino.
I try to use few 7 segment led displays.
I have 6 groups of this displays.
First group is with 4 digits, second - 4 digits, 3 - 3 digits, 4 - 2 digits, 5 - 2 digits and 6 - 2 digits.
Now my connection is: all Latch are in pin 3, all clock in pin 2. Data is different for every group.
With this code:

#include <DallasTemperature.h>
#include <OneWire.h>
//temp object - sensors
#define ONE_WIRE_BUS 10  //temperature pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire); 

int splitTemp1, splitTemp2;
byte firstTempDigit, secondTempDigit,thirdTempDigit;

//pins controlling segments
const int clockPin              = 2;
const int latchPin              = 3;
const int dataHourPin           = 4;
const int dataDatePin           = 5;
const int dataTempPin           = 6;
const int dataWaterTempPin      = 7;
const int dataInTempPin         = 8;
const int dataHumPin            = 9;


byte IC1[] = {
 B11111100,
 B01100000,
 B11011010,
 B11110010,
 B01100110,
 B10110110,
 B10111110,
 B11100000,
 B11111110,
 B11110110
};

void setup() {
 Serial.begin(115200);
 pinMode(clockPin, OUTPUT);
 pinMode(latchPin, OUTPUT);
 pinMode(dataHourPin, OUTPUT);
 pinMode(dataDatePin, OUTPUT);
 pinMode(dataTempPin, OUTPUT);
 pinMode(dataWaterTempPin, OUTPUT);
 pinMode(dataInTempPin, OUTPUT);
 pinMode(dataHumPin, OUTPUT);


}

void loop() {

   digitalWrite(latchPin, LOW);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW); 
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW); 
   shiftOut(dataTempPin, clockPin, LSBFIRST, B01101000);
   shiftOut(dataTempPin, clockPin, LSBFIRST, B01101000);
   shiftOut(dataTempPin, clockPin, LSBFIRST, B01101000);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW);     
   shiftOut(dataWaterTempPin, clockPin, LSBFIRST, B01100100);
   shiftOut(dataWaterTempPin, clockPin, LSBFIRST, B01100100);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW);     
   shiftOut(dataInTempPin, clockPin, LSBFIRST, B01100010);
   shiftOut(dataInTempPin, clockPin, LSBFIRST, B01100010);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW);     
   shiftOut(dataHumPin, clockPin, LSBFIRST, B01100001);
   shiftOut(dataHumPin, clockPin, LSBFIRST, B01100001);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW); 


}

everything is fine and light the exact segments that i want.
But when i add temperature in the code :

#include <DallasTemperature.h>
#include <OneWire.h>
//temp object - sensors
#define ONE_WIRE_BUS 10  //temperature pin
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire); 

int splitTemp1, splitTemp2;
byte firstTempDigit, secondTempDigit,thirdTempDigit;

//pins controlling segments
const int clockPin              = 2;
const int latchPin              = 3;
const int dataHourPin           = 4;
const int dataDatePin           = 5;
const int dataTempPin           = 6;
const int dataWaterTempPin      = 7;
const int dataInTempPin         = 8;
const int dataHumPin            = 9;


byte IC1[] = {
 B11111100,
 B01100000,
 B11011010,
 B11110010,
 B01100110,
 B10110110,
 B10111110,
 B11100000,
 B11111110,
 B11110110
};

void setup() {
 Serial.begin(115200);
 pinMode(clockPin, OUTPUT);
 pinMode(latchPin, OUTPUT);
 pinMode(dataHourPin, OUTPUT);
 pinMode(dataDatePin, OUTPUT);
 pinMode(dataTempPin, OUTPUT);
 pinMode(dataWaterTempPin, OUTPUT);
 pinMode(dataInTempPin, OUTPUT);
 pinMode(dataHumPin, OUTPUT);


}

void loop() {
 sensors.requestTemperatures();
 int temp = sensors.getTempCByIndex(0);
 if (temp < 0) { // if temperature is negative
   temp = abs(temp);
   splitTemp1 = temp / 10; //taking first digit of the number
   splitTemp2 = temp % 10; //taking second digit of the number
   //finding the correct number in IC1 table 
   firstTempDigit  = IC1[splitTemp1];
   secondTempDigit = IC1[splitTemp2];
   thirdTempDigit = B00000010;
 } 
 else if ( temp == 0) { // if temp is 0
   secondTempDigit = B11111100;
   firstTempDigit = B00000000;
   thirdTempDigit = B00000000;
   }
   else { // if temp is positive
     splitTemp1 = temp / 10;
     splitTemp2 = temp % 10;
     firstTempDigit  = IC1[splitTemp1];
     secondTempDigit = IC1[splitTemp2];
     thirdTempDigit = B00000000;
   }
   digitalWrite(latchPin, LOW);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   shiftOut(dataHourPin, clockPin, LSBFIRST, B01111000);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW); 
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   shiftOut(dataDatePin, clockPin, LSBFIRST, B01110000);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW); 
   shiftOut(dataTempPin, clockPin, LSBFIRST, secondTempDigit);
   shiftOut(dataTempPin, clockPin, LSBFIRST, firstTempDigit);
   shiftOut(dataTempPin, clockPin, LSBFIRST, thirdTempDigit);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW);     
   shiftOut(dataWaterTempPin, clockPin, LSBFIRST, B01100100);
   shiftOut(dataWaterTempPin, clockPin, LSBFIRST, B01100100);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW);     
   shiftOut(dataInTempPin, clockPin, LSBFIRST, B01100010);
   shiftOut(dataInTempPin, clockPin, LSBFIRST, B01100010);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW);     
   shiftOut(dataHumPin, clockPin, LSBFIRST, B01100001);
   shiftOut(dataHumPin, clockPin, LSBFIRST, B01100001);
   digitalWrite(latchPin, HIGH);
   digitalWrite(latchPin, LOW); 


}

the displays group from 1 to 5 are blinking. Only last group is lighting ok.

Can anyone help me when i do wrong.

Thank you in advance.

Welcome to the Forum. Please read these two posts:

How to use this forum - please read.
and
Read this before posting a programming question ...
You may also find useful information that would answer your question here:
Useful links - check here for reference posts / tutorials

You have posted code without using code tags. The code tags make the code look

like this

when posting source code files. It makes it easier to read, and can be copied with a single mouse click. Also, if you don't do it, some of the character sequences in the code can be misinterpred by the forum code as italics or funny emoticons.
If you have already posted without using code tags, open your message and select "modify" from the pull down menu labelled, "More", at the lower left corner of the message. Highlight your code by selecting it (it turns blue), and then click on the "</>" icon at the upper left hand corner. Click on the "Save" button. Code tags can also be inserted manually in the forum text using the code and /code metatags.

Unless the sketch is too large, it's better if you post your code, rather than attach it. When it's attached, we have to download it, create a folder then open your code in our IDE. And afterwards, the folder remains unless we navigate to the "Temp" folder and manually remove it. It's much easier to just view the code in your post.

I apologize.
I thing I fix my post.

Thanks. One error is that at the end of loop you enable the latch pin but don't send any data. It's repeated at the beginning, so it shouldn't cause a problem, but it's bad style.

Can you elaborate and describe the "blinking" in more detail?

I know about the Latch in the end. I know it's a bad style. I will remove it, but like you said that is not a problem.
By "blinking" I mean, the segments which i want are lit for 1 milliseconds and then extinguished.
It's as if I load data, then it is not memorized in the 6B595 and after it passes through the loop again it is loaded again.
Resulting in flashing every millisecond.
If it slows it down with a delay or with millis, it just extend the black time,except the last display group of two.

Mmmm. Perhaps you should post a schematic of your hardware.