This does not look correct to me at a first glance, I don't know if it is the only problem since I haven't got the time at the moment to try it.
if RST = '1' then
state <= s0;
Digit1 <= (others=>'0');
Digit10 <= (others=>'0');
if CLK'event and CLK = '1' then
..
"if CLK'event and CLK = '1' then" will only happen when the reset is high and the state variable will always in that case be set to 0. Try changing it to:
if RST = '1' then
state <= s0;
Digit1 <= (others=>'0');
Digit10 <= (others=>'0');
elsif CLK'event and CLK = '1' then
...
I wouldn't personally have any code outside the reset statement in a process to make sure nothing funny happens.