Hallo ich möchte mir eine Steuerung für ein Ätzgerät basteln.

Ich möchte die Laufzeiten der Heizung und die Laufzeiten der Aquariumpumpe einstellen können, wann sie Beginen und wann sie Stoppen, dazu Wil ich die Temperatur einstellen und einen schwel wert für die Heizung einstellen können, weil die ja eine Wärme Kapazität hat und eine Kapazität damit sie nicht Sekunden weise einschaltet und wider aus schaltet zur Regelung, ich möchte die Einstellungen später im EEPROM speichern können.

Nun möchte ich die Temperatur dauernd anzeigen, nur funktioniert das nicht die Anzeige des LCD's wird nur nach einem Tastendruck aktualisiert

Code:
//
//    ATMega644
//    lcd-routines.c, lcd-routines.h, i2c.h
//
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdlib.h>
#include <stdbool.h>
#include "lcd-routines.h"
#include "i2c.h"

int main(void) //Hauptschleife
{
    DDRD = 0x00; // Pins sind Eingang
    PORTD = 0xff; // mit aktiviertem PullUp, Taster schalten nach GND

    // Initialisierung des LCD
    // Nach der Initialisierung müssen auf dem LCD vorhandene schwarze Balken
    // verschwunden sein
    lcd_init();

    lcd_string("  LCD Start !!! ");
    _delay_ms(500); //Gibt einem die moeglichckeit zu lesen was auf dem LCD steht
    
    lcd_clear();
    lcd_home();
    lcd_string(" Taste druecken"); 

        
TWI_init(FAKTOR, TEILER);

char temperatur; //Temperaturvariable
char einer; //Temperaturvariable einer
char zehner; //Temperaturvariable zehner
char Buffer[100];  //itoa Array 3 stelig
int i = 25; //Laufzeitvariable
                        
    while(1) //Programmschleife
    {

        
        temperatur = TWI_empf(ADRESSE_R); //Temperaturvariablen
        einer = ( temperatur % 10 ) + 48;
        zehner = ( temperatur / 10 ) + 48;

            if(!(PIND & (1<<PD0))) // Taste 0 an PORTD PD0
            {
            _delay_ms(10);

            i++;
            lcd_setcursor( 0, 1);
            lcd_string("Aetzlaufzeit ");
            itoa( i, Buffer, 10 );    //Laufzeitvariable in Integer wandeln
            lcd_string( Buffer );
         
            while(!(PIND & (1<<PD0)));
            _delay_ms(10);
            }

            if(!(PIND & (1<<PD1))) // Taste 1 an PORTD PD1
            {
            _delay_ms(10);

            i--;
            lcd_setcursor( 0, 1);
            lcd_string("Aetzlaufzeit ");
            itoa( i, Buffer, 10 );    //Laufzeitvariable in Integer wandeln
            lcd_string( Buffer );

            while(!(PIND & (1<<PD1)));
            _delay_ms(10);
            }

            if (dat2 >= 0b10000000)
            {
            lcd_setcursor( 0, 2);
            lcd_string("Temperatur ");    
            lcd_data(zehner);
            lcd_data(einer);
            lcd_string(",5C ");
            }

            else
            {
            lcd_setcursor( 0, 2);
            lcd_string("Temperatur ");    
            lcd_data(zehner);
            lcd_data(einer);
            lcd_string(",0C ");
            }

    }

    return(0);
}