Looking to build a simple clock using 4 ssd's and no rtc.

I just got started playing with the Arduino, and ran across a project for a crude clock. I wanted to use this during Ham Radio events to keep UTC time for contact logs, nothing long term so super accuracy is not critical.

Anyway I dug through my parts and found everything required but the shift registers. So, I ordered the 74CH595 shift registers. When they arrived the other day I tried to find the project again. It seems I somehow hid the bookmark from myself, or maybe I forgot to hit the bookmark button?

So I was wondering if someone could point me to a simple clock project using 4 common cathode ssd's and 74HC595 shift registers?

Thanks in advance.
Jake

Like this but with 74HC595 driving the anodes and common cathode to Gnd.
Poor chip for that, need to limit outputs to 8-9mA.

Thank you, any chance you have code to go with that?

To be honest, I was hoping for an instructable link or something similar (wish I could find the one I lost LOL).

I'm a disabled Vet with a full time job and school at the same time it doesn't leave me much free time to teach myself code from scratch. I've built a bunch of the tutorials and have a good grasp on the electronics end, but the code is really what kicks my but. I do plan on learning the programming, but like I said right now there just aren't enough hours in a day.

Thank you for your service, can't say that to enough Vets.

Try this code - it outputs to the serial monitor at 115200 so you can check the hardware against something. I've wired up shift registers & run similar code so I expect it will work.
A 1 bit in the fontArray[] is a segment that will be on.
I only did a few digits, I'll let you finish the other digits.

/* 
10/2/14 Crossroads
Time test.
Added SPI transfer of 4 digits to shift registers
*/
#include <SPI.h>

unsigned long currentmicros = 0;
unsigned long nextmicros = 0;
unsigned long interval = 10000; // 10 milliseconds
// set to Friday 11/29/13, 9:04 pm east coast US, when the sketch was first created
int years = 2013;
int days = 335;
byte tens_hours = 2; 
byte ones_hours = 0;  
byte tens_minutes = 0;
byte ones_minutes = 5;
byte tens_seconds = 4;
byte ones_seconds = 5;
byte tenths = 0;
byte hundredths= 0;

byte prior_seconds = 0;
byte ssPin = 10;

byte fontArray[] = {
  0b00111111, // 0
  0b00000110, // 1
  0b01011011, // 2
  0b01001111, // 3
  // complete for other numbers - LEFT AS AN EXERCISE FOR THE READER :)
};  

  /*
font = 0bDP-g-f-e-d-c-b-a
standard LED layout
   a
f     b
   g
e     c
   d      DP
   */

void setup()
{
  pinMode (ssPin, OUTPUT); // SS for SPI - D10 Must be an output
  Serial.begin(115200); // defines D0, D1 for serial
  SPI.begin();          // defines D11,D12,D13 for SPI
                        // MOSI on D11, SCK on D13
                        // MISO on D12, not used here
  nextmicros = micros();
}

void loop()
{
  currentmicros = micros(); // read the time.

  if ((currentmicros - nextmicros) >= interval) // 10 milliseconds have gone by

  {

    hundredths = hundredths +1;

    if (hundredths == 10){
      hundredths = 0;
      tenths = tenths +1;
    }

    if (tenths == 10){
      tenths = 0;
      ones_seconds = ones_seconds +1;
    }

    if (ones_seconds == 10){
      ones_seconds = 0;
      tens_seconds = tens_seconds +1;
    }

    if (tens_seconds == 6){
      tens_seconds = 0;
      ones_minutes = ones_minutes +1;
    }

    if (ones_minutes == 10){
      ones_minutes = 0;
      tens_minutes = tens_minutes +1;
    }

    if (tens_minutes == 6){
      tens_minutes = 0;
      ones_hours = ones_hours +1;
    }

    if (ones_hours == 10){
      ones_hours = 0;
      tens_hours = tens_hours +1;
    }
    if ((tens_hours == 2) && (ones_hours == 4)){
      ones_hours = 0;
      tens_hours = 0;
      days = days +1;
      if (days == 365){
        years = years + 1;
      }
    }

    nextmicros = nextmicros + interval; // update for the next comparison

  }  // end time interval check

  // counters are all updated now, send to display

  if (prior_seconds != ones_seconds){
    Serial.print ("Year: ");
    Serial.print (years);
    Serial.print (" Day of the year: ");
    Serial.print (days);
    Serial.print (" Time: ");
    Serial.print (tens_hours, DEC);
    Serial.print (" ");
    Serial.print (ones_hours, DEC);
    Serial.print (" : ");
    Serial.print (tens_minutes, DEC);
    Serial.print (" ");
    Serial.print (ones_minutes, DEC);
    Serial.print (" : ");
    Serial.print (tens_seconds, DEC);
    Serial.print (" ");
    Serial.println (ones_seconds, DEC);

    prior_seconds = ones_seconds;   // show time update once/second
    
    // send out to shift registers as well
    digitalWrite (ssPin,LOW);
    // look up the font for the number to be displayed,
    // load into input stage
    SPI.transfer(fontArray[ones_seconds]); 
    SPI.transfer(fontArray[tens_seconds]);
    SPI.transfer (fontArray[ones_minutes]);
    SPI.transfer(fontArray[tens_minutes]);
    digitalWrite (ssPin, HIGH); // this rising edge moves data to the output stage
  }  // end one second passing check
  
  // do other stuff in the meantime ...

} // end void loop