Code:
void fnLCDAusgabe(int iTemperature)
{
if (bBetriebsart==1) //Handbetrieb
{
switch(uiMenuCounter)
{
case 0: //wird nur zur Kurzzeitigen Anzeige auf Display benötigt
lcd_clear();
//-----LCD Zeile 1-----
lcd_putsf("HANDBETRIEB"); //... schreibe ""
delay_ms(1500);
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("durchs Menue mit"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
lcd_putsf("Taster 1"); //... schreibe ""
delay_ms(1500);
//-----LCD Zeile 1-----
lcd_clear();
lcd_putchar(225); // "ä" auf Display ausgeben
lcd_putsf("ndern mit "); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);//gehe an Position xy
lcd_putsf("Taster 2"); //... schreibe ""
delay_ms(1500);
uiMenuCounter++;
break;
case 1:
break;
case 2: // Stunden erhöhen
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Std erh"); //... schreibe ""
lcd_putchar(239); //"ö" auf Display ausgeben
lcd_putsf("hen"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
itoa(uiStunde,strTemp); // Integer Wert in AScii Zeichen umwandeln
if (uiStunde<10) // Wenn wert für Stunde kleiner 10(einstellig) ...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Strunde auf Display ausgeben
break;
case 3: // Stunden verringern
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Std verringern"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
itoa(uiStunde,strTemp); // Integer Wert in AScii Zeichen umwandeln
if (uiStunde<10) // Wenn wert für Stunde kleiner 10(einstellig) ...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Stunde auf Display ausgeben
break;
case 4: // Minuten erhöhen
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Min erh");//... schreibe ""
lcd_putchar(239); //"ö" auf display ausgeben
lcd_putsf("hen"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
itoa(uiMinute,strTemp); //Integer Wert in AScii Zeichen umwandeln
if (uiMinute<10) // Wenn wert für Minute kleiner 10(1-Stellig)...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Minute auf Display ausgeben
break;
case 5: // Minuten verringern
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Min verringern"); //... schreibe "zeit"
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
itoa(uiMinute,strTemp); //Integer Wert in AScii Zeichen umwandeln
if (uiMinute<10) // Wenn wert für Minute kleiner 10(1-Stellig)...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Minute auf Display ausgeben
break;
case 6: // Intervall für Themperaturmessung erhöhen
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Interv. erh"); //schreibe ""
lcd_putchar(239); //"ö" auf display schreiben
lcd_putsf("hen"); //... schreibe ""
//----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
itoa(uiIntervall,strTemp); //Integer Wert in AScii Zeichen umwandeln
if (uiIntervall<10) // Wenn wert für Minute kleiner 10(1-Stellig)...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Minute auf Display ausgeben
break;
case 7: // Intervall für Themperaturmessung verringern
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Interv. verring"); //... schreibe ""
//----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
itoa(uiIntervall,strTemp); //Integer Wert in AScii Zeichen umwandeln
if (uiIntervall<10) // Wenn wert für Minute kleiner 10(1-Stellig)...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Minute auf Display ausgeben
break;
case 8: // Ringspeicher Start
//-----LCD Zeile 1-----
if(bStartStop==0)
{
lcd_clear();
lcd_putsf("Ringsp Start"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
lcd_putsf("<Ringsp steht>"); //schreibe ""
break;
}
else
{
lcd_clear();
lcd_putsf("Ringsp Start"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
lcd_putsf("<Ringsp l"); //schreibe ""
lcd_putchar(225); // "ä" auf Display ausgeben
lcd_putsf("uft>"); //schreibe ""
}
break;
case 9: //Ringspeicher Stop
lcd_clear();
if(bStartStop==0)
{
//-----LCD Zeile 1-----
lcd_putsf("Ringsp Stop"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1); //gehe an Position xy
lcd_putsf("<Ringsp steht>"); //schreibe ""
break;
}
else
{
//-----LCD Zeile 1-----
lcd_putsf("Ringsp Stop"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("<Ringsp l"); //schreibe ""
lcd_putchar(225); //"ä" auf Display ausgeben
lcd_putsf("uft>"); //schreibe ""
}
break;
case 10: //Ringspeicher löschen
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Ringsp l"); //schreibe ""
lcd_putchar(239); // "ö" auf Display ausgeben
lcd_putsf("schen"); //schreibe ""
break;
case 11: //Thermostat unteren Grenzwert erhöhen
if (iHystereseMin >= iHystereseMax)
{
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("HystereseMin >"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("HystereseMax"); //schreibe ""
delay_ms(1500);
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Min wurde auf "); //schreibe ""
//-----LCD Zeile 1-----
lcd_gotoxy(0,1);
lcd_putsf("Max - 2 gesetzt"); //schreibe ""
break;
}
else
{
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Hysterese Min ++"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
itoa(iHystereseMin,strTemp);
lcd_puts(strTemp);
}
break;
case 12: //Thermostat unteren Grenzwert verringern
if (iHystereseMin >= iHystereseMax)
{
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("HystereseMin >"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("HystereseMax"); //schreibe ""
delay_ms(1500);
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Min wurde auf "); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("Max - 2 gesetzt"); //schreibe ""
break;
}
else
{
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Hysterese Min --"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
itoa(iHystereseMin,strTemp);
lcd_puts(strTemp);
}
break;
case 13: //Thermostat oberen Grenzwert erhöhen
if (iHystereseMax <= iHystereseMin)
{
lcd_clear();
//-----LCD Zeile 1-----
lcd_putsf("HystereseMax <"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("HystereseMin"); //schreibe ""
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Max wurde auf "); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("Min + 2 gesetzt"); //schreibe ""
break;
}
else
{
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Hysterese Max ++"); //schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
itoa(iHystereseMax,strTemp);
lcd_puts(strTemp);
}
break;
case 14: //Thermostat oberen Grenzwert verringern
if (iHystereseMax <= iHystereseMin)
{
lcd_clear();
//-----LCD Zeile 1-----
lcd_putsf("HystereseMax <"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("HystereseMin"); //... schreibe ""
//-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Max wurde auf "); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("Min + 2 gesetzt"); //... schreibe ""
break;
}
//-----LCD Zeile 1-----
else
{
lcd_clear();
//lcd_gotoxy(0,0);
lcd_putsf("Hysterese Max --"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
itoa(iHystereseMax,strTemp);
lcd_puts(strTemp);
}
break;
case 15: if(bDS1621Contakt==0)
{
lcd_clear();
//-----LCD Zeile 1-----
lcd_putsf("konfig 1621 Outp"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("<konfig = "); //... schreibe ""
itoa(bDS1621Contakt,strTemp);
lcd_puts(strTemp);
lcd_putsf(">"); //... schreibe ""
break;
}
else
{
lcd_clear();
//-----LCD Zeile 1-----
lcd_putsf("konfig 1621 Outp"); //... schreibe ""
//-----LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf(" <konfig = "); //... schreibe ""
itoa(bDS1621Contakt,strTemp);
lcd_puts(strTemp);
lcd_putsf(">"); //... schreibe ""
}
break;
default:
}
}
else //Automatikbetrieb
{
switch(uiAutoCounter)
{
case 0: //-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("AUTOMATIK"); //... schreibe ""
delay_ms(1500);
uiAutoCounter++;
break;
case 1: //-----LCD Zeile 1-----
lcd_clear();
lcd_putsf("Zeit "); //... schreibe "zeit"
itoa(uiStunde,strTemp); // Integer Wert in AScii Zeichen umwandeln
if (uiStunde<10) // Wenn wert für Stunde kleiner 10(einstellig) ...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Strunde auf Display ausgeben
lcd_putsf(":"); //Doppelpunkt auf LCDausgeben
itoa(uiMinute,strTemp); //Integer Wert in AScii Zeichen umwandeln
if (uiMinute<10) // Wenn wert für Minute kleiner 10(1-Stellig)...
{
lcd_putsf("0"); //... schreibe eine Null davor
}
lcd_puts(strTemp); //String Minute auf Display ausgeben
lcd_putsf(":"); //Doppelpunkt auf LCDausgeben
itoa(uiSekunde,strTemp); //Integer Wert in AScii Zeichen umwandeln
if (uiSekunde<10) // Wenn wert für Sekunde kleiner 10 (1-Stellig) ...
{
lcd_putsf("0"); // schreibe eine Null davor
}
lcd_puts(strTemp); //String Sekunde auf Display ausgeben
//------LCD Zeile 2-----
lcd_gotoxy(0,1);
lcd_putsf("Temp "); //... schreibe ""
itoa(iTemperature/10, strTemp); // Vorkommastellen
lcd_puts(strTemp);
lcd_putchar('.');
itoa(iTemperature%10, strTemp); // Nachkommastellen
lcd_puts(strTemp);
lcd_putchar(223); // °Zeichen
lcd_putchar('C');
} //switch ende
delay_ms(200); //ohne Delay flackert Display...
} //else ende
}
und eine Funktion für die Tastenabfrage
Lesezeichen