Speedometer not displaying values.

Debouncing the switch is easy at such low RPM. The shaft rotational period at full speed is about 70 ms, so just ignore the switch for about 35 ms after the first close. If you want to go faster, measure the bounce time of the switch with a scope.

Here is the interrupt based solution...

volatile unsigned long lastSwitchTime=0;
volatile int rpm;

void setup() {
  Serial.begin(9600);
  attachInterrupt(0,reedSwitchInterrupt,RISING);
}

void loop() {
  delay(1000);
  Serial.println(calcMph(rpm));
  rpm = 0;
}

void reedSwitchInterrupt() {
  unsigned long now = millis();  
  int elapsedTime = now - lastSwitchTime;
  
  if (elapsedTime < 35)
    return;
  if (elapsedTime > 2000)
    rpm = 0;
  else
    rpm = 60.0/(elapsedTime/1000.0);
  lastSwitchTime = now;
}

int calcMph(int rpm) {
  // convert rpm to mph
}