Tu función espera un puntero, no puedes pasarle un valor fijo o una variable.
Otra cosa son las matrices, yo suelo pasarlas como un puntero al primer elemento de la matriz, pero si te compila y funciona poniendo solo el nombre de la matriz, supongo que es equivalente.
Prueba algo así:
const unsigned char variable ="4";
MLCD_WriteString (&variable);
De esta manera estás pasando un puntero, que apunta a la variable estática "variable" almacenada en flash, que contiene el valor "4", prueba con comillas simples o dobles, ahora mismo no recuerdo si funciona con una u otra o ambas. Si le quitas el "const" será una variable en RAM.
PD: corrijo, es "const" y no "static" para que la variable esté almacenada en flash.
Yo no he utilizado el "const", porque cuando he necesitado guardar algo en flash, ha sido en una dirección concreta, y entonces he utlizado algo como esto:
unsigned int __attribute__ ((space(prog), address(0x9D005010))) Reservada_1 = 0xFFFFFFFF; // Direccion reservada para usos varios