Après relecture de ton code tu devrais pouvoir t'en sortir avec les delay() et cela devrai même marcher puisque les plus gros que tu utilises sont delay(2000); soit deux secondes et au total de tout tes delay il y en a pour moins d'une minute donc ton heure ne devrait pas rester bloquée, et n'ayant pas de module RTC et d'ecran LCD difficile pour moi de tester ce qui ne vas pas.
Est ce que ton programme ne reste pas bloqué dans une condition pour une plage horaire, il faut que tu fasses des test en mettant des Serial.print("blabla"); pour voir ou cela coince.
Je ne connais pas la librairie LCD mais quand tu écris quelquechose sur l'ecran, si tu ne mets pas de delay cela s'efface tout de suite? il n'y a pas un buffer qui fait en sorte que quand tu envois du texte il reste affiché dans quel cas tu n'as pas besoin des delay();