Separar Funciones VOID LOOP de otros VOIDS

Hola, necesito porfa que me ayuden a poder separar las funciones VOID LOOP de la VOID TEMP_MIN y de la VOID TEMP_MAX.
Estoy usando un teclado matricial, pantalla LCD y sensor LM35, y la lectura del sensor la hago constantemente en el VOID LOOP cada 200ms. Con el teclado oprimiendo una tecla llamo a la funcion VOID TEMP_MAX y lo mismo pero con otra tecla a VOID TEMP_MIN para luego ingresar temperaturas en esas pantallas (cosa que no muestra el codigo a continuacion).
Hasta ahi todo bien, me aparecen las pantallas correspondientes al llamar a esas funciones, pero al continuar leyendose las temperaturas del sensor en el VOID LOOP estas se muestran en las pantallas del VOID TEMP_MAX y VOID TEMP_MIN y no quiero que haga eso. Deseo mas bien que se muestren las pantallas solas sin mostrarse la lectura del sensor de forma intrusa, jeje.
No se si hay que parar u ocultarse de alguna forma la lectura, cosa que ya intente pero sin resultados.

PD: No le den interes a las temperaturas fijas (25 Y 10) del VOID SETUP, ni a los ultimos reglones del VOID TEMP_MAX y VOID TEMP_MIN, puse eso de adorno y no cambian nada supongo.

Gracias.

#include <Keypad.h>          //libreria para controlar el teclado matricial
#include <LiquidCrystal.h>   //libreria para controlar el LCD

//Configuración del teclado matricial

const byte filas = 4;                              // numero de filas a usar
const byte columnas = 4;                           // numero de columnas a usar
byte pinsFilas[filas] = {22, 23, 24, 25};          // orden de conexion de filas: Fila 1, Fila 2, Fila 3 y Fila 4
byte pinsColumnas[columnas] = {26, 27, 28, 29};    // orden de conexion de columnas: Columna 1, Columna 2, Columna 3 y Columna 4

char teclas[filas][columnas] = {                   //matriz teclas para definir orden de caracteres tal cual en el teclado
  {'7', '8', '9', 'A'},
  {'4', '5', '6', 'B'},
  {'1', '2', '3', ' '},                            //los espacios vacios pertenecen a teclas sin funcion en el programa
  {'0', ' ', ' ', ' '},
};

Keypad keypad = Keypad(makeKeymap(teclas), pinsFilas, pinsColumnas, filas, columnas);  //ordenar las teclas para leerlas en ese orden

// Configuración para el LCD

//Pines del LCD-> RS  E   D4  D5  D6  D7
LiquidCrystal lcd(32, 33, 34, 35, 36, 37);

const int sensor = 0;                 // pin entrada analogica del sensor LM35
const int backlight = 38;             // pin digital LED del LCD
const int ledAzul = 42;               // pin digital LED azul
const int ledVerde = 43;              // pin digital LED verde
const int ledRojo = 44;               // pin digital LED rojo
const int buzzer = 45;                // pin digital buzzer
const int transistor1 = 52;           // pin digital transistor 1
const int transistor2 = 53;           // pin digital transistor 2

char numero;             //variable de tipo caracteres

float centigrados()                     //calcular como variable decimal "coma flotante"
{
  int sensor;                           //de acuerdo a la variable del sensor
  float celsius;                        //crear una variable resultado decimal
  sensor = analogRead(A0);              //leer el estado de la entrada analogica A0 donde esta el sensor
  celsius = (500.0 * sensor) / 1023; //realizar el calculo
  return (celsius);                     //devolver el resultado a la variable decimal "celsius"
}

void setup() {

  pinMode(backlight, OUTPUT);             //salida digital a transistor para backlight del LCD
  pinMode(ledAzul, OUTPUT);               //salida digital a led azul
  pinMode(ledVerde, OUTPUT);              //salida digital a led verde
  pinMode(ledRojo, OUTPUT);               //salida digital a led rojo
  pinMode(buzzer, OUTPUT);                //salida digital a buzzer
  pinMode(transistor1, OUTPUT);           //salida digital a transistor 1 del rele 1 y led azul
  pinMode(transistor2, OUTPUT);           //salida digital a transistor 2 del rele 2 y led rojo

  digitalWrite(transistor1, LOW);         //apagar transistor 1
  digitalWrite(transistor2, LOW);         //apagar transistor 2
  delay(500);                             //pausa antes del encendido
  digitalWrite(backlight, HIGH);          //encender backlight
  delay(500);                             //pausa antes de primera pantalla
  digitalWrite(ledVerde, HIGH);           //encender led verde
  lcd.begin(20, 4);                       //inicio de uso de LCD de 20 columnas y 4 filas
  lcd.setCursor(3, 1);                    //posicionar cursor en columna 3 y fila 1
  lcd.print("BIENVENIDO/A A");            //escribir texto en LCD
  lcd.setCursor(1, 2);                    //posicionar cursor en columna 1 y fila 2
  lcd.print("TECMATEMP LCDMR 35");        //escribir texto en LCD
  digitalWrite(buzzer, HIGH);             //encender buzzer
  delay(1000);                            //pausa de 1 seg encendido
  digitalWrite(buzzer, LOW);              //apagar buzzer
  delay(4000);                            //esperar 9 seg en esa pantalla
  lcd.clear();                            //limpiar pantalla
  delay(100);                             //pausa antes de siguiente pantalla
  lcd.setCursor(0, 0);                    //posicionar cursor en columna 0 y fila 0
  lcd.print("En funcionamiento...");      //escribir texto en LCD
  lcd.setCursor(0, 1);                    //posicionar cursor en columna 0 y fila 1
  lcd.print("Temp.Maxima       'C");      //escribir texto en LCD
  lcd.setCursor(16, 1);                   //posicionar cursor en columna 16 y fila 1
  lcd.print("25");                        //mostrar valor maximo en LCD
  lcd.setCursor(0, 3);                    //posicionar texto en columna 0 y fila 3
  lcd.print("Temp.Minima       'C");      //escribir texto en LCD
  lcd.setCursor(16, 3);                   //posicionar texto en columna 16 y fila 3
  lcd.print("10");                        //mostrar valor minimo en LCD
}

void temp_max()
{
  digitalWrite(ledVerde, LOW);           //apagar led verde
  lcd.clear();                           //limpiar pantalla del LCD
  delay(100);                            //pausa para pasar a otra pantalla
  lcd.setCursor(0, 0);                   //posicionar texto en columna 0 y fila 0
  lcd.print("Ingrese Temp. Maxima");     //mostrar texto en LCD
  lcd.setCursor(3, 1);                   //posicionar texto en columna 5 y fila 1
  lcd.print("(-50' a 150'C)");               //mostrar texto en LCD
  lcd.setCursor(6, 3);                   //posicionar texto en columna 8 y fila 3
  lcd.print("   ,  'C");                     //mostrar texto en LCD
}

void temp_min()
{
  digitalWrite(ledVerde, LOW);         //apagar led verde
  lcd.clear();                         //limpiar la pantalla
  delay(100);                          //pausa para pasar a otra pantalla
  lcd.setCursor(0, 0);                 //posicionar cursor del LCD en columna 0 y fila 0
  lcd.print("Ingrese Temp. Minima");   //mostrar texto en LCD
  lcd.setCursor(3, 1);                 //posicionar cursor del LCD en columna 5 y fila 1
  lcd.print("(-50' a 150'C)");             //mostrar texto en LCD
  lcd.setCursor(6, 3);                 //posicionar cursor del LCD en columna 8 y fila 3
  lcd.print("   ,  'C");                   //mostrar texto en LCD
}

void loop() {

  float temperatura = centigrados();      //igualar variable temperatura a variable centigrados anterior
  lcd.setCursor(0, 2);                    //posicionar texto en columna 0 y fila 2
  lcd.print("Temp.Actual       'C");      //escribir texto en LCD
  lcd.setCursor(13, 2);                   //posicionar texto en columna 13 y fila 2
  lcd.print(temperatura);                 //mostrar resultado de temperatura mas arriba
  delay(200);                             //pausa entre lecturas de temperaturas

  char teclas = keypad.getKey();          //guarda en la variable "teclas" el valor pulsado del teclado

  if (teclas != NO_KEY) {                 //Si se ha pulsado una tecla...
    numero = teclas - 48;                 //conversión de caracteres ASCII a valores numericos
    digitalWrite(buzzer, HIGH);           //encender buzzer con cada tecla pulsada
    delay(50);                            //pausa con buzzer encendido
    digitalWrite(buzzer, LOW);            //apagar buzzer

    //PROCESO AL PULSAR BOTON A (INSERTAR VALOR MAX) (TECLA F6)
    if (numero == 17) {                      //Si se pulsa la tecla A (valor ascii A es en valor numerico 17) entonces...
      temp_max();
    }
    else {//PROCESO AL PULSAR BOTON B (INSERTAR VALOR MIN (TECLA F5)
      if (numero == 18) {                    //Si se pulsa la tecla B entonces...
        temp_min();
      }
    }
  }
}

Bueno.
Si te das cuenta, lo que estás intentando es que tu código haga x, y o z, y no x+y o x+z. Entonces, puedes definir una variable mediante la cual indiques al loop en qué pantalla/estado estás actualmente, y con un switch case hagas lo que corresponda dependiendo del estado actual.
Así a grandes rasgos:

enum {principal, menuMax, menuMin} estado;

loop() {
switch estado {
case principal:
funcionPrincipal();
break;
case menuMax:
temp_max();
break;
case menuMin:
temp_min();
break;
}
}

Muchas gracias por responder, y creo que me voy encaminando, pero no entendi el primer reglon de tu codigo. No puedo relacionar mi codigo con ese primer reglon, si me lo explicas de nuevo porfa, gracias.

Enum es un tipo de variable entera, a la que se le dan alias a sus distintos valores. Entonces, a la hora de cotejar un valor enum y tener que "pensar" o definir qué valor habíamos definido para cada uno de los posibles valores, estos alias se asignan dentro del propio enum. De esta forma, podemos decir, por ejemplo
if (estado==principal && tecla=='a') estado=menumin;
en lugar de
if (estado==0 && tecla=='a') estado=2;

Queda más intuitivo de la primera forma ¿no?