74HC595 8x16led matrix arduino
Lets analyze what's going on here. The code is implementing a multiplexing scheme, which is to say at any given moment, only one row of LEDs is being "addressed" (i.e. 128 &gt;&gt; i, the row addressed by the i-th bit). I'd advise you to rename the variable called SHIFT to CLOCK as that is what most people will expect it to be called. Usually the variable you call STORE is called LATCH. You should declare int pic[] as uint8_t pic[] instead so it's the right size (8-bits instead of 16-bits) for what you are trying to express as well. 

All of that said, I don't think any of it explains the outcome in the picture. I think it's more likely a wiring error of some kind or an power issue. Can the 74HC595 source / sink 100mA? Because that is what you are asking of it with 8 LEDs, a 5V power source, and 220 Ohm resistor.

I would start with a much more simple sketch that allows you to stimulate each pixel of the matrix individually, and in a way that is under your control through the serial terminal, for example. Something like this:

#include &lt;stdint.h&gt;

#define DATA 10
#define SHIFT 11
#define STORE 12

uint8_t row = 0, col = 0;

void store();

void setup() {
  Serial.begin(9600);
  Serial.println("Test One LED at a time");
  pinMode(DATA, OUTPUT);
  pinMode(SHIFT, OUTPUT);
  pinMode(STORE, OUTPUT);

  // initialize the shift registers
  shiftOut(DATA, SHIFT, LSBFIRST, 0);
  shiftOut(DATA, SHIFT, LSBFIRST, 0);   
  store();

}

void loop() {
  if (Serial.available()) {
    Serial.read();
    Serial.print("Lighting row "); Serial.print(row);
    Serial.print(" and column "); Serial.println(col);

    uint8_t rowval = (1 &lt;&lt; row);
    uint8_t colval  = ~(1 &lt;&lt; col);
    shiftOut(DATA, SHIFT, LSBFIRST, colval);
    shiftOut(DATA, SHIFT, LSBFIRST, rowval);   
    store();

    col++;
    if (col &gt; 7) {
      col = 0;
      row++;
      if (row &gt; 7) {
        row = 0;
      }
    }
  }
}

void store() {
  digitalWrite(STORE, HIGH);
  delayMicroseconds(10);
  digitalWrite(STORE, LOW);
  delayMicroseconds(10);
}


And just see if you can get each LED to light up one at a time. Make sure you configure the Serial Monitor to have "no line ending" and for every character you send, the LED will advance by one position in row major order. At startup, no LEDs should be illuminated.