I see you have commented the "display_time();" after the LCD initialization. You may re-use this function to display the initial time on the first line if you simply add a parameter to the function:
// Displays minutes and seconds on line 'line' (1 or 2) at position 8
void display_time(unsigned short line) {
md1 = ...
...
Lcd_Out(line,8,"[");
...
}
Then, in your code, call the function and specify the line:
display_time(1); // Displays minutes and seconds on line 1
I think there are some big errors in your code, especially when reading data from the eeprom: with the "Lo", "Hi", you assign 16 bit values to 8 bit variables (unsigned short). You are lucky this is working: when you initialize "seconds", you probably overwrite the content of minutes, ...
You don't need 16 bit values to store seconds, minutes, hours if they are limited to 59,59, less than 255.
So, use only one eeprom byte for each variable:
hours = EEPROM_Read(0x10); //Load from eeprom
Delay_ms(30);
minutes = EEPROM_Read(0x11);
Delay_ms(30);
seconds = EEPROM_Read(0x12);
Same thing when you write the eeprom:
EEPROM_Write(0x12,seconds);
Delay_ms(50);
EEPROM_Write(0x11,minutes);
Delay_ms(50);
EEPROM_Write(0x10,hours);
Delay_ms(50);