Barra grafica contagiri su display TFT 7

Ci siamo quasi.
Però quella suddivisione in blocchi ti fa l'effetto che descrivi quando fra giri e giripreced salti da un blocco all'altro in salita o discesa.
Meglio se fai un unico ciclo for a salire o a scendere in base al confronto giri - giripreced (si potrebbe anche farne uno solo che contempla salita o discesa ma meglio se evitiamo).

Ti suggerisco un approccio gradualmente complicato.

Crea una funzione che ti disegna il rettangolino i-esimo, una

void tracciarettangolo (byte n)

per adesso falli tutti dello stesso colore, poi lo sistemeremo dopo.

Fai un unico for da giriprec+1 a giri

for (int i = giriprec+1; i <= giri; i++)
   {
      tracciarettangolo(i);
   }

fai per adesso (poi la elimineremo e la includeremo nell'altra) un'altra funzione

void cancellarettangolo(byte n)

che cancella il rettangolo disegnandolo nero e mettilo nell'altro for, quello che richiami quando i giri diminuiscono

for (int i = giriprec; i > giri; i--)
   {
      cancellarettangolo(i);
   }

Se riesci a creare queste due funzioni che poi a parte il colore sono uguali hai praticamente fatto tutto.
Mettere il colore che cambia sarà immediato.