One thing that is important to know about Lcds displays is that they have an internal memory. The Arduino simply activates the read or write mode and sends a memory address with the character you want to print through the bus. The following figure shows the available characters:
If you want to print a different character, there is another memory where you send an array of bytes containing the active and inactive pixels that will form your new character. As in the figure below:
As for your problem, I think the following lines of code can solve:
//char variavel = 'a';
//lcd.print(char(variavel); //Isto deveria funcionar
//lcd.print((char)223); //Isto também
char caractere = 'b';
lcd.print(caractere, BIN);
//ou...
int charcode = 65;
lcd.print(charcode);
As the LCD receives a binary data, you must inform it through the "BIN". So the Arduino will send the binary value corresponding to the character through the bus.
It is also interesting to inform which error occurs!
– Marciano.Andrade