Ah. Your bit clears are wrong...
You have:
PORTD |= (0<<PD7); //Enable, low
PORTB |= (0<<PB0); //Data, low
PORTB |= (0<<PB4); //Latch, low
Whereas you need
PORTD &= ~(1<<PD7); //Enable, low
And similar.
See https://www.avrfreaks.net/forum/tut-c-bit-manipulation-aka-programming-101?page=all