A button directly interfaced to a digital circuit will rarely behave as expected because of an irritating response called switch bouncing. Switch bouncing occurs because after the initial closing of the contacts, the switch may rebound and short the contacts which will in turn cause more pulses to be generated. Being interfaced to a digital circuit makes these series of bounces become a problem because the circuit will usually interpret these series of actions as actual valid pulses unless a few safegaurds are in place.
Safegaurds, such as the one used in this project as depicted in the circuit below, serve to suppress and filter out the pulses so that only the initial contact short will register as valid input. The inverter at the end of the switch RC complex is a Schmitt trigger type that serves to cleanup the response of the output signal which in turn makes the output pulse much more "friendly" to digital logic - a clean square pulse.
Fairly dependable debouncing circuit
Since the digital clock should contain the ability to retain a certain number of settings when it is powered, a few of the debounced outputs were tied to flip-flops that were wired to toggle whenever a pulse was recieved. D-type Flip flops were chosen and wired to toggle by connecting the !Q output of itself back to its D input. The clock of each flip flop was fed the output signal generated by the corresponding debounced switch.
Input Schematic