Das ist komisch,
es sollte schon laufen ...

Das einzigste, was noch auffällt,
ändere
unsigned char temp;
in LCD_WriteString in
char temp;

das wird aber kaum das Problem sein.

Gruß Sebastian