Error in Embedded C code for Motor Shield

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