Anyone know good 7segment library?

Hi. I´m looking for 7 segment 4 digit led display library. I have searched from google, but i can´t find good at all. I need your skills to find out perfect library to it. I don´t even know can i post this to this forum :stuck_out_tongue:
It can also work with 74hc595an. I´m going to make a temp meter, but i don´t know how to multiplex or how i can control graphics with arduino. I´m looking for simple library, like Arduino´s own LCD library.
I hope you guys can help me! I thank you already for replying this, because you want to answer to me at go to google, but i want just ask from real people! 8)

Why do you want a library? Why not just program it, it's not hard. You never know you might just learn something instead of using crutches like libraries for trivial tasks.

See:-
http://www.thebox.myzen.co.uk/Tutorial/Arrays.html

If you are disinclined to re-invent the wheel but inclined to use common cathode LEDs

http://playground.arduino.cc/Main/LedControl

It is hardly a wheel for godsake, it is a nail.

// Define GPIO pins.

const int digit1 = A3; 
const int digit2 = A2; 
const int digit3 = A1; 
const int digit4 = A0; 
const int segA = 0;
const int segB = 1;
const int segC = 2;
const int segD = 3;
const int segE = 4;
const int segF = 5;
const int segG = 6;
const int segDP = 7;

int dispcount = 0;

void setup() {
  // Configure GPIO pins.
  
  pinMode(digit1, OUTPUT); 
  pinMode(digit2, OUTPUT); 
  pinMode(digit3, OUTPUT); 
  pinMode(digit4, OUTPUT); 
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
  pinMode(segDP, OUTPUT);

  digitalWrite(segDP, LOW); // We aren't going to use segment DP.
}

int count = 0;

void loop() {
  // Display counter is separate from main counter so pausing count doesn't pause display refresh.
  
  dispcount ++;
    
  if (dispcount==4) dispcount = 0;
  
  // Display Count - illuninate one of the digits each time through to effect multiplexing.

  // Turn off our current display so as we set it up we don't get ghosting.
  
  switch (dispcount) {
    case 0:
      digitalWrite(digit1, LOW);
      break;
    case 1:
      digitalWrite(digit4, LOW);
      break;
    case 2:
      digitalWrite(digit3, LOW);
      break;
    case 3:
      digitalWrite(digit2, LOW);
      break;
  }
  
  // Illuminate segments for the current digit.
  
  // Figure out digits for current display and current count, i.e. ones digit for display zero, tens digit for display two, etc.

  for (int i=0;i<dispcount;i++)
  {
    count /= 10;
  }
  
  count = count % 10;

  // Actual segment map courtesy of the Arabs.
  
  switch (count) {
    case 0:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, HIGH);
      digitalWrite(segE, HIGH);
      digitalWrite(segF, HIGH);
      digitalWrite(segG, LOW);
      break;
    case 1:
      digitalWrite(segA, LOW);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, LOW);
      digitalWrite(segE, LOW);
      digitalWrite(segF, LOW);
      digitalWrite(segG, LOW);
      break;
    case 2:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, LOW);
      digitalWrite(segD, HIGH);
      digitalWrite(segE, HIGH);
      digitalWrite(segF, LOW);
      digitalWrite(segG, HIGH);
      break;
    case 3:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, HIGH);
      digitalWrite(segE, LOW);
      digitalWrite(segF, LOW);
      digitalWrite(segG, HIGH);
      break;
    case 4:
      digitalWrite(segA, LOW);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, LOW);
      digitalWrite(segE, LOW);
      digitalWrite(segF, HIGH);
      digitalWrite(segG, HIGH);
      break;
    case 5:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, LOW);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, HIGH);
      digitalWrite(segE, LOW);
      digitalWrite(segF, HIGH);
      digitalWrite(segG, HIGH);
      break;
    case 6:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, LOW);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, HIGH);
      digitalWrite(segE, HIGH);
      digitalWrite(segF, HIGH);
      digitalWrite(segG, HIGH);
      break;
    case 7:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, LOW);
      digitalWrite(segE, LOW);
      digitalWrite(segF, LOW);
      digitalWrite(segG, LOW);
      break;
    case 8:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, HIGH);
      digitalWrite(segE, HIGH);
      digitalWrite(segF, HIGH);
      digitalWrite(segG, HIGH);
      break;
    case 9:
      digitalWrite(segA, HIGH);
      digitalWrite(segB, HIGH);
      digitalWrite(segC, HIGH);
      digitalWrite(segD, LOW);
      digitalWrite(segE, LOW);
      digitalWrite(segF, HIGH);
      digitalWrite(segG, HIGH);
      break;
  }

  // Now switch on the common cathode of the current display.
  
  switch (dispcount) {
    case 0:
      digitalWrite(digit4, HIGH);
      break;
    case 1:
      digitalWrite(digit3, HIGH);
      break;
    case 2:
      digitalWrite(digit2, HIGH);
      break;
    case 3:
      digitalWrite(digit1, HIGH);
      break;
  }
  
  // A little time to allow the LEDs to stay illuminated.
  
  delay(1);
}