Temperatur anzeige auf dem LCD wird nicht aktualisiert?
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);
}