Two 4051's to drive 8x8 LED matrix - interference

This comes about because when you write the three bits to change the data line selected you do this one at a time. So suppose you go from 011 to 100 you go through the intermediate stages of 010, 000 and 100. This addresses very briefly the wrong data lines and so can light up the wrong LEDs. Without a delay this intermediate state is a significant fraction of the time the targeted LED is on. As the delay gets longer this fraction gets smaller.

Ways round this:-

  1. Use the data enable line to turn the data selector on and off while changing the address.
    or
  2. Use direct port addressing to change all the data select address lines at the same time. Although there will still be a slight amount of time with the wrong addresses due to propagation delays through the chip.