I tried this and these connections...still midnight.
What you now have completed are the routines that you need to send Instructions and Data to the LCD controller. Next you have to fix up the initialization routine. As I mentioned in reply #8 your data sheet makes a reference to 'initialization by commands' but it does not seem to specify what those commands should be. The sequence of instructions that you have in the program that you attached to reply #13 may work, but you have to make sure that you do not send them to the LCD controller too quickly. This is where the time it takes the LCD controller to deal with an instruction has to be implemented and you get those times from the VFD Instruction table on pages 3 and 4.
When you get that fixed up I suggest that you first try to write a single character to the display and then put the processor in an endless loop. You want to make sure that a correctly written character is not overwritten by something else if your string writing routine is not working as you expect.
Next I would use a loop to send 80 different displayable characters to the display and again end by putting the processor in an endless loop. I usually start with the ASCII code for a '/' and increment it each time around. If you put a 200mS delay in the loop you can see what is going on. This is particularly interesting with LCDs, especially those with less than 80 characters.
In your 'gotoxy' routine you have confused the memory addresses in the LCD controller with the instruction that is used to set those addresses. The addresses are 7-bit values so 0x80, 0xC0, 0x84, and 0xD4 are not valid addresses and you will not find those addresses mentioned anywhere in most (there are exceptions) LCD data sheets. You really should identify where any magic numbers come from.
As far as your photographs are concerned the quality is good but the wires look like red spaghetti. It is impossible to follow any specific wire to see where it starts and where it ends.
Don