user71411: (edited)
So sorry my bad. To make it clear:
From the picture that I posted, I need to press the PBA (as Button1) so that both motors can run in forward (CW-clockwise)  and backward (CCW-counterclockwise) and  a stop.
While on the other hand, PBB (as button2) is for another condition  both motors can run in left, right, and stop.
Problems:

When I run my code, it appears glitching from my LCD display.

I able to achieve for PBB side but for PBA side, both motors don't move at all.

I had use potentiometer to adjust my speed. The potentiometer are doing fine.

I use debounce for both my buttons and I am not sure whether the debounce effect my void setmode(int Mode, int MotorMode1){}


////////////////////////////////////////////////////////////////////////////////[![enter image description here][1]][1]



boolean lastButton=LOW;
boolean currentButton = LOW;

boolean last1Button = LOW;
boolean current1Button = LOW;

boolean debounce(boolean last){
    boolean current = digitalRead(PBA);
    if (last != current) {
      delay(5);
      current = digitalRead(PBA);
      return current;
    }
  }

  boolean debounce1(boolean last1) {
    boolean current1 = digitalRead(PBB);
    if (last1 != current1) {
      delay(5);
      current1 = digitalRead(PBB);
      return current1;
    }
  }

  int Mode = 0;
  int motorMode1 = 0;

  
   


  void loop() {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("SPEED:");
    lcd.setCursor(0, 1);

    // potentiometer LCD
    float inputValue = analogRead (pot);
    inputValue = map(inputValue, 0, 1023, 0, 100);
    lcd.setCursor(7, 0);
    lcd.print (inputValue);
    lcd.setCursor(12, 0);
    lcd.print ("%");

    //read values from potentiometer
    MotorSpeed = analogRead(SpeedControl);
    MotorSpeed = map(MotorSpeed, 0 , 1023 , 0 , 255);
    // adjust to prevent at low speed
    if (MotorSpeed < 8)MotorSpeed = 0;
    //set the motor speed
    //analogWrite (enA, MotorSpeed);
    //analogWrite (enB, MotorSpeed);
    // MotorLCD
    lcd.setCursor(0, 1);
    lcd.print("MOVE:");
 
    currentButton = debounce(lastButton);
    if (currentButton == HIGH && lastButton == LOW) {
      Mode++;
    }
    lastButton = currentButton;
    if (Mode == 3){
      Mode = 0;
    }


    current1Button = debounce1(last1Button);
    if (last1Button == HIGH && current1Button == LOW) {
      motorMode1++;
  
    }
    last1Button = current1Button;
    if (motorMode1 == 3){
      motorMode1 = 0;
    }
  
  setMode( Mode, motorMode1);  
  
 }
  


  void setMode(int Mode, int motorMode1) {
    analogWrite (enA, MotorSpeed);
    analogWrite (enB, MotorSpeed);

    
    if (Mode == 1 ) {
      lcd.setCursor(5, 8);
      lcd.print("Forward");

      //MOTOR_A CLOCKWISE MAX SPEED
      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);

      //MOTOR_B CLOCKWISE MAX SPEED
      digitalWrite(in3, HIGH);
      digitalWrite(in4, LOW);
    }
    if (Mode == 2) {
      lcd.setCursor(5, 8);
      lcd.print("Reverse");

      //MOTOR_A COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in1, LOW);
      digitalWrite(in2, HIGH);

      //MOTOR_B COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in3, LOW);
      digitalWrite(in4, HIGH);

    }
     

   if (motorMode1 == 1) {

      lcd.setCursor(5, 8);
      lcd.print("Right");
      //MOTOR_A CLOCKWISE MAX SPEED
      digitalWrite(in1, LOW);
      digitalWrite(in2, HIGH);
      //MOTOR_B COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in3, HIGH);
      digitalWrite(in4, LOW);

    }
    if (motorMode1 == 2) {
      lcd.setCursor(5, 8);
      lcd.print("Left");
      //MOTOR_A COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);
      //MOTOR_B CLOCKWISE MAX SPEED
      digitalWrite(in3, LOW);
      digitalWrite(in4, HIGH);

    }
     if (Mode == 0 || motorMode1 == 0) {
      lcd.setCursor(5, 8);
      lcd.print("Stop");
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);
      digitalWrite(in3, LOW);
      digitalWrite(in4, LOW);
    }           
  }


user10285: I hope I understood you correctly. The best way would be to tell you how you can use states to get the problem solved. But that would cost me too much time.
I decided to edit your program. I have no hardware to try it. So it is just an example to show you the idea. Perhaps it works as it is.
Please check the comments. If you are really interested in understanding to problem and the solution and things are unclear,  you (or others) can ask with comments below. And of cause, if you find an error, I would be happy to know about it and correct it. ;-)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>


// These are the different movement states
#define STATE_STOP 0
#define STATE_LEFT 1
#define STATE_RIGHT 2
#define STATE_FORWARD 3
#define STATE_BACKWARD 4

// always use expressive names

// The pin assignments
//////////////////////////////////////////////

// Analog
int pinPotiSpeed = A0;

// Motor A
int pinEnA = 9;
int pinInA1 = 8;
int pinInA2 = 7;

// Motor B
int pinEnB = 3;
int pinInB1 = 5;
int pinInB2 = 4;

// Buttons
const int pinBtnDir = 10;
const int pinBtnTurn = 11 ;

int stateMotors = STATE_STOP;
boolean flagBtnDirPressed = LOW;
boolean flagBtnTurnPressed = LOW;

int stateMotorsSpeed = 0;
int speedPercent = map( stateMotorsSpeed, 0, 255, 0, 100 );

LiquidCrystal_I2C lcd(0x27, 16, 2);

// I have not the time to think a lot about this debouncing, but
// I have a bad feeling. If the Arduino does not react on button presses 
// or the mode change to quick please let me know. I'll have a look on it, if
// necessary. ;-)
boolean readButtonAndDebounce(int btnPin, boolean lastState)
{
    boolean actualState = digitalRead(btnPin);
    if (lastState != actualState) 
    {
      delay(15);
      actualState = digitalRead(btnPin);
      return actualState;
    }

    // this return was missing in the original program
    return actualState;
}

void setup() 
{
    Serial.begin(9600);

    pinMode(pinEnA, OUTPUT);
    pinMode(pinInA1, OUTPUT);
    pinMode(pinInA2, OUTPUT);

    pinMode(pinEnB, OUTPUT);
    pinMode(pinInB1, OUTPUT);
    pinMode(pinInB2, OUTPUT);

    pinMode(pinBtnDir, INPUT);
    pinMode(pinBtnTurn, INPUT);

    digitalWrite(pinInA1,LOW);
    digitalWrite(pinInA2,LOW);
    
    digitalWrite(pinInB1,LOW);
    digitalWrite(pinInB2,LOW);

    lcd.init();
    lcd.backlight();

    

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("SPEED:");
    lcd.setCursor(0, 1);

    lcd.setCursor(7, 0);
    // convert 0-255 to 0%-100%
    lcd.print ("0 %");

    lcd.setCursor(0, 1);
    lcd.print("MOVE: Stop");
}

void loop() 
{
    stateMotorsSpeed = map( analogRead( pinPotiSpeed ), 0, 1023, 0, 255 );
    if ( stateMotorsSpeed < 8 ) stateMotorsSpeed = 0;
    speedPercent = map( stateMotorsSpeed, 0, 255, 0, 100 );

    boolean flagBtnDirPressedOld = flagBtnDirPressed;
    flagBtnDirPressed = readButtonAndDebounce( pinBtnDir, flagBtnDirPressed );

    boolean flagBtnTurnPressedOld = flagBtnTurnPressed;
    flagBtnTurnPressed = readButtonAndDebounce( pinBtnTurn, flagBtnTurnPressed );


    // this is a bit tricky, because I don't know if i understood the problem correctly.
    // My problem is, what happens if both button are pressed, I decided to give 
    // the Direction button the precedence
    if ( flagBtnDirPressed && ! flagBtnDirPressedOld )
    {
      switch( stateMotors )
      {
        case STATE_STOP:
          stateMotors = STATE_FORWARD;
          break;
        
        case STATE_FORWARD:
          stateMotors = STATE_BACKWARD;
          break;
      
        case STATE_BACKWARD:
          stateMotors = STATE_STOP;
          break;

        default:
          // this happens if a state from the other button is active
          // The table does not include a rule what to do in this case.
          // Perhaps you could count button click modulo 3 for each button 
          // and then you can switch to the correct state
          stateMotors = STATE_STOP;
      }

    }
    else if ( flagBtnTurnPressed && ! flagBtnTurnPressedOld )
    {
      // this is only entered if press state of the direction button has not changed
      switch( stateMotors )
      {
        case STATE_STOP:
          stateMotors = STATE_RIGHT;
          break;
        
        case STATE_RIGHT:
          stateMotors = STATE_LEFT;
          break;

        case STATE_LEFT:
          stateMotors = STATE_STOP;
          break;

        default:
          // this happens if a state from the other button is active
          stateMotors = STATE_STOP;
      }
    }

    controlMotorAndUpdateLcd();
}

void setMotorSignals( boolean sigA1 , boolean sigA2, boolean sigB1, boolean sigB2 )
{
      //MOTOR_A
      digitalWrite(pinInA1, sigA1);
      digitalWrite(pinInA2, sigA2);

      //MOTOR_B
      digitalWrite(pinInB1, sigB1);
      digitalWrite(pinInB2, sigB2);
}
  
void controlMotorAndUpdateLcd() 
{
    lcd.clear();
    lcd.setCursor( 0, 0 );
    lcd.print( "SPEED:" );
    lcd.setCursor( 0, 1 );

    // potentiometer LCD
    lcd.setCursor( 7, 0 );
    lcd.print ( speedPercent );
    lcd.setCursor( 12, 0 );
    lcd.print ("%");

    analogWrite ( pinEnA, stateMotorsSpeed );
    analogWrite ( pinEnB, stateMotorsSpeed );

    // MotorLCD
    lcd.setCursor(0, 1);
    lcd.print("MOVE:");

    lcd.setCursor(5, 8);
    switch( stateMotors )
    {
      case STATE_STOP:
        lcd.print("Stop");
        setMotorSignals( LOW, LOW, LOW, LOW);
        break;
        
      case STATE_FORWARD:
        lcd.print("Forward");
        setMotorSignals( HIGH, LOW, HIGH, LOW);
        break;
      
      case STATE_BACKWARD:
        lcd.print("Reverse");
        setMotorSignals( LOW, HIGH, LOW, HIGH);
        break;

       case STATE_LEFT:
        lcd.print("Left");
        setMotorSignals( HIGH, LOW, LOW, HIGH);
        break;
      
      case STATE_RIGHT:
        lcd.print("Right");
        setMotorSignals( LOW, HIGH, HIGH, LOW);
        break;
    }
}


71411: <p>(edited)</p>
<p>So sorry my bad. To make it clear:</p>
<p>From the picture that I posted, I need to press the PBA (as Button1) so that both motors can run in forward (CW-clockwise)  and backward (CCW-counterclockwise) and  a stop.</p>
<p>While on the other hand, PBB (as button2) is for another condition  both motors can run in left, right, and stop.</p>
<p><em>Problems</em>:</p>
<ol>
<li><p>When I run my code, it appears glitching from my LCD display.</p>
</li>
<li><p>I able to achieve for PBB side but for PBA side, both motors don't move at all.</p>
</li>
<li><p>I had use potentiometer to adjust my speed. The potentiometer are doing fine.</p>
</li>
<li><p>I use debounce for both my buttons and I am not sure whether the debounce effect my <code>void setmode(int Mode, int MotorMode1){}</code></p>
</li>
</ol>
<pre class="lang-cpp prettyprint-override"><code>////////////////////////////////////////////////////////////////////////////////[![enter image description here][1]][1]



boolean lastButton=LOW;
boolean currentButton = LOW;

boolean last1Button = LOW;
boolean current1Button = LOW;

boolean debounce(boolean last){
    boolean current = digitalRead(PBA);
    if (last != current) {
      delay(5);
      current = digitalRead(PBA);
      return current;
    }
  }

  boolean debounce1(boolean last1) {
    boolean current1 = digitalRead(PBB);
    if (last1 != current1) {
      delay(5);
      current1 = digitalRead(PBB);
      return current1;
    }
  }

  int Mode = 0;
  int motorMode1 = 0;

  
   


  void loop() {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(&quot;SPEED:&quot;);
    lcd.setCursor(0, 1);

    // potentiometer LCD
    float inputValue = analogRead (pot);
    inputValue = map(inputValue, 0, 1023, 0, 100);
    lcd.setCursor(7, 0);
    lcd.print (inputValue);
    lcd.setCursor(12, 0);
    lcd.print (&quot;%&quot;);

    //read values from potentiometer
    MotorSpeed = analogRead(SpeedControl);
    MotorSpeed = map(MotorSpeed, 0 , 1023 , 0 , 255);
    // adjust to prevent at low speed
    if (MotorSpeed &lt; 8)MotorSpeed = 0;
    //set the motor speed
    //analogWrite (enA, MotorSpeed);
    //analogWrite (enB, MotorSpeed);
    // MotorLCD
    lcd.setCursor(0, 1);
    lcd.print(&quot;MOVE:&quot;);
 
    currentButton = debounce(lastButton);
    if (currentButton == HIGH &amp;&amp; lastButton == LOW) {
      Mode++;
    }
    lastButton = currentButton;
    if (Mode == 3){
      Mode = 0;
    }


    current1Button = debounce1(last1Button);
    if (last1Button == HIGH &amp;&amp; current1Button == LOW) {
      motorMode1++;
  
    }
    last1Button = current1Button;
    if (motorMode1 == 3){
      motorMode1 = 0;
    }
  
  setMode( Mode, motorMode1);  
  
 }
  


  void setMode(int Mode, int motorMode1) {
    analogWrite (enA, MotorSpeed);
    analogWrite (enB, MotorSpeed);

    
    if (Mode == 1 ) {
      lcd.setCursor(5, 8);
      lcd.print(&quot;Forward&quot;);

      //MOTOR_A CLOCKWISE MAX SPEED
      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);

      //MOTOR_B CLOCKWISE MAX SPEED
      digitalWrite(in3, HIGH);
      digitalWrite(in4, LOW);
    }
    if (Mode == 2) {
      lcd.setCursor(5, 8);
      lcd.print(&quot;Reverse&quot;);

      //MOTOR_A COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in1, LOW);
      digitalWrite(in2, HIGH);

      //MOTOR_B COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in3, LOW);
      digitalWrite(in4, HIGH);

    }
     

   if (motorMode1 == 1) {

      lcd.setCursor(5, 8);
      lcd.print(&quot;Right&quot;);
      //MOTOR_A CLOCKWISE MAX SPEED
      digitalWrite(in1, LOW);
      digitalWrite(in2, HIGH);
      //MOTOR_B COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in3, HIGH);
      digitalWrite(in4, LOW);

    }
    if (motorMode1 == 2) {
      lcd.setCursor(5, 8);
      lcd.print(&quot;Left&quot;);
      //MOTOR_A COUNTERCLOCKWISE MAX SPEED
      digitalWrite(in1, HIGH);
      digitalWrite(in2, LOW);
      //MOTOR_B CLOCKWISE MAX SPEED
      digitalWrite(in3, LOW);
      digitalWrite(in4, HIGH);

    }
     if (Mode == 0 || motorMode1 == 0) {
      lcd.setCursor(5, 8);
      lcd.print(&quot;Stop&quot;);
      digitalWrite(in1, LOW);
      digitalWrite(in2, LOW);
      digitalWrite(in3, LOW);
      digitalWrite(in4, LOW);
    }           
  }
</code></pre>
 10285: <p>I hope I understood you correctly. The best way would be to tell you how you can use states to get the problem solved. But that would cost me too much time.</p>
<p>I decided to edit your program. I have no hardware to try it. So it is just an example to show you the idea. Perhaps it works as it is.</p>
<p>Please check the comments. If you are really interested in understanding to problem and the solution and things are unclear,  you (or others) can ask with comments below. And of cause, if you find an error, I would be happy to know about it and correct it. ;-)</p>
<pre><code>#include &lt;Wire.h&gt;
#include &lt;LiquidCrystal_I2C.h&gt;


// These are the different movement states
#define STATE_STOP 0
#define STATE_LEFT 1
#define STATE_RIGHT 2
#define STATE_FORWARD 3
#define STATE_BACKWARD 4

// always use expressive names

// The pin assignments
//////////////////////////////////////////////

// Analog
int pinPotiSpeed = A0;

// Motor A
int pinEnA = 9;
int pinInA1 = 8;
int pinInA2 = 7;

// Motor B
int pinEnB = 3;
int pinInB1 = 5;
int pinInB2 = 4;

// Buttons
const int pinBtnDir = 10;
const int pinBtnTurn = 11 ;

int stateMotors = STATE_STOP;
boolean flagBtnDirPressed = LOW;
boolean flagBtnTurnPressed = LOW;

int stateMotorsSpeed = 0;
int speedPercent = map( stateMotorsSpeed, 0, 255, 0, 100 );

LiquidCrystal_I2C lcd(0x27, 16, 2);

// I have not the time to think a lot about this debouncing, but
// I have a bad feeling. If the Arduino does not react on button presses 
// or the mode change to quick please let me know. I'll have a look on it, if
// necessary. ;-)
boolean readButtonAndDebounce(int btnPin, boolean lastState)
{
    boolean actualState = digitalRead(btnPin);
    if (lastState != actualState) 
    {
      delay(15);
      actualState = digitalRead(btnPin);
      return actualState;
    }

    // this return was missing in the original program
    return actualState;
}

void setup() 
{
    Serial.begin(9600);

    pinMode(pinEnA, OUTPUT);
    pinMode(pinInA1, OUTPUT);
    pinMode(pinInA2, OUTPUT);

    pinMode(pinEnB, OUTPUT);
    pinMode(pinInB1, OUTPUT);
    pinMode(pinInB2, OUTPUT);

    pinMode(pinBtnDir, INPUT);
    pinMode(pinBtnTurn, INPUT);

    digitalWrite(pinInA1,LOW);
    digitalWrite(pinInA2,LOW);
    
    digitalWrite(pinInB1,LOW);
    digitalWrite(pinInB2,LOW);

    lcd.init();
    lcd.backlight();

    

    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(&quot;SPEED:&quot;);
    lcd.setCursor(0, 1);

    lcd.setCursor(7, 0);
    // convert 0-255 to 0%-100%
    lcd.print (&quot;0 %&quot;);

    lcd.setCursor(0, 1);
    lcd.print(&quot;MOVE: Stop&quot;);
}

void loop() 
{
    stateMotorsSpeed = map( analogRead( pinPotiSpeed ), 0, 1023, 0, 255 );
    if ( stateMotorsSpeed &lt; 8 ) stateMotorsSpeed = 0;
    speedPercent = map( stateMotorsSpeed, 0, 255, 0, 100 );

    boolean flagBtnDirPressedOld = flagBtnDirPressed;
    flagBtnDirPressed = readButtonAndDebounce( pinBtnDir, flagBtnDirPressed );

    boolean flagBtnTurnPressedOld = flagBtnTurnPressed;
    flagBtnTurnPressed = readButtonAndDebounce( pinBtnTurn, flagBtnTurnPressed );


    // this is a bit tricky, because I don't know if i understood the problem correctly.
    // My problem is, what happens if both button are pressed, I decided to give 
    // the Direction button the precedence
    if ( flagBtnDirPressed &amp;&amp; ! flagBtnDirPressedOld )
    {
      switch( stateMotors )
      {
        case STATE_STOP:
          stateMotors = STATE_FORWARD;
          break;
        
        case STATE_FORWARD:
          stateMotors = STATE_BACKWARD;
          break;
      
        case STATE_BACKWARD:
          stateMotors = STATE_STOP;
          break;

        default:
          // this happens if a state from the other button is active
          // The table does not include a rule what to do in this case.
          // Perhaps you could count button click modulo 3 for each button 
          // and then you can switch to the correct state
          stateMotors = STATE_STOP;
      }

    }
    else if ( flagBtnTurnPressed &amp;&amp; ! flagBtnTurnPressedOld )
    {
      // this is only entered if press state of the direction button has not changed
      switch( stateMotors )
      {
        case STATE_STOP:
          stateMotors = STATE_RIGHT;
          break;
        
        case STATE_RIGHT:
          stateMotors = STATE_LEFT;
          break;

        case STATE_LEFT:
          stateMotors = STATE_STOP;
          break;

        default:
          // this happens if a state from the other button is active
          stateMotors = STATE_STOP;
      }
    }

    controlMotorAndUpdateLcd();
}

void setMotorSignals( boolean sigA1 , boolean sigA2, boolean sigB1, boolean sigB2 )
{
      //MOTOR_A
      digitalWrite(pinInA1, sigA1);
      digitalWrite(pinInA2, sigA2);

      //MOTOR_B
      digitalWrite(pinInB1, sigB1);
      digitalWrite(pinInB2, sigB2);
}
  
void controlMotorAndUpdateLcd() 
{
    lcd.clear();
    lcd.setCursor( 0, 0 );
    lcd.print( &quot;SPEED:&quot; );
    lcd.setCursor( 0, 1 );

    // potentiometer LCD
    lcd.setCursor( 7, 0 );
    lcd.print ( speedPercent );
    lcd.setCursor( 12, 0 );
    lcd.print (&quot;%&quot;);

    analogWrite ( pinEnA, stateMotorsSpeed );
    analogWrite ( pinEnB, stateMotorsSpeed );

    // MotorLCD
    lcd.setCursor(0, 1);
    lcd.print(&quot;MOVE:&quot;);

    lcd.setCursor(5, 8);
    switch( stateMotors )
    {
      case STATE_STOP:
        lcd.print(&quot;Stop&quot;);
        setMotorSignals( LOW, LOW, LOW, LOW);
        break;
        
      case STATE_FORWARD:
        lcd.print(&quot;Forward&quot;);
        setMotorSignals( HIGH, LOW, HIGH, LOW);
        break;
      
      case STATE_BACKWARD:
        lcd.print(&quot;Reverse&quot;);
        setMotorSignals( LOW, HIGH, LOW, HIGH);
        break;

       case STATE_LEFT:
        lcd.print(&quot;Left&quot;);
        setMotorSignals( HIGH, LOW, LOW, HIGH);
        break;
      
      case STATE_RIGHT:
        lcd.print(&quot;Right&quot;);
        setMotorSignals( LOW, HIGH, HIGH, LOW);
        break;
    }
}
</code></pre>
