You are incrementing draw_state by 1, but in your draw() routine, you shift it 3 bits. This means that you call the same function 8 times in a row (0..7 -> case 0), then the next function 8 times in a row (8..15 -> case 1) etc. but each time through loop(), you are incrementing your variables