Alternatively, you could use 8 instead of 0
This is because the hd44780 chip has 8 custom character but uses the lower 16 character codes.
Because of this, 0-7 is the same as 8-15
i.e. 8 is the same as 0, 9 is the same as 1 etc...
From a larger perspective you could really simplify your code if you made your p{n} variables use the corresponding custom character code.
That way you wouldn't have to remap the values to use them.
But even if you do want to re-map them, since they are always 1 higher you could just do a simple -1 to get to the code point from your peace value.
--- bill