The software init sequence ist not according to the manufacturers suggestions. The four first control writes (03,03,03,02) have to send
as single nibbles, not using LCD_Control(). Also the delay may be unsufficient. Read the datasheet thoroughly!
But the individual delay requirements are different, e.g. 4.1 ms after the first nibble. LCD_Control would be slowed down seriously if you do it like this.
only if your chip is running much faster than 12Mhz
But the individual delay requirements are different, e.g. 4.1 ms after the first nibble. LCD_Control would be slowed down seriously if you do it like this.
strategically, you identified exactly what went wrong with this code: the original poster's thorough lack of understanding of the device and its datasheet.
tactically, what you mentioned has zero impact on getting the code to work. There are a few glaring issues here that if mitigated can get the code to work quickly. and you identified none of them.
Added after 35 minutes:
well, I took the code, made three minor changes - none of them mentioned by FvM - and it worked!