Zweiter Teil: die Funktionen
Zunächst die User-Zeichen deklarieren:

Code:
void Set_Characters(void){	
	definierelcdsymbol(Symbol0, 0);
	definierelcdsymbol(Symbol1, 1);
	definierelcdsymbol(Symbol2, 2);
	definierelcdsymbol(Symbol3, 3);
	definierelcdsymbol(Symbol4, 4);
	definierelcdsymbol(Symbol5, 5);
	definierelcdsymbol(Symbol6, 6);
	definierelcdsymbol(Symbol7, 7);
}
und als "printf-Ersatz" eine Funktion, die eine Char-Variable als 3-Stellige Zahl mit unterdrückten 0-en ausgibt:
Code:
void Ausgabe_3s2z(unsigned char Zahl, unsigned char Pos)
{	unsigned char Hunni, Zehner, Einer;
	Hunni  = Zahl / 100;      
	Einer  = Zahl % 100;
	Zehner = Einer / 10;
	Einer  = Einer % 10;
	cursorpos(Pos + 0);
	if (Hunni==0) charlcd(0x20);			// führende 0 unterdrücken
	else charlcd(Ziffer[Hunni] /16); 	// High-Nibble
	if (Zahl <= 9) charlcd(0x20);			// führende 0 unterdrücken
	else charlcd(Ziffer[Zehner]/16); 	// High-Nibble
	charlcd(Ziffer[Einer] /16); 			// High-Nibble

	cursorpos(Pos + 0x40);          		// Zweite Zeile
	if (Hunni==0) charlcd(0x20);			// führende 0 unterdrücken
	else charlcd(Ziffer[Hunni] &0X0F); 	// Low-Nibble

	if (Zahl <= 9) charlcd(0x20);			// führende 0 unterdrücken
	else charlcd(Ziffer[Zehner]&0X0F); 	// Low-Nibble
	charlcd(Ziffer[Einer] &0X0F); 		// Low-Nibble
}
und zum Schluß noch eine Funktion, die eine Int-Variable (bei mir Geschwindigkeit in 1/10 km/h) als 3.1-Stellige Zalh ausgibt. Der Dezimalpunkt ist leider nicht mehr definierbar, so dass ich auf ein Zeichen aus dem Erweiterten Zeichensatz des LCD zurückgegriffen habe...
Code:
void Ausgabe_3s1_2z(unsigned int Zahl, unsigned char Pos)
{	unsigned char Hunni, Zehner, Einer, Nachkomma;
	unsigned int Rest;
	Hunni  = Zahl / 1000;      
	Rest   = Zahl % 1000;
	Zehner = Rest / 100;
	Rest   = Zahl % 100;
	Einer  = Rest / 10;
	Nachkomma = Rest % 10;
	cursorpos(Pos + 0);
	if (Hunni==0) charlcd(0x20);		// führende 0 unterdrücken
	else charlcd(Ziffer[Hunni] /16); // High-Nibble
	if (Zahl <= 99) charlcd(0x20);		// führende 0 unterdrücken
	else charlcd(Ziffer[Zehner]/16); // High-Nibble
	charlcd(Ziffer[Einer] /16); 		// High-Nibble
	charlcd(0x20);
	charlcd(Ziffer[Nachkomma] /16); 	// High-Nibble

	cursorpos(Pos + 0x40);           // Zweite Zeile
	if (Hunni==0) charlcd(0x20);		// führende 0 unterdrücken
	else charlcd(Ziffer[Hunni] &0X0F); // Low-Nibble

	if (Zahl <= 99) charlcd(0x20);	// führende 0 unterdrücken
	else charlcd(Ziffer[Zehner]&0X0F); // Low-Nibble
	charlcd(Ziffer[Einer] &0X0F); // Low-Nibble
	// Komma Symbolisieren
	charlcd(0xa5);
	charlcd(Ziffer[Nachkomma] &0X0F); // Low-Nibble
}
unn tschuess
Bernhard