This bit of code does things in the wrong order:
state++;
{
lcd.begin(16,2);
lcd.print("DigiDice - D");
lcd.print(dValue[state]);
}
}
if (state > 6)
You print the new dice value before you do the 'if(state > 6)' check to reset it to zero. The '1' you're seeing on the display is just whatever happens to be in the memory location after the last dice.
A better way to do this would be like this:
// DICE_COUNT is the number of elements in the dValue array
state = (state+1) % DICE_COUNT;
lcd.begin(16,2);
lcd.print("DigiDice - D");
lcd.print(dValue[state]);