Mobile for my baby son

Hello people,
I really hope someone can help me. I'm working on a project to spin a mobile for my baby son.
I just made a mobile which is accelerating, spinning 10 times, decelarating and reversing the same.
I can control it with a button and switch between 6 different speeds.
Now I want to visualize the level of speed with a common anode seven segment display.
So far I'm using an arduino mega with a motor shield.
Everything works, but when I add the subroutine sevenseg() the seven segment display shows only a 1 and doesn't switch together with pressing the button. Furthermore, the speed of the stepper motor slows down with every button press and doesn't jumb back to the beginning with highest speed.
I hope this information is sufficient, otherwise simply ask what else you need to know.
Here is the code of my mobileprogramm:

#include <Stepper.h>

const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
const int dirA = 12;
const int dirB = 13;
const int buttonPin = A5;

const int stepsPerRevolution = 200;  // change this to fit the number of steps per revolution
                                     // for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, dirA, dirB);            

int stepCount = 0;         // number of steps the motor has taken

int pos = 0;    // variable to store the servo position
int del = 0;
int bspeed = 200;
int buttonState = 0;         // variable for reading the pushbutton status
int buttonpress = 0;


void setup() {
  // initialize the serial port:
  pinMode(pwmA, OUTPUT);
  digitalWrite(pwmA, HIGH);
  pinMode(pwmB, OUTPUT);
  digitalWrite(pwmB, HIGH);

  // Turn off the brakes
  pinMode(brakeA, OUTPUT);
  digitalWrite(brakeA, LOW);
  pinMode(brakeB, OUTPUT);
  digitalWrite(brakeB, LOW);

  // Log some shit
  Serial.begin(9600);
  pinMode(buttonPin, INPUT);
  
  pinMode(49, OUTPUT); 
  pinMode(47, OUTPUT);
  pinMode(45, OUTPUT);
  pinMode(43, OUTPUT);
  pinMode(41, OUTPUT);
  pinMode(39, OUTPUT);
  pinMode(37, OUTPUT);
  pinMode(35, OUTPUT);
//  digitalWrite(9, 0);  // start with the "dot" off  
}

void loop() 
{
  movestep();
}

void movestep()
{
  for(pos = 0; pos < 2000; pos += 1)  // goes from 0 degrees to 180 degrees 
  {
    // step one step:
    myStepper.step(1);
    delaystepvw();
    todo();
  }
  for(pos = 2000; pos >= 1; pos -= 1)  // goes from 0 degrees to 180 degrees 
  {
  // step one step:
    myStepper.step(-1);
    delaystepbw();
    todo();
  }
}

void todo()
{
  stepCount++;
  buttonstep();
  delay(del+bspeed);
  printstep();
}

void printstep()
{
  Serial.print("Position:" );
  Serial.println(pos);
  Serial.print(buttonpress);
  Serial.println(bspeed);
}  

void delaystepvw()
{
  if (pos >= 1950)
  {
    del = del + 4;
  }
  else if (pos < 50)
  {
    del = del - 4;
  }
}

void delaystepbw()
{
  if (pos > 1950)
  {
    del = del - 4;
  }
  else if (pos <= 50)
  {
    del = del + 4;
  }
}

void buttonstep()
{
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {    
  // turn LED on:    
    buttonpress++;
    bspeed = bspeed + 50;
    delay(200);
  }
  else if (buttonpress >6)
  {
    buttonpress = 0;
    bspeed = 200;
  }
}

void sevenseg()
{
  if (buttonpress = 0)
  {
    zero();
  }
  else if (buttonpress = 1)
  {
    one();
  }
  else if (buttonpress = 2)
  {
    two();
  }
  else if (buttonpress = 3)
  {
    three();
  }
  else if (buttonpress = 4)
  {
    four();
  }
  else if (buttonpress = 5)
  {
    five();
  }
  else if (buttonpress = 6)
  {
    six();
  }
}

void nine()
{
 // write '9'
  digitalWrite(49, 1);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 0);
  digitalWrite(41, 0);
  digitalWrite(39, 0);
  digitalWrite(37, 0);
  digitalWrite(35, 0);
}

void eigth()
{
  // write '8'
  digitalWrite(49, 0);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 0);
  digitalWrite(41, 0);
  digitalWrite(39, 0);
  digitalWrite(37, 0);
  digitalWrite(35, 0);
}

void seven()
{
  // write '7'
  digitalWrite(49, 1);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 1);
  digitalWrite(41, 1);
  digitalWrite(39, 1);
  digitalWrite(37, 0);
  digitalWrite(35, 0);
}

void six()
{
  // write '6'
  digitalWrite(49, 0);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 0);
  digitalWrite(41, 0);
  digitalWrite(39, 0);
  digitalWrite(37, 0);
  digitalWrite(35, 1);
}

void five()
{
  // write '5'
  digitalWrite(49, 1);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 0);
  digitalWrite(41, 0);
  digitalWrite(39, 0);
  digitalWrite(37, 0);
  digitalWrite(35, 1);
}

void four()
{
  // write '4'
  digitalWrite(49, 1);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 1);
  digitalWrite(41, 0);
  digitalWrite(39, 0);
  digitalWrite(37, 1);
  digitalWrite(35, 0);
}

void three()
{
  // write '3'
  digitalWrite(49, 1);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 0);
  digitalWrite(41, 0);
  digitalWrite(39, 1);
  digitalWrite(37, 0);
  digitalWrite(35, 0);
}

void two()
{
  // write '2'
  digitalWrite(49, 0);
  digitalWrite(47, 1);
  digitalWrite(45, 0);
  digitalWrite(43, 0);
  digitalWrite(41, 0);
  digitalWrite(39, 1);
  digitalWrite(37, 0);
  digitalWrite(35, 0);
} 
 
void one()
{  
  // write '1'
  digitalWrite(49, 1);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 1);
  digitalWrite(41, 1);
  digitalWrite(39, 1);
  digitalWrite(37, 1);
  digitalWrite(35, 0);
}  
  
void zero()
{
  // write '0'
  digitalWrite(49, 0);
  digitalWrite(47, 0);
  digitalWrite(45, 0);
  digitalWrite(43, 0);
  digitalWrite(41, 1);
  digitalWrite(39, 0);
  digitalWrite(37, 0);
  digitalWrite(35, 0);
}

Classic error made by most everyone who has ever tried to code in C:

This

if (buttonpress = 0)

Should be this:

if (buttonpress == 0)

Same error is copied and pasted throughout the function.

These "=" would work better as "==":

  if (buttonpress = 0)
  {
    zero();
  }
  else if (buttonpress = 1)
...

-br