Why is String Conversion Necessary to LCD
In C language, string literals like "HELLO" are of type const char*, i.e. it's a pointer to a constant signed 1-byte type. The cast changes it to a pointer to non-constant unsigned 1-byte type. They are 100% identical on the hardware level and some older C language compilers didn't care much about it as well, especially the const part, but modern C language requires this explicit cast if the function is defined with parameter of type uint8_t*. The compiled code contains effectively no code to do the cast, it is a "zero-price operation", it is just something syntactically needed in C langauge.