diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h
index c11b02bc52e2ed4ba7f3030dbd36c26c104c708b..f2524cadb1d90f8be9744b5536e1928804e2ed64 100644
--- a/Marlin/Configuration.h
+++ b/Marlin/Configuration.h
@@ -135,7 +135,7 @@
 //#define CUSTOM_MACHINE_NAME "3D Printer"
 
 // Printer's unique ID, used by some programs to differentiate between machines.
-// Choose your own or use a service like http://www.uuidgenerator.net/version4
+// Choose your own or use a service like https://www.uuidgenerator.net/version4
 //#define MACHINE_UUID "00000000-0000-0000-0000-000000000000"
 
 // @section extruder
@@ -2148,20 +2148,23 @@
 //
 // TFT LVGL UI
 //
-// Default MKS icons and fonts: https://git.io/JJvzK
-// Copy mks_pic and mks_font folders to the root of your SD
+// Using default MKS icons and fonts from: https://git.io/JJvzK
+// Just copy the `assets` folder from the build directory to the
+// root of your SD card, together with the compiled firmware.
 //
-//#define TFT_LVGL_UI
+// Robin nano v1.2 uses FSMC
+//
+//#define TFT_LVGL_UI_FSMC
+
+// Robin nano v2.0 uses SPI
+//
+//#define TFT_LVGL_UI_SPI
+
 
 //=============================================================================
 //============================  Other Controllers  ============================
 //=============================================================================
 
-//
-// Robin nano v2.0 SPI touch screen
-//
-//#define SPI_GRAPHICAL_TFT
-
 //
 // Ender-3 v2 OEM display. A DWIN display with Rotary Encoder.
 //
diff --git a/Marlin/Version.h b/Marlin/Version.h
index a698b435cd314988fa8ce6c4667987222376d066..fe0724fbfcb1487f436763bdb3cc0382f5779ebb 100644
--- a/Marlin/Version.h
+++ b/Marlin/Version.h
@@ -71,6 +71,6 @@
  * Set the vendor info the serial USB interface, if changable
  * Currently only supported by DUE platform
  */
-//#define  USB_DEVICE_VENDOR_ID           0x0000
-//#define  USB_DEVICE_PRODUCT_ID          0x0000
-//#define  USB_DEVICE_MANUFACTURE_NAME    WEBSITE_URL
+//#define USB_DEVICE_VENDOR_ID           0x0000
+//#define USB_DEVICE_PRODUCT_ID          0x0000
+//#define USB_DEVICE_MANUFACTURE_NAME    WEBSITE_URL
diff --git a/Marlin/src/MarlinCore.cpp b/Marlin/src/MarlinCore.cpp
index 7ba577504abd46a6aa3f14cd6fb0220a73fbe0c9..00ea51b058eafb8b28ad0e70cc20cd0075f2f2d8 100644
--- a/Marlin/src/MarlinCore.cpp
+++ b/Marlin/src/MarlinCore.cpp
@@ -59,10 +59,11 @@
 #include "gcode/parser.h"
 #include "gcode/queue.h"
 
-#if ENABLED(TFT_LVGL_UI)
-  #include "lvgl.h"
+#if HAS_TFT_LVGL_UI
   #include "lcd/extui/lib/mks_ui/tft_lvgl_configuration.h"
   #include "lcd/extui/lib/mks_ui/draw_ui.h"
+  #include "lcd/extui/lib/mks_ui/mks_hardware_test.h"
+  #include <lvgl.h>
 #endif
 
 #if ENABLED(DWIN_CREALITY_LCD)
@@ -755,7 +756,7 @@ void idle(TERN_(ADVANCED_PAUSE_FEATURE, bool no_stepper_sleep/*=false*/)) {
   // Direct Stepping
   TERN_(DIRECT_STEPPING, page_manager.write_responses());
 
-  #if ENABLED(TFT_LVGL_UI)
+  #if HAS_TFT_LVGL_UI
     LV_TASK_HANDLER();
   #endif
 }
@@ -1192,7 +1193,7 @@ void setup() {
     SETUP_RUN(page_manager.init());
   #endif
 
-  #if ENABLED(TFT_LVGL_UI)
+  #if HAS_TFT_LVGL_UI
     if (!card.isMounted()) SETUP_RUN(card.mount()); // Mount SD to load graphics and fonts
     SETUP_RUN(tft_lvgl_init());
   #endif
@@ -1229,7 +1230,7 @@ void loop() {
 
     endstops.event_handler();
 
-    TERN_(TFT_LVGL_UI, printer_state_polling());
+    TERN_(HAS_TFT_LVGL_UI, printer_state_polling());
 
   } while (ENABLED(__AVR__)); // Loop forever on slower (AVR) boards
 }
diff --git a/Marlin/src/core/boards.h b/Marlin/src/core/boards.h
index 1077d494e480fe4dacbf3f2edfbeaff6b04b0e2e..6e57a43747f0bddcdfd236f6de4e0eba9f9c8b44 100644
--- a/Marlin/src/core/boards.h
+++ b/Marlin/src/core/boards.h
@@ -288,30 +288,31 @@
 #define BOARD_MKS_ROBIN               4007  // MKS Robin (STM32F103ZET6)
 #define BOARD_MKS_ROBIN_MINI          4008  // MKS Robin Mini (STM32F103VET6)
 #define BOARD_MKS_ROBIN_NANO          4009  // MKS Robin Nano (STM32F103VET6)
-#define BOARD_MKS_ROBIN_LITE          4010  // MKS Robin Lite/Lite2 (STM32F103RCT6)
-#define BOARD_MKS_ROBIN_LITE3         4011  // MKS Robin Lite3 (STM32F103RCT6)
-#define BOARD_MKS_ROBIN_PRO           4012  // MKS Robin Pro (STM32F103ZET6)
-#define BOARD_BTT_SKR_MINI_V1_1       4013  // BigTreeTech SKR Mini v1.1 (STM32F103RC)
-#define BOARD_BTT_SKR_MINI_E3_V1_0    4014  // BigTreeTech SKR Mini E3 (STM32F103RC)
-#define BOARD_BTT_SKR_MINI_E3_V1_2    4015  // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
-#define BOARD_BTT_SKR_MINI_E3_V2_0    4016  // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
-#define BOARD_BTT_SKR_E3_DIP          4017  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
-#define BOARD_JGAURORA_A5S_A1         4018  // JGAurora A5S A1 (STM32F103ZET6)
-#define BOARD_FYSETC_AIO_II           4019  // FYSETC AIO_II
-#define BOARD_FYSETC_CHEETAH          4020  // FYSETC Cheetah
-#define BOARD_FYSETC_CHEETAH_V12      4021  // FYSETC Cheetah V1.2
-#define BOARD_LONGER3D_LK             4022  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
-#define BOARD_GTM32_MINI              4023  // STM32F103VET6 controller
-#define BOARD_GTM32_MINI_A30          4024  // STM32F103VET6 controller
-#define BOARD_GTM32_REV_B             4025  // STM32F103VET6 controller
-#define BOARD_MKS_ROBIN_E3D           4026  // MKS Robin E3D (STM32F103RCT6)
-#define BOARD_MKS_ROBIN_E3            4027  // MKS Robin E3 (STM32F103RCT6)
-#define BOARD_MALYAN_M300             4028  // STM32F070-based delta
-#define BOARD_CCROBOT_MEEB_3DP        4029  // ccrobot-online.com MEEB_3DP (STM32F103RC)
-#define BOARD_CHITU3D_V5              4030  // Chitu3D TronXY X5SA V5 Board
-#define BOARD_CHITU3D_V6              4031  // Chitu3D TronXY X5SA V5 Board
-#define BOARD_CREALITY_V4             4032  // Creality v4.x (STM32F103RE)
-#define BOARD_TRIGORILLA_PRO          4033  // Trigorilla Pro (STM32F103ZET6)
+#define BOARD_MKS_ROBIN_NANO_V2       4010  // MKS Robin Nano V2 (STM32F103VET6)
+#define BOARD_MKS_ROBIN_LITE          4011  // MKS Robin Lite/Lite2 (STM32F103RCT6)
+#define BOARD_MKS_ROBIN_LITE3         4012  // MKS Robin Lite3 (STM32F103RCT6)
+#define BOARD_MKS_ROBIN_PRO           4013  // MKS Robin Pro (STM32F103ZET6)
+#define BOARD_BTT_SKR_MINI_V1_1       4014  // BigTreeTech SKR Mini v1.1 (STM32F103RC)
+#define BOARD_BTT_SKR_MINI_E3_V1_0    4015  // BigTreeTech SKR Mini E3 (STM32F103RC)
+#define BOARD_BTT_SKR_MINI_E3_V1_2    4016  // BigTreeTech SKR Mini E3 V1.2 (STM32F103RC)
+#define BOARD_BTT_SKR_MINI_E3_V2_0    4017  // BigTreeTech SKR Mini E3 V2.0 (STM32F103RC)
+#define BOARD_BTT_SKR_E3_DIP          4018  // BigTreeTech SKR E3 DIP V1.0 (STM32F103RC / STM32F103RE)
+#define BOARD_JGAURORA_A5S_A1         4019  // JGAurora A5S A1 (STM32F103ZET6)
+#define BOARD_FYSETC_AIO_II           4020  // FYSETC AIO_II
+#define BOARD_FYSETC_CHEETAH          4021  // FYSETC Cheetah
+#define BOARD_FYSETC_CHEETAH_V12      4022  // FYSETC Cheetah V1.2
+#define BOARD_LONGER3D_LK             4023  // Alfawise U20/U20+/U30 (Longer3D LK1/2) / STM32F103VET6
+#define BOARD_GTM32_MINI              4024  // STM32F103VET6 controller
+#define BOARD_GTM32_MINI_A30          4025  // STM32F103VET6 controller
+#define BOARD_GTM32_REV_B             4026  // STM32F103VET6 controller
+#define BOARD_MKS_ROBIN_E3D           4027  // MKS Robin E3D (STM32F103RCT6)
+#define BOARD_MKS_ROBIN_E3            4028  // MKS Robin E3 (STM32F103RCT6)
+#define BOARD_MALYAN_M300             4029  // STM32F070-based delta
+#define BOARD_CCROBOT_MEEB_3DP        4030  // ccrobot-online.com MEEB_3DP (STM32F103RC)
+#define BOARD_CHITU3D_V5              4031  // Chitu3D TronXY X5SA V5 Board
+#define BOARD_CHITU3D_V6              4032  // Chitu3D TronXY X5SA V5 Board
+#define BOARD_CREALITY_V4             4033  // Creality v4.x (STM32F103RE)
+#define BOARD_TRIGORILLA_PRO          4034  // Trigorilla Pro (STM32F103ZET6)
 
 //
 // ARM Cortex-M4F
diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index a552e5b9ce7d6c366ecdb072261c863c8b2a07ea..3472cdc7ba81d0ea45e2b2f5cf55fe9d32ac430c 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -255,12 +255,17 @@
   #define IS_ULTIPANEL
 #endif
 
+// LVGL UI, SPI or FSMC
+#if EITHER(TFT_LVGL_UI_SPI, TFT_LVGL_UI_FSMC)
+  #define HAS_TFT_LVGL_UI 1
+#endif
+
 // FSMC/SPI TFT Panels
 #if ENABLED(FSMC_GRAPHICAL_TFT)
   #define DOGLCD
   #define IS_ULTIPANEL
   #define DELAYED_BACKLIGHT_INIT
-#elif ENABLED(SPI_GRAPHICAL_TFT)
+#elif ENABLED(TFT_LVGL_UI_SPI)
   #define DELAYED_BACKLIGHT_INIT
 #endif
 
diff --git a/Marlin/src/inc/SanityCheck.h b/Marlin/src/inc/SanityCheck.h
index a90571b175556c30b437f1542673b079491055df..b1f9aab370c489348baafa402b17d87b910ba394 100644
--- a/Marlin/src/inc/SanityCheck.h
+++ b/Marlin/src/inc/SanityCheck.h
@@ -449,6 +449,10 @@
   #error "POWER_SUPPLY is now obsolete. Please remove it from Configuration.h."
 #elif defined(MKS_ROBIN_TFT)
   #error "MKS_ROBIN_TFT is now FSMC_GRAPHICAL_TFT. Please update your configuration."
+#elif defined(TFT_LVGL_UI)
+  #error "TFT_LVGL_UI is now TFT_LVGL_UI_FSMC. Please update your configuration."
+#elif defined(SPI_GRAPHICAL_TFT)
+  #error "SPI_GRAPHICAL_TFT is now TFT_LVGL_UI_SPI. Please update your configuration."
 #elif defined(SDPOWER)
   #error "SDPOWER is now SDPOWER_PIN. Please update your configuration and/or pins."
 #elif defined(STRING_SPLASH_LINE1) || defined(STRING_SPLASH_LINE2)
@@ -2217,8 +2221,8 @@ static_assert(hbm[Z_AXIS] >= 0, "HOMING_BUMP_MM.Z must be greater than or equal
   + ENABLED(MALYAN_LCD) \
   + ENABLED(TOUCH_UI_FTDI_EVE) \
   + ENABLED(FSMC_GRAPHICAL_TFT) \
-  + ENABLED(TFT_LVGL_UI) \
-  + ENABLED(SPI_GRAPHICAL_TFT)
+  + ENABLED(TFT_LVGL_UI_FSMC) \
+  + ENABLED(TFT_LVGL_UI_SPI)
   #error "Please select no more than one LCD controller option."
 #endif
 
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp
index 3c6cffb20dcd77cea21c37425f64f5ef125f377e..0febc4edbddd808a2e7fc364aecdc2ad15b3b518 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.cpp
@@ -22,69 +22,72 @@
 
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(SPI_GRAPHICAL_TFT)
+#if ENABLED(TFT_LVGL_UI_SPI)
 
-  #include <SPI.h>
-  #include "../../../../inc/MarlinConfig.h"
-  #include "SPI_TFT.h"
+#include "SPI_TFT.h"
+#include "pic_manager.h"
 
-  TFT SPI_TFT;
+#include "../../../../inc/MarlinConfig.h"
 
-  #ifndef SPI_TFT_MISO_PIN
-    #define SPI_TFT_MISO_PIN PA6
-  #endif
-  #ifndef SPI_TFT_MOSI_PIN
-    #define SPI_TFT_MOSI_PIN PA7
-  #endif
-  #ifndef SPI_TFT_SCK_PIN
-    #define SPI_TFT_SCK_PIN  PA5
-  #endif
-  #ifndef SPI_TFT_CS_PIN
-    #define SPI_TFT_CS_PIN   PD11
-  #endif
-  #ifndef SPI_TFT_DC_PIN
-    #define SPI_TFT_DC_PIN   PD10
-  #endif
-  #ifndef SPI_TFT_RST_PIN
-    #define SPI_TFT_RST_PIN   PC6
-  #endif
+#include <SPI.h>
+
+TFT SPI_TFT;
+
+#ifndef SPI_TFT_MISO_PIN
+  #define SPI_TFT_MISO_PIN PA6
+#endif
+#ifndef SPI_TFT_MOSI_PIN
+  #define SPI_TFT_MOSI_PIN PA7
+#endif
+#ifndef SPI_TFT_SCK_PIN
+  #define SPI_TFT_SCK_PIN  PA5
+#endif
+#ifndef SPI_TFT_CS_PIN
+  #define SPI_TFT_CS_PIN   PD11
+#endif
+#ifndef SPI_TFT_DC_PIN
+  #define SPI_TFT_DC_PIN   PD10
+#endif
+#ifndef SPI_TFT_RST_PIN
+  #define SPI_TFT_RST_PIN  PC6
+#endif
 
 // use SPI1 for the spi tft.
-  void TFT::spi_init(uint8_t spiRate) {
-
-    SPI_TFT_CS_H;
-
-    /**
-     * STM32F1 APB2 = 72MHz, APB1 = 36MHz, max SPI speed of this MCU if 18Mhz
-     * STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1
-     * so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2
-     */
-    uint8_t clock;
-    switch (spiRate) {
-      case SPI_FULL_SPEED:    clock = SPI_CLOCK_DIV4;  break;
-      case SPI_HALF_SPEED:    clock = SPI_CLOCK_DIV4; break;
-      case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8; break;
-      case SPI_EIGHTH_SPEED:  clock = SPI_CLOCK_DIV16; break;
-      case SPI_SPEED_5:       clock = SPI_CLOCK_DIV32; break;
-      case SPI_SPEED_6:       clock = SPI_CLOCK_DIV64; break;
-      default:                clock = SPI_CLOCK_DIV2;        // Default from the SPI library
-    }
-    SPI.setModule(1);
-    SPI.begin();
-    SPI.setClockDivider(clock);
-    SPI.setBitOrder(MSBFIRST);
-    SPI.setDataMode(SPI_MODE0);
-  }
+void TFT::spi_init(uint8_t spiRate) {
 
-  uint8_t TFT::spi_Rec() {
-    uint8_t returnByte = SPI.transfer(ff);
-    return returnByte;
-  }
+  SPI_TFT_CS_H;
 
-  uint8_t TFT::spi_read_write_byte(uint8_t data) {
-    uint8_t returnByte = SPI.transfer(data);
-    return returnByte;
+  /**
+   * STM32F1 APB2 = 72MHz, APB1 = 36MHz, max SPI speed of this MCU if 18Mhz
+   * STM32F1 has 3 SPI ports, SPI1 in APB2, SPI2/SPI3 in APB1
+   * so the minimum prescale of SPI1 is DIV4, SPI2/SPI3 is DIV2
+   */
+  uint8_t clock;
+  switch (spiRate) {
+    case SPI_FULL_SPEED:    clock = SPI_CLOCK_DIV4;  break;
+    case SPI_HALF_SPEED:    clock = SPI_CLOCK_DIV4; break;
+    case SPI_QUARTER_SPEED: clock = SPI_CLOCK_DIV8; break;
+    case SPI_EIGHTH_SPEED:  clock = SPI_CLOCK_DIV16; break;
+    case SPI_SPEED_5:       clock = SPI_CLOCK_DIV32; break;
+    case SPI_SPEED_6:       clock = SPI_CLOCK_DIV64; break;
+    default:                clock = SPI_CLOCK_DIV2;        // Default from the SPI library
   }
+  SPI.setModule(1);
+  SPI.begin();
+  SPI.setClockDivider(clock);
+  SPI.setBitOrder(MSBFIRST);
+  SPI.setDataMode(SPI_MODE0);
+}
+
+uint8_t TFT::spi_Rec() {
+  uint8_t returnByte = SPI.transfer(ff);
+  return returnByte;
+}
+
+uint8_t TFT::spi_read_write_byte(uint8_t data) {
+  uint8_t returnByte = SPI.transfer(data);
+  return returnByte;
+}
 
 /**
  * @brief  Receive a number of bytes from the SPI port to a buffer
@@ -95,7 +98,7 @@
  *
  * @details Uses DMA
  */
-  void TFT::spi_Read(uint8_t* buf, uint16_t nbyte) {SPI.dmaTransfer(0, const_cast<uint8_t*>(buf), nbyte);}
+void TFT::spi_Read(uint8_t* buf, uint16_t nbyte) {SPI.dmaTransfer(0, const_cast<uint8_t*>(buf), nbyte);}
 
 /**
  * @brief  Send a single byte on SPI port
@@ -104,7 +107,7 @@
  *
  * @details
  */
-  void TFT::spi_Send(uint8_t b) {SPI.send(b);}
+void TFT::spi_Send(uint8_t b) {SPI.send(b);}
 
 /**
  * @brief  Write token and then write from 512 byte buffer to SPI (for SD card)
@@ -114,158 +117,222 @@
  *
  * @details Use DMA
  */
-  void TFT::spi_SendBlock(uint8_t token, const uint8_t* buf) {
-    SPI.send(token);
-    SPI.dmaSend(const_cast<uint8_t*>(buf), 512);
-  }
+void TFT::spi_SendBlock(uint8_t token, const uint8_t* buf) {
+  SPI.send(token);
+  SPI.dmaSend(const_cast<uint8_t*>(buf), 512);
+}
 
-  void TFT::LCD_WR_REG(uint8_t cmd) {
-    SPI_TFT_CS_L;
-    SPI_TFT_DC_L;
-    spi_Send(cmd);
-    SPI_TFT_CS_H;
-  }
-  void TFT::LCD_WR_DATA(uint8_t data) {
-    SPI_TFT_CS_L;
-    SPI_TFT_DC_H;
-    spi_Send(data);
-    SPI_TFT_CS_H;
-  }
-  void TFT::LCD_WriteRAM_Prepare() {LCD_WR_REG(0X2C);}
-  void TFT::SetCursor(uint16_t x, uint16_t y) {
-    LCD_WR_REG(0x2a);
-    LCD_WR_DATA(x >> 8);
-    LCD_WR_DATA(x);
-    LCD_WR_DATA(x >> 8);
-    LCD_WR_DATA(x);
-
-    LCD_WR_REG(0x2b);
-    LCD_WR_DATA(y >> 8);
-    LCD_WR_DATA(y);
-    LCD_WR_DATA(y >> 8);
-    LCD_WR_DATA(y);
+void TFT::LCD_WR_REG(uint8_t cmd) {
+  SPI_TFT_CS_L;
+  SPI_TFT_DC_L;
+  spi_Send(cmd);
+  SPI_TFT_CS_H;
+}
+void TFT::LCD_WR_DATA(uint8_t data) {
+  SPI_TFT_CS_L;
+  SPI_TFT_DC_H;
+  spi_Send(data);
+  SPI_TFT_CS_H;
+}
+void TFT::LCD_WriteRAM_Prepare() {LCD_WR_REG(0X2C);}
+void TFT::SetCursor(uint16_t x, uint16_t y) {
+  LCD_WR_REG(0x2A);
+  LCD_WR_DATA(x >> 8);
+  LCD_WR_DATA(x);
+  LCD_WR_DATA(x >> 8);
+  LCD_WR_DATA(x);
+
+  LCD_WR_REG(0x2B);
+  LCD_WR_DATA(y >> 8);
+  LCD_WR_DATA(y);
+  LCD_WR_DATA(y >> 8);
+  LCD_WR_DATA(y);
+}
+
+void TFT::SetPoint(uint16_t x, uint16_t y, uint16_t point) {
+  if ((x > 480) || (y > 320)) return;
+
+  SetCursor(x, y);
+
+  LCD_WriteRAM_Prepare();
+  LCD_WR_DATA((uint8_t)(point >> 8));
+  LCD_WR_DATA((uint8_t)point);
+}
+
+void TFT::SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height) {
+  LCD_WR_REG(0x2A);
+  LCD_WR_DATA(x >> 8);
+  LCD_WR_DATA(x);
+  LCD_WR_DATA((x + with - 1) >> 8);
+  LCD_WR_DATA((x + with - 1));
+
+  LCD_WR_REG(0x2B);
+  LCD_WR_DATA(y >> 8);
+  LCD_WR_DATA(y);
+  LCD_WR_DATA((y + height - 1) >> 8);
+  LCD_WR_DATA(y + height - 1);
+}
+
+void TFT::LCD_init() {
+  SPI_TFT_RST_H;
+  delay(150);
+  SPI_TFT_RST_L;
+  delay(150);
+  SPI_TFT_RST_H;
+
+  delay(120);
+  LCD_WR_REG(0x11);
+  delay(120);
+
+  LCD_WR_REG(0xF0);
+  LCD_WR_DATA(0xC3);
+  LCD_WR_REG(0xF0);
+  LCD_WR_DATA(0x96);
+
+  LCD_WR_REG(0x36);
+  LCD_WR_DATA(0x28);
+
+  LCD_WR_REG(0x3A);
+  LCD_WR_DATA(0x55);
+
+  LCD_WR_REG(0xB4);
+  LCD_WR_DATA(0x01);
+  LCD_WR_REG(0xB7);
+  LCD_WR_DATA(0xC6);
+  LCD_WR_REG(0xE8);
+  LCD_WR_DATA(0x40);
+  LCD_WR_DATA(0x8A);
+  LCD_WR_DATA(0x00);
+  LCD_WR_DATA(0x00);
+  LCD_WR_DATA(0x29);
+  LCD_WR_DATA(0x19);
+  LCD_WR_DATA(0xA5);
+  LCD_WR_DATA(0x33);
+  LCD_WR_REG(0xC1);
+  LCD_WR_DATA(0x06);
+  LCD_WR_REG(0xC2);
+  LCD_WR_DATA(0xA7);
+  LCD_WR_REG(0xC5);
+  LCD_WR_DATA(0x18);
+  LCD_WR_REG(0xE0);     // Positive Voltage Gamma Control
+  LCD_WR_DATA(0xF0);
+  LCD_WR_DATA(0x09);
+  LCD_WR_DATA(0x0B);
+  LCD_WR_DATA(0x06);
+  LCD_WR_DATA(0x04);
+  LCD_WR_DATA(0x15);
+  LCD_WR_DATA(0x2F);
+  LCD_WR_DATA(0x54);
+  LCD_WR_DATA(0x42);
+  LCD_WR_DATA(0x3C);
+  LCD_WR_DATA(0x17);
+  LCD_WR_DATA(0x14);
+  LCD_WR_DATA(0x18);
+  LCD_WR_DATA(0x1B);
+  LCD_WR_REG(0xE1);     // Negative Voltage Gamma Control
+  LCD_WR_DATA(0xF0);
+  LCD_WR_DATA(0x09);
+  LCD_WR_DATA(0x0B);
+  LCD_WR_DATA(0x06);
+  LCD_WR_DATA(0x04);
+  LCD_WR_DATA(0x03);
+  LCD_WR_DATA(0x2D);
+  LCD_WR_DATA(0x43);
+  LCD_WR_DATA(0x42);
+  LCD_WR_DATA(0x3B);
+  LCD_WR_DATA(0x16);
+  LCD_WR_DATA(0x14);
+  LCD_WR_DATA(0x17);
+  LCD_WR_DATA(0x1B);
+  LCD_WR_REG(0xF0);
+  LCD_WR_DATA(0x3C);
+  LCD_WR_REG(0xF0);
+  LCD_WR_DATA(0x69);
+  delay(120);     // Delay 120ms
+  LCD_WR_REG(0x29);     // Display ON
+
+  LCD_clear(0x0000);    //
+  LCD_Draw_Logo();
+  SPI_TFT_BLK_H;
+  delay(2000);
+}
+
+void TFT::LCD_clear(uint16_t color) {
+  unsigned int i;
+  uint8_t tbuf[960];
+
+  SetCursor(0, 0);
+  SetWindows(0, 0, 480 - 1, 320 - 1);
+  LCD_WriteRAM_Prepare();
+  SPI_TFT_CS_L;
+  SPI_TFT_DC_H;
+  for (i = 0; i < 960;) {
+    tbuf[i]     = color >> 8;
+    tbuf[i + 1] = color;
+    i += 2;
   }
-  void TFT::SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height) {
-    LCD_WR_REG(0x2a);
-    LCD_WR_DATA(x >> 8);
-    LCD_WR_DATA(x);
-    LCD_WR_DATA((x + with) >> 8);
-    LCD_WR_DATA((x + with));
-
-    LCD_WR_REG(0x2b);
-    LCD_WR_DATA(y >> 8);
-    LCD_WR_DATA(y);
-    LCD_WR_DATA((y + height) >> 8);
-    LCD_WR_DATA(y + height);
+  for (i = 0; i < 320; i++) {
+    // for (m=0;m<480;m++)
+    // {
+    // LCD_WR_DATA(color>>8);
+    // LCD_WR_DATA(color);
+    SPI.dmaSend(tbuf, 960, true);
+    // SPI_TFT_CS_H;
+    // }
   }
-  void TFT::LCD_init() {
-    SPI_TFT_RST_H;
-    delay(150);
-    SPI_TFT_RST_L;
-    delay(150);
-    SPI_TFT_RST_H;
-
-    delay(120);
-    LCD_WR_REG(0x11);
-    delay(120);
-
-    LCD_WR_REG(0xf0);
-    LCD_WR_DATA(0xc3);
-    LCD_WR_REG(0xf0);
-    LCD_WR_DATA(0x96);
-
-    LCD_WR_REG(0x36);
-    LCD_WR_DATA(0x28);
-
-    LCD_WR_REG(0x3A);
-    LCD_WR_DATA(0x55);
-
-    LCD_WR_REG(0xB4);
-    LCD_WR_DATA(0x01);
-    LCD_WR_REG(0xB7);
-    LCD_WR_DATA(0xC6);
-    LCD_WR_REG(0xe8);
-    LCD_WR_DATA(0x40);
-    LCD_WR_DATA(0x8a);
-    LCD_WR_DATA(0x00);
-    LCD_WR_DATA(0x00);
-    LCD_WR_DATA(0x29);
-    LCD_WR_DATA(0x19);
-    LCD_WR_DATA(0xa5);
-    LCD_WR_DATA(0x33);
-    LCD_WR_REG(0xc1);
-    LCD_WR_DATA(0x06);
-    LCD_WR_REG(0xc2);
-    LCD_WR_DATA(0xa7);
-    LCD_WR_REG(0xc5);
-    LCD_WR_DATA(0x18);
-    LCD_WR_REG(0xe0);     // Positive Voltage Gamma Control
-    LCD_WR_DATA(0xf0);
-    LCD_WR_DATA(0x09);
-    LCD_WR_DATA(0x0b);
-    LCD_WR_DATA(0x06);
-    LCD_WR_DATA(0x04);
-    LCD_WR_DATA(0x15);
-    LCD_WR_DATA(0x2f);
-    LCD_WR_DATA(0x54);
-    LCD_WR_DATA(0x42);
-    LCD_WR_DATA(0x3c);
-    LCD_WR_DATA(0x17);
-    LCD_WR_DATA(0x14);
-    LCD_WR_DATA(0x18);
-    LCD_WR_DATA(0x1b);
-    LCD_WR_REG(0xe1);     // Negative Voltage Gamma Control
-    LCD_WR_DATA(0xf0);
-    LCD_WR_DATA(0x09);
-    LCD_WR_DATA(0x0b);
-    LCD_WR_DATA(0x06);
-    LCD_WR_DATA(0x04);
-    LCD_WR_DATA(0x03);
-    LCD_WR_DATA(0x2d);
-    LCD_WR_DATA(0x43);
-    LCD_WR_DATA(0x42);
-    LCD_WR_DATA(0x3b);
-    LCD_WR_DATA(0x16);
-    LCD_WR_DATA(0x14);
-    LCD_WR_DATA(0x17);
-    LCD_WR_DATA(0x1b);
-    LCD_WR_REG(0xf0);
-    LCD_WR_DATA(0x3c);
-    LCD_WR_REG(0xf0);
-    LCD_WR_DATA(0x69);
-    delay(120);     // Delay 120ms
-    LCD_WR_REG(0x29);     // Display ON
-
-    LCD_clear(0x0000);    //
-    SPI_TFT_BLK_H;
+  SPI_TFT_CS_H;
+}
 
-  }
-  void TFT::LCD_clear(uint16_t color) {
-    unsigned int i, m;
-    uint32_t count;
-    uint8_t tbuf[960];
-
-    SetCursor(0, 0);
-    SetWindows(0, 0, 480 - 1, 320 - 1);
-    LCD_WriteRAM_Prepare();
-    SPI_TFT_CS_L;
-    SPI_TFT_DC_H;
-    for (i = 0; i < 960;) {
-      tbuf[i]     = color >> 8;
-      tbuf[i + 1] = color;
-      i += 2;
+extern unsigned char bmp_public_buf[17 * 1024];
+
+void TFT::LCD_Draw_Logo() {
+  uint16_t i,y_off = 0;
+  uint16_t *p_index;
+  uint16_t Color;
+
+  #if 1
+    for (y_off = 0; y_off < 320; y_off ++) {
+      Pic_Logo_Read((uint8_t *)"", (uint8_t *)bmp_public_buf, 960);
+
+      SPI_TFT.spi_init(SPI_FULL_SPEED);
+      SetWindows(0, y_off, 480, 1);
+      LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
+      for (i = 0; i < 960;) {
+        p_index = (uint16_t *)(&bmp_public_buf[i]);
+        Color = (*p_index >> 8);
+        *p_index = Color | ((*p_index & 0xFF) << 8);
+        i+=2;
+      }
+      SPI_TFT_CS_L;
+      SPI_TFT_DC_H;
+      SPI.dmaSend(bmp_public_buf,960,true);
+      SPI_TFT_CS_H;
     }
-    for (i = 0; i < 320; i++) {
-      // for(m=0;m<480;m++)
-      // {
-      // LCD_WR_DATA(color>>8);
-      // LCD_WR_DATA(color);
-
-      SPI.dmaSend(tbuf, 960, true);
-      // SPI_TFT_CS_H;
-      // }
+
+  #else
+
+    for (index = 0; index < 40; index ++) {
+      Pic_Logo_Read((uint8_t *)"", bmp_public_buf, 480*8*2);
+      i = 0;
+      SetCursor(0,0);
+      SetWindows(0, y_off * 8, 480, 8);
+      LCD_WriteRAM_Prepare(); /* Prepare to write GRAM */
+      for (i = 0; i < 480 * 8 * 2;) {
+        p_index = (uint16_t *)(&bmp_public_buf[i]);
+        Color = (*p_index >> 8);
+        *p_index = Color | ((*p_index & 0xFF) << 8);
+        i += 2;
+      }
+      SPI_TFT_CS_L;
+      SPI_TFT_DC_H;
+      SPI.dmaSend(bmp_public_buf,480*8*2,true);
+      SPI_TFT_CS_H;
+
+      y_off++;
     }
-    SPI_TFT_CS_H;
-  }
+  #endif
+
+  SetWindows(0, 0, 479, 319);
+}
 
-#endif // SPI_GRAPHICAL_TFT
+#endif // HAS_TFT_LVGL_UI_SPI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h
index 4466f4d33befb565fb0aec1f24464f00decf6103..9b676843139c5286a63cb85f1dc37843d12c0d2f 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/SPI_TFT.h
@@ -46,10 +46,12 @@ public:
   void LCD_WR_REG(uint8_t cmd);
   void LCD_WR_DATA(uint8_t data);
   void SetCursor(uint16_t x, uint16_t y);
+  void SetPoint(uint16_t x, uint16_t y, uint16_t point);
   void SetWindows(uint16_t x, uint16_t y, uint16_t with, uint16_t height);
   void LCD_init();
   void LCD_clear(uint16_t color);
   void LCD_WriteRAM_Prepare();
+  void LCD_Draw_Logo();
 };
 
 extern TFT SPI_TFT;
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp
index 5c56bdef43f83f3044efd83a68fdc1f7b32ddda9..60b4d0b7ea98c811d565f6a4df37ca1095460c2b 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.cpp
@@ -22,7 +22,7 @@
 #include "../../../../inc/MarlinConfigPre.h"
 
 #if 1 // ENABLED(SPI_FLASH)
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include <SPI.h>
 #include "../../../../inc/MarlinConfig.h"
@@ -131,7 +131,7 @@ void ext_FLASH::spi_flash_SendBlock(uint8_t token, const uint8_t* buf) {
 uint16_t ext_FLASH::W25QXX_ReadID(void) {
   uint16_t Temp = 0;
   W25QXX_CS_L;
-  spi_flash_Send(0x90);//���Ͷ�ȡID����
+  spi_flash_Send(0x90);
   spi_flash_Send(0x00);
   spi_flash_Send(0x00);
   spi_flash_Send(0x00);
@@ -391,5 +391,5 @@ void ext_FLASH::SPI_FLASH_BufferRead(uint8_t* pBuffer, uint32_t ReadAddr, uint16
 
 void ext_FLASH::lv_pic_read(uint8_t *P_Rbuff, uint32_t addr, uint32_t size) {SPI_FLASH_BufferRead((uint8_t *)P_Rbuff, addr, size);}
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
 #endif // 1 ... SPI_FLASH
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h
index c3e3fe74ad33f574f827e6513dbaa48728b2ce3e..88d5d6c2f5494d1470bc8c113979737cd574dcf3 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/W25Qxx.h
@@ -56,38 +56,35 @@
 
   #define PIC_NAME_MAX_LEN        50
 
-  #define LOGO_MAX_SIZE           (300*1024)//logo���ֵ
-  #define TITLELOGO_MAX_SIZE      (150*1024)//logo���ֵ
+  #define LOGO_MAX_SIZE           (300*1024)
+  #define TITLELOGO_MAX_SIZE      (150*1024)
   #define DEFAULT_VIEW_MAX_SIZE   (200*200*2)
   #define FLASH_VIEW_MAX_SIZE     (200*200*2)
 
-  //ͼƬ
-  //Robin2�洢��ַ
-  #define PIC_NAME_ADDR           0x003000  //ͼƬ��Ϣ�洢��ַ��ͼƬ����
-  #define PIC_SIZE_ADDR           0x007000  //ͼƬ��Ϣ�洢��ַ��ͼƬ��Сֵ
-  #define PIC_COUNTER_ADDR        0x008000  //ͼƬ������ֵ�洢��ַ
-  #define PIC_LOGO_ADDR           0x009000  //ͼƬlogo�洢��ַ
-  //#define PIC_DATA_ADDR         0x02f000  //ͼƬ���ݴ洢��ַ
+  //Robin 2
+  #define PIC_NAME_ADDR           0x003000
+  #define PIC_SIZE_ADDR           0x007000
+  #define PIC_COUNTER_ADDR        0x008000
+  #define PIC_LOGO_ADDR           0x009000
+  //#define PIC_DATA_ADDR         0x02f000
 
   #define DEFAULT_VIEW_ADDR       0XC5800
   #define BAK_VIEW_ADDR           (DEFAULT_VIEW_ADDR+90*1024)
   #define PIC_ICON_LOGO_ADDR      (BAK_VIEW_ADDR+80*1024)
 
-  #define PIC_DATA_ADDR           (PIC_ICON_LOGO_ADDR+350*1024) //ͼƬ���ݴ洢��ַ//(800*240)
+  #define PIC_DATA_ADDR           (PIC_ICON_LOGO_ADDR+350*1024)
 
-  // �ֿ�
-  #define FONTINFOADDR            0x600000 // 6M�Ժ��ַΪ�ֿ�
+  #define FONTINFOADDR            0x600000
   #define UNIGBK_FLASH_ADDR       (FONTINFOADDR+4096) // 4*1024
   #define GBK_FLASH_ADDR          (UNIGBK_FLASH_ADDR+180224) // 176*1024
 
-  #define PER_PIC_MAX_SPACE       (32*1024) // Ϊ�˷�ֹ����Խ������⣬ÿ��СͼƬ�����仮��Ӧ��ȡ�ܹ�����4K��ֵ
+  #define PER_PIC_MAX_SPACE       (32*1024)
 
-  //
   union union32 {
     uint8_t bytes[4];
     uint32_t dwords;
   };
-  // ͼƬ��Ϣ�ṹ��
+
   struct pic_msg {
     uint8_t name[PIC_NAME_MAX_LEN];
     union union32 size;
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp
index ec92e1559cc709e48b71ffde3a060919cfacd9c1..94a865d0455746e1340b317b7f2382158d99c2ec 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_about.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -67,7 +67,7 @@ void lv_draw_about(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -79,14 +79,14 @@ void lv_draw_about(void) {
   buttonBack = lv_imgbtn_create(scr, NULL);
 
   #if 1
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_A_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_A_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
 
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
   /*Create a label on the Image button*/
 
@@ -98,16 +98,16 @@ void lv_draw_about(void) {
   }
 
   fw_version = lv_label_create(scr, NULL);
-  lv_obj_set_style(fw_version, &tft_style_lable_rel);
+  lv_obj_set_style(fw_version, &tft_style_label_rel);
   lv_label_set_text(fw_version, SHORT_BUILD_VERSION);
   lv_obj_align(fw_version, NULL, LV_ALIGN_CENTER, 0, -60);
 
   fw_type = lv_label_create(scr, NULL);
-  lv_obj_set_style(fw_type, &tft_style_lable_rel);
+  lv_obj_set_style(fw_type, &tft_style_label_rel);
   lv_label_set_text(fw_type,
     #if MB(MKS_ROBIN_PRO)
       "Firmware: Robin_Pro35"
-    #elif MB(MKS_ROBIN_NANO)
+    #elif MB(MKS_ROBIN_NANO, MKS_ROBIN_NANO_V2)
       "Firmware: Robin_Nano35"
     #else
       CUSTOM_MACHINE_NAME
@@ -116,11 +116,11 @@ void lv_draw_about(void) {
   lv_obj_align(fw_type, NULL, LV_ALIGN_CENTER, 0, -20);
 
   board = lv_label_create(scr, NULL);
-  lv_obj_set_style(board, &tft_style_lable_rel);
+  lv_obj_set_style(board, &tft_style_label_rel);
   lv_label_set_text(board, "Board: " BOARD_INFO_NAME);
   lv_obj_align(board, NULL, LV_ALIGN_CENTER, 0, 20);
 }
 
 void lv_clear_about() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..b6906a6dfec4cc328ddbd69749f385d2a93df221
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.cpp
@@ -0,0 +1,483 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_ACCE_RETURN  1
+#define ID_ACCE_PRINT   2
+#define ID_ACCE_RETRA   3
+#define ID_ACCE_TRAVEL  4
+#define ID_ACCE_X       5
+#define ID_ACCE_Y       6
+#define ID_ACCE_Z       7
+#define ID_ACCE_E0      8
+#define ID_ACCE_E1      9
+#define ID_ACCE_UP     10
+#define ID_ACCE_DOWN   11
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_ACCE_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_acceleration_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_ACCE_PRINT:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = PrintAcceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_RETRA:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = RetractAcceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_TRAVEL:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = TravelAcceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_X:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = XAcceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_Y:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = YAcceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_Z:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = ZAcceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_E0:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = E0Acceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_E1:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = E1Acceleration;
+        lv_clear_acceleration_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_ACCE_UP:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_acceleration_settings();
+        lv_draw_acceleration_settings();
+      }
+      break;
+    case ID_ACCE_DOWN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 1;
+        lv_clear_acceleration_settings();
+        lv_draw_acceleration_settings();
+      }
+      break;
+  }
+}
+
+void lv_draw_acceleration_settings(void) {
+  lv_obj_t *buttonBack = NULL, *label_Back = NULL, *buttonTurnPage = NULL, *labelTurnPage = NULL;
+  lv_obj_t *buttonPrintText = NULL, *labelPrintText = NULL, *buttonPrintValue = NULL, *labelPrintValue = NULL;
+  lv_obj_t *buttonRetraText = NULL, *labelRetraText = NULL, *buttonRetraValue = NULL, *labelRetraValue = NULL;
+  lv_obj_t *buttonTravelText = NULL, *labelTravelText = NULL, *buttonTravelValue = NULL, *labelTravelValue = NULL;
+  lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+  lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+  lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+  lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+  lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+  lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != ACCELERATION_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = ACCELERATION_UI;
+  }
+  disp_state = ACCELERATION_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.AccelerationConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  // LV_IMG_DECLARE(bmp_para_arrow);
+  LV_IMG_DECLARE(bmp_para_bank);
+
+  if (uiCfg.para_ui_page != 1) {
+    buttonPrintText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonPrintText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+    lv_obj_set_size(buttonPrintText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonPrintText, event_handler);
+    lv_btn_set_style(buttonPrintText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonPrintText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonPrintText, LV_LAYOUT_OFF);
+    labelPrintText = lv_label_create(buttonPrintText, NULL);                    /*Add a label to the button*/
+
+    buttonPrintValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonPrintValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonPrintValue, event_handler, ID_ACCE_PRINT, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonPrintValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonPrintValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonPrintValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonPrintValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonPrintValue, LV_LAYOUT_OFF);
+    labelPrintValue = lv_label_create(buttonPrintValue, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonRetraText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonRetraText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+    lv_obj_set_size(buttonRetraText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonRetraText, event_handler);
+    lv_btn_set_style(buttonRetraText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonRetraText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonRetraText, LV_LAYOUT_OFF);
+    labelRetraText = lv_label_create(buttonRetraText, NULL);                    /*Add a label to the button*/
+
+    buttonRetraValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonRetraValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonRetraValue, event_handler, ID_ACCE_RETRA, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonRetraValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonRetraValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonRetraValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonRetraValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonRetraValue, LV_LAYOUT_OFF);
+    labelRetraValue = lv_label_create(buttonRetraValue, NULL);
+
+    line2 = lv_line_create(scr, NULL);
+    lv_ex_line(line2, line_points[1]);
+
+    buttonTravelText = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonTravelText, PARA_UI_POS_X, PARA_UI_POS_Y * 3);         /*Set its position*/
+    lv_obj_set_size(buttonTravelText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonTravelText, event_handler);
+    lv_btn_set_style(buttonTravelText, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonTravelText, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonTravelText, LV_LAYOUT_OFF);
+    labelTravelText = lv_label_create(buttonTravelText, NULL);                  /*Add a label to the button*/
+
+    buttonTravelValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonTravelValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonTravelValue, event_handler, ID_ACCE_TRAVEL, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonTravelValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonTravelValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonTravelValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonTravelValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonTravelValue, LV_LAYOUT_OFF);
+    labelTravelValue = lv_label_create(buttonTravelValue, NULL);
+
+    line3 = lv_line_create(scr, NULL);
+    lv_ex_line(line3, line_points[2]);
+
+    buttonXText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y * 4);          /*Set its position*/
+    lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonXText, event_handler);
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+    labelXText = lv_label_create(buttonXText, NULL);                        /*Add a label to the button*/
+
+    buttonXValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_ACCE_X, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+    labelXValue = lv_label_create(buttonXValue, NULL);
+
+    line4 = lv_line_create(scr, NULL);
+    lv_ex_line(line4, line_points[3]);
+
+    buttonTurnPage = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_ACCE_DOWN, "bmp_back70x40.bin", 0);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+  }
+  else {
+    buttonYText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+    lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonYText, event_handler);
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+    labelYText = lv_label_create(buttonYText, NULL);                        /*Add a label to the button*/
+
+    buttonYValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_ACCE_Y, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+    labelYValue = lv_label_create(buttonYValue, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonZText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+    lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonZText, event_handler);
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+    labelZText = lv_label_create(buttonZText, NULL);                        /*Add a label to the button*/
+
+    buttonZValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_ACCE_Z, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+    labelZValue = lv_label_create(buttonZValue, NULL);
+
+    line2 = lv_line_create(scr, NULL);
+    lv_ex_line(line2, line_points[1]);
+
+    buttonE0Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 3);         /*Set its position*/
+    lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE0Text, event_handler);
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+    labelE0Text = lv_label_create(buttonE0Text, NULL);                      /*Add a label to the button*/
+
+    buttonE0Value = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_ACCE_E0, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+    labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+    line3 = lv_line_create(scr, NULL);
+    lv_ex_line(line3, line_points[2]);
+
+    buttonE1Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4);         /*Set its position*/
+    lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE1Text, event_handler);
+    lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+    labelE1Text = lv_label_create(buttonE1Text, NULL);                      /*Add a label to the button*/
+
+    buttonE1Value = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_ACCE_E1, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+    labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+    line4 = lv_line_create(scr, NULL);
+    lv_ex_line(line4, line_points[3]);
+
+    buttonTurnPage = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_ACCE_UP, "bmp_back70x40.bin", 0);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+  }
+
+  lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+  lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+  labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_ACCE_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    if (uiCfg.para_ui_page != 1) {
+      lv_label_set_text(labelPrintText, machine_menu.PrintAcceleration);
+      lv_obj_align(labelPrintText, buttonPrintText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelRetraText, machine_menu.RetractAcceleration);
+      lv_obj_align(labelRetraText, buttonRetraText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelTravelText, machine_menu.TravelAcceleration);
+      lv_obj_align(labelTravelText, buttonTravelText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelXText, machine_menu.X_Acceleration);
+      lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelTurnPage, machine_menu.next);
+      lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.acceleration);
+      lv_label_set_text(labelPrintValue, public_buf_l);
+      lv_obj_align(labelPrintValue, buttonPrintValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.retract_acceleration);
+      lv_label_set_text(labelRetraValue, public_buf_l);
+      lv_obj_align(labelRetraValue, buttonRetraValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.travel_acceleration);
+      lv_label_set_text(labelTravelValue, public_buf_l);
+      lv_obj_align(labelTravelValue, buttonTravelValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[X_AXIS]);
+      lv_label_set_text(labelXValue, public_buf_l);
+      lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+    }
+    else {
+      lv_label_set_text(labelYText, machine_menu.Y_Acceleration);
+      lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelZText, machine_menu.Z_Acceleration);
+      lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelE0Text, machine_menu.E0_Acceleration);
+      lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelE1Text, machine_menu.E1_Acceleration);
+      lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelTurnPage, machine_menu.previous);
+      lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Y_AXIS]);
+      lv_label_set_text(labelYValue, public_buf_l);
+      lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Z_AXIS]);
+      lv_label_set_text(labelZValue, public_buf_l);
+      lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS]);
+      lv_label_set_text(labelE0Value, public_buf_l);
+      lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)]);
+      lv_label_set_text(labelE1Value, public_buf_l);
+      lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+    }
+
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+  }
+}
+
+void lv_clear_acceleration_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..b5b62fdc4ca137a8df996ec525fd651c273eed4d
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_acceleration_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_acceleration_settings(void);
+extern void lv_clear_acceleration_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..dabecfb9de2e5382723b0cb128924cb2cd71f77b
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.cpp
@@ -0,0 +1,140 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_ADVANCE_RETURN   1
+#define ID_PAUSE_POS        2
+#define ID_PAUSE_POS_ARROW  3
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_ADVANCE_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_advance_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_PAUSE_POS:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_advance_settings();
+        lv_draw_pause_position();
+      }
+      break;
+    case ID_PAUSE_POS_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_advance_settings();
+        lv_draw_pause_position();
+      }
+      break;
+  }
+}
+
+void lv_draw_advance_settings(void) {
+  lv_obj_t *buttonBack, *label_Back;
+  lv_obj_t *buttonPausePos, *labelPausePos, *buttonPausePosNarrow;
+  lv_obj_t * line1;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != ADVANCED_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = ADVANCED_UI;
+  }
+  disp_state = ADVANCED_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.AdvancedConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  LV_IMG_DECLARE(bmp_para_arrow);
+
+  buttonPausePos = lv_btn_create(scr, NULL);   /*Add a button the current screen*/
+  lv_obj_set_pos(buttonPausePos, PARA_UI_POS_X, PARA_UI_POS_Y);                         /*Set its position*/
+  lv_obj_set_size(buttonPausePos, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);                       /*Set its size*/
+  // lv_obj_set_event_cb(buttonMachine, event_handler);
+  lv_obj_set_event_cb_mks(buttonPausePos, event_handler, ID_PAUSE_POS, NULL, 0);
+  lv_btn_set_style(buttonPausePos, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonPausePos, LV_BTN_STYLE_PR, &tft_style_label_pre);    /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonPausePos, LV_LAYOUT_OFF);
+  labelPausePos = lv_label_create(buttonPausePos, NULL);        /*Add a label to the button*/
+
+  buttonPausePosNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonPausePosNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonPausePosNarrow, event_handler, ID_PAUSE_POS_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonPausePosNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonPausePosNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonPausePosNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonPausePosNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonPausePosNarrow, LV_LAYOUT_OFF);
+
+  line1 = lv_line_create(lv_scr_act(), NULL);
+  lv_ex_line(line1, line_points[0]);
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_ADVANCE_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+    lv_label_set_text(labelPausePos, machine_menu.PausePosition);
+    lv_obj_align(labelPausePos, buttonPausePos, LV_ALIGN_IN_LEFT_MID, 0, 0);
+  }
+
+}
+
+void lv_clear_advance_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..bfd76125bb8a74a32f9792da6ccbc8c5a4de7871
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_advance_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_advance_settings(void);
+extern void lv_clear_advance_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp
index a2b02826c77d66095b7164715881696c14953707..264d528c0311d50f7990b9ee41cc7dd30dba1aac 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_change_speed.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -44,7 +44,7 @@ static lv_obj_t * printSpeedText;
 #define ID_C_MOVE   3
 #define ID_C_EXT    4
 #define ID_C_STEP   5
-#define ID_C_RETURN   6
+#define ID_C_RETURN 6
 
 static uint8_t speedType;
 
@@ -169,7 +169,7 @@ void lv_draw_change_speed(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -178,56 +178,55 @@ void lv_draw_change_speed(void) {
   LV_IMG_DECLARE(bmp_pic);
 
   /*Create an Image button*/
-  buttonAdd = lv_imgbtn_create(scr, NULL);
-  buttonDec = lv_imgbtn_create(scr, NULL);
-  buttonMov = lv_imgbtn_create(scr, NULL);
-  buttonExt = lv_imgbtn_create(scr, NULL);
+  buttonAdd  = lv_imgbtn_create(scr, NULL);
+  buttonDec  = lv_imgbtn_create(scr, NULL);
+  buttonMov  = lv_imgbtn_create(scr, NULL);
+  buttonExt  = lv_imgbtn_create(scr, NULL);
   buttonStep = lv_imgbtn_create(scr, NULL);
   buttonBack = lv_imgbtn_create(scr, NULL);
 
   lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_C_ADD, "bmp_Add.bin", 0);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
 
   #if 1
     lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_C_DEC, "bmp_Dec.bin", 0);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_imgbtn_set_src(buttonMov, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonMov, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonMov, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_imgbtn_set_src(buttonExt, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonExt, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonExt, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_C_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_C_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
 
   lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
-  lv_obj_set_pos(buttonMov, INTERVAL_V,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonMov, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   lv_obj_set_pos(buttonExt, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonStep, BTN_X_PIXEL * 2 + INTERVAL_V * 3,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonStep, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF);
@@ -239,8 +238,8 @@ void lv_draw_change_speed(void) {
 
   lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL);
   lv_obj_t * labelDec = lv_label_create(buttonDec, NULL);
-  labelMov = lv_label_create(buttonMov, NULL);
-  labelExt = lv_label_create(buttonExt, NULL);
+  labelMov  = lv_label_create(buttonMov, NULL);
+  labelExt  = lv_label_create(buttonExt, NULL);
   labelStep = lv_label_create(buttonStep, NULL);
   lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
 
@@ -258,17 +257,17 @@ void lv_draw_change_speed(void) {
   disp_speed_step();
 
   printSpeedText = lv_label_create(scr, NULL);
-  lv_obj_set_style(printSpeedText, &tft_style_lable_rel);
+  lv_obj_set_style(printSpeedText, &tft_style_label_rel);
   disp_print_speed();
 }
 
 void disp_speed_step() {
   if (uiCfg.stepPrintSpeed == 1)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step1_percent.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_step1_percent.bin", 0);
   else if (uiCfg.stepPrintSpeed == 5)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step5_percent.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_step5_percent.bin", 0);
   else if (uiCfg.stepPrintSpeed == 10)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_Step10_percent.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_C_STEP, "bmp_step10_percent.bin", 0);
 
   if (gCfgItems.multiple_language != 0) {
     if (uiCfg.stepPrintSpeed == 1) {
@@ -291,16 +290,16 @@ void disp_print_speed() {
 
   public_buf_l[0] = '\0';
 
-  if (speedType == 0) { //move
+  if (speedType == 0) { // move
     strcat(public_buf_l, speed_menu.move_speed);
-    strcat(public_buf_l, ": ");
-    sprintf(buf, "%d%%", feedrate_percentage);
+    strcat_P(public_buf_l, PSTR(": "));
+    sprintf_P(buf, PSTR("%d%%"), feedrate_percentage);
     strcat(public_buf_l, buf);
   }
   else if (speedType == 1) { // e1
     strcat(public_buf_l, speed_menu.extrude_speed);
-    strcat(public_buf_l, ": ");
-    sprintf(buf, "%d%%", planner.flow_percentage[0]);
+    strcat_P(public_buf_l, PSTR(": "));
+    sprintf_P(buf, PSTR("%d%%"), planner.flow_percentage[0]);
     strcat(public_buf_l, buf);
   }
   lv_label_set_text(printSpeedText, public_buf_l);
@@ -311,11 +310,11 @@ void disp_speed_type() {
   switch (speedType) {
     case 1:
       lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_extruct_sel.bin", 0);
-      lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_mov_changespeed.bin", 0);
+      lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_mov_changeSpeed.bin", 0);
       break;
 
     default:
-      lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_Extruct.bin", 0);
+      lv_obj_set_event_cb_mks(buttonExt, event_handler, ID_C_EXT, "bmp_speed_extruct.bin", 0);
       lv_obj_set_event_cb_mks(buttonMov, event_handler, ID_C_MOVE, "bmp_mov_sel.bin", 0);
       break;
   }
@@ -333,4 +332,4 @@ void disp_speed_type() {
 
 void lv_clear_change_speed() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp
index 19d2452142d907cf23f44b96ff2148d8bdf91508..9ef27afc9ba6de6e1d061033f99790f2ac72c825 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.cpp
@@ -26,10 +26,11 @@
 
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
+
 //#include "../lvgl/src/lv_objx/lv_imgbtn.h"
 //#include "../lvgl/src/lv_objx/lv_img.h"
 //#include "../lvgl/src/lv_core/lv_disp.h"
@@ -48,6 +49,7 @@
 #if ENABLED(PARK_HEAD_ON_PAUSE)
   #include "../../../../feature/pause.h"
 #endif
+#include "../../../../gcode/gcode.h"
 
 static lv_obj_t * scr;
 extern uint8_t sel_id;
@@ -72,36 +74,36 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
       lv_draw_printing();
 
       #if ENABLED(SDSUPPORT)
-      if (gcode_preview_over != 1) {
-        char *cur_name;
-        cur_name = strrchr(list_file.file_name[sel_id], '/');
-
-        SdFile file, *curDir;
-        card.endFilePrint();
-        const char * const fname = card.diveToFile(true, curDir, cur_name);
-        if (!fname) return;
-        if (file.open(curDir, fname, O_READ)) {
-          gCfgItems.curFilesize = file.fileSize();
-          file.close();
-          update_spi_flash();
-        }
-        card.openFileRead(cur_name);
-        if (card.isFileOpen()) {
-          feedrate_percentage = 100;
-          //saved_feedrate_percentage = feedrate_percentage;
-          planner.flow_percentage[0] = 100;
-          planner.e_factor[0] = planner.flow_percentage[0] * 0.01f;
-          #if EXTRUDERS == 2
-            planner.flow_percentage[1] = 100;
-            planner.e_factor[1] = planner.flow_percentage[1] * 0.01f;
-          #endif
-          card.startFileprint();
-          #if ENABLED(POWER_LOSS_RECOVERY)
-            recovery.prepare();
-          #endif
-          once_flag = 0;
+        if (gcode_preview_over != 1) {
+          char *cur_name;
+          cur_name = strrchr(list_file.file_name[sel_id], '/');
+
+          SdFile file, *curDir;
+          card.endFilePrint();
+          const char * const fname = card.diveToFile(true, curDir, cur_name);
+          if (!fname) return;
+          if (file.open(curDir, fname, O_READ)) {
+            gCfgItems.curFilesize = file.fileSize();
+            file.close();
+            update_spi_flash();
+          }
+          card.openFileRead(cur_name);
+          if (card.isFileOpen()) {
+            feedrate_percentage = 100;
+            //saved_feedrate_percentage = feedrate_percentage;
+            planner.flow_percentage[0] = 100;
+            planner.e_factor[0]        = planner.flow_percentage[0] * 0.01f;
+            #if EXTRUDERS == 2
+              planner.flow_percentage[1] = 100;
+              planner.e_factor[1]        = planner.flow_percentage[1] * 0.01f;
+            #endif
+            card.startFileprint();
+            #if ENABLED(POWER_LOSS_RECOVERY)
+              recovery.prepare();
+            #endif
+            once_flag = 0;
+          }
         }
-      }
       #endif
     }
     else if (DialogType == DIALOG_TYPE_STOP) {
@@ -112,7 +114,7 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
       #if ENABLED(SDSUPPORT)
         //card.endFilePrint();
         //wait_for_heatup = false;
-        uiCfg.print_state = IDLE;
+        uiCfg.print_state           = IDLE;
         card.flag.abort_sd_printing = true;
         //queue.clear();
         //quickstop_stepper();
@@ -120,12 +122,9 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
         //thermalManager.disable_all_heaters();
 
         //#if ENABLED(POWER_LOSS_RECOVERY)
-        //recovery.purge();
+        //  recovery.purge();
         //#endif
-        //queue.enqueue_one_now(PSTR("G91"));
-        //queue.enqueue_one_now(PSTR("G1 Z10"));
-        //queue.enqueue_one_now(PSTR("G90"));
-        //queue.enqueue_one_now(PSTR("G28 X0 Y0"));
+        //queue.enqueue_now_P(PSTR("G91\nG1 Z10\nG90\nG28 X0 Y0"));
         //queue.inject_P(PSTR("G91\nG1 Z10\nG90\nG28 X0 Y0\nM84\nM107"));
       #endif
     }
@@ -148,6 +147,21 @@ static void btn_ok_event_cb(lv_obj_t * btn, lv_event_t event) {
         draw_return_ui();
       }
     #endif
+    else if (DialogType == DIALOG_STORE_EEPROM_TIPS) {
+      gcode.process_subcommands_now_P(PSTR("M500"));
+      clear_cur_ui();
+      draw_return_ui();
+    }
+    else if (DialogType == DIALOG_READ_EEPROM_TIPS) {
+      gcode.process_subcommands_now_P(PSTR("M501"));
+      clear_cur_ui();
+      draw_return_ui();
+    }
+    else if (DialogType == DIALOG_REVERT_EEPROM_TIPS) {
+      gcode.process_subcommands_now_P(PSTR("M502"));
+      clear_cur_ui();
+      draw_return_ui();
+    }
   }
 }
 
@@ -186,7 +200,7 @@ void lv_draw_dialog(uint8_t type) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -194,51 +208,52 @@ void lv_draw_dialog(uint8_t type) {
 
   //LV_IMG_DECLARE(bmp_pic);
 
-  static lv_style_t style_btn_rel;                                   // A variable to store the released style
-  lv_style_copy(&style_btn_rel, &lv_style_plain);                    // Initialize from a built-in style
+  static lv_style_t style_btn_rel;                                 // A variable to store the released style
+  lv_style_copy(&style_btn_rel, &lv_style_plain);                  // Initialize from a built-in style
   style_btn_rel.body.border.color = lv_color_hex3(0x269);
   style_btn_rel.body.border.width = 1;
-  style_btn_rel.body.main_color = lv_color_hex3(0xADF);
-  style_btn_rel.body.grad_color = lv_color_hex3(0x46B);
+  style_btn_rel.body.main_color   = lv_color_hex3(0xADF);
+  style_btn_rel.body.grad_color   = lv_color_hex3(0x46B);
   style_btn_rel.body.shadow.width = 4;
-  style_btn_rel.body.shadow.type = LV_SHADOW_BOTTOM;
-  style_btn_rel.body.radius = LV_RADIUS_CIRCLE;
-  style_btn_rel.text.color = lv_color_hex3(0xDEF);
-  style_btn_rel.text.font = &lv_font_roboto_22;
+  style_btn_rel.body.shadow.type  = LV_SHADOW_BOTTOM;
+  style_btn_rel.body.radius       = LV_RADIUS_CIRCLE;
+  style_btn_rel.text.color        = lv_color_hex3(0xDEF);
+  style_btn_rel.text.font         = &TERN(HAS_SPI_FLASH_FONT, gb2312_puhui32, lv_font_roboto_22);
 
-  static lv_style_t style_btn_pr;                                    // A variable to store the pressed style
-  lv_style_copy(&style_btn_pr, &style_btn_rel);                      // Initialize from the released style
+  static lv_style_t style_btn_pr;                                  // A variable to store the pressed style
+  lv_style_copy(&style_btn_pr, &style_btn_rel);                    // Initialize from the released style
   style_btn_pr.body.border.color = lv_color_hex3(0x46B);
-  style_btn_pr.body.main_color = lv_color_hex3(0x8BD);
-  style_btn_pr.body.grad_color = lv_color_hex3(0x24A);
+  style_btn_pr.body.main_color   = lv_color_hex3(0x8BD);
+  style_btn_pr.body.grad_color   = lv_color_hex3(0x24A);
   style_btn_pr.body.shadow.width = 2;
-  style_btn_pr.text.color = lv_color_hex3(0xBCD);
-  style_btn_pr.text.font = &lv_font_roboto_22;
+  style_btn_pr.text.color        = lv_color_hex3(0xBCD);
+  style_btn_pr.text.font         = &TERN(HAS_SPI_FLASH_FONT, gb2312_puhui32, lv_font_roboto_22);
 
   lv_obj_t * labelDialog = lv_label_create(scr, NULL);
-  lv_obj_set_style(labelDialog, &tft_style_lable_rel);
+  lv_obj_set_style(labelDialog, &tft_style_label_rel);
 
   if (DialogType == DIALOG_TYPE_FINISH_PRINT || DialogType == DIALOG_PAUSE_MESSAGE_RESUME) {
-    lv_obj_t * btnOk = lv_btn_create(scr, NULL);                     // Add a button the current screen
-    lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y);                  // Set its position
-    lv_obj_set_size(btnOk, 100, 50);                                 // Set its size
+    lv_obj_t * btnOk = lv_btn_create(scr, NULL);                   // Add a button the current screen
+    lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y);                // Set its position
+    lv_obj_set_size(btnOk, 100, 50);                               // Set its size
     lv_obj_set_event_cb(btnOk, btn_ok_event_cb);
-    lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel);       // Set the button's released style
-    lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr);         // Set the button's pressed style
-    lv_obj_t * labelOk = lv_label_create(btnOk, NULL);               // Add a label to the button
-    lv_label_set_text(labelOk, print_file_dialog_menu.confirm);      // Set the labels text
+    lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel);     // Set the button's released style
+    lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr);       // Set the button's pressed style
+    lv_obj_t * labelOk = lv_label_create(btnOk, NULL);             // Add a label to the button
+    lv_label_set_text(labelOk, print_file_dialog_menu.confirm);    // Set the labels text
   }
   else if (DialogType == DIALOG_PAUSE_MESSAGE_WAITING
-           || DialogType == DIALOG_PAUSE_MESSAGE_INSERT
-           || DialogType == DIALOG_PAUSE_MESSAGE_HEAT) {
-    lv_obj_t * btnOk = lv_btn_create(scr, NULL);                     // Add a button the current screen
-    lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y);                  // Set its position
-    lv_obj_set_size(btnOk, 100, 50);                                 // Set its size
+        || DialogType == DIALOG_PAUSE_MESSAGE_INSERT
+        || DialogType == DIALOG_PAUSE_MESSAGE_HEAT
+  ) {
+    lv_obj_t * btnOk = lv_btn_create(scr, NULL);                   // Add a button the current screen
+    lv_obj_set_pos(btnOk, BTN_OK_X + 90, BTN_OK_Y);                // Set its position
+    lv_obj_set_size(btnOk, 100, 50);                               // Set its size
     lv_obj_set_event_cb(btnOk, btn_ok_event_cb);
-    lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel);       // Set the button's released style
-    lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr);         // Set the button's pressed style
-    lv_obj_t * labelOk = lv_label_create(btnOk, NULL);               // Add a label to the button
-    lv_label_set_text(labelOk, print_file_dialog_menu.confirm);      // Set the labels text
+    lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel);     // Set the button's released style
+    lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr);       // Set the button's pressed style
+    lv_obj_t * labelOk = lv_label_create(btnOk, NULL);             // Add a label to the button
+    lv_label_set_text(labelOk, print_file_dialog_menu.confirm);    // Set the labels text
   }
   else if (DialogType == DIALOG_PAUSE_MESSAGE_PAUSING
         || DialogType == DIALOG_PAUSE_MESSAGE_CHANGING
@@ -251,28 +266,28 @@ void lv_draw_dialog(uint8_t type) {
     // nothing to do
   }
   else {
-    lv_obj_t * btnOk = lv_btn_create(scr, NULL);                     // Add a button the current screen
-    lv_obj_set_pos(btnOk, BTN_OK_X, BTN_OK_Y);                       // Set its position
-    lv_obj_set_size(btnOk, 100, 50);                                 // Set its size
+    lv_obj_t * btnOk = lv_btn_create(scr, NULL);                   // Add a button the current screen
+    lv_obj_set_pos(btnOk, BTN_OK_X, BTN_OK_Y);                     // Set its position
+    lv_obj_set_size(btnOk, 100, 50);                               // Set its size
     lv_obj_set_event_cb(btnOk, btn_ok_event_cb);
-    lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel);       // Set the button's released style
-    lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr);         // Set the button's pressed style
-    lv_obj_t * labelOk = lv_label_create(btnOk, NULL);               // Add a label to the button
+    lv_btn_set_style(btnOk, LV_BTN_STYLE_REL, &style_btn_rel);     // Set the button's released style
+    lv_btn_set_style(btnOk, LV_BTN_STYLE_PR, &style_btn_pr);       // Set the button's pressed style
+    lv_obj_t * labelOk = lv_label_create(btnOk, NULL);             // Add a label to the button
 
-    lv_obj_t * btnCancel = lv_btn_create(scr, NULL);                 // Add a button the current screen
-    lv_obj_set_pos(btnCancel, BTN_CANCEL_X, BTN_CANCEL_Y);           // Set its position
-    lv_obj_set_size(btnCancel, 100, 50);                             // Set its size
+    lv_obj_t * btnCancel = lv_btn_create(scr, NULL);               // Add a button the current screen
+    lv_obj_set_pos(btnCancel, BTN_CANCEL_X, BTN_CANCEL_Y);         // Set its position
+    lv_obj_set_size(btnCancel, 100, 50);                           // Set its size
     lv_obj_set_event_cb(btnCancel, btn_cancel_event_cb);
-    lv_btn_set_style(btnCancel, LV_BTN_STYLE_REL, &style_btn_rel);   // Set the button's released style
-    lv_btn_set_style(btnCancel, LV_BTN_STYLE_PR, &style_btn_pr);     // Set the button's pressed style
-    lv_obj_t * labelCancel = lv_label_create(btnCancel, NULL);       // Add a label to the button
+    lv_btn_set_style(btnCancel, LV_BTN_STYLE_REL, &style_btn_rel); // Set the button's released style
+    lv_btn_set_style(btnCancel, LV_BTN_STYLE_PR, &style_btn_pr);   // Set the button's pressed style
+    lv_obj_t * labelCancel = lv_label_create(btnCancel, NULL);     // Add a label to the button
 
     if (DialogType == DIALOG_PAUSE_MESSAGE_OPTION) {
-      lv_label_set_text(labelOk, pause_msg_menu.purgeMore);          // Set the labels text
+      lv_label_set_text(labelOk, pause_msg_menu.purgeMore);        // Set the labels text
       lv_label_set_text(labelCancel, pause_msg_menu.continuePrint);
     }
     else {
-      lv_label_set_text(labelOk, print_file_dialog_menu.confirm);    // Set the labels text
+      lv_label_set_text(labelOk, print_file_dialog_menu.confirm);  // Set the labels text
       lv_label_set_text(labelCancel, print_file_dialog_menu.cancle);
     }
   }
@@ -281,7 +296,7 @@ void lv_draw_dialog(uint8_t type) {
     lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
 
     lv_obj_t * labelFile = lv_label_create(scr, NULL);
-    lv_obj_set_style(labelFile, &tft_style_lable_rel);
+    lv_obj_set_style(labelFile, &tft_style_label_rel);
 
     lv_label_set_text(labelFile, list_file.long_name[sel_id]);
     lv_obj_align(labelFile, NULL, LV_ALIGN_CENTER, 0, -60);
@@ -338,8 +353,20 @@ void lv_draw_dialog(uint8_t type) {
     lv_label_set_text(labelDialog, pause_msg_menu.option);
     lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
   }
+  else if (DialogType == DIALOG_STORE_EEPROM_TIPS) {
+    lv_label_set_text(labelDialog, eeprom_menu.storeTips);
+    lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
+  }
+  else if (DialogType == DIALOG_READ_EEPROM_TIPS) {
+    lv_label_set_text(labelDialog, eeprom_menu.readTips);
+    lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
+  }
+  else if (DialogType == DIALOG_REVERT_EEPROM_TIPS) {
+    lv_label_set_text(labelDialog, eeprom_menu.revertTips);
+    lv_obj_align(labelDialog, NULL, LV_ALIGN_CENTER, 0, -20);
+  }
 }
 
 void lv_clear_dialog() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h
index f68b0f8443faf253bea980937f155d95bed95425..a5b829a2cf9474e7b778861ceb9f0d045f8188a5 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_dialog.h
@@ -30,7 +30,7 @@ extern "C" { /* C-declarations for C++ */
 #define DIALOG_TYPE_REPRINT_NO_FILE                  2
 
 #define DIALOG_TYPE_M80_FAIL                         3  //**
-#define DIALOG_TYPE_MESSEGE_ERR1                     4  //**
+#define DIALOG_TYPE_MESSAGE_ERR1                     4  //**
 
 #define DIALOG_TYPE_UPDATE_ESP_FIRMARE               5
 #define DIALOG_TYPE_UPDATE_ESP_DATA                  6
@@ -65,6 +65,10 @@ extern "C" { /* C-declarations for C++ */
 #define DIALOG_PAUSE_MESSAGE_HEATING                30
 #define DIALOG_PAUSE_MESSAGE_OPTION                 31
 
+#define DIALOG_STORE_EEPROM_TIPS                    32
+#define DIALOG_READ_EEPROM_TIPS                     33
+#define DIALOG_REVERT_EEPROM_TIPS                   34
+
 #define BTN_OK_X      100
 #define BTN_OK_Y      180
 #define BTN_CANCEL_X  280
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f340ca46322302b30790ec1a73c3d75b0c905039
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.cpp
@@ -0,0 +1,237 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_EEPROM_RETURN        1
+#define ID_EEPROM_STORE         2
+#define ID_EEPROM_STORE_ARROW   3
+#define ID_EEPROM_READ          4
+#define ID_EEPROM_READ_ARROW    5
+#define ID_EEPROM_REVERT        6
+#define ID_EEPROM_REVERT_ARROW  7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_EEPROM_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_eeprom_settings();
+        draw_return_ui();
+      }
+      break;
+
+    #if 0
+      case ID_EEPROM_STORE:
+        if (event == LV_EVENT_CLICKED) {
+
+        }
+        else if (event == LV_EVENT_RELEASED) {
+          lv_clear_eeprom_settings();
+          lv_draw_dialog(DIALOG_STORE_EEPROM_TIPS);
+        }
+        break;
+      case ID_EEPROM_STORE_ARROW:
+        if (event == LV_EVENT_CLICKED) {
+
+        }
+        else if (event == LV_EVENT_RELEASED) {
+          lv_clear_eeprom_settings();
+          lv_draw_dialog(DIALOG_STORE_EEPROM_TIPS);
+        }
+        break;
+      case ID_EEPROM_READ:
+        if (event == LV_EVENT_CLICKED) {
+
+        }
+        else if (event == LV_EVENT_RELEASED) {
+          lv_clear_eeprom_settings();
+          lv_draw_dialog(DIALOG_READ_EEPROM_TIPS);
+        }
+        break;
+      case ID_EEPROM_READ_ARROW:
+        if (event == LV_EVENT_CLICKED) {
+
+        }
+        else if (event == LV_EVENT_RELEASED) {
+          lv_clear_eeprom_settings();
+          lv_draw_dialog(DIALOG_READ_EEPROM_TIPS);
+        }
+        break;
+    #endif
+
+    case ID_EEPROM_REVERT:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_eeprom_settings();
+        lv_draw_dialog(DIALOG_REVERT_EEPROM_TIPS);
+      }
+      break;
+    case ID_EEPROM_REVERT_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_eeprom_settings();
+        lv_draw_dialog(DIALOG_REVERT_EEPROM_TIPS);
+      }
+      break;
+  }
+}
+
+void lv_draw_eeprom_settings(void) {
+  lv_obj_t *buttonBack, *label_Back;
+  //lv_obj_t *buttonStore,*labelStore,*buttonStoreNarrow;
+  //lv_obj_t *buttonRead,*labelRead,*buttonReadNarrow;
+  lv_obj_t *buttonRevert, *labelRevert, *buttonRevertNarrow;
+  lv_obj_t * line1; // * line2,* line3;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != EEPROM_SETTINGS_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = EEPROM_SETTINGS_UI;
+  }
+  disp_state = EEPROM_SETTINGS_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, creat_title_text());
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  LV_IMG_DECLARE(bmp_para_arrow);
+  #if 0
+    buttonStore = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+    lv_obj_set_pos(buttonStore, PARA_UI_POS_X, PARA_UI_POS_Y);                       /*Set its position*/
+    lv_obj_set_size(buttonStore, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);                     /*Set its size*/
+    //lv_obj_set_event_cb(buttonMachine, event_handler);
+    lv_obj_set_event_cb_mks(buttonStore, event_handler, ID_EEPROM_STORE, NULL, 0);
+    lv_btn_set_style(buttonStore, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonStore, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonStore, LV_LAYOUT_OFF);
+    labelStore = lv_label_create(buttonStore, NULL);      /*Add a label to the button*/
+
+    buttonStoreNarrow = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonStoreNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+    lv_obj_set_event_cb_mks(buttonStoreNarrow, event_handler, ID_EEPROM_STORE_ARROW, "bmp_arrow.bin", 0);
+    lv_imgbtn_set_src(buttonStoreNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+    lv_imgbtn_set_src(buttonStoreNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+    lv_imgbtn_set_style(buttonStoreNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonStoreNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonStoreNarrow, LV_LAYOUT_OFF);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonRead = lv_btn_create(scr, NULL); /*Add a button the current screen*/
+    lv_obj_set_pos(buttonRead, PARA_UI_POS_X, PARA_UI_POS_Y * 2);                     /*Set its position*/
+    lv_obj_set_size(buttonRead, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);                     /*Set its size*/
+    //lv_obj_set_event_cb(buttonMotor, event_handler);
+    lv_obj_set_event_cb_mks(buttonRead, event_handler, ID_EEPROM_READ, NULL, 0);
+    lv_btn_set_style(buttonRead, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonRead, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonRead, LV_LAYOUT_OFF);
+    labelRead = lv_label_create(buttonRead, NULL);      /*Add a label to the button*/
+
+    buttonReadNarrow = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonReadNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+    lv_obj_set_event_cb_mks(buttonReadNarrow, event_handler, ID_EEPROM_READ_ARROW, "bmp_arrow.bin", 0);
+    lv_imgbtn_set_src(buttonReadNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+    lv_imgbtn_set_src(buttonReadNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+    lv_imgbtn_set_style(buttonReadNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonReadNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonReadNarrow, LV_LAYOUT_OFF);
+
+    line2 = lv_line_create(scr, NULL);
+    lv_ex_line(line2, line_points[1]);
+  #endif // if 0
+  buttonRevert = lv_btn_create(scr, NULL);   /*Add a button the current screen*/
+  lv_obj_set_pos(buttonRevert, PARA_UI_POS_X, PARA_UI_POS_Y);                         /*Set its position*/
+  lv_obj_set_size(buttonRevert, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);                       /*Set its size*/
+  //lv_obj_set_event_cb(buttonMotor, event_handler);
+  lv_obj_set_event_cb_mks(buttonRevert, event_handler, ID_EEPROM_REVERT, NULL, 0);
+  lv_btn_set_style(buttonRevert, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonRevert, LV_BTN_STYLE_PR, &tft_style_label_pre);    /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonRevert, LV_LAYOUT_OFF);
+  labelRevert = lv_label_create(buttonRevert, NULL);        /*Add a label to the button*/
+
+  buttonRevertNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonRevertNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonRevertNarrow, event_handler, ID_EEPROM_REVERT_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonRevertNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonRevertNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonRevertNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonRevertNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonRevertNarrow, LV_LAYOUT_OFF);
+
+  //line3 = lv_line_create(scr, NULL);
+  //lv_ex_line(line3,line_points[2]);
+  line1 = lv_line_create(scr, NULL);
+  lv_ex_line(line1, line_points[0]);
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_EEPROM_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+    //lv_label_set_text(labelStore, eeprom_menu.store);
+    //lv_obj_align(labelStore, buttonStore, LV_ALIGN_IN_LEFT_MID,0, 0);
+
+    //lv_label_set_text(labelRead, eeprom_menu.read);
+    //lv_obj_align(labelRead, buttonRead, LV_ALIGN_IN_LEFT_MID,0, 0);
+
+    lv_label_set_text(labelRevert, eeprom_menu.revert);
+    lv_obj_align(labelRevert, buttonRevert, LV_ALIGN_IN_LEFT_MID, 0, 0);
+  }
+
+}
+
+void lv_clear_eeprom_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..da699353babd33e4d7d79bdbe2deeee4c355e19d
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_eeprom_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_eeprom_settings(void);
+extern void lv_clear_eeprom_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp
index f72cb2ab32fbe631f83234703fe6b34d83252c36..1bcdccda414a073c6218e89ac0de5749d1644b47 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_error_message.cpp
@@ -21,7 +21,11 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+  #include "SPI_TFT.h"
+#endif
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -55,30 +59,30 @@ void lv_draw_error_message(PGM_P const msg) {
 
     if (msg) {
       message = lv_label_create(scr, NULL);
-      lv_obj_set_style(message, &tft_style_lable_rel);
+      lv_obj_set_style(message, &tft_style_label_rel);
       lv_label_set_text(message, msg);
       lv_obj_align(message, NULL, LV_ALIGN_CENTER, 0, -50);
     }
 
     kill_message = lv_label_create(scr, NULL);
-    lv_obj_set_style(kill_message, &tft_style_lable_rel);
+    lv_obj_set_style(kill_message, &tft_style_label_rel);
     lv_label_set_text(kill_message, "PRINTER HALTED");
     lv_obj_align(kill_message, NULL, LV_ALIGN_CENTER, 0, -10);
 
     reset_tips = lv_label_create(scr, NULL);
-    lv_obj_set_style(reset_tips, &tft_style_lable_rel);
+    lv_obj_set_style(reset_tips, &tft_style_label_rel);
     lv_label_set_text(reset_tips, "Please Reset");
     lv_obj_align(reset_tips, NULL, LV_ALIGN_CENTER, 0, 30);
 
     lv_task_handler();
   #endif
-  LCD_Clear(0x0000);
+
+  TERN(TFT_LVGL_UI_SPI, SPI_TFT.LCD_clear, LCD_Clear)(0x0000);
   if (msg) disp_string((TFT_WIDTH - strlen(msg) * 16) / 2, 100, msg, 0xFFFF, 0x0000);
   disp_string((TFT_WIDTH - strlen("PRINTER HALTED") * 16) / 2, 140, "PRINTER HALTED", 0xFFFF, 0x0000);
   disp_string((TFT_WIDTH - strlen("Please Reset") * 16) / 2, 180, "Please Reset", 0xFFFF, 0x0000);
-
 }
 
 void lv_clear_error_message() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp
index 90a7ce64f6eb017ae32db048481be6098f2262ae..ca84b4b5ecdde97667b4210ae0ea16c11f31a9c4 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_extrusion.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -59,11 +59,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) {
-          queue.enqueue_one_now(PSTR("G91"));
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf((char *)public_buf_l, "G1 E%d F%d", uiCfg.extruStep, 60 * uiCfg.extruSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
-          queue.enqueue_one_now(PSTR("G90"));
+          queue.enqueue_now_P(PSTR("G91"));
+          ZERO(public_buf_l);
+          sprintf_P((char *)public_buf_l, PSTR("G1 E%d F%d"), uiCfg.extruStep, 60 * uiCfg.extruSpeed);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G90"));
           extructAmount += uiCfg.extruStep;
           disp_extru_amount();
         }
@@ -75,11 +75,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius >= EXTRUDE_MINTEMP) {
-          queue.enqueue_one_now(PSTR("G91"));
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf((char *)public_buf_l, "G1 E%d F%d", 0 - uiCfg.extruStep, 60 * uiCfg.extruSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
-          queue.enqueue_one_now(PSTR("G90"));
+          queue.enqueue_now_P(PSTR("G91"));
+          ZERO(public_buf_l);
+          sprintf_P((char *)public_buf_l, PSTR("G1 E%d F%d"), 0 - uiCfg.extruStep, 60 * uiCfg.extruSpeed);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G90"));
           extructAmount -= uiCfg.extruStep;
           disp_extru_amount();
         }
@@ -166,7 +166,7 @@ void lv_draw_extrusion(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -175,55 +175,54 @@ void lv_draw_extrusion(void) {
   LV_IMG_DECLARE(bmp_pic);
 
   /*Create an Image button*/
-  buttonAdd = lv_imgbtn_create(scr, NULL);
-  buttonDec = lv_imgbtn_create(scr, NULL);
-  buttoType = lv_imgbtn_create(scr, NULL);
-  buttonStep = lv_imgbtn_create(scr, NULL);
+  buttonAdd   = lv_imgbtn_create(scr, NULL);
+  buttonDec   = lv_imgbtn_create(scr, NULL);
+  buttoType   = lv_imgbtn_create(scr, NULL);
+  buttonStep  = lv_imgbtn_create(scr, NULL);
   buttonSpeed = lv_imgbtn_create(scr, NULL);
-  buttonBack = lv_imgbtn_create(scr, NULL);
+  buttonBack  = lv_imgbtn_create(scr, NULL);
 
-  lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_E_ADD, "bmp_In.bin", 0);
+  lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_E_ADD, "bmp_in.bin", 0);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
-
   #if 1
-    lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_E_DEC, "bmp_Out.bin", 0);
+    lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_E_DEC, "bmp_out.bin", 0);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_imgbtn_set_src(buttoType, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttoType, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_E_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_E_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
 
   lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
-  lv_obj_set_pos(buttoType, INTERVAL_V,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   lv_obj_set_pos(buttonStep, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 2 + INTERVAL_V * 3,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF);
@@ -235,8 +234,8 @@ void lv_draw_extrusion(void) {
 
   lv_obj_t * labelAdd = lv_label_create(buttonAdd, NULL);
   lv_obj_t * labelDec = lv_label_create(buttonDec, NULL);
-  labelType = lv_label_create(buttoType, NULL);
-  labelStep = lv_label_create(buttonStep, NULL);
+  labelType  = lv_label_create(buttoType, NULL);
+  labelStep  = lv_label_create(buttonStep, NULL);
   labelSpeed = lv_label_create(buttonSpeed, NULL);
   lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
 
@@ -256,24 +255,24 @@ void lv_draw_extrusion(void) {
   disp_ext_speed();
 
   tempText = lv_label_create(scr, NULL);
-  lv_obj_set_style(tempText, &tft_style_lable_rel);
+  lv_obj_set_style(tempText, &tft_style_label_rel);
   disp_hotend_temp();
 
   ExtruText = lv_label_create(scr, NULL);
-  lv_obj_set_style(ExtruText, &tft_style_lable_rel);
+  lv_obj_set_style(ExtruText, &tft_style_label_rel);
   disp_extru_amount();
 }
 
 void disp_ext_type() {
   if (uiCfg.curSprayerChoose == 1) {
-    lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_Extru2.bin", 0);
+    lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_extru2.bin", 0);
     if (gCfgItems.multiple_language != 0) {
       lv_label_set_text(labelType, extrude_menu.ext2);
       lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
     }
   }
   else {
-    lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_Extru1.bin", 0);
+    lv_obj_set_event_cb_mks(buttoType, event_handler, ID_E_TYPE, "bmp_extru1.bin", 0);
     if (gCfgItems.multiple_language != 0) {
       lv_label_set_text(labelType, extrude_menu.ext1);
       lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -283,11 +282,11 @@ void disp_ext_type() {
 
 void disp_ext_speed() {
   if (uiCfg.extruSpeed == 20)
-    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_high.bin", 0);
+    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_speed_high.bin", 0);
   else if (uiCfg.extruSpeed == 1)
-    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_slow.bin", 0);
+    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_speed_slow.bin", 0);
   else
-    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_Speed_normal.bin", 0);
+    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_E_SPEED, "bmp_speed_normal.bin", 0);
 
   if (gCfgItems.multiple_language != 0) {
     if (uiCfg.extruSpeed == 20) {
@@ -351,11 +350,11 @@ void disp_extru_amount() {
 
 void disp_ext_step() {
   if (uiCfg.extruStep == 1)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step1_mm.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_step1_mm.bin", 0);
   else if (uiCfg.extruStep == 5)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step5_mm.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_step5_mm.bin", 0);
   else if (uiCfg.extruStep == 10)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_Step10_mm.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_E_STEP, "bmp_step10_mm.bin", 0);
 
   if (gCfgItems.multiple_language != 0) {
     if (uiCfg.extruStep == 1) {
@@ -375,4 +374,4 @@ void disp_ext_step() {
 
 void lv_clear_extrusion() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp
index 76c0e251e866ed3843d348f0c68b54e852548f98..4dcac62aeefd341b12d80a0a3eea6d48a60ac5ae 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_fan.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 #include "lv_conf.h"
@@ -33,6 +33,7 @@
 #include "draw_ui.h"
 #include "../../../../module/temperature.h"
 #include "../../../../gcode/queue.h"
+#include "../../../../gcode/gcode.h"
 
 static lv_obj_t * scr;
 static lv_obj_t * fanText;
@@ -55,9 +56,9 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (fanSpeed + 1 <= 255) {
           fanSpeed++;
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf(public_buf_l, "M106 S%d", fanSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("M106 S%d"), fanSpeed);
+          gcode.process_subcommands_now(public_buf_l);
         }
       }
       break;
@@ -68,9 +69,9 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (fanSpeed > 0) {
           fanSpeed--;
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf(public_buf_l, "M106 S%d", fanSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("M106 S%d"), fanSpeed);
+          gcode.process_subcommands_now(public_buf_l);
         }
       }
 
@@ -80,7 +81,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        queue.enqueue_one_now(PSTR("M106 S255"));
+        gcode.process_subcommands_now_P(PSTR("M106 S255"));
       }
       break;
     case ID_F_MID:
@@ -88,7 +89,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        queue.enqueue_one_now(PSTR("M106 S127"));
+        gcode.process_subcommands_now_P(PSTR("M106 S127"));
       }
       break;
     case ID_F_OFF:
@@ -96,7 +97,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        queue.enqueue_one_now(PSTR("M107"));
+        gcode.process_subcommands_now_P(PSTR("M107"));
       }
       break;
     case ID_F_RETURN:
@@ -111,11 +112,13 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
   }
 }
 
-
 void lv_draw_fan(void) {
   lv_obj_t *buttonAdd, *buttonDec, *buttonHigh, *buttonMid;
   lv_obj_t *buttonOff, *buttonBack;
 
+  #if HAS_FAN
+    fanSpeed = thermalManager.fan_speed[0];
+  #endif
   if (disp_state_stack._disp_state[disp_state_stack._disp_index] != FAN_UI) {
     disp_state_stack._disp_index++;
     disp_state_stack._disp_state[disp_state_stack._disp_index] = FAN_UI;
@@ -129,7 +132,7 @@ void lv_draw_fan(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -148,39 +151,39 @@ void lv_draw_fan(void) {
   lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_F_ADD, "bmp_Add.bin", 0);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
   #if 1
     lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_F_DEC, "bmp_Dec.bin", 0);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonHigh, event_handler, ID_F_HIGH, "bmp_Speed255.bin", 0);
+    lv_obj_set_event_cb_mks(buttonHigh, event_handler,ID_F_HIGH,"bmp_speed255.bin",0);
     lv_imgbtn_set_src(buttonHigh, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonHigh, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonHigh, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonMid, event_handler, ID_F_MID, "bmp_Speed127.bin", 0);
+    lv_obj_set_event_cb_mks(buttonMid, event_handler,ID_F_MID,"bmp_speed127.bin",0);
     lv_imgbtn_set_src(buttonMid, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonMid, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonMid, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_F_OFF, "bmp_Speed0.bin", 0);
+    lv_obj_set_event_cb_mks(buttonOff, event_handler,ID_F_OFF,"bmp_speed0.bin",0);
     lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_F_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler,ID_F_RETURN,"bmp_return.bin",0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
 
   lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
@@ -227,7 +230,7 @@ void lv_draw_fan(void) {
   }
 
   fanText = lv_label_create(scr, NULL);
-  lv_obj_set_style(fanText, &tft_style_lable_rel);
+  lv_obj_set_style(fanText, &tft_style_label_rel);
   disp_fan_value();
 }
 
@@ -235,8 +238,8 @@ void disp_fan_value() {
   char buf1[10] = {0};
   public_buf_l[0] = '\0';
   strcat(public_buf_l, fan_menu.state);
-  strcat(public_buf_l, ": ");
-  sprintf(buf1, "%3d", thermalManager.fan_speed[0]);
+  strcat_P(public_buf_l, PSTR(": "));
+  sprintf_P(buf1, PSTR("%3d"), thermalManager.fan_speed[0]);
   strcat(public_buf_l, buf1);
   lv_label_set_text(fanText, public_buf_l);
   lv_obj_align(fanText, NULL, LV_ALIGN_CENTER, 0, -65);
@@ -244,4 +247,4 @@ void disp_fan_value() {
 
 void lv_clear_fan() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp
index f6ad744b41806bfe2091fb6cc922b913cd393a92..35d442ebae76cf00deaf680418adf43528a15ebc 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_home.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 #include "draw_ready_print.h"
@@ -48,8 +48,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
   switch (obj->mks_obj_id) {
     case ID_H_ALL:
       if (event == LV_EVENT_CLICKED) {
-
-
       }
       else if (event == LV_EVENT_RELEASED) {
         queue.inject_P(PSTR("G28"));
@@ -57,8 +55,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       break;
     case ID_H_X:
       if (event == LV_EVENT_CLICKED) {
-
-
       }
       else if (event == LV_EVENT_RELEASED) {
         queue.inject_P(PSTR("G28 X0"));
@@ -66,8 +62,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       break;
     case ID_H_Y:
       if (event == LV_EVENT_CLICKED) {
-
-
       }
       else if (event == LV_EVENT_RELEASED) {
         queue.inject_P(PSTR("G28 Y0"));
@@ -75,8 +69,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       break;
     case ID_H_Z:
       if (event == LV_EVENT_CLICKED) {
-
-
       }
       else if (event == LV_EVENT_RELEASED) {
         queue.inject_P(PSTR("G28 Z0"));
@@ -84,8 +76,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       break;
     case ID_H_OFF_ALL:
       if (event == LV_EVENT_CLICKED) {
-
-
       }
       else if (event == LV_EVENT_RELEASED) {
         queue.inject_P(PSTR("M84"));
@@ -93,8 +83,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       break;
     case ID_H_OFF_XY:
       if (event == LV_EVENT_CLICKED) {
-
-
       }
       else if (event == LV_EVENT_RELEASED) {
         queue.inject_P(PSTR("M84 X Y"));
@@ -102,7 +90,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       break;
     case ID_H_RETURN:
       if (event == LV_EVENT_CLICKED) {
-
       }
       else if (event == LV_EVENT_RELEASED) {
         lv_obj_del(scr);
@@ -113,7 +100,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
   }
 }
 
-
 void lv_draw_home(void) {
   lv_obj_t *buttonHomeAll, *buttonHomeX, *buttonHomeY, *buttonHomeZ;
   lv_obj_t *buttonBack;
@@ -134,7 +120,7 @@ void lv_draw_home(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -156,67 +142,68 @@ void lv_draw_home(void) {
   //lv_obj_set_event_cb_mks(buttonWifi, event_handler,ID_S_WIFI,"bmp_Wifi.bin",0);
   //lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_REL, &bmp_pic);
   //lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_PR, &bmp_pic);
-  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_label_pre);
+  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_label_rel);
   //lv_obj_clear_protect(buttonWifi, LV_PROTECT_FOLLOW);
   #if 1
-    lv_obj_set_event_cb_mks(buttonHomeAll, event_handler, ID_H_ALL, "bmp_Zero.bin", 0);
+    lv_obj_set_event_cb_mks(buttonHomeAll, event_handler,ID_H_ALL,"bmp_zero.bin",0);
     lv_imgbtn_set_src(buttonHomeAll, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonHomeAll, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonHomeAll, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_obj_set_event_cb_mks(buttonHomeX, event_handler, ID_H_X, "bmp_zeroX.bin", 0);
     lv_imgbtn_set_src(buttonHomeX, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonHomeX, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonHomeX, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     //lv_obj_set_event_cb_mks(buttonContinue, event_handler,ID_S_CONTINUE,"bmp_Breakpoint.bin",0);
     //lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_REL, &bmp_pic);
     //lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_PR, &bmp_pic);
-    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_label_pre);
+    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_obj_set_event_cb_mks(buttonHomeY, event_handler, ID_H_Y, "bmp_zeroY.bin", 0);
     lv_imgbtn_set_src(buttonHomeY, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonHomeY, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonHomeY, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_obj_set_event_cb_mks(buttonHomeZ, event_handler, ID_H_Z, "bmp_zeroZ.bin", 0);
     lv_imgbtn_set_src(buttonHomeZ, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonHomeZ, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonHomeZ, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonOffAll, event_handler, ID_H_OFF_ALL, "bmp_manual_off.bin", 0);
+    lv_obj_set_event_cb_mks(buttonOffAll, event_handler,ID_H_OFF_ALL,"bmp_function1.bin",0);
     lv_imgbtn_set_src(buttonOffAll, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonOffAll, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonOffAll, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonOffXY, event_handler, ID_H_OFF_XY, "bmp_manual_off.bin", 0);
+    lv_obj_set_event_cb_mks(buttonOffXY, event_handler,ID_H_OFF_XY,"bmp_function1.bin",0);
     lv_imgbtn_set_src(buttonOffXY, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonOffXY, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonOffXY, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_H_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler,ID_H_RETURN,"bmp_return.bin",0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
-         /*lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
-         lv_obj_set_pos(buttonFan,BTN_X_PIXEL+INTERVAL_V*2,titleHeight);
-         lv_obj_set_pos(buttonAbout,BTN_X_PIXEL*2+INTERVAL_V*3,titleHeight);
-         lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
-         lv_obj_set_pos(buMotorOff,INTERVAL_V,  BTN_Y_PIXEL+INTERVAL_H+titleHeight);
-         lv_obj_set_pos(buttonLanguage,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
-         lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4,  BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
-
-  //lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
+
+  /*lv_obj_set_pos(buttonWifi, INTERVAL_V, titleHeight);
+  lv_obj_set_pos(buttonFan, BTN_X_PIXEL+INTERVAL_V*2, titleHeight);
+  lv_obj_set_pos(buttonAbout, BTN_X_PIXEL*2+INTERVAL_V*3, titleHeight);
+  lv_obj_set_pos(buttonContinue, BTN_X_PIXEL*3+INTERVAL_V*4, titleHeight);
+  lv_obj_set_pos(buMotorOff, INTERVAL_V,  BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+  lv_obj_set_pos(buttonLanguage, BTN_X_PIXEL+INTERVAL_V*2, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
+
+  //lv_obj_set_pos(buttonWifi, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonHomeX, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
   lv_obj_set_pos(buttonHomeY, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
   //lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
@@ -280,4 +267,4 @@ void lv_draw_home(void) {
 
 void lv_clear_home() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..a552762cf3eb606d7b075f628a7bda817408222b
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.cpp
@@ -0,0 +1,263 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if BOTH(HAS_TFT_LVGL_UI, HAS_CLASSIC_JERK)
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_JERK_RETURN  1
+#define ID_JERK_X       2
+#define ID_JERK_Y       3
+#define ID_JERK_Z       4
+#define ID_JERK_E       5
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_JERK_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_jerk_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_JERK_X:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = XJerk;
+        lv_clear_jerk_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_JERK_Y:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = YJerk;
+        lv_clear_jerk_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_JERK_Z:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = ZJerk;
+        lv_clear_jerk_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_JERK_E:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = EJerk;
+        lv_clear_jerk_settings();
+        lv_draw_number_key();
+      }
+      break;
+  }
+}
+
+void lv_draw_jerk_settings(void) {
+  lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+  lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+  lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+  lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+  lv_obj_t *buttonEText = NULL, *labelEText = NULL, *buttonEValue = NULL, *labelEValue = NULL;
+  lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != JERK_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = JERK_UI;
+  }
+  disp_state = JERK_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.JerkConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  // LV_IMG_DECLARE(bmp_para_arrow);
+  LV_IMG_DECLARE(bmp_para_bank);
+
+  buttonXText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+  lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+  lv_obj_set_event_cb(buttonXText, event_handler);
+  lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+  labelXText = lv_label_create(buttonXText, NULL);                        /*Add a label to the button*/
+
+  buttonXValue = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+  lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_JERK_X, "bmp_value_blank.bin", 0);
+  lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+  lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+  lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+  lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+  lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+  labelXValue = lv_label_create(buttonXValue, NULL);
+
+  line1 = lv_line_create(scr, NULL);
+  lv_ex_line(line1, line_points[0]);
+
+  buttonYText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+  lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+  lv_obj_set_event_cb(buttonYText, event_handler);
+  lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+  labelYText = lv_label_create(buttonYText, NULL);                        /*Add a label to the button*/
+
+  buttonYValue = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+  lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_JERK_Y, "bmp_value_blank.bin", 0);
+  lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+  lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+  lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+  lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+  lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+  labelYValue = lv_label_create(buttonYValue, NULL);
+
+  line2 = lv_line_create(scr, NULL);
+  lv_ex_line(line2, line_points[1]);
+
+  buttonZText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3);          /*Set its position*/
+  lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+  lv_obj_set_event_cb(buttonZText, event_handler);
+  lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+  labelZText = lv_label_create(buttonZText, NULL);                        /*Add a label to the button*/
+
+  buttonZValue = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+  lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_JERK_Z, "bmp_value_blank.bin", 0);
+  lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+  lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+  lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+  lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+  lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+  labelZValue = lv_label_create(buttonZValue, NULL);
+
+  line3 = lv_line_create(scr, NULL);
+  lv_ex_line(line3, line_points[2]);
+
+  buttonEText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonEText, PARA_UI_POS_X, PARA_UI_POS_Y * 4);          /*Set its position*/
+  lv_obj_set_size(buttonEText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+  lv_obj_set_event_cb(buttonEText, event_handler);
+  lv_btn_set_style(buttonEText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonEText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonEText, LV_LAYOUT_OFF);
+  labelEText = lv_label_create(buttonEText, NULL);                        /*Add a label to the button*/
+
+  buttonEValue = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonEValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+  lv_obj_set_event_cb_mks(buttonEValue, event_handler, ID_JERK_E, "bmp_value_blank.bin", 0);
+  lv_imgbtn_set_src(buttonEValue, LV_BTN_STATE_REL, &bmp_para_bank);
+  lv_imgbtn_set_src(buttonEValue, LV_BTN_STATE_PR, &bmp_para_bank);
+  lv_imgbtn_set_style(buttonEValue, LV_BTN_STATE_PR, &style_para_value_pre);
+  lv_imgbtn_set_style(buttonEValue, LV_BTN_STATE_REL, &style_para_value_rel);
+  lv_btn_set_layout(buttonEValue, LV_LAYOUT_OFF);
+  labelEValue = lv_label_create(buttonEValue, NULL);
+
+  line4 = lv_line_create(scr, NULL);
+  lv_ex_line(line4, line_points[3]);
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_JERK_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    ZERO(public_buf_l);
+    sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[X_AXIS]);
+    lv_label_set_text(labelXValue, public_buf_l);
+    lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+    ZERO(public_buf_l);
+    sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[Y_AXIS]);
+    lv_label_set_text(labelYValue, public_buf_l);
+    lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+    ZERO(public_buf_l);
+    sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[Z_AXIS]);
+    lv_label_set_text(labelZValue, public_buf_l);
+    lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+    ZERO(public_buf_l);
+    sprintf_P(public_buf_l, PSTR("%.1f"), planner.max_jerk[E_AXIS]);
+    lv_label_set_text(labelEValue, public_buf_l);
+    lv_obj_align(labelEValue, buttonEValue, LV_ALIGN_CENTER, 0, 0);
+
+    lv_label_set_text(labelXText, machine_menu.X_Jerk);
+    lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelYText, machine_menu.Y_Jerk);
+    lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelZText, machine_menu.Z_Jerk);
+    lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelEText, machine_menu.E_Jerk);
+    lv_obj_align(labelEText, buttonEText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+  }
+}
+
+void lv_clear_jerk_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI && HAS_CLASSIC_JERK
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..5badcde5293237571533d05a3fb25a302b774b1e
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_jerk_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_jerk_settings(void);
+extern void lv_clear_jerk_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp
index 75fbb4d91f9f0cda9aca49345fa3527bb0398564..65d0961248ed52f0d2dbdf32f230eba42492ad95 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_language.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -35,17 +35,17 @@
 
 //static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
 
-#define ID_CN                           1
-#define ID_T_CN                         2
-#define ID_EN                           3
-#define ID_RU                           4
-#define ID_ES                           5
-#define ID_FR                           6
-#define ID_IT                           7
-#define ID_L_RETURN                     8
+#define ID_CN       1
+#define ID_T_CN     2
+#define ID_EN       3
+#define ID_RU       4
+#define ID_ES       5
+#define ID_FR       6
+#define ID_IT       7
+#define ID_L_RETURN 8
 
-#define SELECTED                        1
-#define UNSELECTED                      0
+#define SELECTED    1
+#define UNSELECTED  0
 
 static void disp_language(uint8_t language, uint8_t state);
 
@@ -85,7 +85,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         disp_language(gCfgItems.language, UNSELECTED);
-        lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_English_sel.bin", 0);
+        lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_english_sel.bin", 0);
         gCfgItems.language = LANG_ENGLISH;
         gCfg_to_spiFlah();
         disp_language_init();
@@ -97,7 +97,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         disp_language(gCfgItems.language, UNSELECTED);
-        lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_Russian_sel.bin", 0);
+        lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_russian_sel.bin", 0);
         gCfgItems.language = LANG_RUSSIAN;
         gCfg_to_spiFlah();
         disp_language_init();
@@ -109,7 +109,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         disp_language(gCfgItems.language, UNSELECTED);
-        lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_Spanish_sel.bin", 0);
+        lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_spanish_sel.bin", 0);
         gCfgItems.language = LANG_SPANISH;
         gCfg_to_spiFlah();
         disp_language_init();
@@ -121,7 +121,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         disp_language(gCfgItems.language, UNSELECTED);
-        lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_French_sel.bin", 0);
+        lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_french_sel.bin", 0);
         gCfgItems.language = LANG_FRENCH;
         gCfg_to_spiFlah();
         disp_language_init();
@@ -133,7 +133,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         disp_language(gCfgItems.language, UNSELECTED);
-        lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_FR, "bmp_Italy_sel.bin", 0);
+        lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_FR, "bmp_italy_sel.bin", 0);
         gCfgItems.language = LANG_ITALY;
         gCfg_to_spiFlah();
         disp_language_init();
@@ -145,14 +145,14 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
 
-        buttonCN = NULL;
+        buttonCN   = NULL;
         buttonT_CN = NULL;
-        buttonEN = NULL;
-        buttonRU = NULL;
-        buttonES = NULL;
-        buttonFR = NULL;
-        buttonFR = NULL;
-        buttonIT = NULL;
+        buttonEN   = NULL;
+        buttonRU   = NULL;
+        buttonES   = NULL;
+        buttonFR   = NULL;
+        buttonFR   = NULL;
+        buttonIT   = NULL;
         buttonBack = NULL;
 
         lv_obj_del(scr);
@@ -170,52 +170,51 @@ static void disp_language(uint8_t language, uint8_t state) {
   public_buf_l[0] = '\0';
 
   switch (language) {
-
     case LANG_SIMPLE_CHINESE:
       id = ID_CN;
-      strcat(public_buf_l, "bmp_Simple_cn");
+      strcpy_P(public_buf_l, PSTR("bmp_simplified_cn"));
       obj = buttonCN;
-
       break;
     case LANG_COMPLEX_CHINESE:
       id = ID_T_CN;
-      strcat(public_buf_l, "bmp_Tradition_cn");
+      strcpy_P(public_buf_l, PSTR("bmp_traditional_cn"));
       obj = buttonT_CN;
       break;
     case LANG_ENGLISH:
       id = ID_EN;
-      strcat(public_buf_l, "bmp_English");
+      strcpy_P(public_buf_l, PSTR("bmp_english"));
       obj = buttonEN;
       break;
     case LANG_RUSSIAN:
       id = ID_RU;
-      strcat(public_buf_l, "bmp_Russian");
+      strcpy_P(public_buf_l, PSTR("bmp_russian"));
       obj = buttonRU;
       break;
     case LANG_SPANISH:
       id = ID_ES;
-      strcat(public_buf_l, "bmp_Spanish");
+      strcpy_P(public_buf_l, PSTR("bmp_spanish"));
       obj = buttonES;
       break;
     case LANG_FRENCH:
       id = ID_FR;
-      strcat(public_buf_l, "bmp_French");
+      strcpy_P(public_buf_l, PSTR("bmp_french"));
       obj = buttonFR;
       break;
     case LANG_ITALY:
       id = ID_IT;
-      strcat(public_buf_l, "bmp_Italy");
+      strcpy_P(public_buf_l, PSTR("bmp_italy"));
       obj = buttonIT;
       break;
     default:
       id = ID_CN;
-      strcat(public_buf_l, "bmp_Simple_cn");
+      strcpy_P(public_buf_l, PSTR("bmp_simplified_cn"));
       obj = buttonCN;
       break;
   }
 
-  if (state == SELECTED) strcat(public_buf_l, "_sel.bin");
-  else strcat(public_buf_l, ".bin");
+  if (state == SELECTED) strcat_P(public_buf_l, PSTR("_sel"));
+
+  strcat_P(public_buf_l, PSTR(".bin"));
 
   lv_obj_set_event_cb_mks(obj, event_handler, id, public_buf_l, 0);
 
@@ -232,14 +231,14 @@ void lv_draw_language(void) {
 
   scr = lv_obj_create(NULL, NULL);
 
-  //static lv_style_t tool_style;
+  // static lv_style_t tool_style;
 
   lv_obj_set_style(scr, &tft_style_scr);
   lv_scr_load(scr);
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -248,74 +247,73 @@ void lv_draw_language(void) {
   LV_IMG_DECLARE(bmp_pic);
 
   /*Create an Image button*/
-  buttonCN = lv_imgbtn_create(scr, NULL);
+  buttonCN   = lv_imgbtn_create(scr, NULL);
   buttonT_CN = lv_imgbtn_create(scr, NULL);
-  buttonEN = lv_imgbtn_create(scr, NULL);
-  buttonRU = lv_imgbtn_create(scr, NULL);
-  buttonES = lv_imgbtn_create(scr, NULL);
-  buttonFR = lv_imgbtn_create(scr, NULL);
-  buttonIT = lv_imgbtn_create(scr, NULL);
+  buttonEN   = lv_imgbtn_create(scr, NULL);
+  buttonRU   = lv_imgbtn_create(scr, NULL);
+  buttonES   = lv_imgbtn_create(scr, NULL);
+  buttonFR   = lv_imgbtn_create(scr, NULL);
+  buttonIT   = lv_imgbtn_create(scr, NULL);
   buttonBack = lv_imgbtn_create(scr, NULL);
 
-
   lv_obj_set_event_cb_mks(buttonCN, event_handler, ID_CN, "bmp_simplified_cn.bin", 0);
   lv_imgbtn_set_src(buttonCN, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonCN, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonCN, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonCN, LV_PROTECT_FOLLOW);
   #if 1
     lv_obj_set_event_cb_mks(buttonT_CN, event_handler, ID_T_CN, "bmp_traditional_cn.bin", 0);
     lv_imgbtn_set_src(buttonT_CN, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonT_CN, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonT_CN, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_English.bin", 0);
+    lv_obj_set_event_cb_mks(buttonEN, event_handler, ID_EN, "bmp_english.bin", 0);
     lv_imgbtn_set_src(buttonEN, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonEN, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonEN, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_Russian.bin", 0);
+    lv_obj_set_event_cb_mks(buttonRU, event_handler, ID_RU, "bmp_russian.bin", 0);
     lv_imgbtn_set_src(buttonRU, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonRU, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonRU, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_Spanish.bin", 0);
+    lv_obj_set_event_cb_mks(buttonES, event_handler, ID_ES, "bmp_spanish.bin", 0);
     lv_imgbtn_set_src(buttonES, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonES, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonES, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonES, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonES, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonES, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_French.bin", 0);
+    lv_obj_set_event_cb_mks(buttonFR, event_handler, ID_FR, "bmp_french.bin", 0);
     lv_imgbtn_set_src(buttonFR, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonFR, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonFR, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_IT, "bmp_Italy.bin", 0);
+    lv_obj_set_event_cb_mks(buttonIT, event_handler, ID_IT, "bmp_italy.bin", 0);
     lv_imgbtn_set_src(buttonIT, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonIT, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonIT, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_L_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_L_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  #endif
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+  #endif // if 1
 
   lv_obj_set_pos(buttonCN, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonT_CN, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
   lv_obj_set_pos(buttonEN, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
   lv_obj_set_pos(buttonRU, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
-  lv_obj_set_pos(buttonES, INTERVAL_V,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonES, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   lv_obj_set_pos(buttonFR, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonIT, BTN_X_PIXEL * 2 + INTERVAL_V * 3,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonIT, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonCN, LV_LAYOUT_OFF);
@@ -327,13 +325,13 @@ void lv_draw_language(void) {
   lv_btn_set_layout(buttonIT, LV_LAYOUT_OFF);
   lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
 
-  lv_obj_t * label_CN = lv_label_create(buttonCN, NULL);
+  lv_obj_t * label_CN   = lv_label_create(buttonCN, NULL);
   lv_obj_t * label_T_CN = lv_label_create(buttonT_CN, NULL);
-  lv_obj_t * label_EN = lv_label_create(buttonEN, NULL);
-  lv_obj_t * label_RU = lv_label_create(buttonRU, NULL);
-  lv_obj_t * label_ES = lv_label_create(buttonES, NULL);
-  lv_obj_t * label_FR = lv_label_create(buttonFR, NULL);
-  lv_obj_t * label_IT = lv_label_create(buttonIT, NULL);
+  lv_obj_t * label_EN   = lv_label_create(buttonEN, NULL);
+  lv_obj_t * label_RU   = lv_label_create(buttonRU, NULL);
+  lv_obj_t * label_ES   = lv_label_create(buttonES, NULL);
+  lv_obj_t * label_FR   = lv_label_create(buttonFR, NULL);
+  lv_obj_t * label_IT   = lv_label_create(buttonIT, NULL);
   lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
 
   disp_language(gCfgItems.language, SELECTED);
@@ -367,4 +365,4 @@ void lv_draw_language(void) {
 
 void lv_clear_language() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..af16367b651dfa41fc1d111aba4055bf512b1b8e
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.cpp
@@ -0,0 +1,232 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_PARA_RETURN        1
+#define ID_PARA_MACHINE       2
+#define ID_PARA_MACHINE_ARROW 3
+#define ID_PARA_MOTOR         4
+#define ID_PARA_MOTOR_ARROW   5
+#define ID_PARA_ADVANCE       6
+#define ID_PARA_ADVANCE_ARROW 7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_PARA_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_para();
+        draw_return_ui();
+      }
+      break;
+    case ID_PARA_MACHINE:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_para();
+        lv_draw_machine_settings();
+      }
+      break;
+    case ID_PARA_MACHINE_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_para();
+        lv_draw_machine_settings();
+      }
+      break;
+    case ID_PARA_MOTOR:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_para();
+        lv_draw_motor_settings();
+      }
+      break;
+    case ID_PARA_MOTOR_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_para();
+        lv_draw_motor_settings();
+      }
+      break;
+    case ID_PARA_ADVANCE:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_para();
+        lv_draw_advance_settings();
+      }
+      break;
+    case ID_PARA_ADVANCE_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_para();
+        lv_draw_advance_settings();
+      }
+      break;
+  }
+}
+
+void lv_draw_machine_para(void) {
+  lv_obj_t *buttonBack, *label_Back;
+  lv_obj_t *buttonMachine, *labelMachine, *buttonMachineNarrow;
+  lv_obj_t *buttonMotor, *labelMotor, *buttonMotorNarrow;
+  lv_obj_t *buttonAdvance, *labelAdvance, *buttonAdvanceNarrow;
+  lv_obj_t * line1, * line2, * line3;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MACHINE_PARA_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = MACHINE_PARA_UI;
+  }
+  disp_state = MACHINE_PARA_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, creat_title_text());
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  LV_IMG_DECLARE(bmp_para_arrow);
+
+  buttonMachine = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonMachine, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+  lv_obj_set_size(buttonMachine, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);           /*Set its size*/
+  // lv_obj_set_event_cb(buttonMachine, event_handler);
+  lv_obj_set_event_cb_mks(buttonMachine, event_handler, ID_PARA_MACHINE, NULL, 0);
+  lv_btn_set_style(buttonMachine, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonMachine, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonMachine, LV_LAYOUT_OFF);
+  labelMachine = lv_label_create(buttonMachine, NULL);                      /*Add a label to the button*/
+
+  buttonMachineNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonMachineNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonMachineNarrow, event_handler, ID_PARA_MACHINE_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonMachineNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonMachineNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonMachineNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonMachineNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonMachineNarrow, LV_LAYOUT_OFF);
+
+  line1 = lv_line_create(scr, NULL);
+  lv_ex_line(line1, line_points[0]);
+
+  buttonMotor = lv_btn_create(scr, NULL);                                   /*Add a button the current screen*/
+  lv_obj_set_pos(buttonMotor, PARA_UI_POS_X, PARA_UI_POS_Y * 2);            /*Set its position*/
+  lv_obj_set_size(buttonMotor, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);             /*Set its size*/
+  // lv_obj_set_event_cb(buttonMotor, event_handler);
+  lv_obj_set_event_cb_mks(buttonMotor, event_handler, ID_PARA_MOTOR, NULL, 0);
+  lv_btn_set_style(buttonMotor, LV_BTN_STYLE_REL, &tft_style_label_rel);    /*Set the button's released style*/
+  lv_btn_set_style(buttonMotor, LV_BTN_STYLE_PR, &tft_style_label_pre);     /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonMotor, LV_LAYOUT_OFF);
+  labelMotor = lv_label_create(buttonMotor, NULL);                          /*Add a label to the button*/
+
+  buttonMotorNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonMotorNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonMotorNarrow, event_handler, ID_PARA_MOTOR_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonMotorNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonMotorNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonMotorNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonMotorNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonMotorNarrow, LV_LAYOUT_OFF);
+
+  line2 = lv_line_create(scr, NULL);
+  lv_ex_line(line2, line_points[1]);
+
+  buttonAdvance = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonAdvance, PARA_UI_POS_X, PARA_UI_POS_Y * 3);          /*Set its position*/
+  lv_obj_set_size(buttonAdvance, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);           /*Set its size*/
+  // lv_obj_set_event_cb(buttonMotor, event_handler);
+  lv_obj_set_event_cb_mks(buttonAdvance, event_handler, ID_PARA_ADVANCE, NULL, 0);
+  lv_btn_set_style(buttonAdvance, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonAdvance, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonAdvance, LV_LAYOUT_OFF);
+  labelAdvance = lv_label_create(buttonAdvance, NULL);                      /*Add a label to the button*/
+
+  buttonAdvanceNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonAdvanceNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 3 + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonAdvanceNarrow, event_handler, ID_PARA_ADVANCE_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonAdvanceNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonAdvanceNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonAdvanceNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonAdvanceNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonAdvanceNarrow, LV_LAYOUT_OFF);
+
+  line3 = lv_line_create(scr, NULL);
+  lv_ex_line(line3, line_points[2]);
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_PARA_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+    lv_label_set_text(labelMachine, MachinePara_menu.MachineSetting);
+    lv_obj_align(labelMachine, buttonMachine, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelMotor, MachinePara_menu.MotorSetting);
+    lv_obj_align(labelMotor, buttonMotor, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelAdvance, MachinePara_menu.AdvanceSetting);
+    lv_obj_align(labelAdvance, buttonAdvance, LV_ALIGN_IN_LEFT_MID, 0, 0);
+  }
+
+}
+
+void lv_clear_machine_para() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h
new file mode 100644
index 0000000000000000000000000000000000000000..d75df293b11c173323c58ec33b15f4926bbdad9f
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_para.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_machine_para(void);
+extern void lv_clear_machine_para();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..982dd4408b9ecba72447e35b454e68a605ca1438
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.cpp
@@ -0,0 +1,241 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_MACHINE_RETURN             1
+#define ID_MACHINE_ACCELERATION       2
+#define ID_MACHINE_ACCELERATION_ARROW 3
+#define ID_MACHINE_FEEDRATE           4
+#define ID_MACHINE_FEEDRATE_ARROW     5
+#define ID_MACHINE_JERK               6
+#define ID_MACHINE_JERK_ARROW         7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_MACHINE_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_MACHINE_ACCELERATION:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_settings();
+        lv_draw_acceleration_settings();
+      }
+      break;
+    case ID_MACHINE_ACCELERATION_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_settings();
+        lv_draw_acceleration_settings();
+      }
+      break;
+    case ID_MACHINE_FEEDRATE:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_settings();
+        lv_draw_max_feedrate_settings();
+      }
+      break;
+    case ID_MACHINE_FEEDRATE_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_machine_settings();
+        lv_draw_max_feedrate_settings();
+      }
+      break;
+      #if HAS_CLASSIC_JERK
+        case ID_MACHINE_JERK:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            lv_clear_machine_settings();
+            lv_draw_jerk_settings();
+          }
+          break;
+        case ID_MACHINE_JERK_ARROW:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            lv_clear_machine_settings();
+            lv_draw_jerk_settings();
+          }
+          break;
+      #endif
+  }
+}
+
+void lv_draw_machine_settings(void) {
+  lv_obj_t *buttonBack, *label_Back;
+  lv_obj_t *buttonAcceleration, *labelAcceleration, *buttonAccelerationNarrow;
+  lv_obj_t *buttonMaxFeedrate, *labelMaxFeedrate, *buttonMaxFeedrateNarrow;
+  #if HAS_CLASSIC_JERK
+    lv_obj_t *buttonJerk, *labelJerk, *buttonJerkNarrow;
+  #endif
+  lv_obj_t * line1, * line2;
+  #if HAS_CLASSIC_JERK
+    lv_obj_t * line3;
+  #endif
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MACHINE_SETTINGS_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = MACHINE_SETTINGS_UI;
+  }
+  disp_state = MACHINE_SETTINGS_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.MachineConfigTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  LV_IMG_DECLARE(bmp_para_arrow);
+
+  buttonAcceleration = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+  lv_obj_set_pos(buttonAcceleration, PARA_UI_POS_X, PARA_UI_POS_Y);             /*Set its position*/
+  lv_obj_set_size(buttonAcceleration, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);          /*Set its size*/
+  // lv_obj_set_event_cb(buttonMachine, event_handler);
+  lv_obj_set_event_cb_mks(buttonAcceleration, event_handler, ID_MACHINE_ACCELERATION, NULL, 0);
+  lv_btn_set_style(buttonAcceleration, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+  lv_btn_set_style(buttonAcceleration, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonAcceleration, LV_LAYOUT_OFF);
+  labelAcceleration = lv_label_create(buttonAcceleration, NULL);                /*Add a label to the button*/
+
+  buttonAccelerationNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonAccelerationNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonAccelerationNarrow, event_handler, ID_MACHINE_ACCELERATION_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonAccelerationNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonAccelerationNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonAccelerationNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonAccelerationNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonAccelerationNarrow, LV_LAYOUT_OFF);
+
+  line1 = lv_line_create(lv_scr_act(), NULL);
+  lv_ex_line(line1, line_points[0]);
+
+  buttonMaxFeedrate = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonMaxFeedrate, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+  lv_obj_set_size(buttonMaxFeedrate, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);           /*Set its size*/
+  // lv_obj_set_event_cb(buttonMachine, event_handler);
+  lv_obj_set_event_cb_mks(buttonMaxFeedrate, event_handler, ID_MACHINE_FEEDRATE, NULL, 0);
+  lv_btn_set_style(buttonMaxFeedrate, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonMaxFeedrate, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonMaxFeedrate, LV_LAYOUT_OFF);
+  labelMaxFeedrate = lv_label_create(buttonMaxFeedrate, NULL);                  /*Add a label to the button*/
+
+  buttonMaxFeedrateNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonMaxFeedrateNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonMaxFeedrateNarrow, event_handler, ID_MACHINE_FEEDRATE_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonMaxFeedrateNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonMaxFeedrateNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonMaxFeedrateNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonMaxFeedrateNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonMaxFeedrateNarrow, LV_LAYOUT_OFF);
+
+  line2 = lv_line_create(lv_scr_act(), NULL);
+  lv_ex_line(line2, line_points[1]);
+
+  #if HAS_CLASSIC_JERK
+    buttonJerk = lv_btn_create(scr, NULL);                                      /*Add a button the current screen*/
+    lv_obj_set_pos(buttonJerk, PARA_UI_POS_X, PARA_UI_POS_Y * 3);               /*Set its position*/
+    lv_obj_set_size(buttonJerk, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);                /*Set its size*/
+    // lv_obj_set_event_cb(buttonMotor, event_handler);
+    lv_obj_set_event_cb_mks(buttonJerk, event_handler, ID_MACHINE_JERK, NULL, 0);
+    lv_btn_set_style(buttonJerk, LV_BTN_STYLE_REL, &tft_style_label_rel);       /*Set the button's released style*/
+    lv_btn_set_style(buttonJerk, LV_BTN_STYLE_PR, &tft_style_label_pre);        /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonJerk, LV_LAYOUT_OFF);
+    labelJerk = lv_label_create(buttonJerk, NULL);                              /*Add a label to the button*/
+
+    buttonJerkNarrow = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonJerkNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 3 + PARA_UI_ARROW_V);
+    lv_obj_set_event_cb_mks(buttonJerkNarrow, event_handler, ID_MACHINE_JERK_ARROW, "bmp_arrow.bin", 0);
+    lv_imgbtn_set_src(buttonJerkNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+    lv_imgbtn_set_src(buttonJerkNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+    lv_imgbtn_set_style(buttonJerkNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonJerkNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonJerkNarrow, LV_LAYOUT_OFF);
+
+    line3 = lv_line_create(lv_scr_act(), NULL);
+    lv_ex_line(line3, line_points[2]);
+  #endif
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MACHINE_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+    lv_label_set_text(labelAcceleration, machine_menu.AccelerationConf);
+    lv_obj_align(labelAcceleration, buttonAcceleration, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelMaxFeedrate, machine_menu.MaxFeedRateConf);
+    lv_obj_align(labelMaxFeedrate, buttonMaxFeedrate, LV_ALIGN_IN_LEFT_MID, 0, 0);
+    #if HAS_CLASSIC_JERK
+      lv_label_set_text(labelJerk, machine_menu.JerkConf);
+      lv_obj_align(labelJerk, buttonJerk, LV_ALIGN_IN_LEFT_MID, 0, 0);
+    #endif
+  }
+}
+
+void lv_clear_machine_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..37029c85c43c498f8ac7533c86f2550acaf3dc1d
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_machine_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_machine_settings(void);
+extern void lv_clear_machine_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp
index 3a28ebde62d4a1a7456222ab4dc43c35cada23d5..ab4d9eb881ee011acaa1cc2a56d696ef87e153ea 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_manuaLevel.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 #include "lv_conf.h"
@@ -35,13 +35,12 @@
 //static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
 static lv_obj_t * scr;
 
-#define ID_M_POINT1             1
-#define ID_M_POINT2             2
-#define ID_M_POINT3             3
-#define ID_M_POINT4             4
-#define ID_M_POINT5             5
-
-#define ID_MANUAL_RETURN                6
+#define ID_M_POINT1      1
+#define ID_M_POINT2      2
+#define ID_M_POINT3      3
+#define ID_M_POINT4      4
+#define ID_M_POINT5      5
+#define ID_MANUAL_RETURN 6
 
 static void event_handler(lv_obj_t * obj, lv_event_t event) {
   switch (obj->mks_obj_id) {
@@ -53,16 +52,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
 
         if (queue.length == 0) {
           if (uiCfg.leveling_first_time) {
-            queue.enqueue_one_P(PSTR("G28"));
+            queue.enqueue_now_P(PSTR("G28"));
             uiCfg.leveling_first_time = 0;
           }
 
-          queue.enqueue_one_P(PSTR("G1 Z10"));
+          queue.enqueue_now_P(PSTR("G1 Z10"));
 
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf(public_buf_l, "G1 X%d Y%d", X_MIN_POS + 30, Y_MIN_POS + 30);
-          queue.enqueue_one_P(PSTR(public_buf_l));
-          queue.enqueue_one_P(PSTR("G1 Z0"));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MIN_POS + 30, Y_MIN_POS + 30);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G1 Z0"));
         }
       }
       break;
@@ -73,16 +72,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length == 0) {
           if (uiCfg.leveling_first_time) {
-            queue.enqueue_one_P(PSTR("G28"));
+            queue.enqueue_now_P(PSTR("G28"));
             uiCfg.leveling_first_time = 0;
           }
 
-          queue.enqueue_one_P(PSTR("G1 Z10"));
+          queue.enqueue_now_P(PSTR("G1 Z10"));
 
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf(public_buf_l, "G1 X%d Y%d", X_MAX_POS - 30, Y_MIN_POS + 30);
-          queue.enqueue_one_P(PSTR(public_buf_l));
-          queue.enqueue_one_P(PSTR("G1 Z0"));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MAX_POS - 30, Y_MIN_POS + 30);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G1 Z0"));
         }
       }
       break;
@@ -93,16 +92,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length == 0) {
           if (uiCfg.leveling_first_time) {
-            queue.enqueue_one_P(PSTR("G28"));
+            queue.enqueue_now_P(PSTR("G28"));
             uiCfg.leveling_first_time = 0;
           }
 
-          queue.enqueue_one_P(PSTR("G1 Z10"));
+          queue.enqueue_now_P(PSTR("G1 Z10"));
 
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf(public_buf_l, "G1 X%d Y%d", X_MAX_POS - 30, Y_MAX_POS - 30);
-          queue.enqueue_one_P(PSTR(public_buf_l));
-          queue.enqueue_one_P(PSTR("G1 Z0"));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MAX_POS - 30, Y_MAX_POS - 30);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G1 Z0"));
         }
       }
 
@@ -114,16 +113,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length == 0) {
           if (uiCfg.leveling_first_time) {
-            queue.enqueue_one_P(PSTR("G28"));
+            queue.enqueue_now_P(PSTR("G28"));
             uiCfg.leveling_first_time = 0;
           }
 
-          queue.enqueue_one_P(PSTR("G1 Z10"));
+          queue.enqueue_now_P(PSTR("G1 Z10"));
 
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf(public_buf_l, "G1 X%d Y%d", X_MIN_POS + 30, Y_MAX_POS - 30);
-          queue.enqueue_one_P(PSTR(public_buf_l));
-          queue.enqueue_one_P(PSTR("G1 Z0"));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_MIN_POS + 30, Y_MAX_POS - 30);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G1 Z0"));
         }
       }
       break;
@@ -134,16 +133,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length == 0) {
           if (uiCfg.leveling_first_time) {
-            queue.enqueue_one_P(PSTR("G28"));
+            queue.enqueue_now_P(PSTR("G28"));
             uiCfg.leveling_first_time = 0;
           }
 
-          queue.enqueue_one_P(PSTR("G1 Z10"));
+          queue.enqueue_now_P(PSTR("G1 Z10"));
 
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          sprintf(public_buf_l, "G1 X%d Y%d", X_BED_SIZE / 2, Y_BED_SIZE / 2);
-          queue.enqueue_one_P(PSTR(public_buf_l));
-          queue.enqueue_one_P(PSTR("G1 Z0"));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("G1 X%d Y%d"), X_BED_SIZE / 2, Y_BED_SIZE / 2);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G1 Z0"));
         }
       }
 
@@ -157,7 +156,6 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         lv_draw_tool();
       }
       break;
-
   }
 }
 
@@ -174,14 +172,14 @@ void lv_draw_manualLevel(void) {
 
   scr = lv_obj_create(NULL, NULL);
 
-  //static lv_style_t tool_style;
+  // static lv_style_t tool_style;
 
   lv_obj_set_style(scr, &tft_style_scr);
   lv_scr_load(scr);
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -195,52 +193,52 @@ void lv_draw_manualLevel(void) {
   buttonPoint3 = lv_imgbtn_create(scr, NULL);
   buttonPoint4 = lv_imgbtn_create(scr, NULL);
   buttonPoint5 = lv_imgbtn_create(scr, NULL);
-  buttonBack = lv_imgbtn_create(scr, NULL);
+  buttonBack   = lv_imgbtn_create(scr, NULL);
 
-  lv_obj_set_event_cb_mks(buttonPoint1, event_handler, ID_M_POINT1, "bmp_Leveling1.bin", 0);
+  lv_obj_set_event_cb_mks(buttonPoint1, event_handler, ID_M_POINT1, "bmp_leveling1.bin", 0);
   lv_imgbtn_set_src(buttonPoint1, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonPoint1, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonPoint1, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonPoint1, LV_PROTECT_FOLLOW);
   #if 1
-    lv_obj_set_event_cb_mks(buttonPoint2, event_handler, ID_M_POINT2, "bmp_Leveling2.bin", 0);
+    lv_obj_set_event_cb_mks(buttonPoint2, event_handler, ID_M_POINT2, "bmp_leveling2.bin", 0);
     lv_imgbtn_set_src(buttonPoint2, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonPoint2, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPoint2, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonPoint3, event_handler, ID_M_POINT3, "bmp_Leveling3.bin", 0);
+    lv_obj_set_event_cb_mks(buttonPoint3, event_handler, ID_M_POINT3, "bmp_leveling3.bin", 0);
     lv_imgbtn_set_src(buttonPoint3, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonPoint3, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPoint3, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonPoint4, event_handler, ID_M_POINT4, "bmp_Leveling4.bin", 0);
+    lv_obj_set_event_cb_mks(buttonPoint4, event_handler, ID_M_POINT4, "bmp_leveling4.bin", 0);
     lv_imgbtn_set_src(buttonPoint4, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonPoint4, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPoint4, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonPoint5, event_handler, ID_M_POINT5, "bmp_Leveling5.bin", 0);
+    lv_obj_set_event_cb_mks(buttonPoint5, event_handler, ID_M_POINT5, "bmp_leveling5.bin", 0);
     lv_imgbtn_set_src(buttonPoint5, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonPoint5, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPoint5, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MANUAL_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MANUAL_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
 
   lv_obj_set_pos(buttonPoint1, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonPoint2, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
   lv_obj_set_pos(buttonPoint3, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
   lv_obj_set_pos(buttonPoint4, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
-  lv_obj_set_pos(buttonPoint5, INTERVAL_V,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonPoint5, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonPoint1, LV_LAYOUT_OFF);
@@ -255,8 +253,7 @@ void lv_draw_manualLevel(void) {
   lv_obj_t * label_Point3 = lv_label_create(buttonPoint3, NULL);
   lv_obj_t * label_Point4 = lv_label_create(buttonPoint4, NULL);
   lv_obj_t * label_Point5 = lv_label_create(buttonPoint5, NULL);
-  lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
-
+  lv_obj_t * label_Back   = lv_label_create(buttonBack, NULL);
 
   if (gCfgItems.multiple_language != 0) {
     lv_label_set_text(label_Point1, leveling_menu.position1);
@@ -281,4 +278,4 @@ void lv_draw_manualLevel(void) {
 
 void lv_clear_manualLevel() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..c78c6f5bb8d4518d525d21750b278747dac92131
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.cpp
@@ -0,0 +1,359 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_FEED_RETURN  1
+#define ID_FEED_X       2
+#define ID_FEED_Y       3
+#define ID_FEED_Z       4
+#define ID_FEED_E0      5
+#define ID_FEED_E1      6
+#define ID_FEED_DOWN    7
+#define ID_FEED_UP      8
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_FEED_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_max_feedrate_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_FEED_X:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = XMaxFeedRate;
+        lv_clear_max_feedrate_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_FEED_Y:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = YMaxFeedRate;
+        lv_clear_max_feedrate_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_FEED_Z:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = ZMaxFeedRate;
+        lv_clear_max_feedrate_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_FEED_E0:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = E0MaxFeedRate;
+        lv_clear_max_feedrate_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_FEED_E1:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = E1MaxFeedRate;
+        lv_clear_max_feedrate_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_FEED_UP:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_max_feedrate_settings();
+        lv_draw_max_feedrate_settings();
+      }
+      break;
+    case ID_FEED_DOWN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 1;
+        lv_clear_max_feedrate_settings();
+        lv_draw_max_feedrate_settings();
+      }
+      break;
+  }
+}
+
+void lv_draw_max_feedrate_settings(void) {
+  lv_obj_t *buttonBack = NULL, *label_Back = NULL, *buttonTurnPage = NULL, *labelTurnPage = NULL;
+  lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+  lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+  lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+  lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+  lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+  lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MAXFEEDRATE_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = MAXFEEDRATE_UI;
+  }
+  disp_state = MAXFEEDRATE_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.MaxFeedRateConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  // LV_IMG_DECLARE(bmp_para_arrow);
+  LV_IMG_DECLARE(bmp_para_bank);
+
+  if (uiCfg.para_ui_page != 1) {
+    buttonXText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+    lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonXText, event_handler);
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+    labelXText = lv_label_create(buttonXText, NULL);                        /*Add a label to the button*/
+
+    buttonXValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_FEED_X, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+    labelXValue = lv_label_create(buttonXValue, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonYText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+    lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonYText, event_handler);
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+    labelYText = lv_label_create(buttonYText, NULL);                        /*Add a label to the button*/
+
+    buttonYValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_FEED_Y, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+    labelYValue = lv_label_create(buttonYValue, NULL);
+
+    line2 = lv_line_create(scr, NULL);
+    lv_ex_line(line2, line_points[1]);
+
+    buttonZText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3);          /*Set its position*/
+    lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonZText, event_handler);
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+    labelZText = lv_label_create(buttonZText, NULL);                        /*Add a label to the button*/
+
+    buttonZValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_FEED_Z, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+    labelZValue = lv_label_create(buttonZValue, NULL);
+
+    line3 = lv_line_create(scr, NULL);
+    lv_ex_line(line3, line_points[2]);
+
+    buttonE0Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4);         /*Set its position*/
+    lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE0Text, event_handler);
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+    labelE0Text = lv_label_create(buttonE0Text, NULL);                      /*Add a label to the button*/
+
+    buttonE0Value = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_FEED_E0, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+    labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+    line4 = lv_line_create(scr, NULL);
+    lv_ex_line(line4, line_points[3]);
+
+    buttonTurnPage = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_FEED_DOWN, "bmp_back70x40.bin", 0);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+  }
+  else {
+    buttonE1Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y);             /*Set its position*/
+    lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE1Text, event_handler);
+    lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+    labelE1Text = lv_label_create(buttonE1Text, NULL);                      /*Add a label to the button*/
+
+    buttonE1Value = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_FEED_E1, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+    labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonTurnPage = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_FEED_UP, "bmp_back70x40.bin", 0);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+  }
+
+  lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+  lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+  labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_FEED_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    if (uiCfg.para_ui_page != 1) {
+      lv_label_set_text(labelXText, machine_menu.XMaxFeedRate);
+      lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelYText, machine_menu.YMaxFeedRate);
+      lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelZText, machine_menu.ZMaxFeedRate);
+      lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelE0Text, machine_menu.E0MaxFeedRate);
+      lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelTurnPage, machine_menu.next);
+      lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[X_AXIS]);
+      lv_label_set_text(labelXValue, public_buf_l);
+      lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Y_AXIS]);
+      lv_label_set_text(labelYValue, public_buf_l);
+      lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Z_AXIS]);
+      lv_label_set_text(labelZValue, public_buf_l);
+      lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS]);
+      lv_label_set_text(labelE0Value, public_buf_l);
+      lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+    }
+    else {
+      lv_label_set_text(labelE1Text, machine_menu.E1MaxFeedRate);
+      lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelTurnPage, machine_menu.previous);
+      lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS_N(1)]);
+      lv_label_set_text(labelE1Value, public_buf_l);
+      lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+    }
+
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+  }
+}
+
+void lv_clear_max_feedrate_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..24edae27e415dff3db99151a2340a2bc9adc3a7f
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_max_feedrate_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_max_feedrate_settings(void);
+extern void lv_clear_max_feedrate_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..1d8f80b9b4c68f3144f39bca10d4ce32cbd96a84
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.cpp
@@ -0,0 +1,247 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+
+static lv_obj_t * scr;
+
+#define ID_MOTOR_RETURN            1
+#define ID_MOTOR_STEPS             2
+#define ID_MOTOR_STEPS_ARROW       3
+#define ID_MOTOR_TMC_CURRENT       4
+#define ID_MOTOR_TMC_CURRENT_ARROW 5
+#define ID_MOTOR_STEP_MODE         6
+#define ID_MOTOR_STEP_MODE_ARROW   7
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_MOTOR_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_motor_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_MOTOR_STEPS:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_motor_settings();
+        lv_draw_step_settings();
+      }
+      break;
+    case ID_MOTOR_STEPS_ARROW:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_motor_settings();
+        lv_draw_step_settings();
+      }
+      break;
+      #if HAS_TRINAMIC_CONFIG
+        case ID_MOTOR_TMC_CURRENT:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            lv_clear_motor_settings();
+            lv_draw_tmc_current_settings();
+          }
+          break;
+        case ID_MOTOR_TMC_CURRENT_ARROW:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            lv_clear_motor_settings();
+            lv_draw_tmc_current_settings();
+          }
+          break;
+          #if HAS_STEALTHCHOP
+            case ID_MOTOR_STEP_MODE:
+              if (event == LV_EVENT_CLICKED) {
+
+              }
+              else if (event == LV_EVENT_RELEASED) {
+                lv_clear_motor_settings();
+                lv_draw_tmc_step_mode_settings();
+              }
+              break;
+            case ID_MOTOR_STEP_MODE_ARROW:
+              if (event == LV_EVENT_CLICKED) {
+
+              }
+              else if (event == LV_EVENT_RELEASED) {
+                lv_clear_motor_settings();
+                lv_draw_tmc_step_mode_settings();
+              }
+              break;
+          #endif
+      #endif
+  }
+}
+
+void lv_draw_motor_settings(void) {
+  lv_obj_t *buttonBack, *label_Back;
+  lv_obj_t *buttonSteps, *labelSteps, *buttonStepsNarrow;
+  #if HAS_TRINAMIC_CONFIG
+    lv_obj_t *buttonTMCcurrent, *labelTMCcurrent, *buttonTMCcurrentNarrow;
+    lv_obj_t * line2;
+    #if HAS_STEALTHCHOP
+      lv_obj_t *buttonStepMode, *labelStepMode, *buttonStepModeNarrow;
+      lv_obj_t * line3;
+    #endif
+  #endif
+  lv_obj_t * line1;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MOTOR_SETTINGS_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = MOTOR_SETTINGS_UI;
+  }
+  disp_state = MOTOR_SETTINGS_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.MotorConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  LV_IMG_DECLARE(bmp_para_arrow);
+
+  buttonSteps = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonSteps, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+  lv_obj_set_size(buttonSteps, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);           /*Set its size*/
+  // lv_obj_set_event_cb(buttonMachine, event_handler);
+  lv_obj_set_event_cb_mks(buttonSteps, event_handler, ID_MOTOR_STEPS, NULL, 0);
+  lv_btn_set_style(buttonSteps, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonSteps, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonSteps, LV_LAYOUT_OFF);
+  labelSteps = lv_label_create(buttonSteps, NULL);                        /*Add a label to the button*/
+
+  buttonStepsNarrow = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonStepsNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y + PARA_UI_ARROW_V);
+  lv_obj_set_event_cb_mks(buttonStepsNarrow, event_handler, ID_MOTOR_STEPS_ARROW, "bmp_arrow.bin", 0);
+  lv_imgbtn_set_src(buttonStepsNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+  lv_imgbtn_set_src(buttonStepsNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+  lv_imgbtn_set_style(buttonStepsNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonStepsNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+  lv_btn_set_layout(buttonStepsNarrow, LV_LAYOUT_OFF);
+
+  line1 = lv_line_create(lv_scr_act(), NULL);
+  lv_ex_line(line1, line_points[0]);
+  #if HAS_TRINAMIC_CONFIG
+    buttonTMCcurrent = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonTMCcurrent, PARA_UI_POS_X, PARA_UI_POS_Y * 2);         /*Set its position*/
+    lv_obj_set_size(buttonTMCcurrent, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);          /*Set its size*/
+    // lv_obj_set_event_cb(buttonMachine, event_handler);
+    lv_obj_set_event_cb_mks(buttonTMCcurrent, event_handler, ID_MOTOR_TMC_CURRENT, NULL, 0);
+    lv_btn_set_style(buttonTMCcurrent, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonTMCcurrent, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonTMCcurrent, LV_LAYOUT_OFF);
+    labelTMCcurrent = lv_label_create(buttonTMCcurrent, NULL);                  /*Add a label to the button*/
+
+    buttonTMCcurrentNarrow = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonTMCcurrentNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 2 + PARA_UI_ARROW_V);
+    lv_obj_set_event_cb_mks(buttonTMCcurrentNarrow, event_handler, ID_MOTOR_TMC_CURRENT_ARROW, "bmp_arrow.bin", 0);
+    lv_imgbtn_set_src(buttonTMCcurrentNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+    lv_imgbtn_set_src(buttonTMCcurrentNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+    lv_imgbtn_set_style(buttonTMCcurrentNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTMCcurrentNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonTMCcurrentNarrow, LV_LAYOUT_OFF);
+
+    line2 = lv_line_create(lv_scr_act(), NULL);
+    lv_ex_line(line2, line_points[1]);
+
+    #if HAS_STEALTHCHOP
+      buttonStepMode = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+      lv_obj_set_pos(buttonStepMode, PARA_UI_POS_X, PARA_UI_POS_Y * 3);         /*Set its position*/
+      lv_obj_set_size(buttonStepMode, PARA_UI_SIZE_X, PARA_UI_SIZE_Y);          /*Set its size*/
+      // lv_obj_set_event_cb(buttonMachine, event_handler);
+      lv_obj_set_event_cb_mks(buttonStepMode, event_handler, ID_MOTOR_STEP_MODE, NULL, 0);
+      lv_btn_set_style(buttonStepMode, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+      lv_btn_set_style(buttonStepMode, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+      lv_btn_set_layout(buttonStepMode, LV_LAYOUT_OFF);
+      labelStepMode = lv_label_create(buttonStepMode, NULL);                    /*Add a label to the button*/
+
+      buttonStepModeNarrow = lv_imgbtn_create(scr, NULL);
+      lv_obj_set_pos(buttonStepModeNarrow, PARA_UI_POS_X + PARA_UI_SIZE_X, PARA_UI_POS_Y * 3 + PARA_UI_ARROW_V);
+      lv_obj_set_event_cb_mks(buttonStepModeNarrow, event_handler, ID_MOTOR_STEP_MODE_ARROW, "bmp_arrow.bin", 0);
+      lv_imgbtn_set_src(buttonStepModeNarrow, LV_BTN_STATE_REL, &bmp_para_arrow);
+      lv_imgbtn_set_src(buttonStepModeNarrow, LV_BTN_STATE_PR, &bmp_para_arrow);
+      lv_imgbtn_set_style(buttonStepModeNarrow, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonStepModeNarrow, LV_BTN_STATE_REL, &tft_style_label_rel);
+      lv_btn_set_layout(buttonStepModeNarrow, LV_LAYOUT_OFF);
+
+      line3 = lv_line_create(lv_scr_act(), NULL);
+      lv_ex_line(line3, line_points[2]);
+    #endif
+  #endif // HAS_TRINAMIC_CONFIG
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_MOTOR_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+
+    lv_label_set_text(labelSteps, machine_menu.StepsConf);
+    lv_obj_align(labelSteps, buttonSteps, LV_ALIGN_IN_LEFT_MID, 0, 0);
+    #if HAS_TRINAMIC_CONFIG
+      lv_label_set_text(labelTMCcurrent, machine_menu.TMCcurrentConf);
+      lv_obj_align(labelTMCcurrent, buttonTMCcurrent, LV_ALIGN_IN_LEFT_MID, 0, 0);
+      #if HAS_STEALTHCHOP
+        lv_label_set_text(labelStepMode, machine_menu.TMCStepModeConf);
+        lv_obj_align(labelStepMode, buttonStepMode, LV_ALIGN_IN_LEFT_MID, 0, 0);
+      #endif
+    #endif
+  }
+
+}
+
+void lv_clear_motor_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..bae1918ad5817e099585ec1e4161551f67b1ee43
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_motor_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_motor_settings(void);
+extern void lv_clear_motor_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp
index 223ecf1703388711be9ebf19a4e480ee364dd6ae..555c228f002795e6f9c3e5c915b9cbecbca7d1ea 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_move_motor.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 #include "lv_conf.h"
@@ -53,10 +53,10 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length <= (BUFSIZE - 3)) {
-          memset(public_buf_l, 0, sizeof(public_buf_l));
+          ZERO(public_buf_l);
           queue.enqueue_one_P(PSTR("G91"));
-          sprintf(public_buf_l, "G1 X%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
-          queue.enqueue_one_P(PSTR(public_buf_l));
+          sprintf_P(public_buf_l, PSTR("G1 X%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+          queue.enqueue_one_now(public_buf_l);
           queue.enqueue_one_P(PSTR("G90"));
         }
       }
@@ -67,11 +67,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length <= (BUFSIZE - 3)) {
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          queue.enqueue_one_now(PSTR("G91"));
-          sprintf(public_buf_l, "G1 X-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
-          queue.enqueue_one_now(PSTR("G90"));
+          ZERO(public_buf_l);
+          queue.enqueue_now_P(PSTR("G91"));
+          sprintf_P(public_buf_l, PSTR("G1 X-%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G90"));
         }
       }
       break;
@@ -81,11 +81,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length <= (BUFSIZE - 3)) {
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          queue.enqueue_one_now(PSTR("G91"));
-          sprintf(public_buf_l, "G1 Y%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
-          queue.enqueue_one_now(PSTR("G90"));
+          ZERO(public_buf_l);
+          queue.enqueue_now_P(PSTR("G91"));
+          sprintf_P(public_buf_l, PSTR("G1 Y%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G90"));
         }
       }
       break;
@@ -95,11 +95,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length <= (BUFSIZE - 3)) {
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          queue.enqueue_one_now(PSTR("G91"));
-          sprintf(public_buf_l, "G1 Y-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
-          queue.enqueue_one_now(PSTR("G90"));
+          ZERO(public_buf_l);
+          queue.enqueue_now_P(PSTR("G91"));
+          sprintf_P(public_buf_l, PSTR("G1 Y-%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G90"));
         }
       }
       break;
@@ -109,11 +109,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length <= (BUFSIZE - 3)) {
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          queue.enqueue_one_now(PSTR("G91"));
-          sprintf(public_buf_l, "G1 Z%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
-          queue.enqueue_one_now(PSTR("G90"));
+          ZERO(public_buf_l);
+          queue.enqueue_now_P(PSTR("G91"));
+          sprintf_P(public_buf_l, PSTR("G1 Z%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G90"));
         }
       }
       break;
@@ -123,11 +123,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       }
       else if (event == LV_EVENT_RELEASED) {
         if (queue.length <= (BUFSIZE - 3)) {
-          memset(public_buf_l, 0, sizeof(public_buf_l));
-          queue.enqueue_one_now(PSTR("G91"));
-          sprintf(public_buf_l, "G1 Z-%3.1f F%d", uiCfg.move_dist, uiCfg.moveSpeed);
-          queue.enqueue_one_now(PSTR(public_buf_l));
-          queue.enqueue_one_now(PSTR("G90"));
+          ZERO(public_buf_l);
+          queue.enqueue_now_P(PSTR("G91"));
+          sprintf_P(public_buf_l, PSTR("G1 Z-%3.1f F%d"), uiCfg.move_dist, uiCfg.moveSpeed);
+          queue.enqueue_one_now(public_buf_l);
+          queue.enqueue_now_P(PSTR("G90"));
         }
       }
       break;
@@ -154,14 +154,11 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         draw_return_ui();
       }
       break;
-
   }
 }
 
-
 void lv_draw_move_motor(void) {
-  lv_obj_t  *buttonXI, *buttonXD, *buttonYI, *buttonYD;
-  lv_obj_t        *buttonZI, *buttonZD, *buttonBack;
+  lv_obj_t *buttonXI, *buttonXD, *buttonYI, *buttonYD, *buttonZI, *buttonZD, *buttonBack;
 
   if (disp_state_stack._disp_state[disp_state_stack._disp_index] != MOVE_MOTOR_UI) {
     disp_state_stack._disp_index++;
@@ -176,7 +173,7 @@ void lv_draw_move_motor(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -184,74 +181,73 @@ void lv_draw_move_motor(void) {
 
   LV_IMG_DECLARE(bmp_pic);
 
-
   /*Create an Image button*/
-  buttonXI = lv_imgbtn_create(scr, NULL);
-  buttonXD = lv_imgbtn_create(scr, NULL);
-  buttonYI = lv_imgbtn_create(scr, NULL);
-  buttonYD = lv_imgbtn_create(scr, NULL);
-  buttonZI = lv_imgbtn_create(scr, NULL);
-  buttonZD = lv_imgbtn_create(scr, NULL);
-  buttonV = lv_imgbtn_create(scr, NULL);
+  buttonXI   = lv_imgbtn_create(scr, NULL);
+  buttonXD   = lv_imgbtn_create(scr, NULL);
+  buttonYI   = lv_imgbtn_create(scr, NULL);
+  buttonYD   = lv_imgbtn_create(scr, NULL);
+  buttonZI   = lv_imgbtn_create(scr, NULL);
+  buttonZD   = lv_imgbtn_create(scr, NULL);
+  buttonV    = lv_imgbtn_create(scr, NULL);
   buttonBack = lv_imgbtn_create(scr, NULL);
 
   lv_obj_set_event_cb_mks(buttonXI, event_handler, ID_M_X_P, "bmp_xAdd.bin", 0);
   lv_imgbtn_set_src(buttonXI, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonXI, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonXI, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonXI, LV_PROTECT_FOLLOW);
   #if 1
     lv_obj_set_event_cb_mks(buttonXD, event_handler, ID_M_X_N, "bmp_xDec.bin", 0);
     lv_imgbtn_set_src(buttonXD, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonXD, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonXD, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_obj_set_event_cb_mks(buttonYI, event_handler, ID_M_Y_P, "bmp_yAdd.bin", 0);
     lv_imgbtn_set_src(buttonYI, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonYI, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonYI, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_obj_set_event_cb_mks(buttonYD, event_handler, ID_M_Y_N, "bmp_yDec.bin", 0);
     lv_imgbtn_set_src(buttonYD, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonYD, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonYD, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_obj_set_event_cb_mks(buttonZI, event_handler, ID_M_Z_P, "bmp_zAdd.bin", 0);
     lv_imgbtn_set_src(buttonZI, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonZI, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonZI, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     lv_obj_set_event_cb_mks(buttonZD, event_handler, ID_M_Z_N, "bmp_zDec.bin", 0);
     lv_imgbtn_set_src(buttonZD, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonZD, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonZD, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    //lv_obj_set_event_cb_mks(buttonV, event_handler,ID_T_MORE,"bmp_More.bin",0);
+    // lv_obj_set_event_cb_mks(buttonV, event_handler,ID_T_MORE,"bmp_More.bin",0);
     lv_imgbtn_set_src(buttonV, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonV, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonV, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonV, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonV, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonV, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_M_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_M_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  #endif
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+  #endif // if 1
   lv_obj_set_pos(buttonXI, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonYI, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
   lv_obj_set_pos(buttonZI, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
   lv_obj_set_pos(buttonV, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
-  lv_obj_set_pos(buttonXD, INTERVAL_V,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonXD, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   lv_obj_set_pos(buttonYD, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonZD, BTN_X_PIXEL * 2 + INTERVAL_V * 3,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonZD, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonXI, LV_LAYOUT_OFF);
@@ -272,7 +268,6 @@ void lv_draw_move_motor(void) {
   labelV = lv_label_create(buttonV, NULL);
   lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
 
-
   if (gCfgItems.multiple_language != 0) {
     lv_label_set_text(labelXI, move_menu.x_add);
     lv_obj_align(labelXI, buttonXI, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -300,14 +295,14 @@ void lv_draw_move_motor(void) {
 }
 
 void disp_move_dist() {
-  //char buf[30] = {0};
+  // char buf[30] = {0};
 
   if ((int)(10 * uiCfg.move_dist) == 1)
-    lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move0_1.bin", 0);
+    lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_step_move0_1.bin", 0);
   else if ((int)(10 * uiCfg.move_dist) == 10)
-    lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move1.bin", 0);
+    lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_step_move1.bin", 0);
   else if ((int)(10 * uiCfg.move_dist) == 100)
-    lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_Step_move10.bin", 0);
+    lv_obj_set_event_cb_mks(buttonV, event_handler, ID_M_STEP, "bmp_step_move10.bin", 0);
   if (gCfgItems.multiple_language != 0) {
     if ((int)(10 * uiCfg.move_dist) == 1) {
       lv_label_set_text(labelV, move_menu.step_01mm);
@@ -326,4 +321,4 @@ void disp_move_dist() {
 
 void lv_clear_move_motor() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7a4e7257e203cfc655bce459c364b480d3dbe8fb
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.cpp
@@ -0,0 +1,799 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+//#include "../../lvgl/src/lv_objx/lv_imgbtn.h"
+//#include "../../lvgl/src/lv_objx/lv_img.h"
+//#include "../../lvgl/src/lv_core/lv_disp.h"
+//#include "../../lvgl/src/lv_core/lv_refr.h"
+//#include "../../MarlinCore.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/temperature.h"
+#include "../../../../gcode/queue.h"
+#if ENABLED(POWER_LOSS_RECOVERY)
+  #include "../../../../../feature/powerloss.h"
+#endif
+
+#include "../../../../gcode/gcode.h"
+#include "../../../../module/planner.h"
+
+#if HAS_TRINAMIC_CONFIG
+  #include "../../../../module/stepper/indirection.h"
+  #include "../../../../feature/tmc_util.h"
+#endif
+
+static lv_obj_t * scr;
+static lv_obj_t *buttonValue = NULL;
+static lv_obj_t *labelValue  = NULL;
+
+static char key_value[11] = {0};
+static uint8_t cnt        = 0;
+static char point_flg     = 1;
+
+#define ID_NUM_KEY1      1
+#define ID_NUM_KEY2      2
+#define ID_NUM_KEY3      3
+#define ID_NUM_KEY4      4
+#define ID_NUM_KEY5      5
+#define ID_NUM_KEY6      6
+#define ID_NUM_KEY7      7
+#define ID_NUM_KEY8      8
+#define ID_NUM_KEY9      9
+#define ID_NUM_KEY0     10
+#define ID_NUM_BACK     11
+#define ID_NUM_RESET    12
+#define ID_NUM_CONFIRM  13
+#define ID_NUM_POINT    14
+#define ID_NUM_NAGETIVE 15
+
+static void disp_key_value() {
+  char *temp;
+  #if HAS_TRINAMIC_CONFIG
+    float milliamps;
+  #endif
+
+  switch (value) {
+    case PrintAcceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.acceleration);
+      break;
+    case RetractAcceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.retract_acceleration);
+      break;
+    case TravelAcceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.travel_acceleration);
+      break;
+    case XAcceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[X_AXIS]);
+      break;
+    case YAcceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Y_AXIS]);
+      break;
+    case ZAcceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[Z_AXIS]);
+      break;
+    case E0Acceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS]);
+      break;
+    case E1Acceleration:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%d"), (int)planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)]);
+      break;
+    case XMaxFeedRate:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[X_AXIS]);
+      break;
+    case YMaxFeedRate:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Y_AXIS]);
+      break;
+    case ZMaxFeedRate:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[Z_AXIS]);
+      break;
+    case E0MaxFeedRate:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS]);
+      break;
+    case E1MaxFeedRate:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.max_feedrate_mm_s[E_AXIS_N(1)]);
+      break;
+
+    case XJerk:
+      #if HAS_CLASSIC_JERK
+        ZERO(public_buf_m);
+        sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[X_AXIS]);
+      #endif
+      break;
+    case YJerk:
+      #if HAS_CLASSIC_JERK
+        ZERO(public_buf_m);
+        sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[Y_AXIS]);
+      #endif
+      break;
+    case ZJerk:
+      #if HAS_CLASSIC_JERK
+        ZERO(public_buf_m);
+        sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[Z_AXIS]);
+      #endif
+      break;
+    case EJerk:
+      #if HAS_CLASSIC_JERK
+        ZERO(public_buf_m);
+        sprintf_P(public_buf_m, PSTR("%.1f"), planner.max_jerk[E_AXIS]);
+      #endif
+      break;
+
+    case Xstep:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[X_AXIS]);
+
+      break;
+    case Ystep:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Y_AXIS]);
+
+      break;
+    case Zstep:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Z_AXIS]);
+
+      break;
+    case E0step:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS]);
+
+      break;
+    case E1step:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS_N(1)]);
+      break;
+
+    case Xcurrent:
+      #if AXIS_IS_TMC(X)
+        ZERO(public_buf_m);
+        milliamps = stepperX.getMilliamps();
+        sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+      #endif
+      break;
+
+    case Ycurrent:
+      #if AXIS_IS_TMC(Y)
+        ZERO(public_buf_m);
+        milliamps = stepperY.getMilliamps();
+        sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+      #endif
+      break;
+
+    case Zcurrent:
+      #if AXIS_IS_TMC(Z)
+        ZERO(public_buf_m);
+        milliamps = stepperZ.getMilliamps();
+        sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+      #endif
+      break;
+
+    case E0current:
+      #if AXIS_IS_TMC(E0)
+        ZERO(public_buf_m);
+        milliamps = stepperE0.getMilliamps();
+        sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+      #endif
+      break;
+
+    case E1current:
+      #if AXIS_IS_TMC(E1)
+        ZERO(public_buf_m);
+        milliamps = stepperE1.getMilliamps();
+        sprintf_P(public_buf_m, PSTR("%.1f"), milliamps);
+      #endif
+      break;
+
+    case pause_pos_x:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), gCfgItems.pausePosX);
+      break;
+    case pause_pos_y:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), gCfgItems.pausePosY);
+      break;
+    case pause_pos_z:
+      ZERO(public_buf_m);
+      sprintf_P(public_buf_m, PSTR("%.1f"), gCfgItems.pausePosZ);
+      break;
+  }
+  ZERO(key_value);
+  strcpy(key_value, public_buf_m);
+  cnt  = strlen(key_value);
+  temp = strchr(key_value, '.');
+  if (temp)
+    point_flg = 0;
+  else
+    point_flg = 1;
+  lv_label_set_text(labelValue, key_value);
+  lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+
+}
+
+static void set_value_confirm() {
+  #if HAS_TRINAMIC_CONFIG
+    uint16_t current_mA;
+  #endif
+  switch (value) {
+    case PrintAcceleration:
+      planner.settings.acceleration = atof(key_value);
+
+      break;
+    case RetractAcceleration:
+      planner.settings.retract_acceleration = atof(key_value);
+
+      break;
+    case TravelAcceleration:
+      planner.settings.travel_acceleration = atof(key_value);
+
+      break;
+    case XAcceleration:
+      planner.settings.max_acceleration_mm_per_s2[X_AXIS] = atof(key_value);
+      break;
+    case YAcceleration:
+      planner.settings.max_acceleration_mm_per_s2[Y_AXIS] = atof(key_value);
+      break;
+    case ZAcceleration:
+      planner.settings.max_acceleration_mm_per_s2[Z_AXIS] = atof(key_value);
+      break;
+    case E0Acceleration:
+      planner.settings.max_acceleration_mm_per_s2[E_AXIS] = atof(key_value);
+      break;
+    case E1Acceleration:
+      planner.settings.max_acceleration_mm_per_s2[E_AXIS_N(1)] = atof(key_value);
+      break;
+    case XMaxFeedRate:
+      planner.settings.max_feedrate_mm_s[X_AXIS] = atof(key_value);
+      break;
+    case YMaxFeedRate:
+      planner.settings.max_feedrate_mm_s[Y_AXIS] = atof(key_value);
+      break;
+    case ZMaxFeedRate:
+      planner.settings.max_feedrate_mm_s[Z_AXIS] = atof(key_value);
+      break;
+    case E0MaxFeedRate:
+      planner.settings.max_feedrate_mm_s[E_AXIS] = atof(key_value);
+      break;
+    case E1MaxFeedRate:
+      planner.settings.max_feedrate_mm_s[E_AXIS_N(1)] = atof(key_value);
+      break;
+
+    case XJerk:
+      #if HAS_CLASSIC_JERK
+        planner.max_jerk[X_AXIS] = atof(key_value);
+      #endif
+      break;
+    case YJerk:
+      #if HAS_CLASSIC_JERK
+        planner.max_jerk[Y_AXIS] = atof(key_value);
+      #endif
+      break;
+    case ZJerk:
+      #if HAS_CLASSIC_JERK
+        planner.max_jerk[Z_AXIS] = atof(key_value);
+      #endif
+      break;
+    case EJerk:
+      #if HAS_CLASSIC_JERK
+        planner.max_jerk[E_AXIS] = atof(key_value);
+      #endif
+      break;
+
+    case Xstep:
+      planner.settings.axis_steps_per_mm[X_AXIS] = atof(key_value);
+      break;
+    case Ystep:
+      planner.settings.axis_steps_per_mm[Y_AXIS] = atof(key_value);
+      break;
+    case Zstep:
+      planner.settings.axis_steps_per_mm[Z_AXIS] = atof(key_value);
+      break;
+    case E0step:
+      planner.settings.axis_steps_per_mm[E_AXIS] = atof(key_value);
+      break;
+    case E1step:
+      planner.settings.axis_steps_per_mm[E_AXIS_N(1)] = atof(key_value);
+      break;
+
+    case Xcurrent:
+      #if AXIS_IS_TMC(X)
+        current_mA = atoi(key_value);
+        stepperX.rms_current(current_mA);
+      #endif
+      break;
+
+    case Ycurrent:
+      #if AXIS_IS_TMC(Y)
+        current_mA = atoi(key_value);
+        stepperY.rms_current(current_mA);
+      #endif
+      break;
+
+    case Zcurrent:
+      #if AXIS_IS_TMC(Z)
+        current_mA = atoi(key_value);
+        stepperZ.rms_current(current_mA);
+      #endif
+      break;
+
+    case E0current:
+      #if AXIS_IS_TMC(E0)
+        current_mA = atoi(key_value);
+        stepperE0.rms_current(current_mA);
+      #endif
+      break;
+
+    case E1current:
+      #if AXIS_IS_TMC(E1)
+        current_mA = atoi(key_value);
+        stepperE1.rms_current(current_mA);
+      #endif
+      break;
+
+      break;
+    case pause_pos_x:
+      gCfgItems.pausePosX = atof(key_value);
+      update_spi_flash();
+      break;
+    case pause_pos_y:
+      gCfgItems.pausePosY = atof(key_value);
+      update_spi_flash();
+      break;
+    case pause_pos_z:
+      gCfgItems.pausePosZ = atof(key_value);
+      update_spi_flash();
+      break;
+  }
+  gcode.process_subcommands_now_P(PSTR("M500"));
+}
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_NUM_KEY1:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'1';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY2:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'2';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY3:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'3';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY4:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'4';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY5:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'5';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY6:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'6';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY7:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'7';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY8:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'8';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY9:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'9';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_KEY0:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt <= 10) {
+          key_value[cnt] = (char)'0';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_BACK:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt > 0)
+          cnt--;
+        if (key_value[cnt] == (char)'.') point_flg = 1;
+        key_value[cnt] = (char)'\0';
+        lv_label_set_text(labelValue, key_value);
+        lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+      }
+      break;
+    case ID_NUM_RESET:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        ZERO(key_value);
+        cnt            = 0;
+        key_value[cnt] = (char)'0';
+        point_flg      = 1;
+        lv_label_set_text(labelValue, key_value);
+        lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+      }
+      break;
+    case ID_NUM_POINT:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if ((cnt != 0) && (point_flg == 1)) {
+          point_flg      = 0;
+          key_value[cnt] = (char)'.';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_NAGETIVE:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (cnt == 0) {
+          key_value[cnt] = (char)'-';
+          lv_label_set_text(labelValue, key_value);
+          lv_obj_align(labelValue, buttonValue, LV_ALIGN_CENTER, 0, 0);
+          cnt++;
+        }
+      }
+      break;
+    case ID_NUM_CONFIRM:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        last_disp_state = NUMBER_KEY_UI;
+        if (strlen(key_value) != 0)
+          set_value_confirm();
+        lv_clear_number_key();
+        draw_return_ui();
+      }
+      break;
+  }
+}
+
+void lv_draw_number_key(void) {
+  lv_obj_t *NumberKey_1 = NULL, *NumberKey_2 = NULL, *NumberKey_3 = NULL, *NumberKey_4 = NULL, *NumberKey_5 = NULL;
+  lv_obj_t *NumberKey_6 = NULL, *NumberKey_7 = NULL, *NumberKey_8 = NULL, *NumberKey_9 = NULL, *NumberKey_0 = NULL;
+  lv_obj_t *KeyPoint = NULL, *KeyConfirm = NULL, *KeyReset = NULL, *KeyBack = NULL;
+  lv_obj_t *Minus = NULL;
+  lv_obj_t *labelKey_1 = NULL, *labelKey_2 = NULL, *labelKey_3 = NULL, *labelKey_4 = NULL, *labelKey_5 = NULL;
+  lv_obj_t *labelKey_6 = NULL, *labelKey_7 = NULL, *labelKey_8 = NULL, *labelKey_9 = NULL, *labelKey_0 = NULL;
+  lv_obj_t *labelKeyPoint = NULL, *labelKeyConfirm = NULL, *labelKeyReset = NULL, *labelKeyBack = NULL;
+  lv_obj_t *labelMinus = NULL;
+
+  buttonValue = NULL;
+  labelValue  = NULL;
+
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != NUMBER_KEY_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = NUMBER_KEY_UI;
+  }
+  disp_state = NUMBER_KEY_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  //lv_obj_t * title = lv_label_create(scr, NULL);
+  //lv_obj_set_style(title, &tft_style_label_rel);
+  //lv_obj_set_pos(title,TITLE_XPOS,TITLE_YPOS);
+  //lv_label_set_text(title, creat_title_text());
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  //LV_IMG_DECLARE(bmp_pic);
+
+  buttonValue = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(buttonValue, 92, 40);                                  /*Set its position*/
+  lv_obj_set_size(buttonValue, 296, 40);
+  lv_obj_set_event_cb_mks(buttonValue, event_handler, ID_NUM_KEY1, NULL, 0);
+  lv_btn_set_style(buttonValue, LV_BTN_STYLE_REL, &style_num_text);     /*Set the button's released style*/
+  lv_btn_set_style(buttonValue, LV_BTN_STYLE_PR, &style_num_text);      /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonValue, LV_LAYOUT_OFF);
+  labelValue = lv_label_create(buttonValue, NULL);                      /*Add a label to the button*/
+
+  NumberKey_1 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_1, 92, 90);                                  /*Set its position*/
+  lv_obj_set_size(NumberKey_1, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_1, event_handler, ID_NUM_KEY1, NULL, 0);
+  lv_btn_set_style(NumberKey_1, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_1, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_1, LV_LAYOUT_OFF);
+  labelKey_1 = lv_label_create(NumberKey_1, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_1, machine_menu.key_1);
+  lv_obj_align(labelKey_1, NumberKey_1, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_2 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_2, 168, 90);                                 /*Set its position*/
+  lv_obj_set_size(NumberKey_2, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_2, event_handler, ID_NUM_KEY2, NULL, 0);
+  lv_btn_set_style(NumberKey_2, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_2, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_2, LV_LAYOUT_OFF);
+  labelKey_2 = lv_label_create(NumberKey_2, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_2, machine_menu.key_2);
+  lv_obj_align(labelKey_2, NumberKey_2, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_3 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_3, 244, 90);                                 /*Set its position*/
+  lv_obj_set_size(NumberKey_3, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_3, event_handler, ID_NUM_KEY3, NULL, 0);
+  lv_btn_set_style(NumberKey_3, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_3, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_3, LV_LAYOUT_OFF);
+  labelKey_3 = lv_label_create(NumberKey_3, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_3, machine_menu.key_3);
+  lv_obj_align(labelKey_3, NumberKey_3, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_4 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_4, 92, 140);                                 /*Set its position*/
+  lv_obj_set_size(NumberKey_4, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_4, event_handler, ID_NUM_KEY4, NULL, 0);
+  lv_btn_set_style(NumberKey_4, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_4, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_4, LV_LAYOUT_OFF);
+  labelKey_4 = lv_label_create(NumberKey_4, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_4, machine_menu.key_4);
+  lv_obj_align(labelKey_4, NumberKey_4, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_5 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_5, 168, 140);                                /*Set its position*/
+  lv_obj_set_size(NumberKey_5, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_5, event_handler, ID_NUM_KEY5, NULL, 0);
+  lv_btn_set_style(NumberKey_5, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_5, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_5, LV_LAYOUT_OFF);
+  labelKey_5 = lv_label_create(NumberKey_5, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_5, machine_menu.key_5);
+  lv_obj_align(labelKey_5, NumberKey_5, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_6 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_6, 244, 140);                                /*Set its position*/
+  lv_obj_set_size(NumberKey_6, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_6, event_handler, ID_NUM_KEY6, NULL, 0);
+  lv_btn_set_style(NumberKey_6, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_6, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_6, LV_LAYOUT_OFF);
+  labelKey_6 = lv_label_create(NumberKey_6, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_6, machine_menu.key_6);
+  lv_obj_align(labelKey_6, NumberKey_6, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_7 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_7, 92, 190);                                 /*Set its position*/
+  lv_obj_set_size(NumberKey_7, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_7, event_handler, ID_NUM_KEY7, NULL, 0);
+  lv_btn_set_style(NumberKey_7, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_7, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_7, LV_LAYOUT_OFF);
+  labelKey_7 = lv_label_create(NumberKey_7, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_7, machine_menu.key_7);
+  lv_obj_align(labelKey_7, NumberKey_7, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_8 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_8, 168, 190);                                /*Set its position*/
+  lv_obj_set_size(NumberKey_8, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_8, event_handler, ID_NUM_KEY8, NULL, 0);
+  lv_btn_set_style(NumberKey_8, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_8, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_8, LV_LAYOUT_OFF);
+  labelKey_8 = lv_label_create(NumberKey_8, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_8, machine_menu.key_8);
+  lv_obj_align(labelKey_8, NumberKey_8, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_9 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_9, 244, 190);                                /*Set its position*/
+  lv_obj_set_size(NumberKey_9, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_9, event_handler, ID_NUM_KEY9, NULL, 0);
+  lv_btn_set_style(NumberKey_9, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_9, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_9, LV_LAYOUT_OFF);
+  labelKey_9 = lv_label_create(NumberKey_9, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_9, machine_menu.key_9);
+  lv_obj_align(labelKey_9, NumberKey_9, LV_ALIGN_CENTER, 0, 0);
+
+  NumberKey_0 = lv_btn_create(scr, NULL);                               /*Add a button the current screen*/
+  lv_obj_set_pos(NumberKey_0, 92, 240);                                 /*Set its position*/
+  lv_obj_set_size(NumberKey_0, 68, 40);
+  lv_obj_set_event_cb_mks(NumberKey_0, event_handler, ID_NUM_KEY0, NULL, 0);
+  lv_btn_set_style(NumberKey_0, LV_BTN_STYLE_REL, &style_num_key_pre);  /*Set the button's released style*/
+  lv_btn_set_style(NumberKey_0, LV_BTN_STYLE_PR, &style_num_key_rel);   /*Set the button's pressed style*/
+  lv_btn_set_layout(NumberKey_0, LV_LAYOUT_OFF);
+  labelKey_0 = lv_label_create(NumberKey_0, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKey_0, machine_menu.key_0);
+  lv_obj_align(labelKey_0, NumberKey_0, LV_ALIGN_CENTER, 0, 0);
+
+  KeyBack = lv_btn_create(scr, NULL);                                   /*Add a button the current screen*/
+  lv_obj_set_pos(KeyBack, 320, 90);                                     /*Set its position*/
+  lv_obj_set_size(KeyBack, 68, 40);
+  lv_obj_set_event_cb_mks(KeyBack, event_handler, ID_NUM_BACK, NULL, 0);
+  lv_btn_set_style(KeyBack, LV_BTN_STYLE_REL, &style_num_key_pre);      /*Set the button's released style*/
+  lv_btn_set_style(KeyBack, LV_BTN_STYLE_PR, &style_num_key_rel);       /*Set the button's pressed style*/
+  lv_btn_set_layout(KeyBack, LV_LAYOUT_OFF);
+  labelKeyBack = lv_label_create(KeyBack, NULL);                        /*Add a label to the button*/
+  lv_label_set_text(labelKeyBack, machine_menu.key_back);
+  lv_obj_align(labelKeyBack, KeyBack, LV_ALIGN_CENTER, 0, 0);
+
+  KeyReset = lv_btn_create(scr, NULL);                                  /*Add a button the current screen*/
+  lv_obj_set_pos(KeyReset, 320, 140);                                   /*Set its position*/
+  lv_obj_set_size(KeyReset, 68, 40);
+  lv_obj_set_event_cb_mks(KeyReset, event_handler, ID_NUM_RESET, NULL, 0);
+  lv_btn_set_style(KeyReset, LV_BTN_STYLE_REL, &style_num_key_pre);     /*Set the button's released style*/
+  lv_btn_set_style(KeyReset, LV_BTN_STYLE_PR, &style_num_key_rel);      /*Set the button's pressed style*/
+  lv_btn_set_layout(KeyReset, LV_LAYOUT_OFF);
+  labelKeyReset = lv_label_create(KeyReset, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKeyReset, machine_menu.key_reset);
+  lv_obj_align(labelKeyReset, KeyReset, LV_ALIGN_CENTER, 0, 0);
+
+  KeyConfirm = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+  lv_obj_set_pos(KeyConfirm, 320, 190);                                 /*Set its position*/
+  lv_obj_set_size(KeyConfirm, 68, 90);
+  lv_obj_set_event_cb_mks(KeyConfirm, event_handler, ID_NUM_CONFIRM, NULL, 0);
+  lv_btn_set_style(KeyConfirm, LV_BTN_STYLE_REL, &style_num_key_pre);   /*Set the button's released style*/
+  lv_btn_set_style(KeyConfirm, LV_BTN_STYLE_PR, &style_num_key_rel);    /*Set the button's pressed style*/
+  lv_btn_set_layout(KeyConfirm, LV_LAYOUT_OFF);
+  labelKeyConfirm = lv_label_create(KeyConfirm, NULL);                  /*Add a label to the button*/
+  lv_label_set_text(labelKeyConfirm, machine_menu.key_confirm);
+  lv_obj_align(labelKeyConfirm, KeyConfirm, LV_ALIGN_CENTER, 0, 0);
+
+  KeyPoint = lv_btn_create(scr, NULL);                                  /*Add a button the current screen*/
+  lv_obj_set_pos(KeyPoint, 244, 240);                                   /*Set its position*/
+  lv_obj_set_size(KeyPoint, 68, 40);
+  lv_obj_set_event_cb_mks(KeyPoint, event_handler, ID_NUM_POINT, NULL, 0);
+  lv_btn_set_style(KeyPoint, LV_BTN_STYLE_REL, &style_num_key_pre);     /*Set the button's released style*/
+  lv_btn_set_style(KeyPoint, LV_BTN_STYLE_PR, &style_num_key_rel);      /*Set the button's pressed style*/
+  lv_btn_set_layout(KeyPoint, LV_LAYOUT_OFF);
+  labelKeyPoint = lv_label_create(KeyPoint, NULL);                      /*Add a label to the button*/
+  lv_label_set_text(labelKeyPoint, machine_menu.key_point);
+  lv_obj_align(labelKeyPoint, KeyPoint, LV_ALIGN_CENTER, 0, 0);
+
+  Minus = lv_btn_create(scr, NULL);                                     /*Add a button the current screen*/
+  lv_obj_set_pos(Minus, 168, 240);                                      /*Set its position*/
+  lv_obj_set_size(Minus, 68, 40);
+  lv_obj_set_event_cb_mks(Minus, event_handler, ID_NUM_NAGETIVE, NULL, 0);
+  lv_btn_set_style(Minus, LV_BTN_STYLE_REL, &style_num_key_pre);        /*Set the button's released style*/
+  lv_btn_set_style(Minus, LV_BTN_STYLE_PR, &style_num_key_rel);         /*Set the button's pressed style*/
+  lv_btn_set_layout(Minus, LV_LAYOUT_OFF);
+  labelMinus = lv_label_create(Minus, NULL);                            /*Add a label to the button*/
+  lv_label_set_text(labelMinus, machine_menu.negative);
+  lv_obj_align(labelMinus, Minus, LV_ALIGN_CENTER, 0, 0);
+
+  disp_key_value();
+}
+
+void lv_clear_number_key() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h
new file mode 100644
index 0000000000000000000000000000000000000000..d35cee63439c446a991676f01bccdd644faf9e7b
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_number_key.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_number_key(void);
+extern void lv_clear_number_key();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.cpp
similarity index 81%
rename from Marlin/src/lcd/extui/lib/mks_ui/draw_opration.cpp
rename to Marlin/src/lcd/extui/lib/mks_ui/draw_operation.cpp
index 1a423efdaa81e4e517b572d7f9a81ebec52f2178..ad8cad03e0c30452bf501256b33f6ea31e6ec97b 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -53,7 +53,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        lv_clear_opration();
+        lv_clear_operation();
         lv_draw_preHeat();
       }
       break;
@@ -62,7 +62,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        lv_clear_opration();
+        lv_clear_operation();
         lv_draw_extrusion();
       }
       break;
@@ -71,7 +71,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        lv_clear_opration();
+        lv_clear_operation();
         lv_draw_move_motor();
       }
       break;
@@ -87,7 +87,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        lv_clear_opration();
+        lv_clear_operation();
         lv_draw_fan();
       }
       break;
@@ -96,7 +96,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        lv_clear_opration();
+        lv_clear_operation();
         lv_draw_change_speed();
       }
       break;
@@ -116,7 +116,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (gCfgItems.finish_power_off == 1) {
           gCfgItems.finish_power_off = 0;
-          lv_obj_set_event_cb_mks(obj, event_handler, ID_O_POWER_OFF, "bmp_manual_off.bin", 0); //dindt find bmp_Mamual...
+          lv_obj_set_event_cb_mks(obj, event_handler, ID_O_POWER_OFF, "bmp_manual_off.bin", 0); // didn't find bmp_Mamual...
           lv_label_set_text(label_PowerOff, printing_more_menu.manual);
           lv_obj_align(label_PowerOff, buttonPowerOff, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
           lv_obj_refresh_ext_draw_pad(label_PowerOff);
@@ -136,7 +136,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
   }
 }
 
-void lv_draw_opration(void) {
+void lv_draw_operation(void) {
   lv_obj_t *buttonPreHeat, *buttonExtrusion, *buttonSpeed;
   lv_obj_t *buttonBack, *buttonFan;
   lv_obj_t *labelPreHeat, *labelExtrusion;
@@ -156,7 +156,7 @@ void lv_draw_opration(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -165,57 +165,59 @@ void lv_draw_opration(void) {
   LV_IMG_DECLARE(bmp_pic);
 
   /*Create an Image button*/
-  buttonPreHeat = lv_imgbtn_create(scr, NULL);
+  buttonPreHeat   = lv_imgbtn_create(scr, NULL);
   buttonExtrusion = lv_imgbtn_create(scr, NULL);
-  buttonFan = lv_imgbtn_create(scr, NULL);
-  buttonSpeed = lv_imgbtn_create(scr, NULL);
+  buttonFan       = lv_imgbtn_create(scr, NULL);
+  buttonSpeed     = lv_imgbtn_create(scr, NULL);
 
-  if (uiCfg.print_state != WORKING)
+  if (uiCfg.print_state != WORKING) {
     //buttonFilament = lv_imgbtn_create(scr, NULL);
-    //else
+    //} else {
     buttonMove = lv_imgbtn_create(scr, NULL);
+  }
+
   buttonPowerOff = lv_imgbtn_create(scr, NULL);
-  buttonBack = lv_imgbtn_create(scr, NULL);
+  buttonBack     = lv_imgbtn_create(scr, NULL);
 
-  lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_O_PRE_HEAT, "bmp_PreHeat.bin", 0);
+  lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_O_PRE_HEAT, "bmp_temp.bin", 0);
   lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonPreHeat, LV_PROTECT_FOLLOW);
   #if 1
-    lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_O_EXTRUCT, "bmp_Extruct.bin", 0);
+    lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_O_EXTRUCT, "bmp_extrude_opr.bin", 0);
     lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_O_FAN, "bmp_Fan.bin", 0);
+    lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_O_FAN, "bmp_fan.bin", 0);
     lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_O_SPEED, "bmp_Speed.bin", 0);
+    lv_obj_set_event_cb_mks(buttonSpeed, event_handler, ID_O_SPEED, "bmp_speed.bin", 0);
     lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonSpeed, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonSpeed, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     if (uiCfg.print_state != WORKING) {
-      /*{
-          lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_O_FILAMENT,"bmp_Filamentchange.bin",0);
-          lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
-          lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
-          lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_lable_pre);
-          lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_lable_rel);
-      }
-      else*/
-      lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_O_MOV, "bmp_Mov.bin", 0);
+      /*
+        lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_O_FILAMENT,"bmp_Filamentchange.bin",0);
+        lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
+        lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
+        lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_label_pre);
+        lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_label_rel);
+      } else {
+      */
+      lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_O_MOV, "bmp_move_opr.bin", 0);
       lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_REL, &bmp_pic);
       lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_PR, &bmp_pic);
-      lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_lable_pre);
-      lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_lable_rel);
+      lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_label_rel);
     }
     if (gCfgItems.finish_power_off == 1)
       lv_obj_set_event_cb_mks(buttonPowerOff, event_handler, ID_O_POWER_OFF, "bmp_auto_off.bin", 0);
@@ -223,15 +225,15 @@ void lv_draw_opration(void) {
       lv_obj_set_event_cb_mks(buttonPowerOff, event_handler, ID_O_POWER_OFF, "bmp_manual_off.bin", 0);
     lv_imgbtn_set_src(buttonPowerOff, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonPowerOff, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPowerOff, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_O_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_O_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  #endif
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+  #endif // if 1
 
   lv_obj_set_pos(buttonPreHeat, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonExtrusion, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
@@ -240,17 +242,17 @@ void lv_draw_opration(void) {
   lv_obj_set_pos(buttonSpeed, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
 
   if (uiCfg.print_state != WORKING) {
-    /*{
-            lv_obj_set_pos(buttonFilament,INTERVAL_V,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
-    }
-    else*/
+    /*
+      lv_obj_set_pos(buttonFilament,INTERVAL_V,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+    } else {
+    */
     lv_obj_set_pos(buttonMove, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
     lv_obj_set_pos(buttonPowerOff, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   }
   else {
     lv_obj_set_pos(buttonPowerOff, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   }
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonPreHeat, LV_LAYOUT_OFF);
@@ -258,27 +260,29 @@ void lv_draw_opration(void) {
   lv_btn_set_layout(buttonFan, LV_LAYOUT_OFF);
   lv_btn_set_layout(buttonSpeed, LV_LAYOUT_OFF);
 
-  if (uiCfg.print_state != WORKING)
-  /*{
-          lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
-  }
-  else*/
+  if (uiCfg.print_state != WORKING) {
+    /*
+      lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
+    } else {
+    */
     lv_btn_set_layout(buttonMove, LV_LAYOUT_OFF);
+  }
   lv_btn_set_layout(buttonPowerOff, LV_LAYOUT_OFF);
   lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
 
-  labelPreHeat = lv_label_create(buttonPreHeat, NULL);
+  labelPreHeat   = lv_label_create(buttonPreHeat, NULL);
   labelExtrusion = lv_label_create(buttonExtrusion, NULL);
 
-  label_Fan = lv_label_create(buttonFan, NULL);
+  label_Fan   = lv_label_create(buttonFan, NULL);
   label_Speed = lv_label_create(buttonSpeed, NULL);
 
-  if (uiCfg.print_state != WORKING)
-  /*{
-          label_Filament = lv_label_create(buttonFilament, NULL);
+  if (uiCfg.print_state != WORKING) {
+    /*
+      label_Filament = lv_label_create(buttonFilament, NULL);
+    } else {
+    */
+      label_Move = lv_label_create(buttonMove, NULL);
   }
-  else*/
-    label_Move = lv_label_create(buttonMove, NULL);
   label_PowerOff = lv_label_create(buttonPowerOff, NULL);
 
   label_Back = lv_label_create(buttonBack, NULL);
@@ -297,11 +301,11 @@ void lv_draw_opration(void) {
     lv_obj_align(label_Speed, buttonSpeed, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
 
     if (uiCfg.print_state != WORKING) {
-      /*{
-          lv_label_set_text(label_Filament, operation_menu.filament);
-          lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
-      }
-      else*/
+      /*
+        lv_label_set_text(label_Filament, operation_menu.filament);
+        lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
+      } else {
+      */
       lv_label_set_text(label_Move, operation_menu.move);
       lv_obj_align(label_Move, buttonMove, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
     }
@@ -317,6 +321,6 @@ void lv_draw_opration(void) {
   }
 }
 
-void lv_clear_opration() { lv_obj_del(scr); }
+void lv_clear_operation() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.h
similarity index 93%
rename from Marlin/src/lcd/extui/lib/mks_ui/draw_opration.h
rename to Marlin/src/lcd/extui/lib/mks_ui/draw_operation.h
index 8ca562f0cfe0d03604fd5b21223f24a0bb8842bc..e2eaaf06a499b54dadb5e72e1fc2cf1b3fd69bb6 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_opration.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_operation.h
@@ -25,8 +25,8 @@
 extern "C" { /* C-declarations for C++ */
 #endif
 
-extern void lv_draw_opration(void);
-extern void lv_clear_opration();
+extern void lv_draw_operation(void);
+extern void lv_clear_operation();
 
 //extern void disp_temp_ready_print();
 #ifdef __cplusplus
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp
index f66898b7925bcf735db5714ab8cb18e6c4d958cc..f7dd2060b8f67ed5ff5a9cbb10ef53c32be394b1 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_message.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if BOTH(TFT_LVGL_UI, ADVANCED_PAUSE_FEATURE)
+#if BOTH(HAS_TFT_LVGL_UI, ADVANCED_PAUSE_FEATURE)
 
 #include "draw_ui.h"
 #include "lv_conf.h"
@@ -52,4 +52,4 @@ void lv_draw_pause_message(const PauseMessage msg) {
   }
 }
 
-#endif // TFT_LVGL_UI && ADVANCED_PAUSE_FEATURE
+#endif // HAS_TFT_LVGL_UI && ADVANCED_PAUSE_FEATURE
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..56caf812b1f91138f59cfe112eb2cf0eb361004f
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.cpp
@@ -0,0 +1,222 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_PAUSE_RETURN 1
+#define ID_PAUSE_X      2
+#define ID_PAUSE_Y      3
+#define ID_PAUSE_Z      4
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_PAUSE_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_clear_pause_position();
+        draw_return_ui();
+      }
+      break;
+    case ID_PAUSE_X:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = pause_pos_x;
+        lv_clear_pause_position();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_PAUSE_Y:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = pause_pos_y;
+        lv_clear_pause_position();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_PAUSE_Z:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = pause_pos_z;
+        lv_clear_pause_position();
+        lv_draw_number_key();
+      }
+      break;
+  }
+}
+
+void lv_draw_pause_position(void) {
+  lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+  lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+  lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+  lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+
+  lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != PAUSE_POS_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = PAUSE_POS_UI;
+  }
+  disp_state = PAUSE_POS_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.PausePosText);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  // LV_IMG_DECLARE(bmp_para_arrow);
+  LV_IMG_DECLARE(bmp_para_bank);
+
+  buttonXText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+  lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+  lv_obj_set_event_cb(buttonXText, event_handler);
+  lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+  labelXText = lv_label_create(buttonXText, NULL);                        /*Add a label to the button*/
+
+  buttonXValue = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+  lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_PAUSE_X, "bmp_value_blank.bin", 0);
+  lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+  lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+  lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+  lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+  lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+  labelXValue = lv_label_create(buttonXValue, NULL);
+
+  line1 = lv_line_create(scr, NULL);
+  lv_ex_line(line1, line_points[0]);
+
+  buttonYText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+  lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+  lv_obj_set_event_cb(buttonYText, event_handler);
+  lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+  labelYText = lv_label_create(buttonYText, NULL);                        /*Add a label to the button*/
+
+  buttonYValue = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+  lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_PAUSE_Y, "bmp_value_blank.bin", 0);
+  lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+  lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+  lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+  lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+  lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+  labelYValue = lv_label_create(buttonYValue, NULL);
+
+  line2 = lv_line_create(scr, NULL);
+  lv_ex_line(line2, line_points[1]);
+
+  buttonZText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+  lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3);          /*Set its position*/
+  lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+  lv_obj_set_event_cb(buttonZText, event_handler);
+  lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+  lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+  lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+  labelZText = lv_label_create(buttonZText, NULL);                        /*Add a label to the button*/
+
+  buttonZValue = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+  lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_PAUSE_Z, "bmp_value_blank.bin", 0);
+  lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+  lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+  lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+  lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+  lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+  labelZValue = lv_label_create(buttonZValue, NULL);
+
+  line3 = lv_line_create(scr, NULL);
+  lv_ex_line(line3, line_points[2]);
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_PAUSE_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    ZERO(public_buf_l);
+    sprintf_P(public_buf_l, PSTR("%.1f"), gCfgItems.pausePosX);
+    lv_label_set_text(labelXValue, public_buf_l);
+    lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+    ZERO(public_buf_l);
+    sprintf_P(public_buf_l, PSTR("%.1f"), gCfgItems.pausePosY);
+    lv_label_set_text(labelYValue, public_buf_l);
+    lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+    ZERO(public_buf_l);
+    sprintf_P(public_buf_l, PSTR("%.1f"), gCfgItems.pausePosZ);
+    lv_label_set_text(labelZValue, public_buf_l);
+    lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+    lv_label_set_text(labelXText, machine_menu.xPos);
+    lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelYText, machine_menu.yPos);
+    lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(labelZText, machine_menu.zPos);
+    lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+  }
+}
+
+void lv_clear_pause_position() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h
new file mode 100644
index 0000000000000000000000000000000000000000..5f1b4dc96091dc3c065c3f8626e8dc803c7db735
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_pause_position.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_pause_position(void);
+extern void lv_clear_pause_position();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp
index 82defbebde8226ed1bf3cc7606f6ca91a4091747..801114e6b2eaf45e95995d24e68dd535f75e68e4 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_preHeat.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -58,29 +58,24 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
           if (uiCfg.curSprayerChoose == 0) {
             if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_0_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) {
               thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_0_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1);
-
               thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
             }
           }
           #if !defined(SINGLENOZZLE) && EXTRUDERS >= 2
-          else    if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) {
-            thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1);
-
-            thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
-          }
+            else if ((int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target > (HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1))) {
+              thermalManager.temp_hotend[uiCfg.curSprayerChoose].target = (float)HEATER_1_MAXTEMP - (WATCH_TEMP_INCREASE + TEMP_HYSTERESIS + 1);
+              thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
+            }
           #endif
         }
         #if HAS_HEATED_BED
-        else {
-
-          thermalManager.temp_bed.target += uiCfg.stepHeat;
-
-          if ((int)thermalManager.temp_bed.target > BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) {
-            thermalManager.temp_bed.target = (float)BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1);
-            thermalManager.start_watching_bed();
+          else {
+            thermalManager.temp_bed.target += uiCfg.stepHeat;
+            if ((int)thermalManager.temp_bed.target > BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1)) {
+              thermalManager.temp_bed.target = (float)BED_MAXTEMP - (WATCH_BED_TEMP_INCREASE + TEMP_BED_HYSTERESIS + 1);
+              thermalManager.start_watching_bed();
+            }
           }
-
-        }
         #endif
         disp_desire_temp();
       }
@@ -101,16 +96,16 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
           }
         }
         #if HAS_HEATED_BED
-        else {
-          if ((int)thermalManager.temp_bed.target > uiCfg.stepHeat) {
-            thermalManager.temp_bed.target -= uiCfg.stepHeat;
-            thermalManager.start_watching_bed();
-          }
           else {
-            thermalManager.temp_bed.target = (float)0;
-            thermalManager.start_watching_bed();
+            if ((int)thermalManager.temp_bed.target > uiCfg.stepHeat) {
+              thermalManager.temp_bed.target -= uiCfg.stepHeat;
+              thermalManager.start_watching_bed();
+            }
+            else {
+              thermalManager.temp_bed.target = (float)0;
+              thermalManager.start_watching_bed();
+            }
           }
-        }
         #endif
         disp_desire_temp();
       }
@@ -131,12 +126,12 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
                 uiCfg.curTempType = 1;
               }
               else {
-                uiCfg.curTempType = 0;
+                uiCfg.curTempType      = 0;
                 uiCfg.curSprayerChoose = 0;
               }
             }
           }
-          else    if (uiCfg.curSprayerChoose == 0) {
+          else if (uiCfg.curSprayerChoose == 0) {
             if (TEMP_SENSOR_BED != 0)
               uiCfg.curTempType = 1;
             else
@@ -145,7 +140,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         }
         else if (uiCfg.curTempType == 1) {
           uiCfg.curSprayerChoose = 0;
-          uiCfg.curTempType = 0;
+          uiCfg.curTempType      = 0;
         }
         disp_temp_type();
       }
@@ -174,10 +169,10 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
           thermalManager.start_watching_hotend(uiCfg.curSprayerChoose);
         }
         #if HAS_HEATED_BED
-        else {
-          thermalManager.temp_bed.target = (float)0;
-          thermalManager.start_watching_bed();
-        }
+          else {
+            thermalManager.temp_bed.target = (float)0;
+            thermalManager.start_watching_bed();
+          }
         #endif
         disp_desire_temp();
       }
@@ -211,7 +206,7 @@ void lv_draw_preHeat(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -220,57 +215,57 @@ void lv_draw_preHeat(void) {
   LV_IMG_DECLARE(bmp_pic);
 
   /*Create an Image button*/
-  buttonAdd = lv_imgbtn_create(scr, NULL);
-  buttonDec = lv_imgbtn_create(scr, NULL);
-  buttoType = lv_imgbtn_create(scr, NULL);
+  buttonAdd  = lv_imgbtn_create(scr, NULL);
+  buttonDec  = lv_imgbtn_create(scr, NULL);
+  buttoType  = lv_imgbtn_create(scr, NULL);
   buttonStep = lv_imgbtn_create(scr, NULL);
-  buttonOff = lv_imgbtn_create(scr, NULL);
+  buttonOff  = lv_imgbtn_create(scr, NULL);
   buttonBack = lv_imgbtn_create(scr, NULL);
 
   lv_obj_set_event_cb_mks(buttonAdd, event_handler, ID_P_ADD, "bmp_Add.bin", 0);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonAdd, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonAdd, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonAdd, LV_PROTECT_FOLLOW);
   #if 1
     lv_obj_set_event_cb_mks(buttonDec, event_handler, ID_P_DEC, "bmp_Dec.bin", 0);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonDec, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonDec, LV_BTN_STATE_REL, &tft_style_label_rel);
 
 
     lv_imgbtn_set_src(buttoType, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttoType, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttoType, LV_BTN_STATE_REL, &tft_style_label_rel);
 
 
     lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonStep, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonStep, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_P_OFF, "bmp_Speed0.bin", 0);
+    lv_obj_set_event_cb_mks(buttonOff, event_handler, ID_P_OFF, "bmp_speed0.bin", 0);
     lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonOff, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonOff, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
 
   lv_obj_set_pos(buttonAdd, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonDec, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
-  lv_obj_set_pos(buttoType, INTERVAL_V,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttoType, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
   lv_obj_set_pos(buttonStep, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonOff, BTN_X_PIXEL * 2 + INTERVAL_V * 3,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonOff, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonAdd, LV_LAYOUT_OFF);
@@ -284,7 +279,7 @@ void lv_draw_preHeat(void) {
   lv_obj_t * labelDec = lv_label_create(buttonDec, NULL);
   labelType = lv_label_create(buttoType, NULL);
   labelStep = lv_label_create(buttonStep, NULL);
-  lv_obj_t * labelOff = lv_label_create(buttonOff, NULL);
+  lv_obj_t * labelOff   = lv_label_create(buttonOff, NULL);
   lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
 
 
@@ -306,7 +301,7 @@ void lv_draw_preHeat(void) {
   disp_step_heat();
 
   tempText1 = lv_label_create(scr, NULL);
-  lv_obj_set_style(tempText1, &tft_style_lable_rel);
+  lv_obj_set_style(tempText1, &tft_style_label_rel);
   disp_desire_temp();
 }
 
@@ -314,14 +309,14 @@ void disp_temp_type() {
 
   if (uiCfg.curTempType == 0) {
     if (uiCfg.curSprayerChoose == 1) {
-      lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Extru2.bin", 0);
+      lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_extru2.bin", 0);
       if (gCfgItems.multiple_language != 0) {
         lv_label_set_text(labelType, preheat_menu.ext2);
         lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
       }
     }
     else {
-      lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Extru1.bin", 0);
+      lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_extru1.bin", 0);
       if (gCfgItems.multiple_language != 0) {
         lv_label_set_text(labelType, preheat_menu.ext1);
         lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -330,7 +325,7 @@ void disp_temp_type() {
 
   }
   else {
-    lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_Bed.bin", 0);
+    lv_obj_set_event_cb_mks(buttoType, event_handler, ID_P_TYPE, "bmp_bed.bin", 0);
     if (gCfgItems.multiple_language != 0) {
       lv_label_set_text(labelType, preheat_menu.hotbed);
       lv_obj_align(labelType, buttoType, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -352,12 +347,12 @@ void disp_desire_temp() {
     sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].celsius,  (int)thermalManager.temp_hotend[uiCfg.curSprayerChoose].target);
   }
   #if HAS_HEATED_BED
-  else {
-    strcat(public_buf_l, preheat_menu.hotbed);
-    sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_bed.celsius,  (int)thermalManager.temp_bed.target);
-  }
+    else {
+      strcat(public_buf_l, preheat_menu.hotbed);
+      sprintf(buf, preheat_menu.value_state, (int)thermalManager.temp_bed.celsius,  (int)thermalManager.temp_bed.target);
+    }
   #endif
-  strcat(public_buf_l, ": ");
+  strcat_P(public_buf_l, PSTR(": "));
   strcat(public_buf_l, buf);
   lv_label_set_text(tempText1, public_buf_l);
   lv_obj_align(tempText1, NULL, LV_ALIGN_CENTER, 0, -50);
@@ -365,11 +360,11 @@ void disp_desire_temp() {
 
 void disp_step_heat() {
   if (uiCfg.stepHeat == 1)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step1_degree.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_step1_degree.bin", 0);
   else if (uiCfg.stepHeat == 5)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step5_degree.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_step5_degree.bin", 0);
   else if (uiCfg.stepHeat == 10)
-    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_Step10_degree.bin", 0);
+    lv_obj_set_event_cb_mks(buttonStep, event_handler, ID_P_STEP, "bmp_step10_degree.bin", 0);
 
   if (gCfgItems.multiple_language != 0) {
     if (uiCfg.stepHeat == 1) {
@@ -389,4 +384,4 @@ void disp_step_heat() {
 
 void lv_clear_preHeat() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp
index 345b15882ba0b655f3766dcf6be3f8a585ad6c28..84853cff9d091dbb9192ac104bcdf6fc6856598d 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_print_file.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 #include "lv_conf.h"
@@ -34,9 +34,8 @@
 
 static lv_obj_t * scr;
 
-static lv_obj_t *buttonPageUp, *buttonPageDown, *buttonBack, *buttonGcode[FILE_BTN_CNT];
-static lv_obj_t * labelPageUp[FILE_BTN_CNT];
-static lv_obj_t *buttonText[FILE_BTN_CNT];
+static lv_obj_t *buttonPageUp, *buttonPageDown, *buttonBack,
+                *buttonGcode[FILE_BTN_CNT], *labelPageUp[FILE_BTN_CNT], *buttonText[FILE_BTN_CNT];
 
 #define ID_P_UP     7
 #define ID_P_DOWN   8
@@ -53,64 +52,62 @@ uint8_t sel_id = 0;
 
 #if ENABLED(SDSUPPORT)
 
-static uint8_t search_file() {
-  int valid_name_cnt = 0;
-  //char tmp[SHORT_NEME_LEN*MAX_DIR_LEVEL+1];
+  static uint8_t search_file() {
+    int valid_name_cnt = 0;
+    //char tmp[SHORT_NEME_LEN*MAX_DIR_LEVEL+1];
 
-  list_file.Sd_file_cnt = 0;
-  //list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
+    list_file.Sd_file_cnt = 0;
+    //list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
 
-  //root2.rewind();
-  //SERIAL_ECHOLN(list_file.curDirPath);
+    //root2.rewind();
+    //SERIAL_ECHOLN(list_file.curDirPath);
 
-  if (curDirLever != 0) card.cd(list_file.curDirPath);
-  else card.cdroot(); //while(card.cdup());
+    if (curDirLever != 0) card.cd(list_file.curDirPath);
+    else card.cdroot(); // while(card.cdup());
 
-  const uint16_t fileCnt = card.get_num_Files();
+    const uint16_t fileCnt = card.get_num_Files();
 
-  for (uint16_t i = 0; i < fileCnt; i++) {
-    if (list_file.Sd_file_cnt == list_file.Sd_file_offset) {
-      const uint16_t nr = SD_ORDER(i, fileCnt);
-      card.getfilename_sorted(nr);
+    for (uint16_t i = 0; i < fileCnt; i++) {
+      if (list_file.Sd_file_cnt == list_file.Sd_file_offset) {
+        const uint16_t nr = SD_ORDER(i, fileCnt);
+        card.getfilename_sorted(nr);
 
-      if (card.flag.filenameIsDir)
-        /*
-          SERIAL_ECHOLN(card.longest_filename);
-        */
-        list_file.IsFolder[valid_name_cnt] = 1;
-      else
-        //SERIAL_ECHOLN(card.longFilename);
-        list_file.IsFolder[valid_name_cnt] = 0;
-
-      #if 1
-        //
-        memset(list_file.file_name[valid_name_cnt], 0, strlen(list_file.file_name[valid_name_cnt]));
-        strcpy(list_file.file_name[valid_name_cnt], list_file.curDirPath);
-        strcat(list_file.file_name[valid_name_cnt], "/");
-        strcat(list_file.file_name[valid_name_cnt], card.filename);
-        //
-        memset(list_file.long_name[valid_name_cnt], 0, strlen(list_file.long_name[valid_name_cnt]));
-        if (card.longFilename[0] == 0)
-          strncpy(list_file.long_name[valid_name_cnt], card.filename, strlen(card.filename));
+        if (card.flag.filenameIsDir)
+          //SERIAL_ECHOLN(card.longest_filename);
+          list_file.IsFolder[valid_name_cnt] = 1;
         else
-          strncpy(list_file.long_name[valid_name_cnt], card.longFilename, strlen(card.longFilename));
-
-        valid_name_cnt++;
-        if (valid_name_cnt == 1)
-          dir_offset[curDirLever].cur_page_first_offset = list_file.Sd_file_offset;
-        if (valid_name_cnt >= FILE_NUM) {
-          dir_offset[curDirLever].cur_page_last_offset = list_file.Sd_file_offset;
+          //SERIAL_ECHOLN(card.longFilename);
+          list_file.IsFolder[valid_name_cnt] = 0;
+
+        #if 1
+          //
+          memset(list_file.file_name[valid_name_cnt], 0, strlen(list_file.file_name[valid_name_cnt]));
+          strcpy(list_file.file_name[valid_name_cnt], list_file.curDirPath);
+          strcat_P(list_file.file_name[valid_name_cnt], PSTR("/"));
+          strcat(list_file.file_name[valid_name_cnt], card.filename);
+          //
+          memset(list_file.long_name[valid_name_cnt], 0, strlen(list_file.long_name[valid_name_cnt]));
+          if (card.longFilename[0] == 0)
+            strncpy(list_file.long_name[valid_name_cnt], card.filename, strlen(card.filename));
+          else
+            strncpy(list_file.long_name[valid_name_cnt], card.longFilename, strlen(card.longFilename));
+
+          valid_name_cnt++;
+          if (valid_name_cnt == 1)
+            dir_offset[curDirLever].cur_page_first_offset = list_file.Sd_file_offset;
+          if (valid_name_cnt >= FILE_NUM) {
+            dir_offset[curDirLever].cur_page_last_offset = list_file.Sd_file_offset;
+            list_file.Sd_file_offset++;
+            break;
+          }
           list_file.Sd_file_offset++;
-          break;
-        }
-        list_file.Sd_file_offset++;
-      #endif
+        #endif
+      }
+      list_file.Sd_file_cnt++;
     }
-    list_file.Sd_file_cnt++;
+    //card.closefile(false);
+    return valid_name_cnt;
   }
-  //card.closefile(false);
-  return valid_name_cnt;
-}
 
 #endif // SDSUPPORT
 
@@ -147,7 +144,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
     }
     else if (event == LV_EVENT_RELEASED) {
       if (dir_offset[curDirLever].curPage > 0) {
-        //2015.05.19
+        // 2015.05.19
         list_file.Sd_file_cnt = 0;
 
         if (dir_offset[curDirLever].cur_page_first_offset >= FILE_NUM)
@@ -169,7 +166,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
     }
     else if (event == LV_EVENT_RELEASED) {
       if (dir_offset[curDirLever].cur_page_last_offset > 0) {
-        list_file.Sd_file_cnt = 0;
+        list_file.Sd_file_cnt    = 0;
         list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_last_offset + 1;
         #if ENABLED(SDSUPPORT)
           file_count = search_file();
@@ -195,9 +192,9 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
           #if ENABLED(SDSUPPORT)
             card.cdup();
           #endif
-          dir_offset[curDirLever].curPage = 0;
+          dir_offset[curDirLever].curPage               = 0;
           dir_offset[curDirLever].cur_page_first_offset = 0;
-          dir_offset[curDirLever].cur_page_last_offset = 0;
+          dir_offset[curDirLever].cur_page_last_offset  = 0;
           curDirLever--;
           list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
           #if ENABLED(SDSUPPORT)
@@ -221,7 +218,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         else if (event == LV_EVENT_RELEASED) {
           if (list_file.file_name[i][0] != 0) {
             if (list_file.IsFolder[i] == 1) {
-              memset(list_file.curDirPath, 0, sizeof(list_file.curDirPath));
+              ZERO(list_file.curDirPath);
               strcpy(list_file.curDirPath,  list_file.file_name[i]);
               curDirLever++;
               list_file.Sd_file_offset = dir_offset[curDirLever].cur_page_first_offset;
@@ -253,11 +250,11 @@ void lv_draw_print_file(void) {
   }
   disp_state = PRINT_FILE_UI;
 
-  curDirLever = 0;
+  curDirLever                     = 0;
   dir_offset[curDirLever].curPage = 0;
 
   list_file.Sd_file_offset = 0;
-  list_file.Sd_file_cnt = 0;
+  list_file.Sd_file_cnt    = 0;
 
   ZERO(dir_offset);
   ZERO(list_file.IsFolder);
@@ -300,35 +297,35 @@ void disp_gcode_icon(uint8_t file_num) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
   lv_refr_now(lv_refr_get_disp_refreshing());
 
-  buttonPageUp = lv_imgbtn_create(scr, NULL);
+  buttonPageUp   = lv_imgbtn_create(scr, NULL);
   buttonPageDown = lv_imgbtn_create(scr, NULL);
-  buttonBack = lv_imgbtn_create(scr, NULL);
+  buttonBack     = lv_imgbtn_create(scr, NULL);
 
   lv_obj_set_event_cb_mks(buttonPageUp, event_handler, ID_P_UP, "bmp_pageUp.bin", 0);
   lv_imgbtn_set_src(buttonPageUp, LV_BTN_STATE_REL, &bmp_pic_117x92);
   lv_imgbtn_set_src(buttonPageUp, LV_BTN_STATE_PR, &bmp_pic_117x92);
-  lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonPageUp, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonPageUp, LV_PROTECT_FOLLOW);
 
   #if 1
     lv_obj_set_event_cb_mks(buttonPageDown, event_handler, ID_P_DOWN, "bmp_pageDown.bin", 0);
     lv_imgbtn_set_src(buttonPageDown, LV_BTN_STATE_REL, &bmp_pic_117x92);
     lv_imgbtn_set_src(buttonPageDown, LV_BTN_STATE_PR, &bmp_pic_117x92);
-    lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPageDown, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_P_RETURN, "bmp_back.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic_117x92);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic_117x92);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
   #endif
 
   lv_obj_set_pos(buttonPageUp, OTHER_BTN_XPIEL * 3 + INTERVAL_V * 4, titleHeight);
@@ -343,7 +340,7 @@ void disp_gcode_icon(uint8_t file_num) {
 
   for (i = 0; i < FILE_BTN_CNT; i++) {
     /*
-    if(seq) {
+    if (seq) {
       j = (FILE_BTN_CNT-1) - i;
       back_flg = 1;
     }
@@ -357,8 +354,8 @@ void disp_gcode_icon(uint8_t file_num) {
     #ifdef TFT35
       buttonGcode[i] = lv_imgbtn_create(scr, NULL);
 
-      lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_PR, &tft_style_lable_pre);
-      lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
+      lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonGcode[i], LV_BTN_STATE_REL, &tft_style_label_rel);
       lv_obj_clear_protect(buttonGcode[i], LV_PROTECT_FOLLOW);
       lv_btn_set_layout(buttonGcode[i], LV_LAYOUT_OFF);
 
@@ -366,7 +363,7 @@ void disp_gcode_icon(uint8_t file_num) {
       cutFileName((char *)list_file.long_name[i], 16, 8,  (char *)public_buf_m);
 
       if (list_file.IsFolder[i] == 1) {
-        lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_Dir.bin", 0);
+        lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_dir.bin", 0);
         lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_REL, &bmp_pic);
         lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_PR, &bmp_pic);
         if (i < 3)
@@ -375,7 +372,7 @@ void disp_gcode_icon(uint8_t file_num) {
           lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1), BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
         labelPageUp[i] = lv_label_create(buttonGcode[i], NULL);
-        lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel);
+        lv_obj_set_style(labelPageUp[i], &tft_style_label_rel);
         lv_label_set_text(labelPageUp[i], public_buf_m);
         lv_obj_align(labelPageUp[i], buttonGcode[i], LV_ALIGN_IN_BOTTOM_MID, 0, -5);
       }
@@ -389,10 +386,10 @@ void disp_gcode_icon(uint8_t file_num) {
             buttonText[i] = lv_btn_create(scr, NULL);
             //lv_obj_set_event_cb(buttonText[i], event_handler);
 
-            lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_lable_pre);
-            lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
-            //lv_obj_set_style(buttonText[i], &tft_style_lable_pre);
-            //lv_obj_set_style(buttonText[i], &tft_style_lable_rel);
+            lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_label_pre);
+            lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_label_rel);
+            //lv_obj_set_style(buttonText[i], &tft_style_label_pre);
+            //lv_obj_set_style(buttonText[i], &tft_style_label_rel);
             lv_obj_clear_protect(buttonText[i], LV_PROTECT_FOLLOW);
             lv_btn_set_layout(buttonText[i], LV_LAYOUT_OFF);
             //lv_obj_set_event_cb_mks(buttonText[i], event_handler,(i+10),NULL,0);
@@ -406,10 +403,10 @@ void disp_gcode_icon(uint8_t file_num) {
             buttonText[i] = lv_btn_create(scr, NULL);
             //lv_obj_set_event_cb(buttonText[i], event_handler);
 
-            lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_lable_pre);
-            lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
+            lv_btn_set_style(buttonText[i], LV_BTN_STATE_PR, &tft_style_label_pre);
+            lv_btn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_label_rel);
 
-            //lv_imgbtn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_lable_rel);
+            //lv_imgbtn_set_style(buttonText[i], LV_BTN_STATE_REL, &tft_style_label_rel);
             lv_obj_clear_protect(buttonText[i], LV_PROTECT_FOLLOW);
             lv_btn_set_layout(buttonText[i], LV_LAYOUT_OFF);
             //lv_obj_set_event_cb_mks(buttonText[i], event_handler,(i+10),NULL,0);
@@ -419,12 +416,12 @@ void disp_gcode_icon(uint8_t file_num) {
             lv_obj_set_size(buttonText[i], 100, 40);
           }
           labelPageUp[i] = lv_label_create(buttonText[i], NULL);
-          lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel);
+          lv_obj_set_style(labelPageUp[i], &tft_style_label_rel);
           lv_label_set_text(labelPageUp[i], public_buf_m);
           lv_obj_align(labelPageUp[i], buttonText[i], LV_ALIGN_IN_BOTTOM_MID, 0, 0);
         }
         else {
-          lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_File.bin", 0);
+          lv_obj_set_event_cb_mks(buttonGcode[i], event_handler, (i + 1), "bmp_file.bin", 0);
           lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_REL, &bmp_pic);
           lv_imgbtn_set_src(buttonGcode[i], LV_BTN_STATE_PR, &bmp_pic);
           if (i < 3)
@@ -433,27 +430,38 @@ void disp_gcode_icon(uint8_t file_num) {
             lv_obj_set_pos(buttonGcode[i], BTN_X_PIXEL * (i - 3) + INTERVAL_V * ((i - 3) + 1), BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
           labelPageUp[i] = lv_label_create(buttonGcode[i], NULL);
-          lv_obj_set_style(labelPageUp[i], &tft_style_lable_rel);
+          lv_obj_set_style(labelPageUp[i], &tft_style_label_rel);
           lv_label_set_text(labelPageUp[i], public_buf_m);
           lv_obj_align(labelPageUp[i], buttonGcode[i], LV_ALIGN_IN_BOTTOM_MID, 0, -5);
         }
       }
-    #else // ifdef TFT35
-    #endif // ifdef TFT35
+    #else // !TFT35
+    #endif // !TFT35
   }
 }
 
 void lv_open_gcode_file(char *path) {
   #if ENABLED(SDSUPPORT)
+    uint32_t *ps4;
+    int pre_sread_cnt;
     char *cur_name;
+
     cur_name = strrchr(path, '/');
+
     card.openFileRead(cur_name);
-  #endif
+    card.read(public_buf, 512);
+    ps4 = (uint32_t *)strstr((char *)public_buf, ";simage:");
+    // Ignore the beginning message of gcode file
+    if (ps4) {
+      pre_sread_cnt = (uint32_t)ps4 - (uint32_t)((uint32_t *)(&public_buf[0]));
+      card.setIndex(pre_sread_cnt);
+    }
+  #endif // SDSUPPORT
 }
 
+
 int ascii2dec_test(char *ascii) {
   int result = 0;
-
   if (ascii == 0) return 0;
 
   if (*(ascii) >= '0' && *(ascii) <= '9')
@@ -468,64 +476,58 @@ int ascii2dec_test(char *ascii) {
   return result;
 }
 
-void lv_gcode_file_read(uint8_t *data_buf)
-{
-	#if ENABLED (SDSUPPORT)
-    uint16_t i=0,j=0,k=0;
-    uint16_t row_1=0;
+void lv_gcode_file_read(uint8_t *data_buf) {
+  #if ENABLED(SDSUPPORT)
+    uint16_t i = 0, j = 0, k = 0;
+    uint16_t row_1    = 0;
     bool ignore_start = true;
     char temp_test[200];
     volatile uint16_t *p_index;
 
     memset(public_buf, 0, 200);
 
-    while(card.isFileOpen())
-    {
-      if (ignore_start) card.read(temp_test, 8); //line start -> ignore
-      card.read(temp_test, 200); //data
-      //\r;;gimage: we got the bit img, so stop here
+    while (card.isFileOpen()) {
+      if (ignore_start) card.read(temp_test, 8); // line start -> ignore
+      card.read(temp_test, 200); // data
+      // \r;;gimage: we got the bit img, so stop here
       if (temp_test[1] == ';') {
         card.closefile();
         break;
       }
-      for(i=0;i<200;) {
-        public_buf[row_1*200+100*k+j] = (char)(ascii2dec_test(&temp_test[i])<<4|ascii2dec_test(&temp_test[i+1]));
+      for (i = 0; i < 200;) {
+        public_buf[row_1 * 200 + 100 * k + j] = (char)(ascii2dec_test(&temp_test[i]) << 4 | ascii2dec_test(&temp_test[i + 1]));
         j++;
-        i+=2;
+        i += 2;
       }
 
       uint16_t c = card.get();
-      //check if we have more data or finished the line (CR)
-      if (c == '\r') {
-        break;
-      }
+      // check if we have more data or finished the line (CR)
+      if (c == '\r') break;
       card.setIndex(card.getIndex());
       k++;
-      j=0;
+      j = 0;
       ignore_start = false;
     }
-    #if ENABLED(SPI_GRAPHICAL_TFT)
-      for(i=0;i<200;)
-      {
+    #if ENABLED(TFT_LVGL_UI_SPI)
+      for (i = 0; i < 200;) {
         p_index = (uint16_t *)(&public_buf[i]);
 
-            //Color = (*p_index >> 8);
+        //Color = (*p_index >> 8);
         //*p_index = Color | ((*p_index & 0xff) << 8);
-        i+=2;
-        if(*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full;
+        i += 2;
+        if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full;
       }
     #else
-      for(i=0;i<200;)
-      {
+      for (i = 0; i < 200;) {
         p_index = (uint16_t *)(&public_buf[i]);
         //Color = (*p_index >> 8);
         //*p_index = Color | ((*p_index & 0xff) << 8);
-        i+=2;
-        if(*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full; // 0x18C3; //
+        i += 2;
+        if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // 0x18C3; //
       }
-    #endif
-    memcpy(data_buf,public_buf,200);
-	#endif
+    #endif // TFT_LVGL_UI_SPI
+    memcpy(data_buf, public_buf, 200);
+  #endif // SDSUPPORT
 }
 
 void lv_close_gcode_file() {TERN_(SDSUPPORT, card.closefile());}
@@ -534,7 +536,7 @@ void cutFileName(char *path, int len, int bytePerLine,  char *outStr) {
   #if _LFN_UNICODE
     TCHAR *tmpFile;
     TCHAR *strIndex1 = 0, *strIndex2 = 0, *beginIndex;
-    TCHAR secSeg[10] = {0};
+    TCHAR secSeg[10]   = {0};
     TCHAR gFileTail[4] = {'~', '.', 'g', '\0'};
   #else
     char *tmpFile;
@@ -570,7 +572,7 @@ void cutFileName(char *path, int len, int bytePerLine,  char *outStr) {
         strcpy(outStr, beginIndex);
     #endif
   }
-  else { //gcode file
+  else { // gcode file
     if (strIndex2 - beginIndex > (len - 2)) {
       #if _LFN_UNICODE
         wcsncpy(outStr, (const WCHAR *)beginIndex, len - 3);
@@ -578,7 +580,7 @@ void cutFileName(char *path, int len, int bytePerLine,  char *outStr) {
       #else
         //strncpy(outStr, beginIndex, len - 3);
         strncpy(outStr, beginIndex, len - 4);
-        strcat(outStr, "~.g");
+        strcat_P(outStr, PSTR("~.g"));
       #endif
     }
     else {
@@ -587,7 +589,7 @@ void cutFileName(char *path, int len, int bytePerLine,  char *outStr) {
         wcscat(outStr, (const WCHAR *)&gFileTail[3]);
       #else
         strncpy(outStr, beginIndex, strIndex2 - beginIndex + 1);
-        strcat(outStr, "g");
+        strcat_P(outStr, PSTR("g"));
       #endif
     }
   }
@@ -595,23 +597,23 @@ void cutFileName(char *path, int len, int bytePerLine,  char *outStr) {
   #if _LFN_UNICODE
     if (wcslen(outStr) > bytePerLine) {
       wcscpy(secSeg, (const WCHAR *)&outStr[bytePerLine]);
-      outStr[bytePerLine] = '\n';
+      outStr[bytePerLine]     = '\n';
       outStr[bytePerLine + 1] = '\0';
       wcscat(outStr, (const WCHAR *)secSeg);
     }
   #else
     if ((int)strlen(outStr) > bytePerLine) {
       strcpy(secSeg, &outStr[bytePerLine]);
-      outStr[bytePerLine] = '\n';
+      outStr[bytePerLine]     = '\n';
       outStr[bytePerLine + 1] = '\0';
       strcat(outStr, secSeg);
     }
     else {
-      strcat(outStr, "\n");
+      strcat_P(outStr, PSTR("\n"));
     }
   #endif
 }
 
 void lv_clear_print_file() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp
index daf9507031041903ffc2aa916a801ff40fce2793..2079ed824560642fa42b9134116b1c1f606c55ce 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_printing.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -53,7 +53,7 @@ static lv_obj_t * buttonPause, *buttonOperat, *buttonStop;
   static lv_obj_t* labelBed;
 #endif
 
-#define ID_PAUSE    1
+#define ID_PAUSE  1
 #define ID_STOP   2
 #define ID_OPTION 3
 
@@ -74,36 +74,36 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (gcode_preview_over != 1) {
           if (uiCfg.print_state == WORKING) {
-            //#if ENABLED(PARK_HEAD_ON_PAUSE)
-            //queue.inject_P(PSTR("M25 P\nM24"));
+            // #if ENABLED(PARK_HEAD_ON_PAUSE)
+            // queue.inject_P(PSTR("M25 P\nM24"));
             #if ENABLED(SDSUPPORT)
-              //queue.inject_P(PSTR("M25\nG91\nG1 Z10\nG90"));
+              // queue.inject_P(PSTR("M25\nG91\nG1 Z10\nG90"));
               card.pauseSDPrint();
               stop_print_time();
               uiCfg.print_state = PAUSING;
             #endif
-            lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Pause.bin", 0);
+            lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_resume.bin", 0);
             lv_label_set_text(labelPause, printing_menu.resume);
             lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
           }
           else if (uiCfg.print_state == PAUSED) {
             uiCfg.print_state = RESUMING;
-            //if (IS_SD_PAUSED())queue.inject_P(PSTR("M24"));// queue.inject_P(M24_STR);
-            lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_Resume.bin", 0);
+            // if (IS_SD_PAUSED())queue.inject_P(PSTR("M24"));// queue.inject_P(M24_STR);
+            lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_pause.bin", 0);
             lv_label_set_text(labelPause, printing_menu.pause);
             lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
           }
           #if ENABLED(POWER_LOSS_RECOVERY)
-          else if (uiCfg.print_state == REPRINTING) {
-            uiCfg.print_state = REPRINTED;
-            lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_Resume.bin", 0);
-            lv_label_set_text(labelPause, printing_menu.pause);
-            lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
-            //recovery.resume();
-            print_time.minutes = recovery.info.print_job_elapsed / 60;
-            print_time.seconds = recovery.info.print_job_elapsed % 60;
-            print_time.hours = print_time.minutes / 60;
-          }
+            else if (uiCfg.print_state == REPRINTING) {
+              uiCfg.print_state = REPRINTED;
+              lv_obj_set_event_cb_mks(obj, event_handler, ID_PAUSE, "bmp_pause.bin", 0);
+              lv_label_set_text(labelPause, printing_menu.pause);
+              lv_obj_align(labelPause, buttonPause, LV_ALIGN_CENTER, 30, 0);
+              // recovery.resume();
+              print_time.minutes = recovery.info.print_job_elapsed / 60;
+              print_time.seconds = recovery.info.print_job_elapsed % 60;
+              print_time.hours   = print_time.minutes / 60;
+            }
           #endif
         }
       }
@@ -127,7 +127,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
       else if (event == LV_EVENT_RELEASED) {
         if (gcode_preview_over != 1) {
           lv_obj_del(scr);
-          lv_draw_opration();
+          lv_draw_operation();
         }
       }
       break;
@@ -146,14 +146,14 @@ void lv_draw_printing(void) {
 
   scr = lv_obj_create(NULL, NULL);
 
-  //static lv_style_t tool_style;
+  // static lv_style_t tool_style;
 
   lv_obj_set_style(scr, &tft_style_scr);
   lv_scr_load(scr);
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -172,74 +172,74 @@ void lv_draw_printing(void) {
   #endif
 
   buttonFanstate = lv_imgbtn_create(scr, NULL);
-  buttonZpos = lv_imgbtn_create(scr, NULL);
-  buttonPause = lv_imgbtn_create(scr, NULL);
-  buttonStop = lv_imgbtn_create(scr, NULL);
-  buttonOperat = lv_imgbtn_create(scr, NULL);
-  buttonTime = lv_imgbtn_create(scr, NULL);
+  buttonZpos     = lv_imgbtn_create(scr, NULL);
+  buttonPause    = lv_imgbtn_create(scr, NULL);
+  buttonStop     = lv_imgbtn_create(scr, NULL);
+  buttonOperat   = lv_imgbtn_create(scr, NULL);
+  buttonTime     = lv_imgbtn_create(scr, NULL);
 
-  lv_obj_set_event_cb_mks(buttonExt1, event_handler, 0, "bmp_Ext1_state.bin", 0);
+  lv_obj_set_event_cb_mks(buttonExt1, event_handler, 0, "bmp_ext1_state.bin", 0);
   lv_imgbtn_set_src(buttonExt1, LV_BTN_STATE_REL, &bmp_pic_45x45);
   lv_imgbtn_set_src(buttonExt1, LV_BTN_STATE_PR, &bmp_pic_45x45);
-  lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonExt1, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonExt1, LV_PROTECT_FOLLOW);
   #if 1
-  if (EXTRUDERS == 2) {
-    lv_obj_set_event_cb_mks(buttonExt2, event_handler, 0, "bmp_Ext2_state.bin", 0);
-    lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_REL, &bmp_pic_45x45);
-    lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_PR, &bmp_pic_45x45);
-    lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  }
-  #if HAS_HEATED_BED
-    lv_obj_set_event_cb_mks(buttonBedstate, event_handler, 0, "bmp_Bed_state.bin", 0);
-    lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
-    lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
-    lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  #endif
+    if (EXTRUDERS == 2) {
+      lv_obj_set_event_cb_mks(buttonExt2, event_handler, 0, "bmp_ext2_state.bin", 0);
+      lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_REL, &bmp_pic_45x45);
+      lv_imgbtn_set_src(buttonExt2, LV_BTN_STATE_PR, &bmp_pic_45x45);
+      lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonExt2, LV_BTN_STATE_REL, &tft_style_label_rel);
+    }
+    #if HAS_HEATED_BED
+      lv_obj_set_event_cb_mks(buttonBedstate, event_handler, 0, "bmp_bed_state.bin", 0);
+      lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
+      lv_imgbtn_set_src(buttonBedstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
+      lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonBedstate, LV_BTN_STATE_REL, &tft_style_label_rel);
+    #endif
 
-  lv_obj_set_event_cb_mks(buttonFanstate, event_handler, 0, "bmp_Fan_state.bin", 0);
-  lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
-  lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
-  lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-  lv_obj_set_event_cb_mks(buttonTime, event_handler, 0, "bmp_Time_state.bin", 0);
-  lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_REL, &bmp_pic_45x45);
-  lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_PR, &bmp_pic_45x45);
-  lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-  lv_obj_set_event_cb_mks(buttonZpos, event_handler, 0, "bmp_Zpos_state.bin", 0);
-  lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_REL, &bmp_pic_45x45);
-  lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_PR, &bmp_pic_45x45);
-  lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-  if (uiCfg.print_state == WORKING)
-    lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Resume.bin", 0);
-  else
-    lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_Pause.bin", 0);
-
-  lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_REL, &bmp_pic_150x80);
-  lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_PR, &bmp_pic_150x80);
-  lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-  lv_obj_set_event_cb_mks(buttonStop, event_handler, ID_STOP, "bmp_Stop.bin", 0);
-  lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_REL, &bmp_pic_150x80);
-  lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_PR, &bmp_pic_150x80);
-  lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-  lv_obj_set_event_cb_mks(buttonOperat, event_handler, ID_OPTION, "bmp_Operate.bin", 0);
-  lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_REL, &bmp_pic_150x80);
-  lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_PR, &bmp_pic_150x80);
-  lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  #endif
+    lv_obj_set_event_cb_mks(buttonFanstate, event_handler, 0, "bmp_fan_state.bin", 0);
+    lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_REL, &bmp_pic_45x45);
+    lv_imgbtn_set_src(buttonFanstate, LV_BTN_STATE_PR, &bmp_pic_45x45);
+    lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonFanstate, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    lv_obj_set_event_cb_mks(buttonTime, event_handler, 0, "bmp_time_state.bin", 0);
+    lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_REL, &bmp_pic_45x45);
+    lv_imgbtn_set_src(buttonTime, LV_BTN_STATE_PR, &bmp_pic_45x45);
+    lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTime, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    lv_obj_set_event_cb_mks(buttonZpos, event_handler, 0, "bmp_zpos_state.bin", 0);
+    lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_REL, &bmp_pic_45x45);
+    lv_imgbtn_set_src(buttonZpos, LV_BTN_STATE_PR, &bmp_pic_45x45);
+    lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonZpos, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    if (uiCfg.print_state == WORKING)
+      lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_pause.bin", 0);
+    else
+      lv_obj_set_event_cb_mks(buttonPause, event_handler, ID_PAUSE, "bmp_resume.bin", 0);
+
+    lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_REL, &bmp_pic_150x80);
+    lv_imgbtn_set_src(buttonPause, LV_BTN_STATE_PR, &bmp_pic_150x80);
+    lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPause, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    lv_obj_set_event_cb_mks(buttonStop, event_handler, ID_STOP, "bmp_stop.bin", 0);
+    lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_REL, &bmp_pic_150x80);
+    lv_imgbtn_set_src(buttonStop, LV_BTN_STATE_PR, &bmp_pic_150x80);
+    lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonStop, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    lv_obj_set_event_cb_mks(buttonOperat, event_handler, ID_OPTION, "bmp_operate.bin", 0);
+    lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_REL, &bmp_pic_150x80);
+    lv_imgbtn_set_src(buttonOperat, LV_BTN_STATE_PR, &bmp_pic_150x80);
+    lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonOperat, LV_BTN_STATE_REL, &tft_style_label_rel);
+  #endif // if 1
 
   lv_obj_set_pos(buttonExt1, 205, 136);
   if (EXTRUDERS == 2)
@@ -272,35 +272,35 @@ void lv_draw_printing(void) {
   lv_btn_set_layout(buttonOperat, LV_LAYOUT_OFF);
 
   labelExt1 = lv_label_create(scr, NULL);
-  lv_obj_set_style(labelExt1, &tft_style_lable_rel);
+  lv_obj_set_style(labelExt1, &tft_style_label_rel);
   lv_obj_set_pos(labelExt1, 250, 146);
 
   if (EXTRUDERS == 2) {
     labelExt2 = lv_label_create(scr, NULL);
-    lv_obj_set_style(labelExt2, &tft_style_lable_rel);
+    lv_obj_set_style(labelExt2, &tft_style_label_rel);
     lv_obj_set_pos(labelExt2, 395, 146);
   }
 
   #if HAS_HEATED_BED
     labelBed = lv_label_create(scr, NULL);
-    lv_obj_set_style(labelBed, &tft_style_lable_rel);
+    lv_obj_set_style(labelBed, &tft_style_label_rel);
     lv_obj_set_pos(labelBed, 250, 196);
   #endif
 
   labelFan = lv_label_create(scr, NULL);
-  lv_obj_set_style(labelFan, &tft_style_lable_rel);
+  lv_obj_set_style(labelFan, &tft_style_label_rel);
   lv_obj_set_pos(labelFan, 395, 196);
 
   labelZpos = lv_label_create(scr, NULL);
-  lv_obj_set_style(labelZpos, &tft_style_lable_rel);
+  lv_obj_set_style(labelZpos, &tft_style_label_rel);
   lv_obj_set_pos(labelZpos, 395, 96);
 
   labelTime = lv_label_create(scr, NULL);
-  lv_obj_set_style(labelTime, &tft_style_lable_rel);
+  lv_obj_set_style(labelTime, &tft_style_label_rel);
   lv_obj_set_pos(labelTime, 250, 96);
 
-  labelPause = lv_label_create(buttonPause, NULL);
-  labelStop = lv_label_create(buttonStop, NULL);
+  labelPause  = lv_label_create(buttonPause, NULL);
+  labelStop   = lv_label_create(buttonStop, NULL);
   labelOperat = lv_label_create(buttonOperat, NULL);
 
   if (gCfgItems.multiple_language != 0) {
@@ -318,11 +318,11 @@ void lv_draw_printing(void) {
   }
 
   lv_style_copy(&lv_bar_style_indic, &lv_style_pretty_color);
-  lv_bar_style_indic.text.color = lv_color_hex3(0xADF);
-  lv_bar_style_indic.image.color = lv_color_hex3(0xADF);
-  lv_bar_style_indic.line.color = lv_color_hex3(0xADF);
-  lv_bar_style_indic.body.main_color = lv_color_hex3(0xADF);
-  lv_bar_style_indic.body.grad_color = lv_color_hex3(0xADF);
+  lv_bar_style_indic.text.color        = lv_color_hex3(0xADF);
+  lv_bar_style_indic.image.color       = lv_color_hex3(0xADF);
+  lv_bar_style_indic.line.color        = lv_color_hex3(0xADF);
+  lv_bar_style_indic.body.main_color   = lv_color_hex3(0xADF);
+  lv_bar_style_indic.body.grad_color   = lv_color_hex3(0xADF);
   lv_bar_style_indic.body.border.color = lv_color_hex3(0xADF);
 
   bar1 = lv_bar_create(scr, NULL);
@@ -340,12 +340,12 @@ void lv_draw_printing(void) {
 }
 
 void disp_ext_temp() {
-  memset(public_buf_l, 0, sizeof(public_buf_l));
+  ZERO(public_buf_l);
   sprintf(public_buf_l, printing_menu.temp1, (int)thermalManager.temp_hotend[0].celsius, (int)thermalManager.temp_hotend[0].target);
   lv_label_set_text(labelExt1, public_buf_l);
 
   if (EXTRUDERS == 2) {
-    memset(public_buf_l, 0, sizeof(public_buf_l));
+    ZERO(public_buf_l);
     sprintf(public_buf_l, printing_menu.temp1, (int)thermalManager.temp_hotend[1].celsius, (int)thermalManager.temp_hotend[1].target);
     lv_label_set_text(labelExt2, public_buf_l);
   }
@@ -353,42 +353,42 @@ void disp_ext_temp() {
 
 void disp_bed_temp() {
   #if HAS_HEATED_BED
-    memset(public_buf_l, 0, sizeof(public_buf_l));
+    ZERO(public_buf_l);
     sprintf(public_buf_l, printing_menu.bed_temp, (int)thermalManager.temp_bed.celsius, (int)thermalManager.temp_bed.target);
     lv_label_set_text(labelBed, public_buf_l);
   #endif
 }
 
 void disp_fan_speed() {
-  memset(public_buf_l, 0, sizeof(public_buf_l));
-  sprintf(public_buf_l, "%3d", thermalManager.fan_speed[0]);
+  ZERO(public_buf_l);
+  sprintf_P(public_buf_l, PSTR("%3d"), thermalManager.fan_speed[0]);
   lv_label_set_text(labelFan, public_buf_l);
 }
 
 void disp_print_time() {
-  memset(public_buf_l, 0, sizeof(public_buf_l));
+  ZERO(public_buf_l);
   #if BOTH(LCD_SET_PROGRESS_MANUALLY, USE_M73_REMAINING_TIME)
     const uint32_t r = ui.get_remaining_time();
-    sprintf(public_buf_l, "%02d:%02d R", r / 3600, (r % 3600) / 60);
+    sprintf_P(public_buf_l, PSTR("%02d:%02d R"), r / 3600, (r % 3600) / 60);
   #else
-    sprintf(public_buf_l, "%d%d:%d%d:%d%d", print_time.hours / 10, print_time.hours % 10, print_time.minutes / 10, print_time.minutes % 10, print_time.seconds / 10, print_time.seconds % 10);
+    sprintf_P(public_buf_l, PSTR("%d%d:%d%d:%d%d"), print_time.hours / 10, print_time.hours % 10, print_time.minutes / 10, print_time.minutes % 10, print_time.seconds / 10, print_time.seconds % 10);
   #endif
   lv_label_set_text(labelTime, public_buf_l);
 }
 
 void disp_fan_Zpos() {
-  memset(public_buf_l, 0, sizeof(public_buf_l));
-  sprintf(public_buf_l, "%.3f", current_position[Z_AXIS]);
+  ZERO(public_buf_l);
+  sprintf_P(public_buf_l, PSTR("%.3f"), current_position[Z_AXIS]);
   lv_label_set_text(labelZpos, public_buf_l);
 }
 
 void reset_print_time() {
-  //print_time.days = 0;
-  print_time.hours = 0;
+  // print_time.days = 0;
+  print_time.hours   = 0;
   print_time.minutes = 0;
   print_time.seconds = 0;
-  print_time.ms_10 = 0;
-  //print_time.start = 1;
+  print_time.ms_10   = 0;
+  // print_time.start = 1;
 }
 
 void start_print_time() { print_time.start = 1; }
@@ -411,7 +411,7 @@ void setProBarRate() {
     #endif
     rate = (rate_tmp_r - (PREVIEW_SIZE + To_pre_view)) * 100 / (gCfgItems.curFilesize - (PREVIEW_SIZE + To_pre_view));
   }
-  //gCurFileState.totalSend = rate;
+  // gCurFileState.totalSend = rate;
 
   if (rate <= 0) return;
 
@@ -440,4 +440,4 @@ void setProBarRate() {
 
 void lv_clear_printing() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp
index 31ea1f6d82b74aa5a7c36b47d49434f0227387f2..c987ddb0846b5855746124812f45c6b5d57b9778 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.cpp
@@ -21,12 +21,11 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "draw_ready_print.h"
 #include "draw_tool.h"
 #include "lv_conf.h"
-#include "lvgl.h"
 //#include "../lvgl/src/lv_objx/lv_imgbtn.h"
 //#include "../lvgl/src/lv_objx/lv_img.h"
 //#include "../lvgl/src/lv_core/lv_disp.h"
@@ -35,11 +34,13 @@
 #include "mks_hardware_test.h"
 #include "draw_ui.h"
 
-#include <stdio.h>
+#include <lvgl.h>
 
 #include "../../../../MarlinCore.h"
 #include "../../../../module/temperature.h"
 
+#include <stdio.h>
+
 //static lv_obj_t *buttonPrint,*buttonTool,*buttonSet;
 static lv_obj_t * scr;
 #if ENABLED(MKS_TEST)
@@ -57,9 +58,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         // nothing to do
       }
       else if (event == LV_EVENT_RELEASED) {
-        #if ENABLED(MKS_TEST)
-          curent_disp_ui = 2;
-        #endif
+
         lv_obj_del(scr);
         lv_draw_tool();
       }
@@ -85,203 +84,222 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
   }
 }
 
+lv_obj_t *limit_info, *det_info;
+lv_style_t limit_style, det_style;
+void disp_Limit_ok() {
+  limit_style.text.color.full = 0xFFFF;
+  lv_obj_set_style(limit_info, &limit_style);
+  lv_label_set_text(limit_info, "Limit:ok");
+}
+void disp_Limit_error() {
+  limit_style.text.color.full = 0xF800;
+  lv_obj_set_style(limit_info, &limit_style);
+  lv_label_set_text(limit_info, "Limit:error");
+}
 
-#if ENABLED(MKS_TEST)
-
-  lv_obj_t *limit_info, *det_info;
-  lv_style_t limit_style, det_style;
-  void disp_Limit_ok() {
-    limit_style.text.color.full = 0xFFFF;
-    lv_obj_set_style(limit_info, &limit_style);
-    lv_label_set_text(limit_info, "Limit:ok");
-  }
-  void disp_Limit_error() {
-    limit_style.text.color.full = 0xF800;
-    lv_obj_set_style(limit_info, &limit_style);
-    lv_label_set_text(limit_info, "Limit:error");
-  }
-
-  void disp_det_ok() {
-    det_style.text.color.full = 0xFFFF;
-    lv_obj_set_style(det_info, &det_style);
-    lv_label_set_text(det_info, "det:ok");
-  }
-  void disp_det_error() {
-    det_style.text.color.full = 0xF800;
-    lv_obj_set_style(det_info, &det_style);
-    lv_label_set_text(det_info, "det:error");
-  }
+void disp_det_ok() {
+  det_style.text.color.full = 0xFFFF;
+  lv_obj_set_style(det_info, &det_style);
+  lv_label_set_text(det_info, "det:ok");
+}
+void disp_det_error() {
+  det_style.text.color.full = 0xF800;
+  lv_obj_set_style(det_info, &det_style);
+  lv_label_set_text(det_info, "det:error");
+}
 
-  lv_obj_t *e1, *e2, *e3, *bed;
-  void disp_test() {
-    char buf[30] = {0};
-    //lv_obj_t * label_tool2 = lv_label_create(scr, NULL);
-    //lv_obj_set_pos(label_tool,20,50);
-    memset(buf, 0, sizeof(buf));
-    sprintf(buf, "e1:%d", (int)thermalManager.temp_hotend[0].celsius);
-    lv_label_set_text(e1, buf);
-
-    memset(buf, 0, sizeof(buf));
-    sprintf(buf, "e2:%d", (int)thermalManager.temp_hotend[1].celsius);
+lv_obj_t *e1, *e2, *e3, *bed;
+void mks_disp_test() {
+  char buf[30] = {0};
+  //lv_obj_t * label_tool2 = lv_label_create(scr, NULL);
+  //lv_obj_set_pos(label_tool,20,50);
+  ZERO(buf);
+  sprintf_P(buf, PSTR("e1:%d"), (int)thermalManager.temp_hotend[0].celsius);
+  lv_label_set_text(e1, buf);
+  #if HAS_MULTI_HOTEND
+    ZERO(buf);
+    sprintf_P(buf, PSTR("e2:%d"), (int)thermalManager.temp_hotend[1].celsius);
     lv_label_set_text(e2, buf);
-
-    memset(buf, 0, sizeof(buf));
-    sprintf(buf, "e3:%d", (int)thermalManager.temp_hotend[2].celsius);
-    lv_label_set_text(e3, buf);
-
-    memset(buf, 0, sizeof(buf));
-    sprintf(buf, "bed:%d", (int)thermalManager.temp_bed.celsius);
+  #endif
+
+  //ZERO(buf);
+  //sprintf_P(buf, PSTR("e3:%d"), (int)thermalManager.temp_hotend[2].celsius);
+  //lv_label_set_text(e3, buf);
+  #if HAS_HEATED_BED
+    ZERO(buf);
+    sprintf_P(buf, PSTR("bed:%d"), (int)thermalManager.temp_bed.celsius);
     lv_label_set_text(bed, buf);
-  }
-
-#endif // MKS_TEST
+  #endif
+}
 
+extern unsigned char bmp_public_buf[17 * 1024];
 void lv_draw_ready_print(void) {
-  #if ENABLED(MKS_TEST)
-    char buf[30] = {0};
-    lv_obj_t *buttonTool;
+  char buf[30] = {0};
+  lv_obj_t *buttonPrint, *buttonTool, *buttonSet;
 
-    static lv_style_t style_pr, style_rel;
+  disp_state_stack._disp_index = 0;
+  ZERO(disp_state_stack._disp_state);
+  disp_state_stack._disp_state[disp_state_stack._disp_index] = PRINT_READY_UI;
 
-    curent_disp_ui = 1;
+  disp_state = PRINT_READY_UI;
 
-    scr = lv_obj_create(NULL, NULL);
+  scr = lv_obj_create(NULL, NULL);
 
-    static lv_style_t ready_style;
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+  //lv_obj_set_hidden(scr,true);
+  lv_refr_now(lv_refr_get_disp_refreshing());
 
-    lv_style_copy(&ready_style, &lv_style_scr);
-    //ready_style.body.main_color.full = 0X18C3;
-    //ready_style.body.grad_color.full = 0X18C3;
-    ready_style.body.main_color.full = 0X0000;
-    ready_style.body.grad_color.full = 0X0000;
-    ready_style.text.color.full = 0Xffff;
-    lv_obj_set_style(scr, &ready_style);
-    lv_scr_load(scr);
-    lv_obj_clean(scr);
-    //lv_obj_set_hidden(scr,true);
-    lv_refr_now(lv_refr_get_disp_refreshing());
+  LV_IMG_DECLARE(bmp_pic);
 
-    LV_IMG_DECLARE(bmp_pic);
-    //LV_IMG_DECLARE(bmp_pic2);
-    //LV_IMG_DECLARE(bmp_pic3);
-
-    //scr = lv_obj_create(NULL, NULL);
-    //lv_scr_load(scr);
+  if (mks_test_flag == 0x1e) {
+    //lv_obj_t * title = lv_label_create(scr, NULL);
+    //lv_obj_set_style(title, &tft_style_label_rel);
+    //lv_obj_set_pos(title,TITLE_XPOS,TITLE_YPOS);
+    //lv_label_set_text(title, creat_title_text());
 
     /*Create an Image button*/
+    //buttonPrint = lv_imgbtn_create(scr, NULL);
     buttonTool = lv_imgbtn_create(scr, NULL);
+    //buttonSet = lv_imgbtn_create(scr, NULL);
 
-    //lv_btn_setting(&style_pr,0x5d8f16,0x5d8f16);
-    //lv_btn_setting(&style_rel,0x5d8f16,0x5d8f16);
+    //lv_obj_set_event_cb_mks(buttonPrint, event_handler,ID_PRINT,"bmp_printing.bin",0);
+    //lv_imgbtn_set_src_mks(buttonPrint, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_printing.bin");
+    //lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_REL, &bmp_pic);
+    //lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_PR, &bmp_pic);
+    //lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_PR, &tft_style_label_pre);
+    //lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_REL, &tft_style_label_rel);
+    //lv_obj_clear_protect(buttonPrint, LV_PROTECT_FOLLOW);
+
+    #if 1
+      //lv_obj_set_event_cb_mks(buttonSet, event_handler,ID_SET,"bmp_set.bin",0);
+      //lv_imgbtn_set_src_mks(buttonSet, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_set.bin");
+      //lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_REL, &bmp_pic);
+      //lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_PR, &bmp_pic);
+      //lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_PR, &tft_style_label_pre);
+      //lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonTool, event_handler, 3, "bmp_Tool.bin", 0);
-    //lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
-    lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic);
-    lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &style_pr);
-    lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &style_rel);
+      lv_obj_set_event_cb_mks(buttonTool, event_handler, ID_TOOL, "bmp_tool.bin", 0);
+      //lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
+      lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic);
+      lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic);
+      lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &tft_style_label_rel);
+    #endif
 
     lv_obj_set_pos(buttonTool, 360, 180);
+    //lv_obj_set_pos(buttonSet,180,90);
+    //lv_obj_set_pos(buttonPrint,340,90);
 
+    //lv_obj_set_pos(buttonTool,SIMPLE_FIRST_PAGE_GRAP+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
+    //lv_obj_set_pos(buttonSet,BTN_X_PIXEL+SIMPLE_FIRST_PAGE_GRAP*2+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
+    //lv_obj_set_pos(buttonPrint,BTN_X_PIXEL*2+SIMPLE_FIRST_PAGE_GRAP*3+1,(TFT_HEIGHT-BTN_Y_PIXEL)/2+2);
+
+    /*Create a label on the Image button*/
+    //lv_btn_set_layout(buttonPrint, LV_LAYOUT_OFF);
+    //lv_btn_set_layout(buttonSet, LV_LAYOUT_OFF);
     lv_btn_set_layout(buttonTool, LV_LAYOUT_OFF);
 
+    //lv_obj_t * label_print = lv_label_create(buttonPrint, NULL);
+    //lv_obj_t * label_set = lv_label_create(buttonSet, NULL);
     lv_obj_t * label_tool = lv_label_create(buttonTool, NULL);
+    if (gCfgItems.multiple_language != 0) {
+      //lv_label_set_text(label_print, main_menu.print);
+      //lv_obj_align(label_print, buttonPrint, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
 
-    lv_obj_set_pos(label_tool, 30, 100);
-    lv_label_set_text(label_tool, "Back");
-
-    e1 = lv_label_create(scr, NULL);
-    lv_obj_set_pos(e1, 20, 20);
-    sprintf(buf, "e1:  %d", (int)thermalManager.temp_hotend[0].celsius);
-    lv_label_set_text(e1, buf);
-
-    e2 = lv_label_create(scr, NULL);
-    lv_obj_set_pos(e2, 20, 45);
-    sprintf(buf, "e1:  %d", (int)thermalManager.temp_hotend[1].celsius);
-    lv_label_set_text(e2, buf);
-
-    e3 = lv_label_create(scr, NULL);
-    lv_obj_set_pos(e3, 20, 70);
-    sprintf(buf, "e1:  %d", (int)thermalManager.temp_hotend[2].celsius);
-    lv_label_set_text(e3, buf);
-
-    bed = lv_label_create(scr, NULL);
-    lv_obj_set_pos(bed, 20, 95);
-    sprintf(buf, "bed:  %d", (int)thermalManager.temp_bed.celsius);
-    lv_label_set_text(bed, buf);
-
-    limit_info = lv_label_create(scr, NULL);
-
-    lv_style_copy(&limit_style, &lv_style_scr);
-    limit_style.body.main_color.full = 0X0000;
-    limit_style.body.grad_color.full = 0X0000;
-    limit_style.text.color.full = 0Xffff;
-    lv_obj_set_style(limit_info, &limit_style);
-
-    lv_obj_set_pos(limit_info, 20, 120);
-    lv_label_set_text(limit_info, " ");
-
-    det_info = lv_label_create(scr, NULL);
-
-    lv_style_copy(&det_style, &lv_style_scr);
-    det_style.body.main_color.full = 0X0000;
-    det_style.body.grad_color.full = 0X0000;
-    det_style.text.color.full = 0Xffff;
-    lv_obj_set_style(det_info, &det_style);
-
-    lv_obj_set_pos(det_info, 20, 145);
-    lv_label_set_text(det_info, " ");
-  #else // !MKS_TEST
-    lv_obj_t *buttonPrint, *buttonTool, *buttonSet;
-
-    disp_state_stack._disp_index = 0;
-    memset(disp_state_stack._disp_state, 0, sizeof(disp_state_stack._disp_state));
-    disp_state_stack._disp_state[disp_state_stack._disp_index] = PRINT_READY_UI;
-
-    disp_state = PRINT_READY_UI;
-
-    scr = lv_obj_create(NULL, NULL);
+      //lv_label_set_text(label_set, main_menu.set);
+      //lv_obj_align(label_set, buttonSet, LV_ALIGN_IN_BOTTOM_MID,0, BUTTON_TEXT_Y_OFFSET);
 
-    lv_obj_set_style(scr, &tft_style_scr);
-    lv_scr_load(scr);
-    lv_obj_clean(scr);
-    //lv_obj_set_hidden(scr,true);
-    lv_refr_now(lv_refr_get_disp_refreshing());
+      //lv_label_set_style(label_tool,LV_BTN_STATE_PR,&tft_style_label_pre);
+      //lv_label_set_style(label_tool,LV_BTN_STATE_REL,&tft_style_label_rel);
+      lv_label_set_text(label_tool, main_menu.tool);
+      lv_obj_align(label_tool, buttonTool, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
+    }
 
-    LV_IMG_DECLARE(bmp_pic);
+    #if 1
+      e1 = lv_label_create(scr, NULL);
+      lv_obj_set_pos(e1, 20, 20);
+      sprintf_P(buf, PSTR("e1:  %d"), (int)thermalManager.temp_hotend[0].celsius);
+      lv_label_set_text(e1, buf);
+      #if HAS_MULTI_HOTEND
+        e2 = lv_label_create(scr, NULL);
+        lv_obj_set_pos(e2, 20, 45);
+        sprintf_P(buf, PSTR("e1:  %d"), (int)thermalManager.temp_hotend[1].celsius);
+        lv_label_set_text(e2, buf);
+      #endif
+
+      //e3 = lv_label_create(scr, NULL);
+      //lv_obj_set_pos(e3,20,70);
+      //sprintf_P(buf, PSTR("e1:  %d"), (int)thermalManager.temp_hotend[2].celsius);
+      //lv_label_set_text(e3, buf);
+
+      #if HAS_HEATED_BED
+        bed = lv_label_create(scr, NULL);
+        lv_obj_set_pos(bed, 20, 95);
+        sprintf_P(buf, PSTR("bed:  %d"), (int)thermalManager.temp_bed.celsius);
+        lv_label_set_text(bed, buf);
+      #endif
+
+      limit_info = lv_label_create(scr, NULL);
+
+      lv_style_copy(&limit_style, &lv_style_scr);
+      limit_style.body.main_color.full = 0X0000;
+      limit_style.body.grad_color.full = 0X0000;
+      limit_style.text.color.full      = 0Xffff;
+      lv_obj_set_style(limit_info, &limit_style);
+
+      lv_obj_set_pos(limit_info, 20, 120);
+      lv_label_set_text(limit_info, " ");
+
+      det_info = lv_label_create(scr, NULL);
+
+      lv_style_copy(&det_style, &lv_style_scr);
+      det_style.body.main_color.full = 0X0000;
+      det_style.body.grad_color.full = 0X0000;
+      det_style.text.color.full      = 0Xffff;
+      lv_obj_set_style(det_info, &det_style);
+
+      lv_obj_set_pos(det_info, 20, 145);
+      lv_label_set_text(det_info, " ");
+    #endif // if 1
 
+  }
+  else {
     //lv_obj_t * title = lv_label_create(scr, NULL);
-    //lv_obj_set_style(title, &tft_style_lable_rel);
+    //lv_obj_set_style(title, &tft_style_label_rel);
     //lv_obj_set_pos(title,TITLE_XPOS,TITLE_YPOS);
     //lv_label_set_text(title, creat_title_text());
 
     /*Create an Image button*/
     buttonPrint = lv_imgbtn_create(scr, NULL);
-    buttonTool = lv_imgbtn_create(scr, NULL);
-    buttonSet = lv_imgbtn_create(scr, NULL);
+    buttonTool  = lv_imgbtn_create(scr, NULL);
+    buttonSet   = lv_imgbtn_create(scr, NULL);
 
     lv_obj_set_event_cb_mks(buttonPrint, event_handler, ID_PRINT, "bmp_printing.bin", 0);
     //lv_imgbtn_set_src_mks(buttonPrint, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_printing.bin");
     lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonPrint, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonPrint, LV_BTN_STATE_REL, &tft_style_label_rel);
     lv_obj_clear_protect(buttonPrint, LV_PROTECT_FOLLOW);
+
     #if 1
-      lv_obj_set_event_cb_mks(buttonSet, event_handler, ID_SET, "bmp_Set.bin", 0);
+      lv_obj_set_event_cb_mks(buttonSet, event_handler, ID_SET, "bmp_set.bin", 0);
       //lv_imgbtn_set_src_mks(buttonSet, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_set.bin");
       lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_REL, &bmp_pic);
       lv_imgbtn_set_src(buttonSet, LV_BTN_STATE_PR, &bmp_pic);
-      lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_PR, &tft_style_lable_pre);
-      lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_REL, &tft_style_lable_rel);
+      lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonSet, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-      lv_obj_set_event_cb_mks(buttonTool, event_handler, ID_TOOL, "bmp_Tool.bin", 0);
+      lv_obj_set_event_cb_mks(buttonTool, event_handler, ID_TOOL, "bmp_tool.bin", 0);
       //lv_imgbtn_set_src_mks(buttonTool, LV_BTN_STATE_REL, &bmp_pic,(uint8_t *)"bmp_tool.bin");
       lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_REL, &bmp_pic);
       lv_imgbtn_set_src(buttonTool, LV_BTN_STATE_PR, &bmp_pic);
-      lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &tft_style_lable_pre);
-      lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &tft_style_lable_rel);
+      lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonTool, LV_BTN_STATE_REL, &tft_style_label_rel);
     #endif
+
     lv_obj_set_pos(buttonTool, 20, 90);
     lv_obj_set_pos(buttonSet, 180, 90);
     lv_obj_set_pos(buttonPrint, 340, 90);
@@ -296,24 +314,23 @@ void lv_draw_ready_print(void) {
     lv_btn_set_layout(buttonTool, LV_LAYOUT_OFF);
 
     lv_obj_t * label_print = lv_label_create(buttonPrint, NULL);
-    lv_obj_t * label_set = lv_label_create(buttonSet, NULL);
-    lv_obj_t * label_tool = lv_label_create(buttonTool, NULL);
+    lv_obj_t * label_set   = lv_label_create(buttonSet, NULL);
+    lv_obj_t * label_tool  = lv_label_create(buttonTool, NULL);
     if (gCfgItems.multiple_language != 0) {
-
       lv_label_set_text(label_print, main_menu.print);
       lv_obj_align(label_print, buttonPrint, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
 
       lv_label_set_text(label_set, main_menu.set);
       lv_obj_align(label_set, buttonSet, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
 
-      //lv_label_set_style(label_tool,LV_BTN_STATE_PR,&tft_style_lable_pre);
-      //lv_label_set_style(label_tool,LV_BTN_STATE_REL,&tft_style_lable_rel);
+      //lv_label_set_style(label_tool,LV_BTN_STATE_PR,&tft_style_label_pre);
+      //lv_label_set_style(label_tool,LV_BTN_STATE_REL,&tft_style_label_rel);
       lv_label_set_text(label_tool, main_menu.tool);
       lv_obj_align(label_tool, buttonTool, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
     }
-  #endif // !MKS_TEST
+  }
 }
 
 void lv_clear_ready_print() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h
index 742fffe331c595c943006646229bb6d514cf255a..9951beaa417291aacec80bf1251d48f4bc59c215 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ready_print.h
@@ -26,7 +26,7 @@ extern "C" { /* C-declarations for C++ */
 #endif
 
 extern void lv_draw_ready_print(void);
-extern void disp_test();
+extern void mks_disp_test();
 extern void disp_Limit_ok();
 extern void disp_Limit_error();
 extern void disp_det_error();
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp
index 6c7f83405b59972d3861473f619e2027eead948a..eebb9fcf1c4304f4362f468863875dfcf4083464 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_set.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 #include "draw_ready_print.h"
@@ -37,13 +37,15 @@
 
 static lv_obj_t * scr;
 
-#define ID_S_WIFI       1
-#define ID_S_FAN        2
-#define ID_S_ABOUT      3
-#define ID_S_CONTINUE   4
-#define ID_S_MOTOR_OFF  5
-#define ID_S_LANGUAGE   6
-#define ID_S_RETURN     7
+#define ID_S_WIFI         1
+#define ID_S_FAN          2
+#define ID_S_ABOUT        3
+#define ID_S_CONTINUE     4
+#define ID_S_MOTOR_OFF    5
+#define ID_S_LANGUAGE     6
+#define ID_S_MACHINE_PARA 7
+#define ID_S_EEPROM_SET   8
+#define ID_S_RETURN       9
 
 static void event_handler(lv_obj_t * obj, lv_event_t event) {
   switch (obj->mks_obj_id) {
@@ -83,7 +85,7 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         #if HAS_SUICIDE
           suicide();
         #else
-          queue.enqueue_one_now(PSTR("M84"));
+          queue.enqueue_now_P(PSTR("M84"));
         #endif
       }
       break;
@@ -96,6 +98,24 @@ static void event_handler(lv_obj_t * obj, lv_event_t event) {
         lv_draw_language();
       }
       break;
+    case ID_S_MACHINE_PARA:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_obj_del(scr);
+        lv_draw_machine_para();
+      }
+      break;
+    case ID_S_EEPROM_SET:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        lv_obj_del(scr);
+        lv_draw_eeprom_settings();
+      }
+      break;
     case ID_S_RETURN:
       if (event == LV_EVENT_CLICKED) {
         // nothing to do
@@ -115,6 +135,8 @@ void lv_draw_set(void) {
   #if HAS_LANG_SELECT_SCREEN
     lv_obj_t *buttonLanguage;
   #endif
+  lv_obj_t *buttonMachinePara;
+  lv_obj_t *buttonEepromSet;
 
   if (disp_state_stack._disp_state[disp_state_stack._disp_index] != SET_UI) {
     disp_state_stack._disp_index++;
@@ -131,7 +153,7 @@ void lv_draw_set(void) {
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -141,72 +163,84 @@ void lv_draw_set(void) {
 
   /*Create an Image button*/
   //buttonWifi = lv_imgbtn_create(scr, NULL);
-  buttonFan = lv_imgbtn_create(scr, NULL);
+  buttonFan   = lv_imgbtn_create(scr, NULL);
   buttonAbout = lv_imgbtn_create(scr, NULL);
   //buttonContinue = lv_imgbtn_create(scr, NULL);
   buMotorOff = lv_imgbtn_create(scr, NULL);
   #if HAS_LANG_SELECT_SCREEN
     buttonLanguage = lv_imgbtn_create(scr, NULL);
   #endif
-  buttonBack = lv_imgbtn_create(scr, NULL);
+  buttonMachinePara = lv_imgbtn_create(scr, NULL);
+  buttonEepromSet   = lv_imgbtn_create(scr, NULL);
+  buttonBack        = lv_imgbtn_create(scr, NULL);
 
 
   //lv_obj_set_event_cb_mks(buttonWifi, event_handler,ID_S_WIFI,"bmp_Wifi.bin",0);
   //lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_REL, &bmp_pic);
   //lv_imgbtn_set_src(buttonWifi, LV_BTN_STATE_PR, &bmp_pic);
-  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_PR, &tft_style_label_pre);
+  //lv_imgbtn_set_style(buttonWifi, LV_BTN_STATE_REL, &tft_style_label_rel);
   //lv_obj_clear_protect(buttonWifi, LV_PROTECT_FOLLOW);
   #if 1
-    lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_S_FAN, "bmp_Fan.bin", 0);
+    lv_obj_set_event_cb_mks(buttonFan, event_handler, ID_S_FAN, "bmp_fan.bin", 0);
     lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonFan, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonFan, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonAbout, event_handler, ID_S_ABOUT, "bmp_About.bin", 0);
+    lv_obj_set_event_cb_mks(buttonAbout, event_handler, ID_S_ABOUT, "bmp_about.bin", 0);
     lv_imgbtn_set_src(buttonAbout, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonAbout, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonAbout, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     //lv_obj_set_event_cb_mks(buttonContinue, event_handler,ID_S_CONTINUE,"bmp_Breakpoint.bin",0);
     //lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_REL, &bmp_pic);
     //lv_imgbtn_set_src(buttonContinue, LV_BTN_STATE_PR, &bmp_pic);
-    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_PR, &tft_style_label_pre);
+    //lv_imgbtn_set_style(buttonContinue, LV_BTN_STATE_REL, &tft_style_label_rel);
     #if HAS_SUICIDE
-      lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_manual_off.bin", 0);
+      lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_Mamual.bin", 0);
     #else
-      lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_manual_off.bin", 0);
+      lv_obj_set_event_cb_mks(buMotorOff, event_handler, ID_S_MOTOR_OFF, "bmp_function1.bin", 0);
     #endif
     lv_imgbtn_set_src(buMotorOff, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buMotorOff, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buMotorOff, LV_BTN_STATE_REL, &tft_style_label_rel);
 
     #if HAS_LANG_SELECT_SCREEN
-      lv_obj_set_event_cb_mks(buttonLanguage, event_handler, ID_S_LANGUAGE, "bmp_Language.bin", 0);
+      lv_obj_set_event_cb_mks(buttonLanguage, event_handler, ID_S_LANGUAGE, "bmp_language.bin", 0);
       lv_imgbtn_set_src(buttonLanguage, LV_BTN_STATE_REL, &bmp_pic);
       lv_imgbtn_set_src(buttonLanguage, LV_BTN_STATE_PR, &bmp_pic);
-      lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_PR, &tft_style_lable_pre);
-      lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_REL, &tft_style_lable_rel);
+      lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonLanguage, LV_BTN_STATE_REL, &tft_style_label_rel);
     #endif
-
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_S_RETURN, "bmp_Return.bin", 0);
+    lv_obj_set_event_cb_mks(buttonMachinePara, event_handler, ID_S_MACHINE_PARA, "bmp_machine_para.bin", 0);
+    lv_imgbtn_set_src(buttonMachinePara, LV_BTN_STATE_REL, &bmp_pic);
+    lv_imgbtn_set_src(buttonMachinePara, LV_BTN_STATE_PR, &bmp_pic);
+    lv_imgbtn_set_style(buttonMachinePara, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonMachinePara, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    lv_obj_set_event_cb_mks(buttonEepromSet, event_handler, ID_S_EEPROM_SET, "bmp_eeprom_settings.bin", 0);
+    lv_imgbtn_set_src(buttonEepromSet, LV_BTN_STATE_REL, &bmp_pic);
+    lv_imgbtn_set_src(buttonEepromSet, LV_BTN_STATE_PR, &bmp_pic);
+    lv_imgbtn_set_style(buttonEepromSet, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonEepromSet, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_S_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  #endif
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+  #endif // if 1
 
   /*lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
   lv_obj_set_pos(buttonFan,BTN_X_PIXEL+INTERVAL_V*2,titleHeight);
   lv_obj_set_pos(buttonAbout,BTN_X_PIXEL*2+INTERVAL_V*3,titleHeight);
   lv_obj_set_pos(buttonContinue,BTN_X_PIXEL*3+INTERVAL_V*4,titleHeight);
-  lv_obj_set_pos(buMotorOff,INTERVAL_V,  BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+  lv_obj_set_pos(buMotorOff,INTERVAL_V, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
   lv_obj_set_pos(buttonLanguage,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
-  lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4,  BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
+  lv_obj_set_pos(buttonBack,BTN_X_PIXEL*3+INTERVAL_V*4, BTN_Y_PIXEL+INTERVAL_H+titleHeight);*/
 
   //lv_obj_set_pos(buttonWifi,INTERVAL_V,titleHeight);
   lv_obj_set_pos(buttonFan, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
@@ -216,7 +250,9 @@ void lv_draw_set(void) {
   #if HAS_LANG_SELECT_SCREEN
     lv_obj_set_pos(buttonLanguage, INTERVAL_V, titleHeight);
   #endif
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonMachinePara, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonEepromSet, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   //lv_btn_set_layout(buttonWifi, LV_LAYOUT_OFF);
@@ -227,18 +263,21 @@ void lv_draw_set(void) {
   #if HAS_LANG_SELECT_SCREEN
     lv_btn_set_layout(buttonLanguage, LV_LAYOUT_OFF);
   #endif
+  lv_btn_set_layout(buttonMachinePara, LV_LAYOUT_OFF);
+  lv_btn_set_layout(buttonEepromSet, LV_LAYOUT_OFF);
   lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
 
   //lv_obj_t * labelWifi= lv_label_create(buttonWifi, NULL);
-  lv_obj_t * labelFan = lv_label_create(buttonFan, NULL);
+  lv_obj_t * labelFan    = lv_label_create(buttonFan, NULL);
   lv_obj_t * label_About = lv_label_create(buttonAbout, NULL);
   //lv_obj_t * label_Continue = lv_label_create(buttonContinue, NULL);
   lv_obj_t * label_MotorOff = lv_label_create(buMotorOff, NULL);
   #if HAS_LANG_SELECT_SCREEN
     lv_obj_t * label_Language = lv_label_create(buttonLanguage, NULL);
   #endif
-  lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
-
+  lv_obj_t * label_MachinePara = lv_label_create(buttonMachinePara, NULL);
+  lv_obj_t * label_EepromSet   = lv_label_create(buttonEepromSet, NULL);
+  lv_obj_t * label_Back        = lv_label_create(buttonBack, NULL);
 
   if (gCfgItems.multiple_language != 0) {
     //lv_label_set_text(labelWifi, set_menu.wifi);
@@ -263,6 +302,11 @@ void lv_draw_set(void) {
       lv_label_set_text(label_Language, set_menu.language);
       lv_obj_align(label_Language, buttonLanguage, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
     #endif
+    lv_label_set_text(label_MachinePara, set_menu.machine_para);
+    lv_obj_align(label_MachinePara, buttonMachinePara, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
+
+    lv_label_set_text(label_EepromSet, set_menu.eepromSet);
+    lv_obj_align(label_EepromSet, buttonEepromSet, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
 
     lv_label_set_text(label_Back, common_menu.text_back);
     lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -271,4 +315,4 @@ void lv_draw_set(void) {
 
 void lv_clear_set() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..434c2f85795ace2f10aa88553af24500b39c2a13
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.cpp
@@ -0,0 +1,358 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_STEP_RETURN  1
+#define ID_STEP_X       2
+#define ID_STEP_Y       3
+#define ID_STEP_Z       4
+#define ID_STEP_E0      5
+#define ID_STEP_E1      6
+#define ID_STEP_DOWN    7
+#define ID_STEP_UP      8
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_STEP_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_step_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_STEP_X:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = Xstep;
+        lv_clear_step_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_STEP_Y:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = Ystep;
+        lv_clear_step_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_STEP_Z:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = Zstep;
+        lv_clear_step_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_STEP_E0:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = E0step;
+        lv_clear_step_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_STEP_E1:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = E1step;
+        lv_clear_step_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_STEP_UP:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_step_settings();
+        lv_draw_step_settings();
+      }
+      break;
+    case ID_STEP_DOWN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 1;
+        lv_clear_step_settings();
+        lv_draw_step_settings();
+      }
+      break;
+  }
+}
+
+void lv_draw_step_settings(void) {
+  lv_obj_t *buttonBack = NULL, *label_Back = NULL, *buttonTurnPage = NULL, *labelTurnPage = NULL;
+  lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+  lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+  lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+  lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+  lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+  lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != STEPS_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = STEPS_UI;
+  }
+  disp_state = STEPS_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.StepsConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  // LV_IMG_DECLARE(bmp_para_arrow);
+  LV_IMG_DECLARE(bmp_para_bank);
+
+  if (uiCfg.para_ui_page != 1) {
+    buttonXText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+    lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonXText, event_handler);
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+    labelXText = lv_label_create(buttonXText, NULL);                        /*Add a label to the button*/
+
+    buttonXValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_STEP_X, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+    labelXValue = lv_label_create(buttonXValue, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonYText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+    lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonYText, event_handler);
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+    labelYText = lv_label_create(buttonYText, NULL);                        /*Add a label to the button*/
+
+    buttonYValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_STEP_Y, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+    labelYValue = lv_label_create(buttonYValue, NULL);
+
+    line2 = lv_line_create(scr, NULL);
+    lv_ex_line(line2, line_points[1]);
+
+    buttonZText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3);          /*Set its position*/
+    lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonZText, event_handler);
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+    labelZText = lv_label_create(buttonZText, NULL);                        /*Add a label to the button*/
+
+    buttonZValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_STEP_Z, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+    labelZValue = lv_label_create(buttonZValue, NULL);
+
+    line3 = lv_line_create(scr, NULL);
+    lv_ex_line(line3, line_points[2]);
+
+    buttonE0Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4);         /*Set its position*/
+    lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE0Text, event_handler);
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+    labelE0Text = lv_label_create(buttonE0Text, NULL);                      /*Add a label to the button*/
+
+    buttonE0Value = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_STEP_E0, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+    labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+    line4 = lv_line_create(scr, NULL);
+    lv_ex_line(line4, line_points[3]);
+
+    buttonTurnPage = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_STEP_DOWN, "bmp_back70x40.bin", 0);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+  }
+  else {
+    buttonE1Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y);             /*Set its position*/
+    lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE1Text, event_handler);
+    lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+    labelE1Text = lv_label_create(buttonE1Text, NULL);                      /*Add a label to the button*/
+
+    buttonE1Value = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_STEP_E1, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+    labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonTurnPage = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_STEP_UP, "bmp_back70x40.bin", 0);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+    lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+  }
+
+  lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+  lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+  labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_STEP_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    if (uiCfg.para_ui_page != 1) {
+      lv_label_set_text(labelXText, machine_menu.X_Steps);
+      lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelYText, machine_menu.Y_Steps);
+      lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelZText, machine_menu.Z_Steps);
+      lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelE0Text, machine_menu.E0_Steps);
+      lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelTurnPage, machine_menu.next);
+      lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[X_AXIS]);
+      lv_label_set_text(labelXValue, public_buf_l);
+      lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Y_AXIS]);
+      lv_label_set_text(labelYValue, public_buf_l);
+      lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[Z_AXIS]);
+      lv_label_set_text(labelZValue, public_buf_l);
+      lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS]);
+      lv_label_set_text(labelE0Value, public_buf_l);
+      lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+    }
+    else {
+      lv_label_set_text(labelE1Text, machine_menu.E1_Steps);
+      lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelTurnPage, machine_menu.previous);
+      lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+      ZERO(public_buf_l);
+      sprintf_P(public_buf_l, PSTR("%.1f"), planner.settings.axis_steps_per_mm[E_AXIS_N(1)]);
+      lv_label_set_text(labelE1Value, public_buf_l);
+      lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+    }
+
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+  }
+}
+
+void lv_clear_step_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..1a5efda408257b1e49e641eb254dc3203491f3d4
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_step_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_step_settings(void);
+extern void lv_clear_step_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..f1559e0f553e3aa73e9968e02374c0ac84117cf9
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.cpp
@@ -0,0 +1,385 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if BOTH(HAS_TFT_LVGL_UI, HAS_TRINAMIC_CONFIG)
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+#include "../../../../module/stepper/indirection.h"
+#include "../../../../feature/tmc_util.h"
+
+static lv_obj_t * scr;
+
+#define ID_TMC_CURRENT_RETURN 1
+#define ID_TMC_CURRENT_X      2
+#define ID_TMC_CURRENT_Y      3
+#define ID_TMC_CURRENT_Z      4
+#define ID_TMC_CURRENT_E0     5
+#define ID_TMC_CURRENT_E1     6
+#define ID_TMC_CURRENT_DOWN   7
+#define ID_TMC_CURRENT_UP     8
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_TMC_CURRENT_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_tmc_current_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_TMC_CURRENT_X:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = Xcurrent;
+        lv_clear_tmc_current_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_TMC_CURRENT_Y:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = Ycurrent;
+        lv_clear_tmc_current_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_TMC_CURRENT_Z:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = Zcurrent;
+        lv_clear_tmc_current_settings();
+        lv_draw_number_key();
+      }
+      break;
+    case ID_TMC_CURRENT_E0:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        value = E0current;
+        lv_clear_tmc_current_settings();
+        lv_draw_number_key();
+      }
+      break;
+      #if AXIS_IS_TMC(E1)
+        case ID_TMC_CURRENT_E1:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            value = E1current;
+            lv_clear_tmc_current_settings();
+            lv_draw_number_key();
+          }
+          break;
+
+        case ID_TMC_CURRENT_UP:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            uiCfg.para_ui_page = 0;
+            lv_clear_tmc_current_settings();
+            lv_draw_tmc_current_settings();
+          }
+          break;
+        case ID_TMC_CURRENT_DOWN:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            uiCfg.para_ui_page = 1;
+            lv_clear_tmc_current_settings();
+            lv_draw_tmc_current_settings();
+          }
+          break;
+      #endif
+  }
+}
+
+void lv_draw_tmc_current_settings(void) {
+  lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+  lv_obj_t *buttonXText = NULL, *labelXText = NULL, *buttonXValue = NULL, *labelXValue = NULL;
+  lv_obj_t *buttonYText = NULL, *labelYText = NULL, *buttonYValue = NULL, *labelYValue = NULL;
+  lv_obj_t *buttonZText = NULL, *labelZText = NULL, *buttonZValue = NULL, *labelZValue = NULL;
+  lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL, *buttonE0Value = NULL, *labelE0Value = NULL;
+
+  lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+  #if AXIS_IS_TMC(E1)
+    lv_obj_t *buttonTurnPage = NULL, *labelTurnPage = NULL;
+    lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL, *buttonE1Value = NULL, *labelE1Value = NULL;
+  #endif
+  float milliamps;
+
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != TMC_CURRENT_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = TMC_CURRENT_UI;
+  }
+  disp_state = TMC_CURRENT_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.TmcCurrentConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  // LV_IMG_DECLARE(bmp_para_arrow);
+  LV_IMG_DECLARE(bmp_para_bank);
+
+  if (uiCfg.para_ui_page != 1) {
+    buttonXText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+    lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonXText, event_handler);
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+    labelXText = lv_label_create(buttonXText, NULL);                        /*Add a label to the button*/
+
+    buttonXValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonXValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonXValue, event_handler, ID_TMC_CURRENT_X, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonXValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonXValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonXValue, LV_LAYOUT_OFF);
+    labelXValue = lv_label_create(buttonXValue, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonYText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+    lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonYText, event_handler);
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+    labelYText = lv_label_create(buttonYText, NULL);                        /*Add a label to the button*/
+
+    buttonYValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonYValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonYValue, event_handler, ID_TMC_CURRENT_Y, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonYValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonYValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonYValue, LV_LAYOUT_OFF);
+    labelYValue = lv_label_create(buttonYValue, NULL);
+
+    line2 = lv_line_create(scr, NULL);
+    lv_ex_line(line2, line_points[1]);
+
+    buttonZText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3);          /*Set its position*/
+    lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonZText, event_handler);
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+    labelZText = lv_label_create(buttonZText, NULL);                        /*Add a label to the button*/
+
+    buttonZValue = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonZValue, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonZValue, event_handler, ID_TMC_CURRENT_Z, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonZValue, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonZValue, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonZValue, LV_LAYOUT_OFF);
+    labelZValue = lv_label_create(buttonZValue, NULL);
+
+    line3 = lv_line_create(scr, NULL);
+    lv_ex_line(line3, line_points[2]);
+
+    buttonE0Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4);         /*Set its position*/
+    lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE0Text, event_handler);
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+    labelE0Text = lv_label_create(buttonE0Text, NULL);                      /*Add a label to the button*/
+
+    buttonE0Value = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE0Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_VALUE_V);
+    lv_obj_set_event_cb_mks(buttonE0Value, event_handler, ID_TMC_CURRENT_E0, "bmp_value_blank.bin", 0);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_REL, &bmp_para_bank);
+    lv_imgbtn_set_src(buttonE0Value, LV_BTN_STATE_PR, &bmp_para_bank);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_PR, &style_para_value_pre);
+    lv_imgbtn_set_style(buttonE0Value, LV_BTN_STATE_REL, &style_para_value_rel);
+    lv_btn_set_layout(buttonE0Value, LV_LAYOUT_OFF);
+    labelE0Value = lv_label_create(buttonE0Value, NULL);
+
+    line4 = lv_line_create(scr, NULL);
+    lv_ex_line(line4, line_points[3]);
+
+    #if AXIS_IS_TMC(E1)
+      buttonTurnPage = lv_imgbtn_create(scr, NULL);
+      lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_CURRENT_DOWN, "bmp_back70x40.bin", 0);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+    #endif
+  }
+  else {
+    #if AXIS_IS_TMC(E1)
+      buttonE1Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+      lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y);             /*Set its position*/
+      lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+      lv_obj_set_event_cb(buttonE1Text, event_handler);
+      lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+      lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+      lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+      labelE1Text = lv_label_create(buttonE1Text, NULL);                      /*Add a label to the button*/
+
+      buttonE1Value = lv_imgbtn_create(scr, NULL);
+      lv_obj_set_pos(buttonE1Value, PARA_UI_VALUE_POS_X, PARA_UI_POS_Y + PARA_UI_VALUE_V);
+      lv_obj_set_event_cb_mks(buttonE1Value, event_handler, ID_TMC_CURRENT_E1, "bmp_value_blank.bin", 0);
+      lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_REL, &bmp_para_bank);
+      lv_imgbtn_set_src(buttonE1Value, LV_BTN_STATE_PR, &bmp_para_bank);
+      lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_PR, &style_para_value_pre);
+      lv_imgbtn_set_style(buttonE1Value, LV_BTN_STATE_REL, &style_para_value_rel);
+      lv_btn_set_layout(buttonE1Value, LV_LAYOUT_OFF);
+      labelE1Value = lv_label_create(buttonE1Value, NULL);
+
+      line1 = lv_line_create(scr, NULL);
+      lv_ex_line(line1, line_points[0]);
+
+      buttonTurnPage = lv_imgbtn_create(scr, NULL);
+      lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_CURRENT_UP, "bmp_back70x40.bin", 0);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+    #endif
+  }
+  #if AXIS_IS_TMC(E1)
+    lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+    lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+    labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+  #endif
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_TMC_CURRENT_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    if (uiCfg.para_ui_page != 1) {
+      lv_label_set_text(labelXText, machine_menu.X_Current);
+      lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelYText, machine_menu.Y_Current);
+      lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelZText, machine_menu.Z_Current);
+      lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelE0Text, machine_menu.E0_Current);
+      lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+      #if AXIS_IS_TMC(E1)
+        lv_label_set_text(labelTurnPage, machine_menu.next);
+        lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+      #endif
+      #if AXIS_IS_TMC(X)
+        milliamps = stepperX.getMilliamps();
+        ZERO(public_buf_l);
+        sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+        lv_label_set_text(labelXValue, public_buf_l);
+        lv_obj_align(labelXValue, buttonXValue, LV_ALIGN_CENTER, 0, 0);
+      #endif
+      #if AXIS_IS_TMC(Y)
+        milliamps = stepperY.getMilliamps();
+        ZERO(public_buf_l);
+        sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+        lv_label_set_text(labelYValue, public_buf_l);
+        lv_obj_align(labelYValue, buttonYValue, LV_ALIGN_CENTER, 0, 0);
+      #endif
+      #if AXIS_IS_TMC(Z)
+        milliamps = stepperZ.getMilliamps();
+        ZERO(public_buf_l);
+        sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+        lv_label_set_text(labelZValue, public_buf_l);
+        lv_obj_align(labelZValue, buttonZValue, LV_ALIGN_CENTER, 0, 0);
+      #endif
+      #if AXIS_IS_TMC(E0)
+        milliamps = stepperE0.getMilliamps();
+        ZERO(public_buf_l);
+        sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+        lv_label_set_text(labelE0Value, public_buf_l);
+        lv_obj_align(labelE0Value, buttonE0Value, LV_ALIGN_CENTER, 0, 0);
+      #endif
+    }
+    else {
+      #if AXIS_IS_TMC(E1)
+        lv_label_set_text(labelE1Text, machine_menu.E1_Current);
+        lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+        lv_label_set_text(labelTurnPage, machine_menu.previous);
+        lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+        milliamps = stepperE1.getMilliamps();
+        ZERO(public_buf_l);
+        sprintf_P(public_buf_l, PSTR("%.1f"), milliamps);
+        lv_label_set_text(labelE1Value, public_buf_l);
+        lv_obj_align(labelE1Value, buttonE1Value, LV_ALIGN_CENTER, 0, 0);
+      #endif
+    }
+
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+  }
+}
+
+void lv_clear_tmc_current_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI && HAS_TRINAMIC_CONFIG
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..46463dd3c6d1eec06a93f0958410df83d18e18e5
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_current_settings.h
@@ -0,0 +1,34 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_tmc_current_settings(void);
+extern void lv_clear_tmc_current_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
+
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..5e776a1c674526290f29c17d04d87314c0272c8b
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.cpp
@@ -0,0 +1,478 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if BOTH(HAS_TFT_LVGL_UI, HAS_STEALTHCHOP)
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+
+#include "../../../../MarlinCore.h"
+#include "../../../../module/planner.h"
+#include "../../../../module/stepper/indirection.h"
+#include "../../../../feature/tmc_util.h"
+#include "../../../../gcode/gcode.h"
+#include "../../../../module/planner.h"
+
+static lv_obj_t * scr;
+
+#define ID_TMC_MODE_RETURN 1
+#define ID_TMC_MODE_X      2
+#define ID_TMC_MODE_Y      3
+#define ID_TMC_MODE_Z      4
+#define ID_TMC_MODE_E0     5
+#define ID_TMC_MODE_E1     6
+#define ID_TMC_MODE_DOWN   7
+#define ID_TMC_MODE_UP     8
+
+static lv_obj_t *labelXState = NULL, *labelYState = NULL, *labelZState = NULL, *labelE0State = NULL;
+static lv_obj_t *buttonXState = NULL, *buttonYState = NULL, *buttonZState = NULL, *buttonE0State = NULL;
+
+#if AXIS_HAS_STEALTHCHOP(E1)
+  static lv_obj_t *labelE1State = NULL, *buttonE1State = NULL;
+#endif
+
+static void event_handler(lv_obj_t * obj, lv_event_t event) {
+  switch (obj->mks_obj_id) {
+    case ID_TMC_MODE_RETURN:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        uiCfg.para_ui_page = 0;
+        lv_clear_tmc_step_mode_settings();
+        draw_return_ui();
+      }
+      break;
+    case ID_TMC_MODE_X:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (stepperX.stored.stealthChop_enabled == true) {
+          stepperX.stored.stealthChop_enabled = false;
+          stepperX.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_disable.bin", 0);
+          lv_label_set_text(labelXState, machine_menu.disable);
+          // lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+          // gcode.process_subcommands_now_P(PSTR("M500"));
+        }
+        else {
+          stepperX.stored.stealthChop_enabled = true;
+          stepperX.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_enable.bin", 0);
+          lv_label_set_text(labelXState, machine_menu.enable);
+          // gcode.process_subcommands_now_P(PSTR("M500"));
+        }
+        gcode.process_subcommands_now_P(PSTR("M500"));
+      }
+      break;
+    case ID_TMC_MODE_Y:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (stepperY.stored.stealthChop_enabled == true) {
+          stepperY.stored.stealthChop_enabled = false;
+          stepperY.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_disable.bin", 0);
+          lv_label_set_text(labelYState, machine_menu.disable);
+          // lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+        }
+        else {
+          stepperY.stored.stealthChop_enabled = true;
+          stepperY.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_enable.bin", 0);
+          lv_label_set_text(labelYState, machine_menu.enable);
+        }
+        gcode.process_subcommands_now_P(PSTR("M500"));
+      }
+      break;
+    case ID_TMC_MODE_Z:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (stepperZ.stored.stealthChop_enabled == true) {
+          stepperZ.stored.stealthChop_enabled = false;
+          stepperZ.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_disable.bin", 0);
+          lv_label_set_text(labelZState, machine_menu.disable);
+          // lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+        }
+        else {
+          stepperZ.stored.stealthChop_enabled = true;
+          stepperZ.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_enable.bin", 0);
+          lv_label_set_text(labelZState, machine_menu.enable);
+        }
+        gcode.process_subcommands_now_P(PSTR("M500"));
+      }
+      break;
+    case ID_TMC_MODE_E0:
+      if (event == LV_EVENT_CLICKED) {
+
+      }
+      else if (event == LV_EVENT_RELEASED) {
+        if (stepperE0.stored.stealthChop_enabled == true) {
+          stepperE0.stored.stealthChop_enabled = false;
+          stepperE0.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_disable.bin", 0);
+          lv_label_set_text(labelE0State, machine_menu.disable);
+          // lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+        }
+        else {
+          stepperE0.stored.stealthChop_enabled = true;
+          stepperE0.refresh_stepping_mode();
+          lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_enable.bin", 0);
+          lv_label_set_text(labelE0State, machine_menu.enable);
+        }
+        gcode.process_subcommands_now_P(PSTR("M500"));
+      }
+      break;
+      #if AXIS_HAS_STEALTHCHOP(E1)
+        case ID_TMC_MODE_E1:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            if (stepperE1.stored.stealthChop_enabled == true) {
+              stepperE1.stored.stealthChop_enabled = false;
+              stepperE1.refresh_stepping_mode();
+              lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_disable.bin", 0);
+              lv_label_set_text(labelE1State, machine_menu.disable);
+              // lv_obj_align(labelXState, buttonE1State, LV_ALIGN_IN_LEFT_MID,0, 0);
+            }
+            else {
+              stepperE1.stored.stealthChop_enabled = true;
+              stepperE1.refresh_stepping_mode();
+              lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_enable.bin", 0);
+              lv_label_set_text(labelE1State, machine_menu.enable);
+            }
+            gcode.process_subcommands_now_P(PSTR("M500"));
+          }
+          break;
+
+        case ID_TMC_MODE_UP:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            uiCfg.para_ui_page = 0;
+            lv_clear_tmc_step_mode_settings();
+            lv_draw_tmc_step_mode_settings();
+          }
+          break;
+        case ID_TMC_MODE_DOWN:
+          if (event == LV_EVENT_CLICKED) {
+
+          }
+          else if (event == LV_EVENT_RELEASED) {
+            uiCfg.para_ui_page = 1;
+            lv_clear_tmc_step_mode_settings();
+            lv_draw_tmc_step_mode_settings();
+          }
+          break;
+      #endif // if AXIS_HAS_STEALTHCHOP(E1)
+  }
+}
+
+void lv_draw_tmc_step_mode_settings(void) {
+  lv_obj_t *buttonBack = NULL, *label_Back = NULL;
+  lv_obj_t *buttonXText = NULL, *labelXText = NULL;
+  lv_obj_t *buttonYText = NULL, *labelYText = NULL;
+  lv_obj_t *buttonZText = NULL, *labelZText = NULL;
+  lv_obj_t *buttonE0Text = NULL, *labelE0Text = NULL;
+
+  lv_obj_t * line1 = NULL, * line2 = NULL, * line3 = NULL, * line4 = NULL;
+  #if AXIS_HAS_STEALTHCHOP(E1)
+    lv_obj_t *buttonTurnPage = NULL, *labelTurnPage = NULL;
+    lv_obj_t *buttonE1Text = NULL, *labelE1Text = NULL;
+  #endif
+
+
+  labelXState   = NULL;
+  buttonXState  = NULL;
+  labelYState   = NULL;
+  buttonYState  = NULL;
+  labelZState   = NULL;
+  buttonZState  = NULL;
+  labelE0State  = NULL;
+  buttonE0State = NULL;
+  #if AXIS_HAS_STEALTHCHOP(E1)
+    labelE1State  = NULL;
+    buttonE1State = NULL;
+  #endif
+
+  if (disp_state_stack._disp_state[disp_state_stack._disp_index] != TMC_MODE_UI) {
+    disp_state_stack._disp_index++;
+    disp_state_stack._disp_state[disp_state_stack._disp_index] = TMC_MODE_UI;
+  }
+  disp_state = TMC_MODE_UI;
+
+  scr = lv_obj_create(NULL, NULL);
+
+  lv_obj_set_style(scr, &tft_style_scr);
+  lv_scr_load(scr);
+  lv_obj_clean(scr);
+
+  lv_obj_t * title = lv_label_create(scr, NULL);
+  lv_obj_set_style(title, &tft_style_label_rel);
+  lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
+  lv_label_set_text(title, machine_menu.TmcStepModeConfTitle);
+
+  lv_refr_now(lv_refr_get_disp_refreshing());
+
+  LV_IMG_DECLARE(bmp_para_back);
+  LV_IMG_DECLARE(bmp_para_state);
+  // LV_IMG_DECLARE(bmp_para_bank);
+
+  if (uiCfg.para_ui_page != 1) {
+    buttonXText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonXText, PARA_UI_POS_X, PARA_UI_POS_Y);              /*Set its position*/
+    lv_obj_set_size(buttonXText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonXText, event_handler);
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonXText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonXText, LV_LAYOUT_OFF);
+    labelXText = lv_label_create(buttonXText, NULL);                        /*Add a label to the button*/
+
+    buttonXState = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonXState, PARA_UI_STATE_POS_X, PARA_UI_POS_Y + PARA_UI_STATE_V);
+    if (stepperX.get_stealthChop_status())
+      lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_enable.bin", 0);
+    else
+      lv_obj_set_event_cb_mks(buttonXState, event_handler, ID_TMC_MODE_X, "bmp_disable.bin", 0);
+    lv_imgbtn_set_src(buttonXState, LV_BTN_STATE_REL, &bmp_para_state);
+    lv_imgbtn_set_src(buttonXState, LV_BTN_STATE_PR, &bmp_para_state);
+    lv_imgbtn_set_style(buttonXState, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonXState, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonXState, LV_LAYOUT_OFF);
+    labelXState = lv_label_create(buttonXState, NULL);
+
+    line1 = lv_line_create(scr, NULL);
+    lv_ex_line(line1, line_points[0]);
+
+    buttonYText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonYText, PARA_UI_POS_X, PARA_UI_POS_Y * 2);          /*Set its position*/
+    lv_obj_set_size(buttonYText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonYText, event_handler);
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonYText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonYText, LV_LAYOUT_OFF);
+    labelYText = lv_label_create(buttonYText, NULL);                        /*Add a label to the button*/
+
+    buttonYState = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonYState, PARA_UI_STATE_POS_X, PARA_UI_POS_Y * 2 + PARA_UI_STATE_V);
+    if (stepperY.get_stealthChop_status())
+      lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_enable.bin", 0);
+    else
+      lv_obj_set_event_cb_mks(buttonYState, event_handler, ID_TMC_MODE_Y, "bmp_disable.bin", 0);
+    lv_imgbtn_set_src(buttonYState, LV_BTN_STATE_REL, &bmp_para_state);
+    lv_imgbtn_set_src(buttonYState, LV_BTN_STATE_PR, &bmp_para_state);
+    lv_imgbtn_set_style(buttonYState, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonYState, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonYState, LV_LAYOUT_OFF);
+    labelYState = lv_label_create(buttonYState, NULL);
+
+    line2 = lv_line_create(scr, NULL);
+    lv_ex_line(line2, line_points[1]);
+
+    buttonZText = lv_btn_create(scr, NULL);                                 /*Add a button the current screen*/
+    lv_obj_set_pos(buttonZText, PARA_UI_POS_X, PARA_UI_POS_Y * 3);          /*Set its position*/
+    lv_obj_set_size(buttonZText, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);     /*Set its size*/
+    lv_obj_set_event_cb(buttonZText, event_handler);
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_REL, &tft_style_label_rel);  /*Set the button's released style*/
+    lv_btn_set_style(buttonZText, LV_BTN_STYLE_PR, &tft_style_label_pre);   /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonZText, LV_LAYOUT_OFF);
+    labelZText = lv_label_create(buttonZText, NULL);                        /*Add a label to the button*/
+
+    buttonZState = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonZState, PARA_UI_STATE_POS_X, PARA_UI_POS_Y * 3 + PARA_UI_STATE_V);
+    if (stepperZ.get_stealthChop_status())
+      lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_enable.bin", 0);
+    else
+      lv_obj_set_event_cb_mks(buttonZState, event_handler, ID_TMC_MODE_Z, "bmp_disable.bin", 0);
+    lv_imgbtn_set_src(buttonZState, LV_BTN_STATE_REL, &bmp_para_state);
+    lv_imgbtn_set_src(buttonZState, LV_BTN_STATE_PR, &bmp_para_state);
+    lv_imgbtn_set_style(buttonZState, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonZState, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonZState, LV_LAYOUT_OFF);
+    labelZState = lv_label_create(buttonZState, NULL);
+
+    line3 = lv_line_create(scr, NULL);
+    lv_ex_line(line3, line_points[2]);
+
+    buttonE0Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+    lv_obj_set_pos(buttonE0Text, PARA_UI_POS_X, PARA_UI_POS_Y * 4);         /*Set its position*/
+    lv_obj_set_size(buttonE0Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+    lv_obj_set_event_cb(buttonE0Text, event_handler);
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+    lv_btn_set_style(buttonE0Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+    lv_btn_set_layout(buttonE0Text, LV_LAYOUT_OFF);
+    labelE0Text = lv_label_create(buttonE0Text, NULL);                      /*Add a label to the button*/
+
+    buttonE0State = lv_imgbtn_create(scr, NULL);
+    lv_obj_set_pos(buttonE0State, PARA_UI_STATE_POS_X, PARA_UI_POS_Y * 4 + PARA_UI_STATE_V);
+    if (stepperE0.get_stealthChop_status())
+      lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_enable.bin", 0);
+    else
+      lv_obj_set_event_cb_mks(buttonE0State, event_handler, ID_TMC_MODE_E0, "bmp_disable.bin", 0);
+    lv_imgbtn_set_src(buttonE0State, LV_BTN_STATE_REL, &bmp_para_state);
+    lv_imgbtn_set_src(buttonE0State, LV_BTN_STATE_PR, &bmp_para_state);
+    lv_imgbtn_set_style(buttonE0State, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonE0State, LV_BTN_STATE_REL, &tft_style_label_rel);
+    lv_btn_set_layout(buttonE0State, LV_LAYOUT_OFF);
+    labelE0State = lv_label_create(buttonE0State, NULL);
+
+    line4 = lv_line_create(scr, NULL);
+    lv_ex_line(line4, line_points[3]);
+
+    #if AXIS_HAS_STEALTHCHOP(E1)
+      buttonTurnPage = lv_imgbtn_create(scr, NULL);
+      lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_MODE_DOWN, "bmp_back70x40.bin", 0);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+    #endif
+  }
+  else {
+    #if AXIS_HAS_STEALTHCHOP(E1)
+      buttonE1Text = lv_btn_create(scr, NULL);                                /*Add a button the current screen*/
+      lv_obj_set_pos(buttonE1Text, PARA_UI_POS_X, PARA_UI_POS_Y);             /*Set its position*/
+      lv_obj_set_size(buttonE1Text, PARA_UI_VALUE_SIZE_X, PARA_UI_SIZE_Y);    /*Set its size*/
+      lv_obj_set_event_cb(buttonE1Text, event_handler);
+      lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_REL, &tft_style_label_rel); /*Set the button's released style*/
+      lv_btn_set_style(buttonE1Text, LV_BTN_STYLE_PR, &tft_style_label_pre);  /*Set the button's pressed style*/
+      lv_btn_set_layout(buttonE1Text, LV_LAYOUT_OFF);
+      labelE1Text = lv_label_create(buttonE1Text, NULL);                      /*Add a label to the button*/
+
+      buttonE1State = lv_imgbtn_create(scr, NULL);
+      lv_obj_set_pos(buttonE1State, PARA_UI_STATE_POS_X, PARA_UI_POS_Y + PARA_UI_STATE_V);
+      if (stepperE1.get_stealthChop_status())
+        lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_enable.bin", 0);
+      else
+        lv_obj_set_event_cb_mks(buttonE1State, event_handler, ID_TMC_MODE_E1, "bmp_disable.bin", 0);
+      lv_imgbtn_set_src(buttonE1State, LV_BTN_STATE_REL, &bmp_para_state);
+      lv_imgbtn_set_src(buttonE1State, LV_BTN_STATE_PR, &bmp_para_state);
+      lv_imgbtn_set_style(buttonE1State, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonE1State, LV_BTN_STATE_REL, &tft_style_label_rel);
+      lv_btn_set_layout(buttonE1State, LV_LAYOUT_OFF);
+      labelE1State = lv_label_create(buttonE1State, NULL);
+
+      line1 = lv_line_create(scr, NULL);
+      lv_ex_line(line1, line_points[0]);
+
+      buttonTurnPage = lv_imgbtn_create(scr, NULL);
+      lv_obj_set_event_cb_mks(buttonTurnPage, event_handler, ID_TMC_MODE_UP, "bmp_back70x40.bin", 0);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_REL, &bmp_para_back);
+      lv_imgbtn_set_src(buttonTurnPage, LV_BTN_STATE_PR, &bmp_para_back);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_PR, &tft_style_label_pre);
+      lv_imgbtn_set_style(buttonTurnPage, LV_BTN_STATE_REL, &tft_style_label_rel);
+    #endif
+  }
+  #if AXIS_HAS_STEALTHCHOP(E1)
+    lv_obj_set_pos(buttonTurnPage, PARA_UI_TURN_PAGE_POS_X, PARA_UI_TURN_PAGE_POS_Y);
+    lv_btn_set_layout(buttonTurnPage, LV_LAYOUT_OFF);
+    labelTurnPage = lv_label_create(buttonTurnPage, NULL);
+  #endif
+
+  buttonBack = lv_imgbtn_create(scr, NULL);
+  lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_TMC_MODE_RETURN, "bmp_back70x40.bin", 0);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_para_back);
+  lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_para_back);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+  lv_obj_set_pos(buttonBack, PARA_UI_BACL_POS_X, PARA_UI_BACL_POS_Y);
+  lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
+  label_Back = lv_label_create(buttonBack, NULL);
+
+  if (gCfgItems.multiple_language != 0) {
+    if (uiCfg.para_ui_page != 1) {
+      lv_label_set_text(labelXText, machine_menu.X_StepMode);
+      lv_obj_align(labelXText, buttonXText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelYText, machine_menu.Y_StepMode);
+      lv_obj_align(labelYText, buttonYText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelZText, machine_menu.Z_StepMode);
+      lv_obj_align(labelZText, buttonZText, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      lv_label_set_text(labelE0Text, machine_menu.E0_StepMode);
+      lv_obj_align(labelE0Text, buttonE0Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+      if (stepperX.get_stealthChop_status())
+        lv_label_set_text(labelXState, machine_menu.enable);
+      else
+        lv_label_set_text(labelXState, machine_menu.disable);
+      lv_obj_align(labelXState, buttonXState, LV_ALIGN_CENTER, 0, 0);
+
+      if (stepperY.get_stealthChop_status())
+        lv_label_set_text(labelYState, machine_menu.enable);
+      else
+        lv_label_set_text(labelYState, machine_menu.disable);
+      lv_obj_align(labelYState, buttonYState, LV_ALIGN_CENTER, 0, 0);
+
+      if (stepperZ.get_stealthChop_status())
+        lv_label_set_text(labelZState, machine_menu.enable);
+      else
+        lv_label_set_text(labelZState, machine_menu.disable);
+      lv_obj_align(labelZState, buttonZState, LV_ALIGN_CENTER, 0, 0);
+
+      if (stepperE0.get_stealthChop_status())
+        lv_label_set_text(labelE0State, machine_menu.enable);
+      else
+        lv_label_set_text(labelE0State, machine_menu.disable);
+      lv_obj_align(labelE0State, buttonE0State, LV_ALIGN_CENTER, 0, 0);
+
+      #if AXIS_HAS_STEALTHCHOP(E1)
+        lv_label_set_text(labelTurnPage, machine_menu.next);
+        lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+      #endif
+    }
+    else {
+      #if AXIS_HAS_STEALTHCHOP(E1)
+        lv_label_set_text(labelE1Text, machine_menu.E1_StepMode);
+        lv_obj_align(labelE1Text, buttonE1Text, LV_ALIGN_IN_LEFT_MID, 0, 0);
+
+        if (stepperE1.get_stealthChop_status())
+          lv_label_set_text(labelE1State, machine_menu.enable);
+        else
+          lv_label_set_text(labelE1State, machine_menu.disable);
+        lv_obj_align(labelE1State, buttonE1State, LV_ALIGN_CENTER, 0, 0);
+
+        lv_label_set_text(labelTurnPage, machine_menu.previous);
+        lv_obj_align(labelTurnPage, buttonTurnPage, LV_ALIGN_CENTER, 0, 0);
+
+      #endif
+    }
+
+    lv_label_set_text(label_Back, common_menu.text_back);
+    lv_obj_align(label_Back, buttonBack, LV_ALIGN_CENTER, 0, 0);
+  }
+}
+
+void lv_clear_tmc_step_mode_settings() { lv_obj_del(scr); }
+
+#endif // HAS_TFT_LVGL_UI && HAS_STEALTHCHOP
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h
new file mode 100644
index 0000000000000000000000000000000000000000..93085b7ca16b304aea651eb2f50207cc624fa2f8
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tmc_step_mode_settings.h
@@ -0,0 +1,33 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+#ifdef __cplusplus
+extern "C" { /* C-declarations for C++ */
+#endif
+
+extern void lv_draw_tmc_step_mode_settings(void);
+extern void lv_clear_tmc_step_mode_settings();
+
+#ifdef __cplusplus
+} /* C-declarations for C++ */
+#endif
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp
index 14b9ee80c5929231fda21787b954e95576839f52..2e6d164c0bb04e03424ebd43850260c57546d57d 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_tool.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "lv_conf.h"
 #include "draw_ui.h"
@@ -33,11 +33,8 @@
 #include "../../../../MarlinCore.h"
 #include "../../../../gcode/queue.h"
 
-//static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
+// static lv_obj_t *buttonMoveZ,*buttonTest,*buttonZ0,*buttonStop,*buttonReturn;
 static lv_obj_t * scr;
-#if ENABLED(MKS_TEST)
-  extern uint8_t curent_disp_ui;
-#endif
 
 #define ID_T_PRE_HEAT   1
 #define ID_T_EXTRUCT    2
@@ -128,14 +125,14 @@ void lv_draw_tool(void) {
 
   scr = lv_obj_create(NULL, NULL);
 
-  //static lv_style_t tool_style;
+  // static lv_style_t tool_style;
 
   lv_obj_set_style(scr, &tft_style_scr);
   lv_scr_load(scr);
   lv_obj_clean(scr);
 
   lv_obj_t * title = lv_label_create(scr, NULL);
-  lv_obj_set_style(title, &tft_style_lable_rel);
+  lv_obj_set_style(title, &tft_style_label_rel);
   lv_obj_set_pos(title, TITLE_XPOS, TITLE_YPOS);
   lv_label_set_text(title, creat_title_text());
 
@@ -144,74 +141,74 @@ void lv_draw_tool(void) {
   LV_IMG_DECLARE(bmp_pic);
 
   /*Create an Image button*/
-  buttonPreHeat = lv_imgbtn_create(scr, NULL);
+  buttonPreHeat   = lv_imgbtn_create(scr, NULL);
   buttonExtrusion = lv_imgbtn_create(scr, NULL);
-  buttonMove = lv_imgbtn_create(scr, NULL);
-  buttonHome = lv_imgbtn_create(scr, NULL);
-  buttonLevel = lv_imgbtn_create(scr, NULL);
-  //buttonFilament = lv_imgbtn_create(scr, NULL);
-  //buttonMore = lv_imgbtn_create(scr, NULL);
+  buttonMove      = lv_imgbtn_create(scr, NULL);
+  buttonHome      = lv_imgbtn_create(scr, NULL);
+  buttonLevel     = lv_imgbtn_create(scr, NULL);
+  // buttonFilament = lv_imgbtn_create(scr, NULL);
+  // buttonMore = lv_imgbtn_create(scr, NULL);
   buttonBack = lv_imgbtn_create(scr, NULL);
 
-  lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_T_PRE_HEAT, "bmp_PreHeat.bin", 0);
+  lv_obj_set_event_cb_mks(buttonPreHeat, event_handler, ID_T_PRE_HEAT, "bmp_preHeat.bin", 0);
   lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_REL, &bmp_pic);
   lv_imgbtn_set_src(buttonPreHeat, LV_BTN_STATE_PR, &bmp_pic);
-  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_lable_pre);
-  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_lable_rel);
+  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_PR, &tft_style_label_pre);
+  lv_imgbtn_set_style(buttonPreHeat, LV_BTN_STATE_REL, &tft_style_label_rel);
   lv_obj_clear_protect(buttonPreHeat, LV_PROTECT_FOLLOW);
 
   #if 1
-    lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_T_EXTRUCT, "bmp_Extruct.bin", 0);
+    lv_obj_set_event_cb_mks(buttonExtrusion, event_handler, ID_T_EXTRUCT, "bmp_extruct.bin", 0);
     lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonExtrusion, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonExtrusion, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_T_MOV, "bmp_Mov.bin", 0);
+    lv_obj_set_event_cb_mks(buttonMove, event_handler, ID_T_MOV, "bmp_mov.bin", 0);
     lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonMove, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonMove, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonHome, event_handler, ID_T_HOME, "bmp_Zero.bin", 0);
+    lv_obj_set_event_cb_mks(buttonHome, event_handler, ID_T_HOME, "bmp_zero.bin", 0);
     lv_imgbtn_set_src(buttonHome, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonHome, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_REL, &tft_style_lable_rel);
+    lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonHome, LV_BTN_STATE_REL, &tft_style_label_rel);
 
-    lv_obj_set_event_cb_mks(buttonLevel, event_handler, ID_T_LEVELING, "bmp_Leveling.bin", 0);
+    lv_obj_set_event_cb_mks(buttonLevel, event_handler, ID_T_LEVELING, "bmp_leveling.bin", 0);
     lv_imgbtn_set_src(buttonLevel, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonLevel, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-    //lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_T_FILAMENT,"bmp_Filamentchange.bin",0);
-    //lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
-    //lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
-    //lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    //lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-    //lv_obj_set_event_cb_mks(buttonMore, event_handler,ID_T_MORE,"bmp_More.bin",0);
-    //lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_REL, &bmp_pic);
-    //lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_PR, &bmp_pic);
-    //lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    //lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_REL, &tft_style_lable_rel);
-
-    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_T_RETURN, "bmp_Return.bin", 0);
+    lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonLevel, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    // lv_obj_set_event_cb_mks(buttonFilament, event_handler,ID_T_FILAMENT,"bmp_Filamentchange.bin",0);
+    // lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_REL, &bmp_pic);
+    // lv_imgbtn_set_src(buttonFilament, LV_BTN_STATE_PR, &bmp_pic);
+    // lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_PR, &tft_style_label_pre);
+    // lv_imgbtn_set_style(buttonFilament, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    // lv_obj_set_event_cb_mks(buttonMore, event_handler,ID_T_MORE,"bmp_More.bin",0);
+    // lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_REL, &bmp_pic);
+    // lv_imgbtn_set_src(buttonMore, LV_BTN_STATE_PR, &bmp_pic);
+    // lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_PR, &tft_style_label_pre);
+    // lv_imgbtn_set_style(buttonMore, LV_BTN_STATE_REL, &tft_style_label_rel);
+
+    lv_obj_set_event_cb_mks(buttonBack, event_handler, ID_T_RETURN, "bmp_return.bin", 0);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_REL, &bmp_pic);
     lv_imgbtn_set_src(buttonBack, LV_BTN_STATE_PR, &bmp_pic);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_lable_pre);
-    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_lable_rel);
-  #endif
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_PR, &tft_style_label_pre);
+    lv_imgbtn_set_style(buttonBack, LV_BTN_STATE_REL, &tft_style_label_rel);
+  #endif // if 1
 
   lv_obj_set_pos(buttonPreHeat, INTERVAL_V, titleHeight);
   lv_obj_set_pos(buttonExtrusion, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight);
   lv_obj_set_pos(buttonMove, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight);
   lv_obj_set_pos(buttonHome, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight);
-  lv_obj_set_pos(buttonLevel, INTERVAL_V,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
-  //lv_obj_set_pos(buttonFilament,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
-  //lv_obj_set_pos(buttonMore,BTN_X_PIXEL*2+INTERVAL_V*3,  BTN_Y_PIXEL+INTERVAL_H+titleHeight);
-  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4,  BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  lv_obj_set_pos(buttonLevel, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
+  // lv_obj_set_pos(buttonFilament,BTN_X_PIXEL+INTERVAL_V*2,BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+  // lv_obj_set_pos(buttonMore,BTN_X_PIXEL*2+INTERVAL_V*3, BTN_Y_PIXEL+INTERVAL_H+titleHeight);
+  lv_obj_set_pos(buttonBack, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight);
 
   /*Create a label on the Image button*/
   lv_btn_set_layout(buttonPreHeat, LV_LAYOUT_OFF);
@@ -219,15 +216,15 @@ void lv_draw_tool(void) {
   lv_btn_set_layout(buttonMove, LV_LAYOUT_OFF);
   lv_btn_set_layout(buttonHome, LV_LAYOUT_OFF);
   lv_btn_set_layout(buttonLevel, LV_LAYOUT_OFF);
-  //lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
-  //lv_btn_set_layout(buttonMore, LV_LAYOUT_OFF);
+  // lv_btn_set_layout(buttonFilament, LV_LAYOUT_OFF);
+  // lv_btn_set_layout(buttonMore, LV_LAYOUT_OFF);
   lv_btn_set_layout(buttonBack, LV_LAYOUT_OFF);
 
-  lv_obj_t * labelPreHeat = lv_label_create(buttonPreHeat, NULL);
+  lv_obj_t * labelPreHeat   = lv_label_create(buttonPreHeat, NULL);
   lv_obj_t * labelExtrusion = lv_label_create(buttonExtrusion, NULL);
-  lv_obj_t * label_Move = lv_label_create(buttonMove, NULL);
-  lv_obj_t * label_Home = lv_label_create(buttonHome, NULL);
-  lv_obj_t * label_Level = lv_label_create(buttonLevel, NULL);
+  lv_obj_t * label_Move     = lv_label_create(buttonMove, NULL);
+  lv_obj_t * label_Home     = lv_label_create(buttonHome, NULL);
+  lv_obj_t * label_Level    = lv_label_create(buttonLevel, NULL);
   //lv_obj_t * label_Filament = lv_label_create(buttonFilament, NULL);
   //lv_obj_t * label_More = lv_label_create(buttonMore, NULL);
   lv_obj_t * label_Back = lv_label_create(buttonBack, NULL);
@@ -254,11 +251,11 @@ void lv_draw_tool(void) {
     lv_label_set_text(label_Level, tool_menu.TERN(AUTO_BED_LEVELING_BILINEAR, autoleveling, leveling));
     lv_obj_align(label_Level, buttonLevel, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
 
-    //lv_label_set_text(label_Filament, tool_menu.filament);
-    //lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
+    // lv_label_set_text(label_Filament, tool_menu.filament);
+    // lv_obj_align(label_Filament, buttonFilament, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
 
-    //lv_label_set_text(label_More, tool_menu.more);
-    //lv_obj_align(label_More, buttonMore, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
+    // lv_label_set_text(label_More, tool_menu.more);
+    // lv_obj_align(label_More, buttonMore, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
 
     lv_label_set_text(label_Back, common_menu.text_back);
     lv_obj_align(label_Back, buttonBack, LV_ALIGN_IN_BOTTOM_MID, 0, BUTTON_TEXT_Y_OFFSET);
@@ -267,4 +264,4 @@ void lv_draw_tool(void) {
 
 void lv_clear_tool() { lv_obj_del(scr); }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp
index ef2a29a930a30c7644982a67da7b104c5ed4ff4a..75e9b7cdc8a1a1698eba0303c23000ed4a3479ca 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.cpp
@@ -21,24 +21,27 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+  #include "SPI_TFT.h"
+#endif
 
 #include "W25Qxx.h"
 #include "tft_lvgl_configuration.h"
 
-#include <SPI.h>
+#include "pic_manager.h"
 
-#if ENABLED(SPI_GRAPHICAL_TFT)
-  #include "SPI_TFT.h"
-#endif
+#include "draw_ui.h"
+#include "mks_hardware_test.h"
+
+#include <SPI.h>
 
 #include "../../../../MarlinCore.h"
 #include "../../../../sd/cardreader.h"
 #include "../../../../module/motion.h"
 #include "../../../../module/planner.h"
 
-#include "pic_manager.h"
-
 #if ENABLED(POWER_LOSS_RECOVERY)
   #include "../../../../feature/powerloss.h"
 #endif
@@ -47,14 +50,13 @@
   #include "../../../../feature/pause.h"
 #endif
 
-#include "draw_ui.h"
-
 CFG_ITMES gCfgItems;
 UI_CFG uiCfg;
 DISP_STATE_STACK disp_state_stack;
 DISP_STATE disp_state = MAIN_UI;
 DISP_STATE last_disp_state;
 PRINT_TIME print_time;
+value_state value;
 
 uint32_t To_pre_view;
 uint8_t gcode_preview_over;
@@ -72,9 +74,15 @@ extern uint8_t bmp_public_buf[17 * 1024];
 
 extern void LCD_IO_WriteData(uint16_t RegValue);
 
+lv_point_t line_points[4][2] = {
+  {{PARA_UI_POS_X, PARA_UI_POS_Y + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y + PARA_UI_SIZE_Y}},
+  {{PARA_UI_POS_X, PARA_UI_POS_Y*2 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*2 + PARA_UI_SIZE_Y}},
+  {{PARA_UI_POS_X, PARA_UI_POS_Y*3 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*3 + PARA_UI_SIZE_Y}},
+  {{PARA_UI_POS_X, PARA_UI_POS_Y*4 + PARA_UI_SIZE_Y}, {TFT_WIDTH, PARA_UI_POS_Y*4 + PARA_UI_SIZE_Y}}
+};
 void gCfgItems_init() {
   gCfgItems.multiple_language = MULTI_LANGUAGE_ENABLE;
-  #if 1 //LCD_LANGUAGE == en
+  #if 1 // LCD_LANGUAGE == en
     gCfgItems.language = LANG_ENGLISH;
   #elif LCD_LANGUAGE == zh_CN
     gCfgItems.language = LANG_SIMPLE_CHINESE;
@@ -101,12 +109,14 @@ void gCfgItems_init() {
   #elif LCD_LANGUAGE == pt
     gCfgItems.language = LANG_PORTUGUESE;
   #endif
-  gCfgItems.leveling_mode = 0;
-  gCfgItems.from_flash_pic = 0;
-  gCfgItems.curFilesize = 0;
+  gCfgItems.leveling_mode    = 0;
+  gCfgItems.from_flash_pic   = 0;
+  gCfgItems.curFilesize      = 0;
   gCfgItems.finish_power_off = 0;
-  gCfgItems.pause_reprint = 0;
-
+  gCfgItems.pause_reprint    = 0;
+  gCfgItems.pausePosX        = -1;
+  gCfgItems.pausePosY        = -1;
+  gCfgItems.pausePosZ        = 5;
   W25QXX.SPI_FLASH_BufferRead((uint8_t *)&gCfgItems.spi_flash_flag, VAR_INF_ADDR, sizeof(gCfgItems.spi_flash_flag));
   if (gCfgItems.spi_flash_flag == GCFG_FLAG_VALUE) {
     W25QXX.SPI_FLASH_BufferRead((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
@@ -116,7 +126,6 @@ void gCfgItems_init() {
     W25QXX.SPI_FLASH_SectorErase(VAR_INF_ADDR);
     W25QXX.SPI_FLASH_BufferWrite((uint8_t *)&gCfgItems, VAR_INF_ADDR, sizeof(gCfgItems));
   }
-
 }
 
 void gCfg_to_spiFlah() {
@@ -125,15 +134,16 @@ void gCfg_to_spiFlah() {
 }
 
 void ui_cfg_init() {
-  uiCfg.curTempType = 0;
-  uiCfg.curSprayerChoose = 0;
-  uiCfg.stepHeat = 10;
+  uiCfg.curTempType         = 0;
+  uiCfg.curSprayerChoose    = 0;
+  uiCfg.stepHeat            = 10;
   uiCfg.leveling_first_time = 0;
-  uiCfg.extruStep = 5;
-  uiCfg.extruSpeed = 10;
-  uiCfg.move_dist = 1;
-  uiCfg.moveSpeed = 3000;
-  uiCfg.stepPrintSpeed = 10;
+  uiCfg.para_ui_page        = 0;
+  uiCfg.extruStep           = 5;
+  uiCfg.extruSpeed          = 10;
+  uiCfg.move_dist           = 1;
+  uiCfg.moveSpeed           = 3000;
+  uiCfg.stepPrintSpeed      = 10;
 }
 
 void update_spi_flash() {
@@ -143,48 +153,106 @@ void update_spi_flash() {
 }
 
 lv_style_t tft_style_scr;
-lv_style_t tft_style_lable_pre;
-lv_style_t tft_style_lable_rel;
+lv_style_t tft_style_label_pre;
+lv_style_t tft_style_label_rel;
+lv_style_t style_line;
+lv_style_t style_para_value_pre;
+lv_style_t style_para_value_rel;
 
+lv_style_t style_num_key_pre;
+lv_style_t style_num_key_rel;
+
+lv_style_t style_num_text;
 void tft_style_init() {
   lv_style_copy(&tft_style_scr, &lv_style_scr);
-  tft_style_scr.body.main_color = LV_COLOR_BACKGROUND;
-  tft_style_scr.body.grad_color = LV_COLOR_BACKGROUND;
-  tft_style_scr.text.color = LV_COLOR_TEXT;
-  tft_style_scr.text.sel_color = LV_COLOR_TEXT;
-  tft_style_scr.line.width = 0;
+  tft_style_scr.body.main_color   = LV_COLOR_BACKGROUND;
+  tft_style_scr.body.grad_color   = LV_COLOR_BACKGROUND;
+  tft_style_scr.text.color        = LV_COLOR_TEXT;
+  tft_style_scr.text.sel_color    = LV_COLOR_TEXT;
+  tft_style_scr.line.width        = 0;
   tft_style_scr.text.letter_space = 0;
-  tft_style_scr.text.line_space = 0;
-
-  lv_style_copy(&tft_style_lable_pre, &lv_style_scr);
-  lv_style_copy(&tft_style_lable_rel, &lv_style_scr);
-  tft_style_lable_pre.body.main_color = LV_COLOR_BACKGROUND;
-  tft_style_lable_pre.body.grad_color = LV_COLOR_BACKGROUND;
-  tft_style_lable_pre.text.color = LV_COLOR_TEXT;
-  tft_style_lable_pre.text.sel_color = LV_COLOR_TEXT;
-  tft_style_lable_rel.body.main_color = LV_COLOR_BACKGROUND;
-  tft_style_lable_rel.body.grad_color = LV_COLOR_BACKGROUND;
-  tft_style_lable_rel.text.color = LV_COLOR_TEXT;
-  tft_style_lable_rel.text.sel_color = LV_COLOR_TEXT;
+  tft_style_scr.text.line_space   = 0;
+
+  lv_style_copy(&tft_style_label_pre, &lv_style_scr);
+  lv_style_copy(&tft_style_label_rel, &lv_style_scr);
+  tft_style_label_pre.body.main_color = LV_COLOR_BACKGROUND;
+  tft_style_label_pre.body.grad_color = LV_COLOR_BACKGROUND;
+  tft_style_label_pre.text.color      = LV_COLOR_TEXT;
+  tft_style_label_pre.text.sel_color  = LV_COLOR_TEXT;
+  tft_style_label_rel.body.main_color = LV_COLOR_BACKGROUND;
+  tft_style_label_rel.body.grad_color = LV_COLOR_BACKGROUND;
+  tft_style_label_rel.text.color      = LV_COLOR_TEXT;
+  tft_style_label_rel.text.sel_color  = LV_COLOR_TEXT;
+  tft_style_label_pre.text.font       = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+  tft_style_label_rel.text.font       = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+  tft_style_label_pre.line.width        = 0;
+  tft_style_label_rel.line.width        = 0;
+  tft_style_label_pre.text.letter_space = 0;
+  tft_style_label_rel.text.letter_space = 0;
+  tft_style_label_pre.text.line_space   = -5;
+  tft_style_label_rel.text.line_space   = -5;
+  lv_style_copy(&style_para_value_pre, &lv_style_scr);
+  lv_style_copy(&style_para_value_rel, &lv_style_scr);
+  style_para_value_pre.body.main_color = LV_COLOR_BACKGROUND;
+  style_para_value_pre.body.grad_color = LV_COLOR_BACKGROUND;
+  style_para_value_pre.text.color      = LV_COLOR_BLACK;
+  style_para_value_pre.text.sel_color  = LV_COLOR_BLACK;
+  style_para_value_rel.body.main_color = LV_COLOR_BACKGROUND;
+  style_para_value_rel.body.grad_color = LV_COLOR_BACKGROUND;
+  style_para_value_rel.text.color      = LV_COLOR_BLACK;
+  style_para_value_rel.text.sel_color  = LV_COLOR_BLACK;
+  style_para_value_pre.text.font       = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+  style_para_value_rel.text.font       = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+  style_para_value_pre.line.width        = 0;
+  style_para_value_rel.line.width        = 0;
+  style_para_value_pre.text.letter_space = 0;
+  style_para_value_rel.text.letter_space = 0;
+  style_para_value_pre.text.line_space   = -5;
+  style_para_value_rel.text.line_space   = -5;
+  lv_style_copy(&style_num_key_pre, &lv_style_scr);
+  lv_style_copy(&style_num_key_rel, &lv_style_scr);
+  style_num_key_pre.body.main_color = LV_COLOR_KEY_BACKGROUND;
+  style_num_key_pre.body.grad_color = LV_COLOR_KEY_BACKGROUND;
+  style_num_key_pre.text.color      = LV_COLOR_TEXT;
+  style_num_key_pre.text.sel_color  = LV_COLOR_TEXT;
+  style_num_key_rel.body.main_color = LV_COLOR_KEY_BACKGROUND;
+  style_num_key_rel.body.grad_color = LV_COLOR_KEY_BACKGROUND;
+  style_num_key_rel.text.color      = LV_COLOR_TEXT;
+  style_num_key_rel.text.sel_color  = LV_COLOR_TEXT;
   #if HAS_SPI_FLASH_FONT
-    tft_style_lable_pre.text.font = &gb2312_puhui32;
-    tft_style_lable_rel.text.font = &gb2312_puhui32;
+    style_num_key_pre.text.font = &gb2312_puhui32;
+    style_num_key_rel.text.font = &gb2312_puhui32;
   #else
-    tft_style_lable_pre.text.font = LV_FONT_DEFAULT;
-    tft_style_lable_rel.text.font = LV_FONT_DEFAULT;
+    style_num_key_pre.text.font = LV_FONT_DEFAULT;
+    style_num_key_rel.text.font = LV_FONT_DEFAULT;
   #endif
-  tft_style_lable_pre.line.width = 0;
-  tft_style_lable_rel.line.width = 0;
-  tft_style_lable_pre.text.letter_space = 0;
-  tft_style_lable_rel.text.letter_space = 0;
-  tft_style_lable_pre.text.line_space = -5;
-  tft_style_lable_rel.text.line_space = -5;
+
+  style_num_key_pre.line.width        = 0;
+  style_num_key_rel.line.width        = 0;
+  style_num_key_pre.text.letter_space = 0;
+  style_num_key_rel.text.letter_space = 0;
+  style_num_key_pre.text.line_space   = -5;
+  style_num_key_rel.text.line_space   = -5;
+  lv_style_copy(&style_num_text, &lv_style_scr);
+
+  style_num_text.body.main_color   = LV_COLOR_WHITE;
+  style_num_text.body.grad_color   = LV_COLOR_WHITE;
+  style_num_text.text.color        = LV_COLOR_BLACK;
+  style_num_text.text.sel_color    = LV_COLOR_BLACK;
+  style_num_text.text.font         = TERN(HAS_SPI_FLASH_FONT, &gb2312_puhui32, LV_FONT_DEFAULT);
+  style_num_text.line.width        = 0;
+  style_num_text.text.letter_space = 0;
+  style_num_text.text.line_space   = -5;
+
+  lv_style_copy(&style_line, &lv_style_plain);
+  style_line.line.color   = LV_COLOR_MAKE(0x49, 0x54, 0xff);
+  style_line.line.width   = 1;
+  style_line.line.rounded = 1;
 }
 
 #define MAX_TITLE_LEN 28
 
 char public_buf_m[100] = {0};
-
 char public_buf_l[30];
 
 void titleText_cat(char *str, int strSize, char *addPart) {
@@ -195,7 +263,7 @@ void titleText_cat(char *str, int strSize, char *addPart) {
 
 char *getDispText(int index) {
 
-  memset(public_buf_l, 0, sizeof(public_buf_l));
+  ZERO(public_buf_l);
 
   switch (disp_state_stack._disp_state[index]) {
     case PRINT_READY_UI:
@@ -206,11 +274,11 @@ char *getDispText(int index) {
       break;
     case PRINTING_UI:
       if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
-          #ifndef TFT35
-            || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
-            || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
-          #endif
-          ) strcpy(public_buf_l, common_menu.print_special_title);
+        #ifndef TFT35
+          || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+          || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
+        #endif
+      )    strcpy(public_buf_l, common_menu.print_special_title);
       else strcpy(public_buf_l, printing_menu.title);
       break;
     case MOVE_MOTOR_UI:
@@ -218,19 +286,19 @@ char *getDispText(int index) {
       break;
     case OPERATE_UI:
       if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
-          #ifndef TFT35
-            || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
-            || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
-          #endif
-          ) strcpy(public_buf_l, common_menu.operate_special_title);
+        #ifndef TFT35
+          || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+          || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
+        #endif
+      )    strcpy(public_buf_l, common_menu.operate_special_title);
       else strcpy(public_buf_l, operation_menu.title);
       break;
 
     case PAUSE_UI:
       if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
-          || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
-          || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
-          ) strcpy(public_buf_l, common_menu.pause_special_title);
+        || disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+        || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI
+      )    strcpy(public_buf_l, common_menu.pause_special_title);
       else strcpy(public_buf_l, pause_menu.title);
       break;
 
@@ -244,7 +312,8 @@ char *getDispText(int index) {
       strcpy(public_buf_l, fan_menu.title);
       break;
     case PRE_HEAT_UI:
-      if ((disp_state_stack._disp_state[disp_state_stack._disp_index - 1] == OPERATE_UI)) strcpy(public_buf_l, preheat_menu.adjust_title);
+      if ((disp_state_stack._disp_state[disp_state_stack._disp_index - 1] == OPERATE_UI))
+           strcpy(public_buf_l, preheat_menu.adjust_title);
       else strcpy(public_buf_l, preheat_menu.title);
       break;
     case SET_UI:
@@ -292,7 +361,7 @@ char *getDispText(int index) {
       strcpy(public_buf_l, tool_menu.title);
       break;
     case WIFI_LIST_UI:
-      //strcpy(public_buf_l, list_menu.title);
+      // strcpy(public_buf_l, list_menu.title);
       break;
     case MACHINE_PARA_UI:
       strcpy(public_buf_l, MachinePara_menu.title);
@@ -300,6 +369,9 @@ char *getDispText(int index) {
     case BABY_STEP_UI:
       strcpy(public_buf_l, operation_menu.babystep);
       break;
+    case EEPROM_SETTINGS_UI:
+      strcpy(public_buf_l, eeprom_menu.title);
+      break;
     default: break;
   }
 
@@ -307,19 +379,19 @@ char *getDispText(int index) {
 }
 
 char *creat_title_text() {
-  int index = 0;
+  int index     = 0;
   char *tmpText = 0;
   char tmpCurFileStr[20];
 
-  memset(tmpCurFileStr, 0, sizeof(tmpCurFileStr));
+  ZERO(tmpCurFileStr);
 
   #if _LFN_UNICODE
-    //cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr);
+    // cutFileName((TCHAR *)curFileName, 16, 16, (TCHAR *)tmpCurFileStr);
   #else
     cutFileName(list_file.long_name[sel_id], 16, 16, tmpCurFileStr);
   #endif
 
-  memset(public_buf_m, 0, sizeof(public_buf_m));
+  ZERO(public_buf_m);
 
   while (index <= disp_state_stack._disp_index) {
     tmpText = getDispText(index);
@@ -335,15 +407,15 @@ char *creat_title_text() {
   }
 
   if (disp_state_stack._disp_state[disp_state_stack._disp_index] == PRINTING_UI
-      /*|| disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
-      || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI*/) {
+    /*|| disp_state_stack._disp_state[disp_state_stack._disp_index] == OPERATE_UI
+    || disp_state_stack._disp_state[disp_state_stack._disp_index] == PAUSE_UI*/
+  ) {
     titleText_cat(public_buf_m, sizeof(public_buf_m), (char *)":");
     titleText_cat(public_buf_m, sizeof(public_buf_m), tmpCurFileStr);
   }
 
   if (strlen(public_buf_m) > MAX_TITLE_LEN) {
-    memset(public_buf_m, 0, sizeof(public_buf_m));
-
+    ZERO(public_buf_m);
     tmpText = getDispText(0);
     if (*tmpText != 0) {
       titleText_cat(public_buf_m, sizeof(public_buf_m), tmpText);
@@ -351,275 +423,425 @@ char *creat_title_text() {
       tmpText = getDispText(disp_state_stack._disp_index);
       if (*tmpText != 0) titleText_cat(public_buf_m, sizeof(public_buf_m), tmpText);
     }
-
   }
 
   return public_buf_m;
 }
 
 #if HAS_GCODE_PREVIEW
-uint32_t gPicturePreviewStart = 0;
-
-void preview_gcode_prehandle(char *path) {
-  #if ENABLED(SDSUPPORT)
-    //uint8_t re;
-    //uint32_t read;
-    uint32_t pre_read_cnt = 0;
-    uint32_t *p1;
-    char *cur_name;
-
-    gPicturePreviewStart = 0;
-    cur_name = strrchr(path, '/');
-    card.openFileRead(cur_name);
-    card.read(public_buf, 512);
-    p1 = (uint32_t *)strstr((char *)public_buf, ";simage:");
-
-    if (p1) {
-      pre_read_cnt = (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
-
-      To_pre_view = pre_read_cnt;
-      gcode_preview_over = 1;
-      gCfgItems.from_flash_pic = 1;
-      update_spi_flash();
-    }
-    else {
-      gcode_preview_over = 0;
-      default_preview_flg = 1;
-      gCfgItems.from_flash_pic = 0;
-      update_spi_flash();
-    }
-    card.closefile();
-  #endif
-}
 
-void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
-  #if ENABLED(SDSUPPORT)
-    //uint8_t ress;
-    //uint32_t write;
-    volatile uint32_t i, j;
-    volatile uint16_t *p_index;
-    //int res;
-    char *cur_name;
-
-    cur_name = strrchr(path, '/');
-    card.openFileRead(cur_name);
-
-    if (gPicturePreviewStart <= 0) {
-      while (1) {
-        uint32_t br = card.read(public_buf, 400);
-        uint32_t* p1 = (uint32_t *)strstr((char *)public_buf, ";gimage:");
-        if (p1) {
-          gPicturePreviewStart += (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
-          break;
-        }
-        else {
-          gPicturePreviewStart += br;
-        }
-        if (br < 400) break;
-      }
-    }
-
-    // SERIAL_ECHOLNPAIR("gPicturePreviewStart: ", gPicturePreviewStart, " PREVIEW_LITTLE_PIC_SIZE: ", PREVIEW_LITTLE_PIC_SIZE);
-
-    card.setIndex((gPicturePreviewStart + To_pre_view) + size * row + 8);
-    #if ENABLED(SPI_GRAPHICAL_TFT)
-      SPI_TFT.spi_init(SPI_FULL_SPEED);
-      //SPI_TFT.SetCursor(0,0);
-      SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
-      SPI_TFT.LCD_WriteRAM_Prepare();
-    #else
-      ili9320_SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
-      LCD_WriteRAM_Prepare();
-    #endif
+  uint32_t gPicturePreviewStart = 0;
 
-    j = i = 0;
+  void preview_gcode_prehandle(char *path) {
+    #if ENABLED(SDSUPPORT)
+      // uint8_t re;
+      // uint32_t read;
+      uint32_t pre_read_cnt = 0;
+      uint32_t *p1;
+      char *cur_name;
 
-    while (1) {
-      card.read(public_buf, 400);
-      for (i = 0; i < 400;) {
-        bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
-        i += 2;
-        j++;
-      }
+      gPicturePreviewStart = 0;
+      cur_name             = strrchr(path, '/');
+      card.openFileRead(cur_name);
+      card.read(public_buf, 512);
+      p1 = (uint32_t *)strstr((char *)public_buf, ";simage:");
 
-      //if (i > 800) break;
-      //#ifdef TFT70
-      //if (j>400) {
-      //  f_read(file, buff_pic, 1, &read);
-      //  break;
-      //}
-      //#elif defined(TFT35)
-      if (j >= 400)
-        //f_read(file, buff_pic, 1, &read);
-        break;
-      //#endif
+      if (p1) {
+        pre_read_cnt = (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
 
-    }
-    #if ENABLED(SPI_GRAPHICAL_TFT)
-      for (i = 0; i < 400;) {
-        p_index = (uint16_t *)(&bmp_public_buf[i]);
-        Color = (*p_index >> 8);
-        *p_index = Color | ((*p_index & 0xFF) << 8);
-        i += 2;
+        To_pre_view              = pre_read_cnt;
+        gcode_preview_over       = 1;
+        gCfgItems.from_flash_pic = 1;
+        update_spi_flash();
       }
-      SPI_TFT_CS_L;
-      SPI_TFT_DC_H;
-      SPI.dmaSend(bmp_public_buf, 400, true);
-      SPI_TFT_CS_H;
-    #else
-      for (i = 0; i < 400;) {
-        p_index = (uint16_t *)(&bmp_public_buf[i]);
-        if (*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color;
-        LCD_IO_WriteData(*p_index);
-        i += 2;
+      else {
+        gcode_preview_over       = 0;
+        default_preview_flg      = 1;
+        gCfgItems.from_flash_pic = 0;
+        update_spi_flash();
       }
-    #endif
-    #if HAS_BAK_VIEW_IN_FLASH
-      W25QXX.init(SPI_QUARTER_SPEED);
-      if (row < 20) W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
-      W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
-    #endif
-    row++;
-    if (row >= 200) {
-      size = 809;
-      row = 0;
-
-      gcode_preview_over = 0;
-      //flash_preview_begin = 1;
-
       card.closefile();
+    #endif
+  }
 
-      /*
-      if (gCurFileState.file_open_flag != 0xaa) {
-        reset_file_info();
-        res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
-        if (res == FR_OK) {
-          f_lseek(file,PREVIEW_SIZE+To_pre_view);
-          gCurFileState.file_open_flag = 0xaa;
-          //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
-          srcfp = file;
-          mksReprint.mks_printer_state = MKS_WORKING;
-          once_flag = 0;
+  #if 1
+
+    void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
+      #if ENABLED(SDSUPPORT)
+        // uint8_t ress;
+        // uint32_t write;
+        volatile uint32_t i, j;
+        volatile uint16_t *p_index;
+        // int res;
+        char *cur_name;
+
+        cur_name = strrchr(path, '/');
+        card.openFileRead(cur_name);
+
+        if (gPicturePreviewStart <= 0) {
+          while (1) {
+            uint32_t br  = card.read(public_buf, 400);
+            uint32_t* p1 = (uint32_t *)strstr((char *)public_buf, ";gimage:");
+            if (p1) {
+              gPicturePreviewStart += (uint32_t)p1 - (uint32_t)((uint32_t *)(&public_buf[0]));
+              break;
+            }
+            else {
+              gPicturePreviewStart += br;
+            }
+            if (br < 400) break;
+          }
         }
-      }
-      */
-      char *cur_name;
 
-      cur_name = strrchr(list_file.file_name[sel_id], '/');
+        // SERIAL_ECHOLNPAIR("gPicturePreviewStart: ", gPicturePreviewStart, " PREVIEW_LITTLE_PIC_SIZE: ", PREVIEW_LITTLE_PIC_SIZE);
+
+        card.setIndex((gPicturePreviewStart + To_pre_view) + size * row + 8);
+        #if ENABLED(TFT_LVGL_UI_SPI)
+          SPI_TFT.spi_init(SPI_FULL_SPEED);
+          // SPI_TFT.SetCursor(0,0);
+          SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+          SPI_TFT.LCD_WriteRAM_Prepare();
+        #else
+          ili9320_SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+          LCD_WriteRAM_Prepare();
+        #endif
 
-      SdFile file;
-      SdFile *curDir;
-      card.endFilePrint();
-      const char * const fname = card.diveToFile(true, curDir, cur_name);
-      if (!fname) return;
-      if (file.open(curDir, fname, O_READ)) {
-        gCfgItems.curFilesize = file.fileSize();
-        file.close();
-        update_spi_flash();
-      }
+        j = i = 0;
 
-      card.openFileRead(cur_name);
-      if (card.isFileOpen()) {
-        feedrate_percentage = 100;
-        // saved_feedrate_percentage = feedrate_percentage;
-        planner.flow_percentage[0] = 100;
-        planner.e_factor[0] = planner.flow_percentage[0] * 0.01;
-        if (EXTRUDERS == 2) {
-          planner.flow_percentage[1] = 100;
-          planner.e_factor[1] = planner.flow_percentage[1] * 0.01;
+        while (1) {
+          card.read(public_buf, 400);
+          for (i = 0; i < 400;) {
+            bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
+            i                += 2;
+            j++;
+          }
+          if (j >= 400) break;
         }
-        card.startFileprint();
-        TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
-        once_flag = 0;
-      }
-      return;
+        #if ENABLED(TFT_LVGL_UI_SPI)
+          uint16_t Color, SpiColor;
+          SpiColor = (LV_COLOR_BACKGROUND.full >> 8) | ((LV_COLOR_BACKGROUND.full & 0xFF) << 8);
+          for (i = 0; i < 400;) {
+            p_index  = (uint16_t *)(&bmp_public_buf[i]);
+            Color    = (*p_index >> 8);
+            *p_index = Color | ((*p_index & 0xFF) << 8);
+            i       += 2;
+            if (*p_index == 0x0000) *p_index = SpiColor;
+          }
+          SPI_TFT_CS_L;
+          SPI_TFT_DC_H;
+          SPI.dmaSend(bmp_public_buf, 400, true);
+          SPI_TFT_CS_H;
+        #else
+          for (i = 0; i < 400;) {
+            p_index = (uint16_t *)(&bmp_public_buf[i]);
+            if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // gCfgItems.preview_bk_color;
+            LCD_IO_WriteData(*p_index);
+            i += 2;
+          }
+        #endif
+        #if HAS_BAK_VIEW_IN_FLASH
+          W25QXX.init(SPI_QUARTER_SPEED);
+          if (row < 20) W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
+          W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
+        #endif
+        row++;
+        if (row >= 200) {
+          size = 809;
+          row  = 0;
+
+          gcode_preview_over = 0;
+          // flash_preview_begin = 1;
+
+          card.closefile();
+
+          /*
+          if (gCurFileState.file_open_flag != 0xaa) {
+            reset_file_info();
+            res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
+            if (res == FR_OK) {
+              f_lseek(file,PREVIEW_SIZE+To_pre_view);
+              gCurFileState.file_open_flag = 0xaa;
+              //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
+              srcfp = file;
+              mksReprint.mks_printer_state = MKS_WORKING;
+              once_flag = 0;
+            }
+          }
+          */
+          char *cur_name;
+
+          cur_name = strrchr(list_file.file_name[sel_id], '/');
+
+          SdFile file;
+          SdFile *curDir;
+          card.endFilePrint();
+          const char * const fname = card.diveToFile(true, curDir, cur_name);
+          if (!fname) return;
+          if (file.open(curDir, fname, O_READ)) {
+            gCfgItems.curFilesize = file.fileSize();
+            file.close();
+            update_spi_flash();
+          }
+
+          card.openFileRead(cur_name);
+          if (card.isFileOpen()) {
+            feedrate_percentage = 100;
+            // saved_feedrate_percentage = feedrate_percentage;
+            planner.flow_percentage[0] = 100;
+            planner.e_factor[0]        = planner.flow_percentage[0] * 0.01;
+            if (EXTRUDERS == 2) {
+              planner.flow_percentage[1] = 100;
+              planner.e_factor[1]        = planner.flow_percentage[1] * 0.01;
+            }
+            card.startFileprint();
+            TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
+            once_flag = 0;
+          }
+          return;
+        }
+        card.closefile();
+      #endif // SDSUPPORT
     }
-    card.closefile();
-  #endif // SDSUPPORT
-}
 
-void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
-  int index;
-  int x_off = 0, y_off = 0;
-  int _y;
-  uint16_t *p_index;
-  int i;
-  uint16_t temp_p;
+  #else // if 1
+
+    void gcode_preview(char *path, int xpos_pixel, int ypos_pixel) {
+      #if ENABLED(SDSUPPORT)
+        // uint8_t ress;
+        // uint32_t write;
+        volatile uint32_t i, j;
+        volatile uint16_t *p_index;
+        // int res;
+        char *cur_name;
+        uint16_t Color;
+
+        cur_name = strrchr(path, '/');
+        card.openFileRead(cur_name);
+
+        card.setIndex((PREVIEW_LITTLE_PIC_SIZE + To_pre_view) + size * row + 8);
+        #if ENABLED(TFT_LVGL_UI_SPI)
+          SPI_TFT.spi_init(SPI_FULL_SPEED);
+          // SPI_TFT.SetCursor(0,0);
+          SPI_TFT.SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+          SPI_TFT.LCD_WriteRAM_Prepare();
+        #else
+          ili9320_SetWindows(xpos_pixel, ypos_pixel + row, 200, 1);
+          LCD_WriteRAM_Prepare();
+        #endif
 
-  for (index = 0; index < 10; index++) { // 200*200
-    #if HAS_BAK_VIEW_IN_FLASH
-      if (sel == 1) flash_view_Read(bmp_public_buf, 8000); //20k
-      //memset(bmp_public_buf,0x1f,8000);
-      else
-        //memset(bmp_public_buf,0x1f,8000);
-        default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); //20k
-    #else
-      default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); //20k
-    #endif
+        j = 0;
+        i = 0;
 
-    i = 0;
-    #if ENABLED(SPI_GRAPHICAL_TFT)
-      //SPI_TFT.spi_init(SPI_FULL_SPEED);
-      //SPI_TFT.SetWindows(xpos_pixel, y_off * 20+ypos_pixel, 200,20);     //200*200
-      //SPI_TFT.LCD_WriteRAM_Prepare();
-      j = 0;
-      for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
-        SPI_TFT.spi_init(SPI_FULL_SPEED);
-        SPI_TFT.SetWindows(xpos_pixel, y_off * 20 + ypos_pixel + j, 200, 1);    //200*200
-        SPI_TFT.LCD_WriteRAM_Prepare();
-
-        j++;
-        //memcpy(public_buf,&bmp_public_buf[i],400);
-        SPI_TFT_CS_L;
-        SPI_TFT_DC_H;
-        SPI.dmaSend(&bmp_public_buf[i], 400, true);
-        SPI_TFT_CS_H;
-
-        i += 400;
-        if (i >= 8000) break;
-      }
-    #else
-      ili9320_SetWindows(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20);     //200*200
+        while (1) {
+          card.read(public_buf, 400);
+          for (i = 0; i < 400;) {
+            bmp_public_buf[j] = ascii2dec_test((char*)&public_buf[i]) << 4 | ascii2dec_test((char*)&public_buf[i + 1]);
+            i += 2;
+            j++;
+          }
+
+          //if (i > 800) break;
+          //#ifdef TFT70
+          //  if (j > 400) {
+          //    f_read(file, buff_pic, 1, &read);
+          //    break;
+          //  }
+          //#elif defined(TFT35)
+          if (j >= 400)
+            //f_read(file, buff_pic, 1, &read);
+            break;
+          //#endif
 
-      LCD_WriteRAM_Prepare();
+        }
+        #if ENABLED(TFT_LVGL_UI_SPI)
+          for (i = 0; i < 400;) {
+            p_index = (uint16_t *)(&bmp_public_buf[i]);
 
-      for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
-        for (x_off = 0; x_off < 200; x_off++) {
-          if (sel == 1) {
-            temp_p = (uint16_t)(bmp_public_buf[i] | bmp_public_buf[i + 1] << 8);
-            p_index = &temp_p;
+            Color    = (*p_index >> 8);
+            *p_index = Color | ((*p_index & 0xff) << 8);
+            i       += 2;
+            if (*p_index == 0x0000) *p_index = 0xC318;
+          }
+          SPI_TFT_CS_L;
+          SPI_TFT_DC_H;
+          SPI.dmaSend(bmp_public_buf, 400, true);
+          SPI_TFT_CS_H;
+
+        #else
+          for (i = 0; i < 400;) {
+            p_index = (uint16_t *)(&bmp_public_buf[i]);
+            if (*p_index == 0x0000) *p_index = 0x18C3;
+            LCD_IO_WriteData(*p_index);
+            i = i + 2;
           }
-          else {
+        #endif
+        W25QXX.init(SPI_QUARTER_SPEED);
+        if (row < 20)
+          W25QXX.SPI_FLASH_SectorErase(BAK_VIEW_ADDR_TFT35 + row * 4096);
+        W25QXX.SPI_FLASH_BufferWrite(bmp_public_buf, BAK_VIEW_ADDR_TFT35 + row * 400, 400);
+        row++;
+        if (row >= 200) {
+          size = 809;
+          row  = 0;
+
+          gcode_preview_over = 0;
+          // flash_preview_begin = 1;
+
+          card.closefile();
+
+          /*
+          if (gCurFileState.file_open_flag != 0xaa) {
+            reset_file_info();
+            res = f_open(file, curFileName, FA_OPEN_EXISTING | FA_READ);
+            if (res == FR_OK) {
+              f_lseek(file,PREVIEW_SIZE+To_pre_view);
+              gCurFileState.file_open_flag = 0xaa;
+              //bakup_file_path((uint8_t *)curFileName, strlen(curFileName));
+              srcfp = file;
+              mksReprint.mks_printer_state = MKS_WORKING;
+              once_flag = 0;
+            }
+          }
+          */
+          char *cur_name;
+
+          cur_name = strrchr(list_file.file_name[sel_id], '/');
+
+          SdFile file;
+          SdFile *curDir;
+          card.endFilePrint();
+          const char * const fname = card.diveToFile(true, curDir, cur_name);
+          if (!fname) return;
+          if (file.open(curDir, fname, O_READ)) {
+            gCfgItems.curFilesize = file.fileSize();
+            file.close();
+            update_spi_flash();
+          }
+
+          card.openFileRead(cur_name);
+          if (card.isFileOpen()) {
+            feedrate_percentage = 100;
+            // saved_feedrate_percentage = feedrate_percentage;
+            planner.flow_percentage[0] = 100;
+            planner.e_factor[0]        = planner.flow_percentage[0] * 0.01;
+            if (EXTRUDERS == 2) {
+              planner.flow_percentage[1] = 100;
+              planner.e_factor[1]        = planner.flow_percentage[1] * 0.01;
+            }
+            card.startFileprint();
+            TERN_(POWER_LOSS_RECOVERY, recovery.prepare());
+            once_flag = 0;
+          }
+          return;
+        }
+        card.closefile();
+      #endif // SDSUPPORT
+    }
+
+  #endif // if 1
+
+  void Draw_default_preview(int xpos_pixel, int ypos_pixel, uint8_t sel) {
+    int index;
+    int y_off = 0;
+    int _y;
+    uint16_t *p_index;
+    int i;
+
+    for (index = 0; index < 10; index++) { // 200*200
+      #if HAS_BAK_VIEW_IN_FLASH
+        if (sel == 1) {
+          flash_view_Read(bmp_public_buf, 8000); // 20k
+        }
+        else {
+          default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); // 20k
+          #if ENABLED(TFT_LVGL_UI_SPI)
+            uint16_t Color;
+            for (i = 0; i < (DEFAULT_VIEW_MAX_SIZE / 10);) {
+              p_index = (uint16_t *)(&bmp_public_buf[i]);
+              Color = (*p_index >> 8);
+              *p_index = Color | ((*p_index & 0xff) << 8);
+              i += 2;
+            }
+          #endif
+        }
+      #else
+        default_view_Read(bmp_public_buf, DEFAULT_VIEW_MAX_SIZE / 10); // 20k
+        #if ENABLED(TFT_LVGL_UI_SPI)
+          for (i = 0; i < (DEFAULT_VIEW_MAX_SIZE / 10);) {
             p_index = (uint16_t *)(&bmp_public_buf[i]);
+            Color = (*p_index >> 8);
+            *p_index = Color | ((*p_index & 0xff) << 8);
+            i += 2;
+          }
+        #endif
+      #endif
+
+      i = 0;
+      #if ENABLED(TFT_LVGL_UI_SPI)
+
+        // SPI_TFT.spi_init(SPI_FULL_SPEED);
+        // SPI_TFT.SetWindows(xpos_pixel, y_off * 20+ypos_pixel, 200,20);     //200*200
+        // SPI_TFT.LCD_WriteRAM_Prepare();
+        int j = 0;
+        for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
+          SPI_TFT.spi_init(SPI_FULL_SPEED);
+          SPI_TFT.SetWindows(xpos_pixel, y_off * 20 + ypos_pixel + j, 200, 1); // 200*200
+          SPI_TFT.LCD_WriteRAM_Prepare();
+
+          j++;
+          // memcpy(public_buf,&bmp_public_buf[i],400);
+          SPI_TFT_CS_L;
+          SPI_TFT_DC_H;
+          SPI.dmaSend(&bmp_public_buf[i], 400, true);
+          SPI_TFT_CS_H;
+
+          i += 400;
+          if (i >= 8000) break;
+        }
+      #else
+        int x_off = 0;
+        uint16_t temp_p;
+        ili9320_SetWindows(xpos_pixel, y_off * 20 + ypos_pixel, 200, 20); // 200*200
+
+        LCD_WriteRAM_Prepare();
+
+        for (_y = y_off * 20; _y < (y_off + 1) * 20; _y++) {
+          for (x_off = 0; x_off < 200; x_off++) {
+            if (sel == 1) {
+              temp_p  = (uint16_t)(bmp_public_buf[i] | bmp_public_buf[i + 1] << 8);
+              p_index = &temp_p;
+            }
+            else {
+              p_index = (uint16_t *)(&bmp_public_buf[i]);
+            }
+            if (*p_index == 0x0000) *p_index = LV_COLOR_BACKGROUND.full; // gCfgItems.preview_bk_color;
+            LCD_IO_WriteData(*p_index);
+            i += 2;
           }
-          if (*p_index == 0x0000)*p_index=LV_COLOR_BACKGROUND.full; //gCfgItems.preview_bk_color;
-          LCD_IO_WriteData(*p_index);
-          i += 2;
+          if (i >= 8000) break;
         }
-        if (i >= 8000) break;
+      #endif // if ENABLED(TFT_LVGL_UI_SPI)
+      y_off++;
+    }
+    W25QXX.init(SPI_QUARTER_SPEED);
+  }
+
+  void disp_pre_gcode(int xpos_pixel, int ypos_pixel) {
+    if (gcode_preview_over == 1) gcode_preview(list_file.file_name[sel_id], xpos_pixel, ypos_pixel);
+    #if HAS_BAK_VIEW_IN_FLASH
+      if (flash_preview_begin == 1) {
+        flash_preview_begin = 0;
+        Draw_default_preview(xpos_pixel, ypos_pixel, 1);
+      }
+    #endif
+    #if HAS_GCODE_DEFAULT_VIEW_IN_FLASH
+      if (default_preview_flg == 1) {
+        Draw_default_preview(xpos_pixel, ypos_pixel, 0);
+        default_preview_flg = 0;
       }
     #endif
-    y_off++;
   }
-  W25QXX.init(SPI_QUARTER_SPEED);
-}
-
-void disp_pre_gcode(int xpos_pixel, int ypos_pixel) {
-  if (gcode_preview_over == 1) gcode_preview(list_file.file_name[sel_id], xpos_pixel, ypos_pixel);
-  #if HAS_BAK_VIEW_IN_FLASH
-    if (flash_preview_begin == 1) {
-      flash_preview_begin = 0;
-      Draw_default_preview(xpos_pixel, ypos_pixel, 1);
-    }
-  #endif
-  #if HAS_GCODE_DEFAULT_VIEW_IN_FLASH
-    if (default_preview_flg == 1) {
-      Draw_default_preview(xpos_pixel, ypos_pixel, 0);
-      default_preview_flg = 0;
-    }
-  #endif
-}
-#endif
+#endif // if HAS_GCODE_PREVIEW
 
 void print_time_run() {
   static uint8_t lastSec = 0;
@@ -644,7 +866,7 @@ void GUI_RefreshPage() {
 
   switch (disp_state) {
     case MAIN_UI:
-      lv_draw_ready_print();
+      // lv_draw_ready_print();
       break;
     case EXTRUSION_UI:
       if (temperature_change_frequency == 1) {
@@ -721,7 +943,7 @@ void GUI_RefreshPage() {
           {
             memset((char *)gCfgItems.move_z_coordinate, ' ', sizeof(gCfgItems.move_z_coordinate));
             GUI_DispStringAt((const char *)gCfgItems.move_z_coordinate, 380, TITLE_YPOS);
-            sprintf((char *)gCfgItems.move_z_coordinate, "Z: %.3f", current_position[Z_AXIS]);
+            sprintf_P((char *)gCfgItems.move_z_coordinate, PSTR("Z: %.3f"), current_position[Z_AXIS]);
             GUI_DispStringAt((const char *)gCfgItems.move_z_coordinate, 380, TITLE_YPOS);
           }
         }
@@ -831,7 +1053,7 @@ void clear_cur_ui() {
 
   switch (disp_state_stack._disp_state[disp_state_stack._disp_index]) {
     case PRINT_READY_UI:
-      //Get_Temperature_Flg = 0;
+      // Get_Temperature_Flg = 0;
       lv_clear_ready_print();
       break;
     case PRINT_FILE_UI:
@@ -844,7 +1066,7 @@ void clear_cur_ui() {
       lv_clear_move_motor();
       break;
     case OPERATE_UI:
-      lv_clear_opration();
+      lv_clear_operation();
       break;
     case PAUSE_UI:
       //Clear_pause();
@@ -931,16 +1153,16 @@ void clear_cur_ui() {
       //Clear_Tips();
       break;
     case MACHINE_PARA_UI:
-      //Clear_MachinePara();
+      lv_clear_machine_para();
       break;
     case MACHINE_SETTINGS_UI:
-      //Clear_MachineSettings();
+      lv_clear_machine_settings();
       break;
     case TEMPERATURE_SETTINGS_UI:
       //Clear_TemperatureSettings();
       break;
     case MOTOR_SETTINGS_UI:
-      //Clear_MotorSettings();
+      lv_clear_motor_settings();
       break;
     case MACHINETYPE_UI:
       //Clear_MachineType();
@@ -970,16 +1192,18 @@ void clear_cur_ui() {
       //Clear_XYZLevelPara();
       break;
     case MAXFEEDRATE_UI:
-      //Clear_MaxFeedRate();
+      lv_clear_max_feedrate_settings();
       break;
     case STEPS_UI:
-      //Clear_Steps();
+      lv_clear_step_settings();
       break;
     case ACCELERATION_UI:
-      //Clear_Acceleration();
+      lv_clear_acceleration_settings();
       break;
     case JERK_UI:
-      //Clear_Jerk();
+      #if HAS_CLASSIC_JERK
+        lv_clear_jerk_settings();
+      #endif
       break;
     case MOTORDIR_UI:
       //Clear_MotorDir();
@@ -994,7 +1218,7 @@ void clear_cur_ui() {
       //Clear_HotbedConfig();
       break;
     case ADVANCED_UI:
-      //Clear_Advanced();
+      lv_clear_advance_settings();
       break;
     case DOUBLE_Z_UI:
       //Clear_DoubleZ();
@@ -1003,15 +1227,31 @@ void clear_cur_ui() {
       //Clear_EnableInvert();
       break;
     case NUMBER_KEY_UI:
-      //Clear_NumberKey();
+      lv_clear_number_key();
       break;
     case BABY_STEP_UI:
       //Clear_babyStep();
       break;
+    case PAUSE_POS_UI:
+      lv_clear_pause_position();
+      break;
+      #if HAS_TRINAMIC_CONFIG
+        case TMC_CURRENT_UI:
+          lv_clear_tmc_current_settings();
+          break;
+      #endif
+    case EEPROM_SETTINGS_UI:
+      lv_clear_eeprom_settings();
+      break;
+      #if HAS_STEALTHCHOP
+        case TMC_MODE_UI:
+          lv_clear_tmc_step_mode_settings();
+          break;
+      #endif
     default:
       break;
   }
-  //GUI_Clear();
+  // GUI_Clear();
 }
 
 void draw_return_ui() {
@@ -1034,13 +1274,13 @@ void draw_return_ui() {
         lv_draw_move_motor();
         break;
       case OPERATE_UI:
-        lv_draw_opration();
+        lv_draw_operation();
         break;
 
         #if 1
-      case PAUSE_UI:
-        //draw_pause();
-        break;
+          case PAUSE_UI:
+            //draw_pause();
+            break;
         #endif
 
       case EXTRUSION_UI:
@@ -1075,9 +1315,9 @@ void draw_return_ui() {
         break;
 
         #if tan_mask
-      case LOG_UI:
-        //draw_Connect();
-        break;
+          case LOG_UI:
+            //draw_Connect();
+            break;
         #endif
 
       case CALIBRATE_UI:
@@ -1106,9 +1346,9 @@ void draw_return_ui() {
         break;
 
         #if tan_mask
-      case ZOFFSET_UI:
-        //draw_Zoffset();
-        break;
+          case ZOFFSET_UI:
+            //draw_Zoffset();
+            break;
         #endif
 
       case TOOL_UI:
@@ -1130,16 +1370,16 @@ void draw_return_ui() {
         //draw_Tips();
         break;
       case MACHINE_PARA_UI:
-        //draw_MachinePara();
+        lv_draw_machine_para();
         break;
       case MACHINE_SETTINGS_UI:
-        //draw_MachineSettings();
+        lv_draw_machine_settings();
         break;
       case TEMPERATURE_SETTINGS_UI:
         //draw_TemperatureSettings();
         break;
       case MOTOR_SETTINGS_UI:
-        //draw_MotorSettings();
+        lv_draw_motor_settings();
         break;
       case MACHINETYPE_UI:
         //draw_MachineType();
@@ -1169,16 +1409,18 @@ void draw_return_ui() {
         //draw_XYZLevelPara();
         break;
       case MAXFEEDRATE_UI:
-        //draw_MaxFeedRate();
+        lv_draw_max_feedrate_settings();
         break;
       case STEPS_UI:
-        //draw_Steps();
+        lv_draw_step_settings();
         break;
       case ACCELERATION_UI:
-        //draw_Acceleration();
+        lv_draw_acceleration_settings();
         break;
       case JERK_UI:
-        //draw_Jerk();
+        #if HAS_CLASSIC_JERK
+          lv_draw_jerk_settings();
+        #endif
         break;
       case MOTORDIR_UI:
         //draw_MotorDir();
@@ -1193,7 +1435,7 @@ void draw_return_ui() {
         //draw_HotbedConfig();
         break;
       case ADVANCED_UI:
-        //draw_Advanced();
+        lv_draw_advance_settings();
         break;
       case DOUBLE_Z_UI:
         //draw_DoubleZ();
@@ -1202,7 +1444,7 @@ void draw_return_ui() {
         //draw_EnableInvert();
         break;
       case NUMBER_KEY_UI:
-        //draw_NumberKey();
+        lv_draw_number_key();
         break;
       case DIALOG_UI:
         //draw_dialog(DialogType);
@@ -1210,6 +1452,22 @@ void draw_return_ui() {
       case BABY_STEP_UI:
         //draw_babyStep();
         break;
+      case PAUSE_POS_UI:
+        lv_draw_pause_position();
+        break;
+        #if HAS_TRINAMIC_CONFIG
+          case TMC_CURRENT_UI:
+            lv_draw_tmc_current_settings();
+            break;
+        #endif
+      case EEPROM_SETTINGS_UI:
+        lv_draw_eeprom_settings();
+        break;
+        #if HAS_STEALTHCHOP
+          case TMC_MODE_UI:
+            lv_draw_tmc_step_mode_settings();
+            break;
+        #endif
       default: break;
     }
   }
@@ -1228,6 +1486,13 @@ void draw_return_ui() {
 
 #endif
 
+void lv_ex_line(lv_obj_t * line, lv_point_t *points) {
+  /*Copy the previous line and apply the new style*/
+  lv_line_set_points(line, points, 2);     /*Set the points*/
+  lv_line_set_style(line, LV_LINE_STYLE_MAIN, &style_line);
+  lv_obj_align(line, NULL, LV_ALIGN_IN_TOP_MID, 0, 0);
+}
+
 extern volatile uint32_t systick_uptime_millis;
 
 void print_time_count() {
@@ -1236,14 +1501,14 @@ void print_time_count() {
 }
 
 void LV_TASK_HANDLER() {
-  //lv_tick_inc(1);
+  // lv_tick_inc(1);
   lv_task_handler();
-  TERN_(MKS_TEST, mks_test());
+  if (mks_test_flag == 0x1e) mks_hardware_test();
   #if HAS_GCODE_PREVIEW
     disp_pre_gcode(2, 36);
   #endif
   GUI_RefreshPage();
-  //sd_detection();
+  // sd_detection();
 }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h
index 612ba4b51cad7d4c58def605eb6e5351128e32e8..5c114c2ac13fec4d89d2b7c88805e42e30b6d72c 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/draw_ui.h
@@ -22,16 +22,17 @@
 #pragma once
 
 #ifdef __cplusplus
-extern "C" { /* C-declarations for C++ */
+  extern "C" { /* C-declarations for C++ */
 #endif
 
+#include <lvgl.h>
+
 #include <stdint.h>
 #include <string.h>
-#include "lvgl.h"
 
-//the colors of the last MKS Ui
+// the colors of the last MKS Ui
 #undef LV_COLOR_BACKGROUND
-#define LV_COLOR_BACKGROUND LV_COLOR_MAKE(0x1A, 0x1A, 0x1A) //LV_COLOR_MAKE(0x00, 0x00, 0x00)
+#define LV_COLOR_BACKGROUND LV_COLOR_MAKE(0x1A, 0x1A, 0x1A) // LV_COLOR_MAKE(0x00, 0x00, 0x00)
 
 #include "tft_multi_language.h"
 #include "draw_ready_print.h"
@@ -41,7 +42,7 @@ extern "C" { /* C-declarations for C++ */
 #include "draw_print_file.h"
 #include "draw_dialog.h"
 #include "draw_printing.h"
-#include "draw_opration.h"
+#include "draw_operation.h"
 #include "draw_preHeat.h"
 #include "draw_extrusion.h"
 #include "draw_home.h"
@@ -51,7 +52,22 @@ extern "C" { /* C-declarations for C++ */
 #include "draw_change_speed.h"
 #include "draw_manuaLevel.h"
 #include "draw_error_message.h"
-#include "printer_opration.h"
+#include "printer_operation.h"
+#include "draw_machine_para.h"
+#include "draw_machine_settings.h"
+#include "draw_motor_settings.h"
+#include "draw_advance_settings.h"
+#include "draw_acceleration_settings.h"
+#include "draw_number_key.h"
+#include "draw_jerk_settings.h"
+#include "draw_pause_position.h"
+#include "draw_step_settings.h"
+#include "draw_tmc_current_settings.h"
+#include "draw_eeprom_settings.h"
+#include "draw_max_feedrate_settings.h"
+#include "draw_tmc_step_mode_settings.h"
+
+#include "../../inc/MarlinConfigPre.h"
 
 #define TFT35
 
@@ -70,8 +86,8 @@ extern "C" { /* C-declarations for C++ */
 
   #define BUTTON_TEXT_Y_OFFSET    -20
 
-  #define TITLE_XPOS          3    //TFT_screen.title_xpos
-  #define TITLE_YPOS          5    //TFT_screen.title_ypos
+  #define TITLE_XPOS          3    // TFT_screen.title_xpos
+  #define TITLE_YPOS          5    // TFT_screen.title_ypos
 
   #define FILE_BTN_CNT        6
 
@@ -81,17 +97,39 @@ extern "C" { /* C-declarations for C++ */
   #define FILE_PRE_PIC_X_OFFSET 8
   #define FILE_PRE_PIC_Y_OFFSET 0
 
-  #define PREVIEW_LITTLE_PIC_SIZE   40910//400*100+9*101+1
-  #define PREVIEW_SIZE      202720//(PREVIEW_LITTLE_PIC_SIZE+800*200+201*9+1)
+  #define PREVIEW_LITTLE_PIC_SIZE  40910  // 400*100+9*101+1
+  #define PREVIEW_SIZE      202720        // (PREVIEW_LITTLE_PIC_SIZE+800*200+201*9+1)
 
   #define GCFG_FLAG_VALUE   0xEE
 
-#else
+  // machine parameter ui
+  #define PARA_UI_POS_X            10
+  #define PARA_UI_POS_Y            50
+
+  #define PARA_UI_SIZE_X          450
+  #define PARA_UI_SIZE_Y           40
+
+  #define PARA_UI_ARROW_V          12
+
+  #define PARA_UI_BACL_POS_X      400
+  #define PARA_UI_BACL_POS_Y      270
+
+  #define PARA_UI_TURN_PAGE_POS_X 320
+  #define PARA_UI_TURN_PAGE_POS_Y 270
+
+  #define PARA_UI_VALUE_SIZE_X    370
+  #define PARA_UI_VALUE_POS_X     400
+  #define PARA_UI_VALUE_V           5
+
+  #define PARA_UI_STATE_POS_X     380
+  #define PARA_UI_STATE_V           2
+
+#else // ifdef TFT35
 
   #define TFT_WIDTH     320
   #define TFT_HEIGHT    240
 
-#endif
+#endif // ifdef TFT35
 
 extern char public_buf_m[100];
 extern char public_buf_l[30];
@@ -104,6 +142,9 @@ typedef struct {
   uint8_t from_flash_pic;
   uint8_t finish_power_off;
   uint8_t pause_reprint;
+  float pausePosX;
+  float pausePosY;
+  float pausePosZ;
   uint32_t curFilesize;
 } CFG_ITMES;
 
@@ -111,7 +152,8 @@ typedef struct {
   uint8_t curTempType : 1,
           curSprayerChoose : 3,
           stepHeat : 4;
-  uint8_t leveling_first_time : 1;
+  uint8_t leveling_first_time : 1,
+          para_ui_page : 1;
   uint8_t extruStep;
   uint8_t extruSpeed;
   uint8_t print_state;
@@ -185,7 +227,11 @@ typedef enum {
   ENABLE_INVERT_UI,
   NUMBER_KEY_UI,
   BABY_STEP_UI,
-  ERROR_MESSAGE_UI
+  ERROR_MESSAGE_UI,
+  PAUSE_POS_UI,
+  TMC_CURRENT_UI,
+  TMC_MODE_UI,
+  EEPROM_SETTINGS_UI
 } DISP_STATE;
 
 typedef struct {
@@ -203,6 +249,46 @@ typedef struct {
 } PRINT_TIME;
 extern PRINT_TIME print_time;
 
+typedef enum {
+  PrintAcceleration,
+  RetractAcceleration,
+  TravelAcceleration,
+  XAcceleration,
+  YAcceleration,
+  ZAcceleration,
+  E0Acceleration,
+  E1Acceleration,
+
+  XMaxFeedRate,
+  YMaxFeedRate,
+  ZMaxFeedRate,
+  E0MaxFeedRate,
+  E1MaxFeedRate,
+
+  XJerk,
+  YJerk,
+  ZJerk,
+  EJerk,
+
+  Xstep,
+  Ystep,
+  Zstep,
+  E0step,
+  E1step,
+
+  Xcurrent,
+  Ycurrent,
+  Zcurrent,
+  E0current,
+  E1current,
+
+  pause_pos_x,
+  pause_pos_y,
+  pause_pos_z
+
+}value_state;
+extern value_state value;
+
 extern CFG_ITMES gCfgItems;
 extern UI_CFG uiCfg;
 extern DISP_STATE disp_state;
@@ -210,8 +296,16 @@ extern DISP_STATE last_disp_state;
 extern DISP_STATE_STACK disp_state_stack;
 
 extern lv_style_t tft_style_scr;
-extern lv_style_t tft_style_lable_pre;
-extern lv_style_t tft_style_lable_rel;
+extern lv_style_t tft_style_label_pre;
+extern lv_style_t tft_style_label_rel;
+extern lv_style_t style_line;
+extern lv_style_t style_para_value_pre;
+extern lv_style_t style_para_value_rel;
+extern lv_style_t style_num_key_pre;
+extern lv_style_t style_num_key_rel;
+extern lv_style_t style_num_text;
+
+extern lv_point_t line_points[4][2];
 
 extern void gCfgItems_init();
 extern void ui_cfg_init();
@@ -230,6 +324,7 @@ extern void gCfg_to_spiFlah();
 extern void print_time_count();
 
 extern void LV_TASK_HANDLER();
+extern void lv_ex_line(lv_obj_t * line, lv_point_t *points);
 
 #ifdef __cplusplus
 } /* C-declarations for C++ */
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp b/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp
index 2d7b7d440b693fbf5b10b4157dcee6a076394d72..856d645e9ed4b39655b544c53237eef160c37909 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/gb2312_puhui16.cpp
@@ -21,11 +21,12 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
-#include "../../../../MarlinCore.h"
-#include "lvgl.h"
 #include "pic_manager.h"
+#include <lvgl.h>
+
+#include "../../../../inc/MarlinConfig.h"
 
 #if HAS_SPI_FLASH_FONT
 
@@ -46,10 +47,10 @@ typedef struct {
 } glyph_dsc_t;
 
 static x_header_t __g_xbf_hd = { .min = 0, .max = 0, .bpp = 0 };
-static uint8_t __g_font_buf[75];
+static uint8_t __g_font_buf[63];
 
 static uint8_t *__user_font_getdata(int offset, int size) {
-  //memset(__g_font_buf,0,sizeof(__g_font_buf));
+  //ZERO(__g_font_buf);
   get_spi_flash_data((char *)__g_font_buf, offset, size);
   return __g_font_buf;
   //return &buf_test[offset];
@@ -106,10 +107,9 @@ lv_font_t gb2312_puhui32;
 void init_gb2312_font() {
   gb2312_puhui32.get_glyph_bitmap = __user_font_get_bitmap;
   gb2312_puhui32.get_glyph_dsc = __user_font_get_glyph_dsc;
-  gb2312_puhui32.line_height = 25;
+  gb2312_puhui32.line_height = 21;
   gb2312_puhui32.base_line = 0;
 }
 
 #endif // HAS_SPI_FLASH_FONT
-
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp
index a4061eec2c2e48761b11034717f0ea7130adfe61..54db9dd5b04952d59c2e85c66dcfafcd0e596285 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.cpp
@@ -21,63 +21,69 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+  #include "SPI_TFT.h"
+#endif
 
 #include "tft_lvgl_configuration.h"
-#include "lvgl.h"
 #include "draw_ready_print.h"
 #include "W25Qxx.h"
 #include "mks_hardware_test.h"
+#include "draw_ui.h"
+#include "pic_manager.h"
+#include <lvgl.h>
 
 #include "../../../../MarlinCore.h"
 #include "../../../../module/temperature.h"
 #include "../../../../feature/touch/xpt2046.h"
+#include "../../../../sd/cardreader.h"
 
-#include "pic_manager.h"
-
-#if ENABLED(MKS_TEST)
-
-  extern uint8_t curent_disp_ui;
-
-  uint8_t pw_det_sta, pw_off_sta, mt_det_sta, mt_det2_sta, mt_det3_sta;
-  uint8_t endstopx1_sta, endstopx2_sta, endstopy1_sta, endstopy2_sta, endstopz1_sta, endstopz2_sta;
-  void test_gpio_readlevel_L() {
+uint8_t pw_det_sta, pw_off_sta, mt_det_sta, mt_det2_sta, mt_det3_sta;
+uint8_t endstopx1_sta, endstopx2_sta, endstopy1_sta, endstopy2_sta, endstopz1_sta, endstopz2_sta;
+void test_gpio_readlevel_L() {
+  #if ENABLED(MKS_TEST)
     volatile uint32_t itest;
-    WRITE(WIFI_IO2_PIN, HIGH);
+    WRITE(WIFI_IO0_PIN, HIGH);
     itest = 10000;
     while (itest--);
     pw_det_sta = (READ(POWER_LOSS_PIN) == 0);
     pw_off_sta = (READ(PS_ON_PIN) == 0);
-    mt_det_sta = (READ(FIL_RUNOUT_PIN) == 0);
-    mt_det2_sta = (READ(FIL_RUNOUT_2_PIN) == 0);
-    mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 0);
+    mt_det_sta = (READ(MT_DET_1_PIN) == 0);
+    mt_det2_sta = (READ(MT_DET_2_PIN) == 0);
+    //mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 0);
     endstopx1_sta = (READ(X_MIN_PIN) == 0);
     endstopx2_sta = (READ(X_MAX_PIN) == 0);
     endstopy1_sta = (READ(Y_MIN_PIN) == 0);
     endstopy2_sta = (READ(Y_MAX_PIN) == 0);
     endstopz1_sta = (READ(Z_MIN_PIN) == 0);
     endstopz2_sta = (READ(Z_MAX_PIN) == 0);
-  }
+  #endif
+}
 
-  void test_gpio_readlevel_H() {
+void test_gpio_readlevel_H() {
+  #if ENABLED(MKS_TEST)
     volatile uint32_t itest;
-    WRITE(WIFI_IO2_PIN, LOW);
+    WRITE(WIFI_IO0_PIN, LOW);
     itest = 10000;
     while (itest--);
     pw_det_sta = (READ(POWER_LOSS_PIN) == 1);
     pw_off_sta = (READ(PS_ON_PIN) == 1);
-    mt_det_sta = (READ(FIL_RUNOUT_PIN) == 1);
-    mt_det2_sta = (READ(FIL_RUNOUT_2_PIN) == 1);
-    mt_det3_sta = (READ(FIL_RUNOUT_3_PIN) == 1);
+    mt_det_sta = (READ(MT_DET_1_PIN) == 1);
+    mt_det2_sta = (READ(MT_DET_2_PIN) == 1);
+    //mt_det3_sta = (READ(MT_DET_3_PIN) == 1);
     endstopx1_sta = (READ(X_MIN_PIN) == 1);
     endstopx2_sta = (READ(X_MAX_PIN) == 1);
     endstopy1_sta = (READ(Y_MIN_PIN) == 1);
     endstopy2_sta = (READ(Y_MAX_PIN) == 1);
     endstopz1_sta = (READ(Z_MIN_PIN) == 1);
     endstopz2_sta = (READ(Z_MAX_PIN) == 1);
-  }
+  #endif
+}
 
-  void init_Tst_GPIO() {
+void init_test_gpio() {
+  #ifdef MKS_TEST
     SET_INPUT_PULLUP(X_MIN_PIN);
     SET_INPUT_PULLUP(X_MAX_PIN);
     SET_INPUT_PULLUP(Y_MIN_PIN);
@@ -85,70 +91,77 @@
     SET_INPUT_PULLUP(Z_MIN_PIN);
     SET_INPUT_PULLUP(Z_MAX_PIN);
 
-    SET_OUTPUT(WIFI_IO2_PIN);
+    SET_OUTPUT(WIFI_IO0_PIN);
 
-    SET_INPUT_PULLUP(FIL_RUNOUT_PIN);
-    SET_INPUT_PULLUP(FIL_RUNOUT_2_PIN);
-    SET_INPUT_PULLUP(FIL_RUNOUT_3_PIN);
+    SET_INPUT_PULLUP(MT_DET_1_PIN);
+    SET_INPUT_PULLUP(MT_DET_2_PIN);
+    //SET_INPUT_PULLUP(MT_DET_3_PIN);
 
     SET_INPUT_PULLUP(POWER_LOSS_PIN);
     SET_INPUT_PULLUP(PS_ON_PIN);
 
     SET_INPUT_PULLUP(SERVO0_PIN);
 
-    SET_OUTPUT(E0_ENABLE_PIN);
     SET_OUTPUT(X_ENABLE_PIN);
+    SET_OUTPUT(Y_ENABLE_PIN);
+    SET_OUTPUT(Z_ENABLE_PIN);
+    SET_OUTPUT(E0_ENABLE_PIN);
+    SET_OUTPUT(E1_ENABLE_PIN);
 
     WRITE(X_ENABLE_PIN, LOW);
     WRITE(Y_ENABLE_PIN, LOW);
     WRITE(Z_ENABLE_PIN, LOW);
     WRITE(E0_ENABLE_PIN, LOW);
     WRITE(E1_ENABLE_PIN, LOW);
-    WRITE(E2_ENABLE_PIN, LOW);
-  }
+    //WRITE(E2_ENABLE_PIN, LOW);
+  #endif
+}
 
-  void mks_test_beeper() {
+void mks_test_beeper() {
+  #ifdef MKS_TEST
     WRITE(BEEPER_PIN, HIGH);
     delay(100);
     WRITE(BEEPER_PIN, LOW);
     delay(100);
-  }
+  #endif
+}
 
-  void Test_GPIO() {
-    init_Tst_GPIO();
+void mks_gpio_test(){
+  #if ENABLED(MKS_TEST)
+    init_test_gpio();
 
     test_gpio_readlevel_L();
     test_gpio_readlevel_H();
     test_gpio_readlevel_L();
-    if ((pw_det_sta == 1) && (mt_det_sta == 1) && (mt_det2_sta == 1) && (mt_det3_sta == 1)) {
-      if (curent_disp_ui == 1) disp_det_ok();
-    }
-    else if (curent_disp_ui == 1) disp_det_error();
-    if ((endstopx1_sta == 1)
-        && (endstopx2_sta == 1)
-        && (endstopy1_sta == 1)
-        && (endstopy2_sta == 1)
-        && (endstopz1_sta == 1)
-        && (endstopz2_sta == 1)
-        ) {
-      if (curent_disp_ui == 1) disp_Limit_ok();
-    }
-    else if (curent_disp_ui == 1)
-      disp_Limit_error();
-      //mks_test_beeper();
+    if ((pw_det_sta == 1) && (mt_det_sta == 1) && (mt_det2_sta == 1)) // &&(mt_det3_sta == 1))
+      disp_det_ok();
+    else
+      disp_det_error();
 
-  }
+    if ( (endstopx1_sta == 1)
+      && (endstopx2_sta == 1)
+      && (endstopy1_sta == 1)
+      && (endstopy2_sta == 1)
+      && (endstopz1_sta == 1)
+      && (endstopz2_sta == 1)
+    )
+      disp_Limit_ok();
+    else
+      disp_Limit_error();
+    #endif
+}
 
-  void mks_test() {
+void mks_hardware_test(){
+  #if ENABLED(MKS_TEST)
     if (millis() % 2000 < 1000) {
       WRITE(X_DIR_PIN, LOW);
       WRITE(Y_DIR_PIN, LOW);
       WRITE(Z_DIR_PIN, LOW);
       WRITE(E0_DIR_PIN, LOW);
       WRITE(E1_DIR_PIN, LOW);
-      WRITE(E2_DIR_PIN, LOW);
+      //WRITE(E2_DIR_PIN, LOW);
       thermalManager.fan_speed[0] = 255;
-      WRITE(HEATER_2_PIN, HIGH); // HE2
+      //WRITE(HEATER_2_PIN, HIGH); // HE2
       WRITE(HEATER_1_PIN, HIGH); // HE1
       WRITE(HEATER_0_PIN, HIGH); // HE0
       WRITE(HEATER_BED_PIN, HIGH); // HOT-BED
@@ -159,28 +172,29 @@
       WRITE(Z_DIR_PIN, HIGH);
       WRITE(E0_DIR_PIN, HIGH);
       WRITE(E1_DIR_PIN, HIGH);
-      WRITE(E2_DIR_PIN, HIGH);
+      //WRITE(E2_DIR_PIN, HIGH);
       thermalManager.fan_speed[0] = 0;
-      WRITE(HEATER_2_PIN, LOW); // HE2
+      //WRITE(HEATER_2_PIN, LOW); // HE2
       WRITE(HEATER_1_PIN, LOW); // HE1
       WRITE(HEATER_0_PIN, LOW); // HE0
       WRITE(HEATER_BED_PIN, LOW); // HOT-BED
     }
-    if ((endstopx1_sta == 1) && (endstopx2_sta == 1)
-        && (endstopy1_sta == 1) && (endstopy2_sta == 1)
-        && (endstopz1_sta == 1) && (endstopz2_sta == 1)
-        ) {
 
+    if ( (endstopx1_sta == 1) && (endstopx2_sta == 1)
+      && (endstopy1_sta == 1) && (endstopy2_sta == 1)
+      && (endstopz1_sta == 1) && (endstopz2_sta == 1)
+    ) {
+      // nothing here
     }
     else {
-      mks_test_beeper();
+      //mks_test_beeper();
     }
 
-    if (curent_disp_ui == 1)
-      disp_test();
-  }
+    if (disp_state == PRINT_READY_UI)
+      mks_disp_test();
 
-#endif // MKS_TEST
+  #endif
+}
 
 static const uint16_t ASCII_Table_16x24[] PROGMEM = {
   // Space ' '
@@ -568,8 +582,10 @@ static const uint16_t ASCII_Table_16x24[] PROGMEM = {
 void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint16_t bkColor) {
   for (uint16_t i = 0; i < 24; i++) {
     const uint16_t tmp_char = pgm_read_word(&ASCII_Table_16x24[((c - 0x20) * 24) + i]);
-    for (uint16_t j = 0; j < 16; j++)
-      tft_set_point(x + j, y + i, ((tmp_char >> j) & 0x01) ? charColor : bkColor);
+    for (uint16_t j = 0; j < 16; j++) {
+      TERN(TFT_LVGL_UI_SPI, SPI_TFT.SetPoint, tft_set_point)
+        (x + j, y + i, ((tmp_char >> j) & 0x01) ? charColor : bkColor);
+    }
   }
 }
 
@@ -582,14 +598,30 @@ void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor
 }
 
 //static lv_obj_t * scr_test;
-void disp_pic_update() {
-  LCD_Clear(0x0000);
-  disp_string(120, 150, "PIC Updating...", 0xFFFF, 0x0000);
+void disp_assets_update() {
+  #if DISABLED(TFT_LVGL_UI_SPI)
+    LCD_Clear(0x0000);
+  #endif
+  disp_string(100, 150, "Assets Updating...", 0xFFFF, 0x0000);
 }
 
-void disp_font_update() {
-  LCD_Clear(0x0000);
-  disp_string(120, 150, "FONT Updating...", 0xFFFF, 0x0000);
+void disp_assets_update_progress(const char *msg) {
+  char buf[30];
+  memset(buf, ' ', COUNT(buf));
+  strncpy(buf, msg, strlen(msg));
+  buf[COUNT(buf)-1] = '\0';
+  disp_string(100, 200, buf, 0xFFFF, 0x0000);
 }
 
-#endif // TFT_LVGL_UI
+uint8_t mks_test_flag = 0;
+const char *MKSTestPath = "MKS_TEST";
+
+#if ENABLED(SDSUPPORT)
+  void mks_test_get() {
+    SdFile dir, root = card.getroot();
+    if (dir.open(&root, MKSTestPath, O_RDONLY))
+      mks_test_flag = 0x1e;
+  }
+#endif
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h
index 6dc9fb6368c0f8c680035771f356897996f447e4..0e2d8096bac9c922ceb0e6456267604870d5a8bb 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/mks_hardware_test.h
@@ -21,11 +21,13 @@
  */
 #pragma once
 
-#include "lvgl.h"
+#include <lvgl.h>
 
-void Test_GPIO();
+void mks_gpio_test();
 void disp_char_1624(uint16_t x, uint16_t y, uint8_t c, uint16_t charColor, uint16_t bkColor);
 void disp_string(uint16_t x, uint16_t y, const char * string, uint16_t charColor, uint16_t bkColor);
-void mks_test();
-void disp_pic_update();
-void disp_font_update();
+void mks_hardware_test();
+void disp_assets_update();
+void disp_assets_update_progress(const char *msg);
+void mks_test_get();
+extern uint8_t mks_test_flag;
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp
index 8cf2233715f6aee29b1657195f8737713387bff2..3f9af712d1e22a99e22f27e947b34174c23b956b 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.cpp
@@ -21,7 +21,7 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 
@@ -40,7 +40,7 @@ extern unsigned char bmp_public_buf[17 * 1024];
   extern char *createFilename(char * const buffer, const dir_t &p);
 #endif
 
-static char assets[][30] = {
+static char assets[][LONG_FILENAME_LENGTH] = {
   //homing screen
   "bmp_Zero.bin",
   "bmp_zeroX.bin",
@@ -90,7 +90,7 @@ static char assets[][30] = {
   //select file screen
   "bmp_pageUp.bin",
   "bmp_pageDown.bin",
-  //"bmp_Back.bin", //TODO: why two back buttons? Why not just one? (return / back)
+  "bmp_Back.bin", //TODO: why two back buttons? Why not just one? (return / back)
   "bmp_Dir.bin",
   "bmp_File.bin",
 
@@ -164,14 +164,18 @@ static char assets[][30] = {
     "bmp_French_sel.bin",
     "bmp_Italy.bin",
     "bmp_Italy_sel.bin",
-  #endif //HAS_LANG_SELECT_SCREEN
+  #endif // HAS_LANG_SELECT_SCREEN
 
-  //gcode preview
+  // gcode preview
   #if HAS_GCODE_DEFAULT_VIEW_IN_FLASH
     "bmp_preview.bin",
   #endif
 
-  //settings screen
+  #if HAS_LOGO_IN_FLASH
+    "bmp_logo.bin",
+  #endif
+
+  // settings screen
   "bmp_About.bin",
   //"bmp_Language.bin",
   //"bmp_Fan.bin",
@@ -182,14 +186,27 @@ static char assets[][30] = {
   "bmp_Set.bin",
   "bmp_Tool.bin",
 
-  //base icons
+  #if ENABLED(HAS_STEALTHCHOP)
+    //"bmp_back70x40.bin",
+    "bmp_disable.bin",
+    "bmp_enable.bin",
+  #endif
+
+  // settings screen
+  "bmp_eeprom_settings.bin",
+  "bmp_machine_para.bin",
+  "bmp_function1.bin",
+
+  // base icons
+  "bmp_arrow.bin",
+  "bmp_back70x40.bin",
+  "bmp_value_blank.bin",
   "bmp_Return.bin"
 };
 
 #if HAS_SPI_FLASH_FONT
-  static char fonts[][50] = {
-    "GBK16.bin",
-    "UNIGBK.bin",
+  static char fonts[][LONG_FILENAME_LENGTH] = {
+    "FontUNIGBK.bin",
   };
 #endif
 
@@ -220,22 +237,19 @@ uint32_t lv_get_pic_addr(uint8_t *Pname) {
         addr = PIC_DATA_ADDR_TFT35 + i * PER_PIC_MAX_SPACE_TFT35;
       else
         addr = PIC_DATA_ADDR_TFT32 + i * PER_PIC_MAX_SPACE_TFT32;
-      return (addr + 4);//The purpose of adding 4 is to remove 4-byte picture header information.
+      return addr;
     }
   }
 
   return addr;
 }
 
-const char *picPath = "mks_pic";
-const char *bakPath = "bak_pic";
-
-const char *fontPath = "mks_font";
-const char *bakFont = "bak_font";
+const char *assetsPath = "assets";
+const char *bakPath = "_assets";
 
 void spiFlashErase_PIC() {
   volatile uint32_t pic_sectorcnt = 0;
-  for (pic_sectorcnt = 0; pic_sectorcnt < TERN(MKS_TEST, 2, PIC_SIZE_xM * 1024 / 64); pic_sectorcnt++)
+  for (pic_sectorcnt = 0; pic_sectorcnt < PIC_SIZE_xM * 1024 / 64; pic_sectorcnt++)
     W25QXX.SPI_FLASH_BlockErase(PICINFOADDR + pic_sectorcnt * 64 * 1024);
 }
 
@@ -347,103 +361,123 @@ uint8_t public_buf[512];
     longName[j] = '\0';
   }
 
-  void UpdatePic() {
-    char *fn;
-    unsigned char logoFlag;
+  static int8_t arrayFindStr(const char arr[][LONG_FILENAME_LENGTH], uint8_t arraySize, const char* str) {
+    for (uint8_t a = 0; a < arraySize; a++) {
+      if (strcasecmp(arr[a], str) == 0)
+        return a;
+    }
+    return -1;
+  }
+
+  #define ASSET_TYPE_ICON       0
+  #define ASSET_TYPE_LOGO       1
+  #define ASSET_TYPE_TITLE_LOGO 2
+  #define ASSET_TYPE_G_PREVIEW  3
+  #define ASSET_TYPE_FONT       4
+  static void loadAsset(SdFile &dir, dir_t& entry, const char *fn, int8_t assetType) {
+    SdFile file;
+    char dosFilename[FILENAME_LENGTH];
+    createFilename(dosFilename, entry);
+    if (!file.open(&dir, dosFilename, O_READ)) {
+      #if ENABLED(MARLIN_DEV_MODE)
+        SERIAL_ECHOLNPAIR("Error opening Asset: ", fn);
+      #endif
+      return;
+    }
+
+    disp_assets_update_progress(fn);
     uint16_t pbr;
     uint32_t pfileSize;
     uint32_t totalSizeLoaded = 0;
     uint32_t Pic_Write_Addr;
+    pfileSize = file.fileSize();
+    totalSizeLoaded += pfileSize;
+    if (assetType == ASSET_TYPE_LOGO) {
+      while (1) {
+        pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+        Pic_Logo_Write((uint8_t *)fn, public_buf, pbr); //
+        if (pbr < BMP_WRITE_BUF_LEN) break;
+      }
+    }
+    else if (assetType == ASSET_TYPE_TITLE_LOGO) {
+      while (1) {
+        pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+        Pic_TitleLogo_Write((uint8_t *)fn, public_buf, pbr); //
+        if (pbr < BMP_WRITE_BUF_LEN) break;
+      }
+    }
+    else if (assetType == ASSET_TYPE_G_PREVIEW) {
+      while (1) {
+        pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+        default_view_Write(public_buf, pbr); //
+        if (pbr < BMP_WRITE_BUF_LEN) break;
+      }
+    }
+    else if (assetType == ASSET_TYPE_ICON) {
+      Pic_Write_Addr = Pic_Info_Write((uint8_t *)fn, pfileSize);
+      while (1) {
+        pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+        W25QXX.SPI_FLASH_BufferWrite(public_buf, Pic_Write_Addr, pbr);
+        Pic_Write_Addr += pbr;
+        if (pbr < BMP_WRITE_BUF_LEN) break;
+      }
+    }
+    else if (assetType == ASSET_TYPE_FONT) {
+      Pic_Write_Addr = UNIGBK_FLASH_ADDR;
+      while (1) {
+        pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
+        W25QXX.SPI_FLASH_BufferWrite(public_buf, Pic_Write_Addr, pbr);
+        Pic_Write_Addr += pbr;
+        if (pbr < BMP_WRITE_BUF_LEN) break;
+      }
+    }
+
+    file.close();
+
+    #if ENABLED(MARLIN_DEV_MODE)
+      SERIAL_ECHOLNPAIR("Asset added: ", fn);
+    #endif
+  }
 
+  void UpdateAssets() {
     SdFile dir, root = card.getroot();
-    if (dir.open(&root, picPath, O_RDONLY)) {
+    if (dir.open(&root, assetsPath, O_RDONLY)) {
 
-      disp_pic_update();
+      disp_assets_update();
       spiFlashErase_PIC();
+      #if HAS_SPI_FLASH_FONT
+        spiFlashErase_FONT();
+      #endif
 
       dir_t d;
       while (dir.readDir(&d, card.longFilename) > 0) {
         // if we dont get a long name, but gets a short one, try it
-        if (card.longFilename[0] == 0 && d.name[0] != 0) {
+        if (card.longFilename[0] == 0 && d.name[0] != 0)
           dosName2LongName((const char*)d.name, card.longFilename);
-        }
+        if (card.longFilename[0] == 0) continue;
+        if (card.longFilename[0] == '.') continue;
 
-        if (card.longFilename[0] == 0)
-          continue;
-        if (card.longFilename[0] == '.')
-          continue;
+        uint8_t a = arrayFindStr(assets, COUNT(assets), card.longFilename);
+        if (a >= 0 && a < COUNT(assets)) {
+          uint8_t assetType = ASSET_TYPE_ICON;
+          if (strstr(assets[a], "_logo"))
+            assetType = ASSET_TYPE_LOGO;
+          else if (strstr(assets[a], "_titlelogo"))
+            assetType = ASSET_TYPE_TITLE_LOGO;
+          else if (strstr(assets[a], "_preview"))
+            assetType = ASSET_TYPE_G_PREVIEW;
 
-        uint8_t a = -1;
-        for(a = 0; a < COUNT(assets); a++) {
-          if (strcasecmp(assets[a], card.longFilename) == 0) {
-            break;
-          }
-        }
-        if (a < 0 || a >= COUNT(assets)) continue;
+          loadAsset(dir, d, assets[a], assetType);
 
-        fn = assets[a];
-        char dosFilename[FILENAME_LENGTH];
-        createFilename(dosFilename, d);
-
-        SdFile file;
-        if (!file.open(&dir, dosFilename, O_READ)) {
-          #if ENABLED(MARLIN_DEV_MODE)
-            SERIAL_ECHOLNPAIR("Error opening Asset: ", fn);
-          #endif
           continue;
         }
 
-        if (strstr(fn, "_logo"))
-          logoFlag = 1;
-        else if (strstr(fn, "_titlelogo"))
-          logoFlag = 2;
-        else if (strstr(fn, "_preview"))
-          logoFlag = 3;
-        else
-          logoFlag = 0;
-
-        pfileSize = file.fileSize();
-        totalSizeLoaded += pfileSize;
-        if (logoFlag == 1) {
-          while (1) {
-            pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
-            Pic_Logo_Write((uint8_t *)fn, public_buf, pbr); //
-            if (pbr < BMP_WRITE_BUF_LEN)
-              break;
-          }
-        }
-        else if (logoFlag == 2) {
-          while (1) {
-            pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
-            Pic_TitleLogo_Write((uint8_t *)fn, public_buf, pbr); //
-            if (pbr < BMP_WRITE_BUF_LEN)
-              break;
-          }
-        }
-        else if (logoFlag == 3) {
-          while (1) {
-            pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
-            default_view_Write(public_buf, pbr); //
-            if (pbr < BMP_WRITE_BUF_LEN)
-              break;
-          }
-        }
-        else {
-          Pic_Write_Addr = Pic_Info_Write((uint8_t *)fn, pfileSize);
-          while (1) {
-            pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
-            W25QXX.SPI_FLASH_BufferWrite(public_buf, Pic_Write_Addr, pbr);
-            Pic_Write_Addr += pbr;
-            if (pbr < BMP_WRITE_BUF_LEN)
-              break;
+        #if HAS_SPI_FLASH_FONT
+          a = arrayFindStr(fonts, COUNT(fonts), card.longFilename);
+          if (a >= 0 && a < COUNT(fonts)) {
+            loadAsset(dir, d, fonts[a], ASSET_TYPE_FONT);
           }
-        }
-
-        #if ENABLED(MARLIN_DEV_MODE)
-          SERIAL_ECHOLNPAIR("Asset added: ", fn);
         #endif
-
-        file.close();
       }
       dir.rename(&root, bakPath);
     }
@@ -452,62 +486,12 @@ uint8_t public_buf[512];
     #if ENABLED(MARLIN_DEV_MODE)
       uint8_t pic_counter = 0;
       W25QXX.SPI_FLASH_BufferRead(&pic_counter, PIC_COUNTER_ADDR, 1);
-      SERIAL_ECHOLNPAIR("Total assets loaded: ", pic_counter, ", Total size: ", totalSizeLoaded);
+      SERIAL_ECHOLNPAIR("Total assets loaded: ", pic_counter);
     #endif
   }
 
   #if HAS_SPI_FLASH_FONT
-
     void spi_flash_read_test() { W25QXX.SPI_FLASH_BufferRead(public_buf, UNIGBK_FLASH_ADDR, BMP_WRITE_BUF_LEN); }
-
-    void UpdateFont() {
-      char *fn;
-      uint16_t pbr;
-      uint32_t flashaddr = 0;
-
-      SdFile dir, root = card.getroot();
-      if (dir.open(&root, fontPath, O_RDONLY)) {
-
-        disp_font_update();
-        spiFlashErase_FONT();
-
-        dir_t d;
-        while (dir.readDir(&d, card.longFilename) > 0) {
-          if (card.longFilename[0] == 0)
-            break;
-
-          if (card.longFilename[0] == '.')
-            continue;
-
-          fn = card.longFilename;
-
-          if (strstr(fn, ".bin")) {
-            char dosFilename[FILENAME_LENGTH];
-            createFilename(dosFilename, d);
-            //strcat(public_buf, dosFilename);
-
-            SdFile file;
-            if (file.open(&dir, dosFilename, O_READ)) {
-
-              flashaddr = UNIGBK_FLASH_ADDR;
-              pbr = 0;
-              while (1) {
-                flashaddr += pbr;
-                pbr = file.read(public_buf, BMP_WRITE_BUF_LEN);
-                W25QXX.SPI_FLASH_BufferWrite(public_buf, flashaddr, pbr);
-                if (pbr < BMP_WRITE_BUF_LEN) break;
-              }
-              file.close();
-            }
-
-          }
-        }
-
-        dir.rename(&root, bakFont);
-        dir.close();
-      }
-    }
-
   #endif // HAS_SPI_FLASH_FONT
 
 #endif // SDSUPPORT
@@ -552,6 +536,7 @@ void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size) {
 
 uint32_t logo_addroffset = 0;
 void Pic_Logo_Read(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize) {
+  W25QXX.init(SPI_QUARTER_SPEED);
   W25QXX.SPI_FLASH_BufferRead(Logo_Rbuff, PIC_LOGO_ADDR + logo_addroffset, LogoReadsize);
   logo_addroffset += LogoReadsize;
   if (logo_addroffset >= LOGO_MAX_SIZE_TFT35)
@@ -561,7 +546,6 @@ void Pic_Logo_Read(uint8_t *LogoName, uint8_t *Logo_Rbuff, uint32_t LogoReadsize
 uint32_t default_view_addroffset = 0;
 void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsize) {
   W25QXX.init(SPI_QUARTER_SPEED);
-
   W25QXX.SPI_FLASH_BufferRead(default_view_Rbuff, DEFAULT_VIEW_ADDR_TFT35 + default_view_addroffset, default_view_Readsize);
   default_view_addroffset += default_view_Readsize;
   if (default_view_addroffset >= DEFAULT_VIEW_MAX_SIZE)
@@ -572,7 +556,6 @@ void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsi
   uint32_t flash_view_addroffset = 0;
   void flash_view_Read(uint8_t *flash_view_Rbuff, uint32_t flash_view_Readsize) {
     W25QXX.init(SPI_QUARTER_SPEED);
-
     W25QXX.SPI_FLASH_BufferRead(flash_view_Rbuff, BAK_VIEW_ADDR_TFT35 + flash_view_addroffset, flash_view_Readsize);
     flash_view_addroffset += flash_view_Readsize;
     if (flash_view_addroffset >= FLASH_VIEW_MAX_SIZE)
@@ -580,4 +563,4 @@ void default_view_Read(uint8_t *default_view_Rbuff, uint32_t default_view_Readsi
   }
 #endif
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h
index c0130d0e7e41f4bbd58a4a9b8c7f72c6fbece4ac..663a88d8db3af5e0c68d9e26208b9368da9ab11c 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/pic_manager.h
@@ -25,29 +25,33 @@
 extern "C" { /* C-declarations for C++ */
 #endif
 
+#include "../../inc/MarlinConfigPre.h"
+
+#include <lvgl.h>
+
 #include <stdint.h>
 #include <string.h>
-#include "lvgl.h"
-
-#include "../../inc/MarlinConfigPre.h"
 
 #ifndef HAS_SPI_FLASH_FONT
-  #define HAS_SPI_FLASH_FONT              0 //disabled until fix the font load code
+  #define HAS_SPI_FLASH_FONT              1 // Disabled until fix the font load code
 #endif
 #ifndef HAS_GCODE_PREVIEW
   #define HAS_GCODE_PREVIEW               1
 #endif
 #ifndef HAS_LANG_SELECT_SCREEN
-  #define HAS_LANG_SELECT_SCREEN               0
+  #define HAS_LANG_SELECT_SCREEN          1
 #endif
 #ifndef HAS_BAK_VIEW_IN_FLASH
-  #define HAS_BAK_VIEW_IN_FLASH               1
+  #define HAS_BAK_VIEW_IN_FLASH           1
 #endif
 #ifndef HAS_GCODE_DEFAULT_VIEW_IN_FLASH
-  #define HAS_GCODE_DEFAULT_VIEW_IN_FLASH               1
+  #define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 1
+#endif
+#ifndef HAS_LOGO_IN_FLASH
+  #define HAS_LOGO_IN_FLASH 1
 #endif
 #ifndef SPI_FLASH_SIZE
-  #define SPI_FLASH_SIZE                  0x1000000 // 16MB
+  #define SPI_FLASH_SIZE                0x1000000 // 16MB
 #endif
 
 #define PIC_MAX_CN           100    // Maximum number of pictures
@@ -66,48 +70,52 @@ extern "C" { /* C-declarations for C++ */
 #if SPI_FLASH_SIZE == 0x200000
   //pic
   //Robin_pro pic addr
-  #define PIC_NAME_ADDR                   0x001000      // Pic information addr
-  #define PIC_SIZE_ADDR                   0x001800      // Pic size information addr
-  #define PIC_COUNTER_ADDR                0x002000      // Pic total number
-  #define PER_PIC_SAVE_ADDR               0x000000      // Storage address of each picture
-  #define PIC_LOGO_ADDR                   0x000000      // Logo addr
-  #define PIC_DATA_ADDR                   0x003000    //
+  #define PIC_NAME_ADDR                 0x001000      // Pic information addr
+  #define PIC_SIZE_ADDR                 0x001800      // Pic size information addr
+  #define PIC_COUNTER_ADDR              0x002000      // Pic total number
+  #define PER_PIC_SAVE_ADDR             0x000000      // Storage address of each picture
+  #define PIC_LOGO_ADDR                 0x000000      // Logo addr
+  #define PIC_DATA_ADDR                 0x003000      //
 
   // TFT35
-  #define DEFAULT_VIEW_ADDR_TFT35         0x1ea070
-  #define BAK_VIEW_ADDR_TFT35             (DEFAULT_VIEW_ADDR_TFT35+90*1024)
-  #define PIC_ICON_LOGO_ADDR_TFT35        (BAK_VIEW_ADDR_TFT35+80*1024)
-  #define PIC_DATA_ADDR_TFT35             0x003000 // (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
+  #define DEFAULT_VIEW_ADDR_TFT35       0x1ea070
+  #define BAK_VIEW_ADDR_TFT35           (DEFAULT_VIEW_ADDR_TFT35+90*1024)
+  #define PIC_ICON_LOGO_ADDR_TFT35      (BAK_VIEW_ADDR_TFT35+80*1024)
+  #define PIC_DATA_ADDR_TFT35           0x003000 // (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
 
-  #define PIC_DATA_ADDR_TFT32             0x00F000
-  #define PIC_ICON_LOGO_ADDR_TFT32        0x5D8000
-  #define PIC_OTHER_SIZE_ADDR_TFT32       0x5EE000
+  #define PIC_DATA_ADDR_TFT32           0x00F000
+  #define PIC_ICON_LOGO_ADDR_TFT32      0x5D8000
+  #define PIC_OTHER_SIZE_ADDR_TFT32     0x5EE000
+
+  // font
+  #define FONTINFOADDR                  0x183000 // 6M -- font addr
+  #define UNIGBK_FLASH_ADDR            (FONTINFOADDR+4096) // 4*1024
 
 #else
   //pic
   //Robin_pro pic addr
-  #define PIC_NAME_ADDR                   0x003000      // Pic information addr
-  #define PIC_SIZE_ADDR                   0x007000      // Pic size information addr
-  #define PIC_COUNTER_ADDR                0x008000      // Pic total number
-  #define PER_PIC_SAVE_ADDR               0x009000      // Storage address of each picture
-  #define PIC_LOGO_ADDR                   0x00A000      // Logo addr
-  //#define PIC_DATA_ADDR                 0x02F000      //
+  #define PIC_NAME_ADDR                 0x003000      // Pic information addr
+  #define PIC_SIZE_ADDR                 0x007000      // Pic size information addr
+  #define PIC_COUNTER_ADDR              0x008000      // Pic total number
+  //#define PER_PIC_SAVE_ADDR           0x009000      // Storage address of each picture
+  #define PIC_LOGO_ADDR                 0x009000      // Logo addr
+  //#define PIC_DATA_ADDR               0x02F000      //
 
   // TFT35
-  #define DEFAULT_VIEW_ADDR_TFT35         0xC5800
-  #define BAK_VIEW_ADDR_TFT35             (DEFAULT_VIEW_ADDR_TFT35+90*1024)
-  #define PIC_ICON_LOGO_ADDR_TFT35        (BAK_VIEW_ADDR_TFT35+80*1024)
-  #define PIC_DATA_ADDR_TFT35             (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
+  #define DEFAULT_VIEW_ADDR_TFT35       0xC5800
+  #define BAK_VIEW_ADDR_TFT35           (DEFAULT_VIEW_ADDR_TFT35+90*1024)
+  #define PIC_ICON_LOGO_ADDR_TFT35      (BAK_VIEW_ADDR_TFT35+80*1024)
+  #define PIC_DATA_ADDR_TFT35           (PIC_ICON_LOGO_ADDR_TFT35+350*1024) //0xC5800
 
   // TFT32
-  #define PIC_DATA_ADDR_TFT32             0x02F000
-  #define PIC_ICON_LOGO_ADDR_TFT32        0x5D8000
-  #define PIC_OTHER_SIZE_ADDR_TFT32       0x5EE000
+  #define PIC_DATA_ADDR_TFT32           0x02F000
+  #define PIC_ICON_LOGO_ADDR_TFT32      0x5D8000
+  #define PIC_OTHER_SIZE_ADDR_TFT32     0x5EE000
 
   // font
-  #define FONTINFOADDR                    0x600000 // 6M -- font addr
-  #define UNIGBK_FLASH_ADDR              (FONTINFOADDR+4096) // 4*1024
-  #define GBK_FLASH_ADDR                 (UNIGBK_FLASH_ADDR+180224) // 176*1024
+  #define FONTINFOADDR                  0x600000 // 6M -- font addr
+  #define UNIGBK_FLASH_ADDR            (FONTINFOADDR+4096) // 4*1024
+  #define GBK_FLASH_ADDR               (UNIGBK_FLASH_ADDR+180224) // 176*1024
 
 #endif
 
@@ -137,6 +145,7 @@ typedef struct pic_msg PIC_MSG;
 #define FONT_SIZE_xM  2
 
 extern void Pic_Read(uint8_t *Pname, uint8_t *P_Rbuff);
+extern void Pic_Logo_Read(uint8_t *LogoName,uint8_t *Logo_Rbuff,uint32_t LogoReadsize);
 extern void lv_pic_test(uint8_t *P_Rbuff, uint32_t addr, uint32_t size);
 extern uint32_t lv_get_pic_addr(uint8_t *Pname);
 extern void get_spi_flash_data(const char *rec_buf, int offset, int size);
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp b/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..138168b12fb0c1e2501073ad76c7324437847103
--- /dev/null
+++ b/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.cpp
@@ -0,0 +1,217 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#include "../../../../inc/MarlinConfigPre.h"
+
+#if HAS_TFT_LVGL_UI
+
+#include "../../../../MarlinCore.h"
+
+#include "lv_conf.h"
+#include "draw_ui.h"
+#include "../../../../module/temperature.h"
+#include "../../../../module/motion.h"
+#include "../../../../sd/cardreader.h"
+#include "../../../../gcode/queue.h"
+
+#if ENABLED(POWER_LOSS_RECOVERY)
+  #include "../../../../feature/powerloss.h"
+#endif
+
+#include "../../../../gcode/gcode.h"
+#include "../../../../module/planner.h"
+
+extern uint32_t To_pre_view;
+extern uint8_t flash_preview_begin, default_preview_flg, gcode_preview_over;
+
+void printer_state_polling() {
+  if (uiCfg.print_state == PAUSING) {
+    #if ENABLED(SDSUPPORT)
+      if (!planner.has_blocks_queued() && card.getIndex() > MIN_FILE_PRINTED)
+        uiCfg.waitEndMoves++;
+
+      if (uiCfg.waitEndMoves > 20) {
+        uiCfg.waitEndMoves = 0;
+        planner.synchronize();
+        gcode.process_subcommands_now_P(PSTR("M25"));
+        if (gCfgItems.pausePosZ != (float)-1) {
+          gcode.process_subcommands_now_P(PSTR("G91"));
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("G1 Z%.1f"), gCfgItems.pausePosZ);
+          gcode.process_subcommands_now(public_buf_l);
+          gcode.process_subcommands_now_P(PSTR("G90"));
+        }
+        if (gCfgItems.pausePosX != (float)-1 && gCfgItems.pausePosY != (float)-1) {
+          ZERO(public_buf_l);
+          sprintf_P(public_buf_l, PSTR("G1 X%.1f Y%.1f"), gCfgItems.pausePosX, gCfgItems.pausePosY);
+          gcode.process_subcommands_now(public_buf_l);
+        }
+        uiCfg.print_state = PAUSED;
+
+        // #if ENABLED(POWER_LOSS_RECOVERY)
+        //  if (recovery.enabled) recovery.save(true);
+        // #endif
+        gCfgItems.pause_reprint = 1;
+        update_spi_flash();
+      }
+    #endif
+  }
+  else
+    uiCfg.waitEndMoves = 0;
+
+  if (uiCfg.print_state == PAUSED) {
+  }
+
+  if (uiCfg.print_state == RESUMING) {
+    if (IS_SD_PAUSED()) {
+      gcode.process_subcommands_now_P(PSTR("M24\nG91\nG1 Z-5\nG90"));
+      uiCfg.print_state = WORKING;
+      start_print_time();
+
+      gCfgItems.pause_reprint = 0;
+      update_spi_flash();
+    }
+  }
+  #if ENABLED(POWER_LOSS_RECOVERY)
+    if (uiCfg.print_state == REPRINTED) {
+      ZERO(public_buf_m);
+      #if HAS_HOTEND
+        HOTEND_LOOP() {
+          const int16_t et = recovery.info.target_temperature[e];
+          if (et) {
+            #if HAS_MULTI_HOTEND
+              sprintf_P(public_buf_m, PSTR("T%i"), e);
+              gcode.process_subcommands_now(public_buf_m);
+            #endif
+            sprintf_P(public_buf_m, PSTR("M109 S%i"), et);
+            gcode.process_subcommands_now(public_buf_m);
+          }
+        }
+      #endif
+
+      if (gCfgItems.pause_reprint == 1) {
+        gcode.process_subcommands_now_P(PSTR("G91\nG1 Z-5\nG90"));
+      }
+      recovery.resume();
+
+      uiCfg.print_state = WORKING;
+      start_print_time();
+
+      gCfgItems.pause_reprint = 0;
+      update_spi_flash();
+    }
+  #endif
+
+  if (uiCfg.print_state == WORKING)
+    filament_check();
+}
+
+void filament_pin_setup() {
+  #if PIN_EXISTS(MT_DET_1)
+    pinMode(MT_DET_1_PIN, INPUT_PULLUP);
+  #endif
+  #if PIN_EXISTS(MT_DET_2)
+    pinMode(MT_DET_2_PIN, INPUT_PULLUP);
+  #endif
+  #if PIN_EXISTS(MT_DET_3)
+    pinMode(MT_DET_3_PIN, INPUT_PULLUP);
+  #endif
+}
+
+void filament_check() {
+  const int FIL_DELAY = 20;
+  #if PIN_EXISTS(MT_DET_1)
+    static int fil_det_count_1 = 0;
+    if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
+      fil_det_count_1++;
+    else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
+      fil_det_count_1++;
+    else if (fil_det_count_1 > 0)
+      fil_det_count_1--;
+
+    if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
+      fil_det_count_1++;
+    else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
+      fil_det_count_1++;
+    else if (fil_det_count_1 > 0)
+      fil_det_count_1--;
+  #endif
+
+  #if PIN_EXISTS(MT_DET_2)
+    static int fil_det_count_2 = 0;
+    if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
+      fil_det_count_2++;
+    else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
+      fil_det_count_2++;
+    else if (fil_det_count_2 > 0)
+      fil_det_count_2--;
+
+    if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
+      fil_det_count_2++;
+    else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
+      fil_det_count_2++;
+    else if (fil_det_count_2 > 0)
+      fil_det_count_2--;
+  #endif
+
+  #if PIN_EXISTS(MT_DET_3)
+    static int fil_det_count_3 = 0;
+    if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
+      fil_det_count_3++;
+    else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
+      fil_det_count_3++;
+    else if (fil_det_count_3 > 0)
+      fil_det_count_3--;
+
+    if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
+      fil_det_count_3++;
+    else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
+      fil_det_count_3++;
+    else if (fil_det_count_3 > 0)
+      fil_det_count_3--;
+  #endif
+
+  if (false
+    #if PIN_EXISTS(MT_DET_1)
+      || fil_det_count_1 >= FIL_DELAY
+    #endif
+    #if PIN_EXISTS(MT_DET_2)
+      || fil_det_count_2 >= FIL_DELAY
+    #endif
+    #if PIN_EXISTS(MT_DET_3)
+      || fil_det_count_3 >= FIL_DELAY
+    #endif
+  ) {
+    clear_cur_ui();
+    card.pauseSDPrint();
+    stop_print_time();
+    uiCfg.print_state = PAUSING;
+
+    if (gCfgItems.from_flash_pic == 1)
+      flash_preview_begin = 1;
+    else
+      default_preview_flg = 1;
+
+    lv_draw_printing();
+  }
+}
+
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.h b/Marlin/src/lcd/extui/lib/mks_ui/printer_operation.h
similarity index 100%
rename from Marlin/src/lcd/extui/lib/mks_ui/printer_opration.h
rename to Marlin/src/lcd/extui/lib/mks_ui/printer_operation.h
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp b/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp
deleted file mode 100644
index c081e92bf14bb654687ae24cc6672930ffaa2088..0000000000000000000000000000000000000000
--- a/Marlin/src/lcd/extui/lib/mks_ui/printer_opration.cpp
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * Marlin 3D Printer Firmware
- * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
- *
- * Based on Sprinter and grbl.
- * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <https://www.gnu.org/licenses/>.
- *
- */
-#include "../../../../inc/MarlinConfigPre.h"
-
-#if ENABLED(TFT_LVGL_UI)
-
-  #include "../../../../MarlinCore.h"
-
-  #include "lv_conf.h"
-  #include "draw_ui.h"
-  #include "../../../../module/temperature.h"
-  #include "../../../../module/motion.h"
-  #include "../../../../sd/cardreader.h"
-  #include "../../../../gcode/queue.h"
-
-  #if ENABLED(POWER_LOSS_RECOVERY)
-    #include "../../../../feature/powerloss.h"
-  #endif
-
-  #include "../../../../gcode/gcode.h"
-  #include "../../../../module/planner.h"
-
-  extern uint32_t To_pre_view;
-  extern uint8_t flash_preview_begin, default_preview_flg, gcode_preview_over;
-
-  void printer_state_polling() {
-    if (uiCfg.print_state == PAUSING) {
-      #if ENABLED(SDSUPPORT)
-        if (!planner.has_blocks_queued() && card.getIndex() > MIN_FILE_PRINTED) //���� �ļ��� M109��M190ָ��
-          uiCfg.waitEndMoves++;
-
-        if (uiCfg.waitEndMoves > 20) {
-          uiCfg.waitEndMoves = 0;
-          planner.synchronize();
-          gcode.process_subcommands_now_P(PSTR("M25\nG91\nG1 Z5\nG90"));
-
-          uiCfg.print_state = PAUSED;
-
-          //#if ENABLED(POWER_LOSS_RECOVERY)
-          //  if (recovery.enabled) recovery.save(true);
-          //#endif
-          gCfgItems.pause_reprint = 1;
-          update_spi_flash();
-        }
-      #endif
-    }
-    else {
-      uiCfg.waitEndMoves = 0;
-    }
-
-    if (uiCfg.print_state == PAUSED) {
-
-    }
-
-    if (uiCfg.print_state == RESUMING) {
-      if (IS_SD_PAUSED()) {
-        gcode.process_subcommands_now_P(PSTR("G91\nG1 Z-5\nG90\nM24"));
-        uiCfg.print_state = WORKING;
-        start_print_time();
-
-        gCfgItems.pause_reprint = 0;
-        update_spi_flash();
-      }
-    }
-    #if ENABLED(POWER_LOSS_RECOVERY)
-    if (uiCfg.print_state == REPRINTED) {
-      memset(public_buf_m, 0, sizeof(public_buf_m));
-      #if HOTENDS
-      HOTEND_LOOP() {
-        const int16_t et = recovery.info.target_temperature[e];
-        if (et) {
-          #if HOTENDS > 1
-            sprintf_P(public_buf_m, PSTR("T%i"), e);
-            gcode.process_subcommands_now(public_buf_m);
-          #endif
-          sprintf_P(public_buf_m, PSTR("M109 S%i"), et);
-          gcode.process_subcommands_now(public_buf_m);
-        }
-      }
-      #endif
-
-      if (gCfgItems.pause_reprint == 1)
-        gcode.process_subcommands_now_P(PSTR("G91\nG1 Z-5\nG90"));
-      recovery.resume();
-
-      uiCfg.print_state = WORKING;
-      start_print_time();
-
-      gCfgItems.pause_reprint = 0;
-      update_spi_flash();
-    }
-    #endif
-
-    if (uiCfg.print_state == WORKING)
-      filament_check();
-  }
-
-  void filament_pin_setup() {
-    #if PIN_EXISTS(MT_DET_1)
-      pinMode(MT_DET_1_PIN, INPUT_PULLUP);
-    #endif
-    #if PIN_EXISTS(MT_DET_2)
-      pinMode(MT_DET_2_PIN, INPUT_PULLUP);
-    #endif
-    #if PIN_EXISTS(MT_DET_3)
-      pinMode(MT_DET_3_PIN, INPUT_PULLUP);
-    #endif
-  }
-
-  void filament_check() {
-    const int FIL_DELAY = 20;
-    #if PIN_EXISTS(MT_DET_1)
-      static int fil_det_count_1 = 0;
-      if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
-        fil_det_count_1++;
-      else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
-        fil_det_count_1++;
-      else if (fil_det_count_1 > 0)
-        fil_det_count_1--;
-
-      if (!READ(MT_DET_1_PIN) && !MT_DET_PIN_INVERTING)
-        fil_det_count_1++;
-      else if (READ(MT_DET_1_PIN) && MT_DET_PIN_INVERTING)
-        fil_det_count_1++;
-      else if (fil_det_count_1 > 0)
-        fil_det_count_1--;
-    #endif
-
-    #if PIN_EXISTS(MT_DET_2)
-      static int fil_det_count_2 = 0;
-      if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
-        fil_det_count_2++;
-      else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
-        fil_det_count_2++;
-      else if (fil_det_count_2 > 0)
-        fil_det_count_2--;
-
-      if (!READ(MT_DET_2_PIN) && !MT_DET_PIN_INVERTING)
-        fil_det_count_2++;
-      else if (READ(MT_DET_2_PIN) && MT_DET_PIN_INVERTING)
-        fil_det_count_2++;
-      else if (fil_det_count_2 > 0)
-        fil_det_count_2--;
-    #endif
-
-    #if PIN_EXISTS(MT_DET_3)
-      static int fil_det_count_3 = 0;
-      if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
-        fil_det_count_3++;
-      else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
-        fil_det_count_3++;
-      else if (fil_det_count_3 > 0)
-        fil_det_count_3--;
-
-      if (!READ(MT_DET_3_PIN) && !MT_DET_PIN_INVERTING)
-        fil_det_count_3++;
-      else if (READ(MT_DET_3_PIN) && MT_DET_PIN_INVERTING)
-        fil_det_count_3++;
-      else if (fil_det_count_3 > 0)
-        fil_det_count_3--;
-    #endif
-
-    if (
-      #if PIN_EXISTS(MT_DET_1)
-        fil_det_count_1 >= FIL_DELAY
-      #else
-        false
-      #endif
-      #if PIN_EXISTS(MT_DET_2)
-        || fil_det_count_2 >= FIL_DELAY
-      #endif
-      #if PIN_EXISTS(MT_DET_3)
-        || fil_det_count_3 >= FIL_DELAY
-      #endif
-      ) {
-      clear_cur_ui();
-      card.pauseSDPrint();
-      stop_print_time();
-      uiCfg.print_state = PAUSING;
-
-      if (gCfgItems.from_flash_pic == 1)
-        flash_preview_begin = 1;
-      else
-        default_preview_flg = 1;
-
-      lv_draw_printing();
-    }
-  }
-
-#endif // TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h
index 137dae2e2d74526099dd491adda1ca13e35d15df..54e06f582648e42bd75d76614150f1e164808dbf 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_en.h
@@ -22,13 +22,13 @@
 #pragma once
 
 //****************英文***************************//
-#define MACHINE_CONFIG_EN              "Machine\nSettings"
+#define MACHINE_CONFIG_EN              "Config"
 
 #define NEXT_EN                 "Next"
 #define PREVIOUS_EN             "Previous"
 #define DEFAULT_EN              "Default"
 #define KEY_BACK_EN             "Del"
-#define KEY_REST_EN             "Rest"
+#define KEY_REST_EN             "Reset"
 #define KEY_CONFIRM_EN          "Confirm"
 
 #define KEYBOARD_KEY0_EN "0"
@@ -44,12 +44,11 @@
 #define KEYBOARD_KEY_POINT_EN "."
 #define KEYBOARD_KEY_NEGATIVE_EN "-"
 
-#define MACHINE_PARA_EN             "Machine\nsettings"
-#define MACHINE_PARA_TITLE_EN       "Machine settings"
-#define MACHINE_TYPE_CNOFIG_EN      "Machine"
-#define TEMPERATURE_CONFIG_EN       "Temperature"
-#define MOTOR_CONFIG_EN             "Motor"
-#define ADVANCE_CONFIG_EN           "Adavance"
+#define MACHINE_PARA_TITLE_EN       "Config"
+#define MACHINE_TYPE_CNOFIG_EN      "Machine settings"
+#define TEMPERATURE_CONFIG_EN       "Temperature settings"
+#define MOTOR_CONFIG_EN             "Motor settings"
+#define ADVANCE_CONFIG_EN           "Adavance settings"
 
 #define MACHINE_CONFIG_TITLE_EN     "Machine Settings"
 #define MACHINE_TYPE_EN             "Machine type"
@@ -158,6 +157,8 @@
 #define ACCELERATION_CONF_EN            "Acceleration settings"
 #define JERKCONF_EN                     "Jerk settings"
 #define STEPSCONF_EN                    "Steps settings"
+#define TMC_CURRENT_EN                  "TMC Current settings"
+#define TMC_STEP_MODE_EN                "TMC Step mode settings"
 #define MOTORDIRCONF_EN                 "Motor direction settings"
 #define HOMEFEEDRATECONF_EN             "Home speed setting"
 
@@ -191,6 +192,20 @@
 #define E0_STEPS_EN                     "E0-axis steps"
 #define E1_STEPS_EN                     "E1-axis steps"
 
+#define TMC_CURRENT_CONF_TITLE_EN       "Machine Settings>TMC current settings"
+#define X_TMC_CURRENT_EN                "X axis current (mA)"
+#define Y_TMC_CURRENT_EN                "Y axis current (mA)"
+#define Z_TMC_CURRENT_EN                "Z axis current (mA)"
+#define E0_TMC_CURRENT_EN               "E0 axis current (mA)"
+#define E1_TMC_CURRENT_EN               "E1 axis current (mA)"
+
+#define TMC_MODE_CONF_TITLE_EN          "Machine Settings>TMC step mode settings"
+#define X_TMC_MODE_EN                   "Whether X axis enable stealthChop modes"
+#define Y_TMC_MODE_EN                   "Whether Y axis enable stealthChop modes"
+#define Z_TMC_MODE_EN                   "Whether Z axis enable stealthChop modes"
+#define E0_TMC_MODE_EN                  "Whether E0 axis enable stealthChop modes"
+#define E1_TMC_MODE_EN                  "Whether E1 axis enable stealthChop modes"
+
 #define MOTORDIR_CONF_TITLE_EN          "Machine Settings>Motor direction"
 #define X_MOTORDIR_EN                   "X-axis motor direction invert"
 #define Y_MOTORDIR_EN                   "Y-axis motor direction invert"
@@ -223,6 +238,11 @@
 #define Z_ENABLE_PINS_INVERT_EN         "Z_ENABLE_PIN_INVERT"
 #define E_ENABLE_PINS_INVERT_EN         "E_ENABLE_PIN_INVERT"
 
+#define PAUSE_POSITION_EN    "Printing pause position settings"
+#define PAUSE_POSITION_X_EN  "X axis position (Absolute position,-1 invalid)"
+#define PAUSE_POSITION_Y_EN  "Y axis position (Absolute position,-1 invalid)"
+#define PAUSE_POSITION_Z_EN  "Z axis position (Relative position,-1 invalid)"
+
 #define TOOL_TEXT_EN            "Tool"
 #define PREHEAT_TEXT_EN         "Preheat"
 #define MOVE_TEXT_EN            "Move"
@@ -299,6 +319,8 @@
 #define MOTOR_OFF_TEXT_EN             "Motor-off"
 #define MOTOR_OFF_XY_TEXT_EN          "Off-XY"
 #define SHUTDOWN_TEXT_EN              "Shutdown"
+#define MACHINE_PARA_EN               "Config"
+#define EEPROM_SETTINGS_EN            "Eeprom Set"
 
 #define U_DISK_TEXT_EN                "USB"
 #define SD_CARD_TEXT_EN               "SD"
@@ -368,8 +390,8 @@
 #define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN "Unload filament completed,\nclick <confirm> for return!"
 
 
-#define PRE_HEAT_EXT_TEXT_EN                "E"
-#define PRE_HEAT_BED_TEXT_EN                "Bed"
+#define PRE_HEAT_EXT_TEXT_EN            "E"
+#define PRE_HEAT_BED_TEXT_EN            "Bed"
 
 #define FILE_LOADING_EN                 "Loading......"
 #if 0
@@ -703,16 +725,24 @@
 #define PRINTING_OPERATION_OTHER_LANGUGE    "Operation"
 #define PRINTING_PAUSE_OTHER_LANGUGE        "Pause"
 
-#define MESSEGE_PAUSING_EN          "Parking..."
-#define MESSEGE_CHANGING_EN         "Wait for filament change to start"
-#define MESSEGE_UNLOAD_EN           "Wait for filament unload"
-#define MESSEGE_WAITING_EN          "Press Button to resume print"
-#define MESSEGE_INSERT_EN           "Insert filament and press button to continue"
-#define MESSEGE_LOAD_EN             "Wait for filament load"
-#define MESSEGE_PURGE_EN            "Wait for filament purge"
-#define MESSEGE_RESUME_EN           "Wait for print to resume..."
-#define MESSEGE_HEAT_EN             "Press button to heat nozzle"
-#define MESSEGE_HEATING_EN          "Nozzle heating Please wait..."
-#define MESSEGE_OPTION_EN           "Purge more or continue print?"
-#define MESSEGE_PURGE_MORE_EN       "Purge"
-#define MESSEGE_CONTINUE_PRINT_EN   "Print"
+#define MESSAGE_PAUSING_EN        "Parking..."
+#define MESSAGE_CHANGING_EN       "Wait for filament change to start"
+#define MESSAGE_UNLOAD_EN         "Wait for filament unload"
+#define MESSAGE_WAITING_EN        "Press Button to resume print"
+#define MESSAGE_INSERT_EN         "Insert filament and press button to continue"
+#define MESSAGE_LOAD_EN           "Wait for filament load"
+#define MESSAGE_PURGE_EN          "Wait for filament purge"
+#define MESSAGE_RESUME_EN         "Wait for print to resume..."
+#define MESSAGE_HEAT_EN           "Press button to heat nozzle"
+#define MESSAGE_HEATING_EN        "Nozzle heating Please wait..."
+#define MESSAGE_OPTION_EN         "Purge more or continue print?"
+#define MESSAGE_PURGE_MORE_EN     "Purge"
+#define MESSAGE_CONTINUE_PRINT_EN "Print"
+#define EEPROM_SETTINGS_TITLE_EN  "EEPROM Settings"
+#define EEPROM_SETTINGS_STORE_EN  "Store settings to EEPROM"
+#define EEPROM_SETTINGS_READ_EN   "Read settings from EEPROM"
+#define EEPROM_SETTINGS_REVERT_EN "Revert settings to factory defaults"
+
+#define EEPROM_STORE_TIPS_EN  "Store settings to EEPROM?"
+#define EEPROM_READ_TIPS_EN   "Read settings from EEPROM?"
+#define EEPROM_REVERT_TIPS_EN "Revert settings to factory defaults?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h
index 5cea0e3ac856da7505aa52bcc123d52c605543a1..3fe95654b1a41ebfca60aaba2650ffb36b20ffce 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_fr.h
@@ -98,6 +98,8 @@
 #define MOTOR_OFF_TEXT_FR             "M-hors"
 #define MOTOR_OFF_XY_TEXT_FR          "M-hors-XY"
 #define SHUTDOWN_TEXT_FR              "Eteindre"
+#define MACHINE_PARA_FR               "Config"
+#define EEPROM_SETTINGS_FR            "Eeprom Set"
 
 #define U_DISK_TEXT_FR                "Clé usb"
 #define SD_CARD_TEXT_FR               "Carte SD"
@@ -249,28 +251,36 @@
 #define DIALOG_CANCEL_PRINT_FR        "Arrêter?"
 
 #define DIALOG_STOP_FR                "Arrêter"
-#define DIALOG_REPRINT_FROM_BREAKPOINT_FR   "Continuer?"
-//#define DIALOG_UNBIND_PRINTER_FR          "Non lié?"
-#define DIALOG_ERROR_TIPS1_FR               "Erreur:error:Aucun fichier, \nvérifiez à nouveau."
-#define DIALOG_ERROR_TIPS2_FR               "Erreur:La opération a échoué. \nVerifiez que le baudrate de l'écran et de \nla carte mère soient identique!"
-#define DIALOG_ERROR_TIPS3_FR               "Erreur: le nom du fichier ou le \nchemin d'accès est trop long."
-#define DIALOG_UNBIND_PRINTER_FR            "Unbind the printer?"
-#define DIALOG_FILAMENT_NO_PRESS_FR         "Filament detection switch is not pressed"
-#define DIALOG_PRINT_FINISH_FR              "L'impression est terminée!"
-#define DIALOG_PRINT_TIME_FR                "Temps d'impression: "
-#define DIALOG_REPRINT_FR                   "Print again"
-#define DIALOG_WIFI_ENABLE_TIPS_FR          "The wifi module is being configured,\nplease wait a moment....."
-
-#define MESSEGE_PAUSING_FR          "Parking..."
-#define MESSEGE_CHANGING_FR         "Attente filament pour démarrer"
-#define MESSEGE_UNLOAD_FR           "Attente retrait du filament"
-#define MESSEGE_WAITING_FR          "Presser bouton,pour reprendre"
-#define MESSEGE_INSERT_FR           "Insérer filament et app. bouton pour continuer..."
-#define MESSEGE_LOAD_FR             "Attente chargement filament"
-#define MESSEGE_PURGE_FR            "Attente Purge filament"
-#define MESSEGE_RESUME_FR           "Attente reprise impression"
-#define MESSEGE_HEAT_FR             "Presser le bouton pour chauffer..."
-#define MESSEGE_HEATING_FR          "Buse en chauffe Patienter SVP..."
-#define MESSEGE_OPTION_FR           "Purger davantage ou continuer l'impression?"
-#define MESSEGE_PURGE_MORE_FR       "Purge"
-#define MESSEGE_CONTINUE_PRINT_FR   "Impression"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_FR "Continuer?"
+//#define DIALOG_UNBIND_PRINTER_FR    "Non lié?"
+#define DIALOG_ERROR_TIPS1_FR         "Erreur:error:Aucun fichier, \nvérifiez à nouveau."
+#define DIALOG_ERROR_TIPS2_FR         "Erreur:La opération a échoué. \nVerifiez que le baudrate de l'écran et de \nla carte mère soient identique!"
+#define DIALOG_ERROR_TIPS3_FR         "Erreur: le nom du fichier ou le \nchemin d'accès est trop long."
+#define DIALOG_UNBIND_PRINTER_FR      "Unbind the printer?"
+#define DIALOG_FILAMENT_NO_PRESS_FR   "Filament detection switch is not pressed"
+#define DIALOG_PRINT_FINISH_FR        "L'impression est terminée!"
+#define DIALOG_PRINT_TIME_FR          "Temps d'impression: "
+#define DIALOG_REPRINT_FR             "Print again"
+#define DIALOG_WIFI_ENABLE_TIPS_FR    "The wifi module is being configured,\nplease wait a moment....."
+
+#define MESSAGE_PAUSING_FR        "Parking..."
+#define MESSAGE_CHANGING_FR       "Attente filament pour démarrer"
+#define MESSAGE_UNLOAD_FR         "Attente retrait du filament"
+#define MESSAGE_WAITING_FR        "Presser bouton,pour reprendre"
+#define MESSAGE_INSERT_FR         "Insérer filament et app. bouton pour continuer..."
+#define MESSAGE_LOAD_FR           "Attente chargement filament"
+#define MESSAGE_PURGE_FR          "Attente Purge filament"
+#define MESSAGE_RESUME_FR         "Attente reprise impression"
+#define MESSAGE_HEAT_FR           "Presser le bouton pour chauffer..."
+#define MESSAGE_HEATING_FR        "Buse en chauffe Patienter SVP..."
+#define MESSAGE_OPTION_FR         "Purger davantage ou continuer l'impression?"
+#define MESSAGE_PURGE_MORE_FR     "Purge"
+#define MESSAGE_CONTINUE_PRINT_FR "Impression"
+#define EEPROM_SETTINGS_TITLE_FR  "Paramètres EEPROM"
+#define EEPROM_SETTINGS_STORE_FR  "Stocker les paramètres dans l'EEPROM"
+#define EEPROM_SETTINGS_READ_FR   "Lire les paramètres de l'EEPROM"
+#define EEPROM_SETTINGS_REVERT_FR "Rétablir les paramètres par défaut d'usine"
+
+#define EEPROM_STORE_TIPS_FR  "Stocker les paramètres dans l'EEPROM?"
+#define EEPROM_READ_TIPS_FR   "Lire les paramètres de l'EEPROM?"
+#define EEPROM_REVERT_TIPS_FR "Rétablir les paramètres par défaut d'usine?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h
index e800cbc12ba4573b4cac8d744674731eb99eb9f5..aef6cfaf960933f01638d59e5ff4aa0ffc521462 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_it.h
@@ -22,250 +22,260 @@
 #pragma once
 
 //****************意大利语***************************//
-#define TOOL_TEXT_IT            "Strumento"
-#define PREHEAT_TEXT_IT         "Prerisc"
-#define MOVE_TEXT_IT                "Muovi"
-#define HOME_TEXT_IT            "Home"
-#define PRINT_TEXT_IT               "Stampa"
-#define EXTRUDE_TEXT_IT         "Estrude"
-#define LEVELING_TEXT_IT        "Leveling"
-#define AUTO_LEVELING_TEXT_IT   "AutoLevel"
-#define SET_TEXT_IT                     "Imposta"
-#define MORE_TEXT_IT            "Di più"
+#define TOOL_TEXT_IT                  "Strumento"
+#define PREHEAT_TEXT_IT               "Prerisc"
+#define MOVE_TEXT_IT                  "Muovi"
+#define HOME_TEXT_IT                  "Home"
+#define PRINT_TEXT_IT                 "Stampa"
+#define EXTRUDE_TEXT_IT               "Estrude"
+#define LEVELING_TEXT_IT              "Leveling"
+#define AUTO_LEVELING_TEXT_IT         "AutoLevel"
+#define SET_TEXT_IT                   "Imposta"
+#define MORE_TEXT_IT                  "Di più"
 
-#define ADD_TEXT_IT                         "Aumentare"
-#define DEC_TEXT_IT                         "Ridurre"
-#define EXTRUDER_1_TEXT_IT              "Estrude1"
-#define EXTRUDER_2_TEXT_IT              "Estrude2"
-#define HEATBED_TEXT_IT                 "Piano"
-#define TEXT_1C_IT                              "1℃"
-#define TEXT_5C_IT                              "5℃"
-#define TEXT_10C_IT                             "10℃"
-#define CLOSE_TEXT_IT                   "Spento"
+#define ADD_TEXT_IT                   "Aumentare"
+#define DEC_TEXT_IT                   "Ridurre"
+#define EXTRUDER_1_TEXT_IT            "Estrude1"
+#define EXTRUDER_2_TEXT_IT            "Estrude2"
+#define HEATBED_TEXT_IT               "Piano"
+#define TEXT_1C_IT                    "1℃"
+#define TEXT_5C_IT                    "5℃"
+#define TEXT_10C_IT                   "10℃"
+#define CLOSE_TEXT_IT                 "Spento"
 
-#define BACK_TEXT_IT                                    "Indietro"
+#define BACK_TEXT_IT                  "Indietro"
 
-#define TOOL_PREHEAT_IT            "Prerisc"
-#define TOOL_EXTRUDE_IT             "Estrude"
-#define TOOL_MOVE_IT                "Muovi"
-#define TOOL_HOME_IT                "Home"
-#define TOOL_LEVELING_IT               "Leveling"
+#define TOOL_PREHEAT_IT               "Prerisc"
+#define TOOL_EXTRUDE_IT               "Estrude"
+#define TOOL_MOVE_IT                  "Muovi"
+#define TOOL_HOME_IT                  "Home"
+#define TOOL_LEVELING_IT              "Leveling"
 #define TOOL_AUTO_LEVELING_IT         "Autolevel"
-#define TOOL_FILAMENT_IT                "Filamento"
-#define TOOL_MORE_IT                    "Di più"
+#define TOOL_FILAMENT_IT              "Filamento"
+#define TOOL_MORE_IT                  "Di più"
 
-#define AXIS_X_ADD_TEXT_IT                              "X+"
-#define AXIS_X_DEC_TEXT_IT                              "X-"
-#define AXIS_Y_ADD_TEXT_IT                              "Y+"
-#define AXIS_Y_DEC_TEXT_IT                              "Y-"
-#define AXIS_Z_ADD_TEXT_IT                              "Z+"
-#define AXIS_Z_DEC_TEXT_IT                              "Z-"
-#define TEXT_01MM_IT                                    "0.1mm"
-#define TEXT_1MM_IT                                             "1mm"
-#define TEXT_10MM_IT                                    "10mm"
+#define AXIS_X_ADD_TEXT_IT            "X+"
+#define AXIS_X_DEC_TEXT_IT            "X-"
+#define AXIS_Y_ADD_TEXT_IT            "Y+"
+#define AXIS_Y_DEC_TEXT_IT            "Y-"
+#define AXIS_Z_ADD_TEXT_IT            "Z+"
+#define AXIS_Z_DEC_TEXT_IT            "Z-"
+#define TEXT_01MM_IT                  "0.1mm"
+#define TEXT_1MM_IT                   "1mm"
+#define TEXT_10MM_IT                  "10mm"
 
-#define HOME_X_TEXT_IT                                  "X"
-#define HOME_Y_TEXT_IT                                  "Y"
-#define HOME_Z_TEXT_IT                                  "Z"
-#define HOME_ALL_TEXT_IT                                "All"
-#define HOME_STOPMOVE_IT                "Quickstop"
+#define HOME_X_TEXT_IT                "X"
+#define HOME_Y_TEXT_IT                "Y"
+#define HOME_Z_TEXT_IT                "Z"
+#define HOME_ALL_TEXT_IT              "All"
+#define HOME_STOPMOVE_IT              "Quickstop"
 
-#define PAGE_UP_TEXT_IT                                 "Pagina su"
-#define PAGE_DOWN_TEXT_IT                               "Pagina giù"
+#define PAGE_UP_TEXT_IT               "Pagina su"
+#define PAGE_DOWN_TEXT_IT             "Pagina giù"
 
-#define EXTRUDER_IN_TEXT_IT                 "Estru"
-#define EXTRUDER_OUT_TEXT_IT                "Ritra"
-#define EXTRUDE_1MM_TEXT_IT                         "1mm"
-#define EXTRUDE_5MM_TEXT_IT                         "5mm"
-#define EXTRUDE_10MM_TEXT_IT                "10mm"
-#define EXTRUDE_LOW_SPEED_TEXT_IT               "Bassa"
-#define EXTRUDE_MEDIUM_SPEED_TEXT_IT    "Media"
-#define EXTRUDE_HIGH_SPEED_TEXT_IT              "Alta"
+#define EXTRUDER_IN_TEXT_IT           "Estru"
+#define EXTRUDER_OUT_TEXT_IT          "Ritra"
+#define EXTRUDE_1MM_TEXT_IT           "1mm"
+#define EXTRUDE_5MM_TEXT_IT           "5mm"
+#define EXTRUDE_10MM_TEXT_IT          "10mm"
+#define EXTRUDE_LOW_SPEED_TEXT_IT     "Bassa"
+#define EXTRUDE_MEDIUM_SPEED_TEXT_IT  "Media"
+#define EXTRUDE_HIGH_SPEED_TEXT_IT    "Alta"
 
-#define LEVELING_POINT1_TEXT_IT                         "Primo"
-#define LEVELING_POINT2_TEXT_IT                         "Secondo"
-#define LEVELING_POINT3_TEXT_IT                     "Terzo"
-#define LEVELING_POINT4_TEXT_IT                         "Quarto"
-#define LEVELING_POINT5_TEXT_IT                         "Quinto"
+#define LEVELING_POINT1_TEXT_IT       "Primo"
+#define LEVELING_POINT2_TEXT_IT       "Secondo"
+#define LEVELING_POINT3_TEXT_IT       "Terzo"
+#define LEVELING_POINT4_TEXT_IT       "Quarto"
+#define LEVELING_POINT5_TEXT_IT       "Quinto"
 
-#define FILESYS_TEXT_IT                                         "FileSys"
-#define WIFI_TEXT_IT                                        "WIFI"
-#define FAN_TEXT_IT                                                     "Ventola"
-#define ABOUT_TEXT_IT                                           "Circa"
-#define BREAK_POINT_TEXT_IT                                     "Continua"
-#define FILAMENT_TEXT_IT                                        "Filamento"
-#define LANGUAGE_TEXT_IT                                        "Lingua"
-#define MOTOR_OFF_TEXT_IT                                       "Motor off"
-#define MOTOR_OFF_XY_TEXT_IT    "Off-XY"
-#define SHUTDOWN_TEXT_IT                                        "Spento"
+#define FILESYS_TEXT_IT               "FileSys"
+#define WIFI_TEXT_IT                  "WIFI"
+#define FAN_TEXT_IT                   "Ventola"
+#define ABOUT_TEXT_IT                 "Circa"
+#define BREAK_POINT_TEXT_IT           "Continua"
+#define FILAMENT_TEXT_IT              "Filamento"
+#define LANGUAGE_TEXT_IT              "Lingua"
+#define MOTOR_OFF_TEXT_IT             "Motor off"
+#define MOTOR_OFF_XY_TEXT_IT          "Off-XY"
+#define SHUTDOWN_TEXT_IT              "Spento"
+#define MACHINE_PARA_IT               "Config"
+#define EEPROM_SETTINGS_IT            "Eeprom Set"
 
-#define U_DISK_TEXT_IT                                          "USB"
-#define SD_CARD_TEXT_IT                                         "SD"
-#define WIFI_NAME_TEXT_IT                                       "WIFI: "
-#define WIFI_KEY_TEXT_IT                                        "KEY: "
-#define WIFI_IP_TEXT_IT                                         "IP: "
-#define WIFI_AP_TEXT_IT                                         "Stato: AP"
-#define WIFI_STA_TEXT_IT                                        "Stato: STA"
-#define WIFI_CONNECTED_TEXT_IT                          "Connesso"
-#define WIFI_DISCONNECTED_TEXT_IT                       "Disconnesso"
-#define WIFI_EXCEPTION_TEXT_IT                          "Eccezione"
-#define WIFI_RECONNECT_TEXT_IT         "Reconnect"
-#define CLOUD_TEXT_IT                                           "Cloud"
-#define CLOUD_BIND_IT                                           "Legato"
-#define CLOUD_UNBIND_IT                                         "Libero"
-#define CLOUD_DISCONNECTED_IT                           "Disconnesso"
-#define CLOUD_UNBINDING_IT                                      "Libero"
-#define CLOUD_UNBINDED_IT                                       "Sciolto"
-#define CLOUD_BINDED_IT                                         "Legato"
-#define CLOUD_DISABLE_IT                                        "Disable"
+#define U_DISK_TEXT_IT                "USB"
+#define SD_CARD_TEXT_IT               "SD"
+#define WIFI_NAME_TEXT_IT             "WIFI: "
+#define WIFI_KEY_TEXT_IT              "KEY: "
+#define WIFI_IP_TEXT_IT               "IP: "
+#define WIFI_AP_TEXT_IT               "Stato: AP"
+#define WIFI_STA_TEXT_IT              "Stato: STA"
+#define WIFI_CONNECTED_TEXT_IT        "Connesso"
+#define WIFI_DISCONNECTED_TEXT_IT     "Disconnesso"
+#define WIFI_EXCEPTION_TEXT_IT        "Eccezione"
+#define WIFI_RECONNECT_TEXT_IT        "Reconnect"
+#define CLOUD_TEXT_IT                 "Cloud"
+#define CLOUD_BIND_IT                 "Legato"
+#define CLOUD_UNBIND_IT               "Libero"
+#define CLOUD_DISCONNECTED_IT         "Disconnesso"
+#define CLOUD_UNBINDING_IT            "Libero"
+#define CLOUD_UNBINDED_IT             "Sciolto"
+#define CLOUD_BINDED_IT               "Legato"
+#define CLOUD_DISABLE_IT              "Disable"
 
-#define FAN_ADD_TEXT_IT                                         "Aumentare"
-#define FAN_DEC_TEXT_IT                                         "Ridurre"
-#define FAN_OPEN_TEXT_IT                                        "100%"
-#define FAN_HALF_TEXT_IT                                        "50%"
-#define FAN_CLOSE_TEXT_IT                                       "Spento"
-#define FAN_TIPS1_TEXT_IT                                       "Ventola"
-#define FAN_TIPS2_TEXT_IT                                       "Ventola\n0"
+#define FAN_ADD_TEXT_IT               "Aumentare"
+#define FAN_DEC_TEXT_IT               "Ridurre"
+#define FAN_OPEN_TEXT_IT              "100%"
+#define FAN_HALF_TEXT_IT              "50%"
+#define FAN_CLOSE_TEXT_IT             "Spento"
+#define FAN_TIPS1_TEXT_IT             "Ventola"
+#define FAN_TIPS2_TEXT_IT             "Ventola\n0"
 
-#define FILAMENT_IN_TEXT_IT                                     "Inser"
-#define FILAMENT_OUT_TEXT_IT                            "Estra"
-#define FILAMENT_EXT0_TEXT_IT                           "Estrude1"
-#define FILAMENT_EXT1_TEXT_IT                           "Estrude2"
-#define FILAMENT_HEAT_TEXT_IT                       "Preriscaldamento"
-#define FILAMENT_STOP_TEXT_IT                           "Stop"
-//#define FILAMENT_CHANGE_TEXT_IT       "Filamento"
-#define FILAMENT_TIPS2_TEXT_IT                          "T:"
-#define FILAMENT_TIPS3_TEXT_IT                          "Inserimento del filamento..."
-#define FILAMENT_TIPS4_TEXT_IT                          "Estrazione del filamento..."
-#define FILAMENT_TIPS5_TEXT_IT                          "Temp is too low to go,please heat"
-#define FILAMENT_TIPS6_TEXT_IT                          "Completato"
+#define FILAMENT_IN_TEXT_IT           "Inser"
+#define FILAMENT_OUT_TEXT_IT          "Estra"
+#define FILAMENT_EXT0_TEXT_IT         "Estrude1"
+#define FILAMENT_EXT1_TEXT_IT         "Estrude2"
+#define FILAMENT_HEAT_TEXT_IT         "Preriscaldamento"
+#define FILAMENT_STOP_TEXT_IT         "Stop"
+//#define FILAMENT_CHANGE_TEXT_IT     "Filamento"
+#define FILAMENT_TIPS2_TEXT_IT        "T:"
+#define FILAMENT_TIPS3_TEXT_IT        "Inserimento del filamento..."
+#define FILAMENT_TIPS4_TEXT_IT        "Estrazione del filamento..."
+#define FILAMENT_TIPS5_TEXT_IT        "Temp is too low to go,please heat"
+#define FILAMENT_TIPS6_TEXT_IT        "Completato"
 
 #if 0
-  #define FILAMENT_REPLAYS_IDLE_TEXT_IT         "Please click <Estru> or <Ritra> \nto replace filament!"
-  #define FILAMENT_CHANGE_TEXT_IT                               "Please click <Estru> or <Ritra>,\nAfter pinter pause."
-  #define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT             "Heating up the nozzle,please wait..."
-  #define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT           "Heating up the nozzle,please wait..."
-  #define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT           "Heat completed,please load filament to extruder,and click <Conferma> for start loading."
-  #define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT           "Please load filament to extruder,and click <Conferma> for start loading."
-  #define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT          "Heat completed,please click <Conferma> for start unloading.!"
-  #define FILAMENT_DIALOG_LOADING_TIPS_IT                 "Is loading ,please wait!"
-  #define FILAMENT_DIALOG_UNLOADING_TIPS_IT               "Is unloading,please wait!"
-  #define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT           "Load filament completed,click <Conferma> for return!"
-  #define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT         "Unload filament completed,click <Conferma> for return!"
+  #define FILAMENT_REPLAYS_IDLE_TEXT_IT           "Please click <Estru> or <Ritra> \nto replace filament!"
+  #define FILAMENT_CHANGE_TEXT_IT                 "Please click <Estru> or <Ritra>,\nAfter pinter pause."
+  #define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT       "Heating up the nozzle,please wait..."
+  #define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT     "Heating up the nozzle,please wait..."
+  #define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT   "Heat completed,please load filament to extruder,and click <Conferma> for start loading."
+  #define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT   "Please load filament to extruder,and click <Conferma> for start loading."
+  #define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT  "Heat completed,please click <Conferma> for start unloading.!"
+  #define FILAMENT_DIALOG_LOADING_TIPS_IT         "Is loading ,please wait!"
+  #define FILAMENT_DIALOG_UNLOADING_TIPS_IT       "Is unloading,please wait!"
+  #define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT   "Load filament completed,click <Conferma> for return!"
+  #define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,click <Conferma> for return!"
 #endif
-#define FILAMENT_CHANGE_TEXT_IT                               "Please click <Load> \nor <unload>,After \npinter pause."
-#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT             "Heating up the nozzle,please wait..."
-#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT           "Heating up the nozzle,please wait..."
-#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT           "Heat completed,please load filament \nto extruder,and click <confirm> \nfor start loading."
-#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT           "Please load filament to extruder,\nand click <confirm> for start loading."
-#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT          "Heat completed,please \nclick <confirm> for start unloading.!"
-#define FILAMENT_DIALOG_LOADING_TIPS_IT                 "Is loading ,please wait!"
-#define FILAMENT_DIALOG_UNLOADING_TIPS_IT               "Is unloading,please wait!"
-#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT           "Load filament completed,\nclick <confirm> for return!"
-#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT         "Unload filament completed,\nclick <confirm> for return!"
+#define FILAMENT_CHANGE_TEXT_IT                 "Please click <Load> \nor <unload>,After \npinter pause."
+#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT       "Heating up the nozzle,please wait..."
+#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT     "Heating up the nozzle,please wait..."
+#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT   "Heat completed,please load filament \nto extruder,and click <confirm> \nfor start loading."
+#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_IT   "Please load filament to extruder,\nand click <confirm> for start loading."
+#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT  "Heat completed,please \nclick <confirm> for start unloading.!"
+#define FILAMENT_DIALOG_LOADING_TIPS_IT         "Is loading ,please wait!"
+#define FILAMENT_DIALOG_UNLOADING_TIPS_IT       "Is unloading,please wait!"
+#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT   "Load filament completed,\nclick <confirm> for return!"
+#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT "Unload filament completed,\nclick <confirm> for return!"
 
 
-#define PRE_HEAT_EXT_TEXT_IT                            "E"
-#define PRE_HEAT_BED_TEXT_IT                            "Piano"
+#define PRE_HEAT_EXT_TEXT_IT              "E"
+#define PRE_HEAT_BED_TEXT_IT              "Piano"
 
-#define FILE_LOADING_IT                                 "Caricamento......"
+#define FILE_LOADING_IT                   "Caricamento......"
 #if 0
-  #define NO_FILE_AND_CHECK_IT                "Nessun file trovato! Inserisci la scheda SD o il disco U!"
+  #define NO_FILE_AND_CHECK_IT              "Nessun file trovato! Inserisci la scheda SD o il disco U!"
 #endif
-#define NO_FILE_AND_CHECK_IT                            "Nessun file,\n          per favore controllare di nuovo!"
+#define NO_FILE_AND_CHECK_IT              "Nessun file,\n          per favore controllare di nuovo!"
 
-#define NO_FILE_IT                                              "Nessun file!"
+#define NO_FILE_IT                        "Nessun file!"
 
-#define EXTRUDER_TEMP_TEXT_IT                           "Temper"
-#define EXTRUDER_E_LENGTH1_TEXT_IT          "Estrude1"
-#define EXTRUDER_E_LENGTH2_TEXT_IT          "Estrude2"
-#define EXTRUDER_E_LENGTH3_TEXT_IT          "Estrude3"
+#define EXTRUDER_TEMP_TEXT_IT             "Temper"
+#define EXTRUDER_E_LENGTH1_TEXT_IT        "Estrude1"
+#define EXTRUDER_E_LENGTH2_TEXT_IT        "Estrude2"
+#define EXTRUDER_E_LENGTH3_TEXT_IT        "Estrude3"
 
-#define ABOUT_TYPE_TEXT_IT                                      "Type: "
-#define ABOUT_VERSION_TEXT_IT                           "Firmware: "
-#define ABOUT_WIFI_TEXT_IT                                      "WiFi: "
+#define ABOUT_TYPE_TEXT_IT                "Type: "
+#define ABOUT_VERSION_TEXT_IT             "Firmware: "
+#define ABOUT_WIFI_TEXT_IT                "WiFi: "
 
-#define PRINTING_OPERATION_IT                           "Opzioni"
-#define PRINTING_PAUSE_IT                                       "Pause"
-#define PRINTING_TEMP_IT                                        "Temp."
-#define PRINTING_CHANGESPEED_IT                         "Velocità"
-#define PRINTING_RESUME_IT                                      "Recupero"
-#define PRINTING_STOP_IT                                        "Stop"
-#define PRINTING_MORE_IT                                        "Di più"
-#define PRINTING_EXTRUDER_IT                        "Estrude"
-#define PRINTING_MOVE_IT              "Muovi"
+#define PRINTING_OPERATION_IT             "Opzioni"
+#define PRINTING_PAUSE_IT                 "Pause"
+#define PRINTING_TEMP_IT                  "Temp."
+#define PRINTING_CHANGESPEED_IT           "Velocità"
+#define PRINTING_RESUME_IT                "Recupero"
+#define PRINTING_STOP_IT                  "Stop"
+#define PRINTING_MORE_IT                  "Di più"
+#define PRINTING_EXTRUDER_IT              "Estrude"
+#define PRINTING_MOVE_IT                  "Muovi"
 
-#define EXTRUDER_SPEED_IT                                       "Estrude"
-#define MOVE_SPEED_IT                                           "Muovi"
-#define EXTRUDER_SPEED_STATE_IT                         "Estrusione"
-#define MOVE_SPEED_STATE_IT                                     "Movimento"
-#define STEP_1PERCENT_IT                                        "1%"
-#define STEP_5PERCENT_IT                                        "5%"
-#define STEP_10PERCENT_IT                                       "10%"
+#define EXTRUDER_SPEED_IT                 "Estrude"
+#define MOVE_SPEED_IT                     "Muovi"
+#define EXTRUDER_SPEED_STATE_IT           "Estrusione"
+#define MOVE_SPEED_STATE_IT               "Movimento"
+#define STEP_1PERCENT_IT                  "1%"
+#define STEP_5PERCENT_IT                  "5%"
+#define STEP_10PERCENT_IT                 "10%"
 
-#define ZOFFSET_IT                          "Z Offset"
-#define ZOFFSET_INC_IT                      "Add"
-#define ZOFFSET_DEC_IT                      "Dec"
+#define ZOFFSET_IT                        "Z Offset"
+#define ZOFFSET_INC_IT                    "Add"
+#define ZOFFSET_DEC_IT                    "Dec"
 
-#define TITLE_READYPRINT_IT                                             "Pronto"
-#define TITLE_PREHEAT_IT                                                "Preris"
-#define TITLE_MOVE_IT                                                   "Muovi"
-#define TITLE_HOME_IT                                                   "Home"
-#define TITLE_EXTRUDE_IT                                                "Estrude"
-#define TITLE_LEVELING_IT                                               "Livella"
-#define TITLE_SET_IT                                                    "Impostare"
-#define TITLE_MORE_IT                                                   "Di più"
-#define TITLE_CHOOSEFILE_IT                                             "File"
-#define TITLE_PRINTING_IT                                               "Stampa"
-#define TITLE_OPERATION_IT                                              "Opzioni"
-#define TITLE_ADJUST_IT                                                 "Regolare"
-#define TITLE_WIRELESS_IT                                               "Wireless"
-#define TITLE_FILAMENT_IT                                               "Filamento"
-#define TITLE_ABOUT_IT                                                  "Circa"
-#define TITLE_FAN_IT                                                    "Ventola"
-#define TITLE_LANGUAGE_IT                                               "Lingua"
-#define TITLE_PAUSE_IT                                                  "Pausa"
-#define TITLE_CHANGESPEED_IT                                "Velocità"
-#define TITLE_CLOUD_TEXT_IT                                     "Cloud"
-#define TITLE_DIALOG_CONFIRM_IT                         "Confirm"
-#define TITLE_FILESYS_IT                                                        "FileSys"
-#define TITLE_ZOFFSET_IT                          "Z Offset"
+#define TITLE_READYPRINT_IT               "Pronto"
+#define TITLE_PREHEAT_IT                  "Preris"
+#define TITLE_MOVE_IT                     "Muovi"
+#define TITLE_HOME_IT                     "Home"
+#define TITLE_EXTRUDE_IT                  "Estrude"
+#define TITLE_LEVELING_IT                 "Livella"
+#define TITLE_SET_IT                      "Impostare"
+#define TITLE_MORE_IT                     "Di più"
+#define TITLE_CHOOSEFILE_IT               "File"
+#define TITLE_PRINTING_IT                 "Stampa"
+#define TITLE_OPERATION_IT                "Opzioni"
+#define TITLE_ADJUST_IT                   "Regolare"
+#define TITLE_WIRELESS_IT                 "Wireless"
+#define TITLE_FILAMENT_IT                 "Filamento"
+#define TITLE_ABOUT_IT                    "Circa"
+#define TITLE_FAN_IT                      "Ventola"
+#define TITLE_LANGUAGE_IT                 "Lingua"
+#define TITLE_PAUSE_IT                    "Pausa"
+#define TITLE_CHANGESPEED_IT              "Velocità"
+#define TITLE_CLOUD_TEXT_IT               "Cloud"
+#define TITLE_DIALOG_CONFIRM_IT           "Confirm"
+#define TITLE_FILESYS_IT                  "FileSys"
+#define TITLE_ZOFFSET_IT                  "Z Offset"
 
-#define AUTO_SHUTDOWN_IT                                        "Auto"
-#define MANUAL_SHUTDOWN_IT                                      "Manuale"
+#define AUTO_SHUTDOWN_IT                  "Auto"
+#define MANUAL_SHUTDOWN_IT                "Manuale"
 
-#define DIALOG_CONFIRM_IT                                       "Conferma"
-#define DIALOG_CANCLE_IT                                        "Cancella"
-#define DIALOG_OK_IT                                            "OK"
-#define DIALOG_RESET_IT                                         "Resettare"
-#define DIALOG_RETRY_IT                                         "Riprovare"
-#define DIALOG_DISABLE_IT                                       "Disable"
-#define DIALOG_PRINT_MODEL_IT                           "Gcode stampa?"
-#define DIALOG_CANCEL_PRINT_IT                          "Stop stampa?"
-#define DIALOG_STOP_IT                          "Stop"
-#define DIALOG_REPRINT_FROM_BREAKPOINT_IT       "Continua a stampare dal \npunto di interruzione?"
-//#define DIALOG_UNBIND_PRINTER_IT    "Libero?"
-#define DIALOG_ERROR_TIPS1_IT                   "Errore: nessun file, \nper favore controllare di nuovo."
-#define DIALOG_ERROR_TIPS2_IT                   "Errore: operazione non riuscita, \nsi prega di controllare se il baudrate del \ndisplay è lo stesso scheda madre"
-#define DIALOG_ERROR_TIPS3_IT                   "Errore: il nome del file o il \npercorso è troppo lungo!"
-#define DIALOG_CLOSE_MACHINE_IT                 "Closing machine......"
-#define DIALOG_UNBIND_PRINTER_IT                "Unbind the printer?"
-#define DIALOG_FILAMENT_NO_PRESS_IT         "Filament detection switch is not pressed"
-#define DIALOG_PRINT_FINISH_IT              "La stampa è completa!"
+#define DIALOG_CONFIRM_IT                 "Conferma"
+#define DIALOG_CANCLE_IT                  "Cancella"
+#define DIALOG_OK_IT                      "OK"
+#define DIALOG_RESET_IT                   "Resettare"
+#define DIALOG_RETRY_IT                   "Riprovare"
+#define DIALOG_DISABLE_IT                 "Disable"
+#define DIALOG_PRINT_MODEL_IT             "Gcode stampa?"
+#define DIALOG_CANCEL_PRINT_IT            "Stop stampa?"
+#define DIALOG_STOP_IT                    "Stop"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_IT "Continua a stampare dal \npunto di interruzione?"
+//#define DIALOG_UNBIND_PRINTER_IT        "Libero?"
+#define DIALOG_ERROR_TIPS1_IT             "Errore: nessun file, \nper favore controllare di nuovo."
+#define DIALOG_ERROR_TIPS2_IT             "Errore: operazione non riuscita, \nsi prega di controllare se il baudrate del \ndisplay è lo stesso scheda madre"
+#define DIALOG_ERROR_TIPS3_IT             "Errore: il nome del file o il \npercorso è troppo lungo!"
+#define DIALOG_CLOSE_MACHINE_IT           "Closing machine......"
+#define DIALOG_UNBIND_PRINTER_IT          "Unbind the printer?"
+#define DIALOG_FILAMENT_NO_PRESS_IT       "Filament detection switch is not pressed"
+#define DIALOG_PRINT_FINISH_IT            "La stampa è completa!"
 #define DIALOG_PRINT_TIME_IT              "Tempo di stampa: "
 #define DIALOG_REPRINT_IT                 "Print again"
-#define DIALOG_WIFI_ENABLE_TIPS_IT "The wifi module is being configured,\nplease wait a moment....."
+#define DIALOG_WIFI_ENABLE_TIPS_IT        "The wifi module is being configured,\nplease wait a moment....."
 
-#define MESSEGE_PAUSING_IT                      "Parcheggiando..."
-#define MESSEGE_CHANGING_IT                     "Attendere avvio del cambio di filamento"
-#define MESSEGE_UNLOAD_IT                       "Attendere l'espulsione del filamento"
-#define MESSEGE_WAITING_IT                      "Premi per riprendere la stampa"
-#define MESSEGE_INSERT_IT                       "Inserisci il filamento e premi per continuare"
-#define MESSEGE_LOAD_IT                 "Attendere il caricamento del filamento"
-#define MESSEGE_PURGE_IT                        "Attendere lo spurgo del filamento"
-#define MESSEGE_RESUME_IT                       "Attendere la ripresa della stampa..."
-#define MESSEGE_HEAT_IT                 "Premi per riscaldare ugello"
-#define MESSEGE_HEATING_IT                      "Riscaldam. ugello Attendere prego..."
-#define MESSEGE_OPTION_IT                       "Eliminare di più o continuare a stampare?"
-#define MESSEGE_PURGE_MORE_IT   "Epurazione"
-#define MESSEGE_CONTINUE_PRINT_IT   "Stampa"
+#define MESSAGE_PAUSING_IT                "Parcheggiando..."
+#define MESSAGE_CHANGING_IT               "Attendere avvio del cambio di filamento"
+#define MESSAGE_UNLOAD_IT                 "Attendere l'espulsione del filamento"
+#define MESSAGE_WAITING_IT                "Premi per riprendere la stampa"
+#define MESSAGE_INSERT_IT                 "Inserisci il filamento e premi per continuare"
+#define MESSAGE_LOAD_IT                   "Attendere il caricamento del filamento"
+#define MESSAGE_PURGE_IT                  "Attendere lo spurgo del filamento"
+#define MESSAGE_RESUME_IT                 "Attendere la ripresa della stampa..."
+#define MESSAGE_HEAT_IT                   "Premi per riscaldare ugello"
+#define MESSAGE_HEATING_IT                "Riscaldam. ugello Attendere prego..."
+#define MESSAGE_OPTION_IT                 "Eliminare di più o continuare a stampare?"
+#define MESSAGE_PURGE_MORE_IT             "Epurazione"
+#define MESSAGE_CONTINUE_PRINT_IT         "Stampa"
+#define EEPROM_SETTINGS_TITLE_IT          "Impostazioni EEPROM"
+#define EEPROM_SETTINGS_STORE_IT          "Memorizzare le impostazioni su EEPROM"
+#define EEPROM_SETTINGS_READ_IT           "Leggi le impostazioni dalla EEPROM"
+#define EEPROM_SETTINGS_REVERT_IT         "Ripristina le impostazioni predefinite di fabbrica"
+
+#define EEPROM_STORE_TIPS_IT              "Memorizzare le impostazioni su EEPROM?"
+#define EEPROM_READ_TIPS_IT               "Leggi le impostazioni dalla EEPROM?"
+#define EEPROM_REVERT_TIPS_IT             "Ripristinare le impostazioni predefinite?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h
index 6778331cc9c5d43b7bdc2585c32741d22c16dd60..2ec39ab01646af73055e6d6b3d35b9dc1782eed8 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_ru.h
@@ -98,6 +98,8 @@
 #define MOTOR_OFF_TEXT_RU               "отклмотор"
 #define MOTOR_OFF_XY_TEXT_RU            "Off-XY"
 #define SHUTDOWN_TEXT_RU                "выключение"
+#define MACHINE_PARA_RU                 "конфиг"
+#define EEPROM_SETTINGS_RU              "Eeprom Set"
 
 #define U_DISK_TEXT_RU                  "U диск"
 #define SD_CARD_TEXT_RU                 "SD диск"
@@ -257,16 +259,24 @@
 #define DIALOG_REPRINT_RU                   "Print again"
 #define DIALOG_WIFI_ENABLE_TIPS_RU          "The wifi module is being configured,\nplease wait a moment....."
 
-#define MESSEGE_PAUSING_RU                  "Стоянка..."
-#define MESSEGE_CHANGING_RU                 "Подождите, пока начнется смена филамента"
-#define MESSEGE_UNLOAD_RU                   "Дождитесь выгрузки нити"
-#define MESSEGE_WAITING_RU                  "Нажмите кнопку,чтобы возобновить печать"
-#define MESSEGE_INSERT_RU                   "Вставьте нить и нажмите кнопку,чтобы продолжить"
-#define MESSEGE_LOAD_RU                     "Дождитесь загрузки нити"
-#define MESSEGE_PURGE_RU                    "Дождитесь чистки нити"
-#define MESSEGE_RESUME_RU                   "Подождите,пока печать возобновится ..."
-#define MESSEGE_HEAT_RU                     "Нажмите кнопку, чтобы нагреть форсунку"
-#define MESSEGE_HEATING_RU                  "Подогрев форсунки Пожалуйста, подождите ..."
-#define MESSEGE_OPTION_RU                   "Очистить больше или продолжить печать?"
-#define MESSEGE_PURGE_MORE_RU               "чистка"
-#define MESSEGE_CONTINUE_PRINT_RU           "Распечатать"
+#define MESSAGE_PAUSING_RU            "Стоянка..."
+#define MESSAGE_CHANGING_RU           "Подождите, пока начнется смена филамента"
+#define MESSAGE_UNLOAD_RU             "Дождитесь выгрузки нити"
+#define MESSAGE_WAITING_RU            "Нажмите кнопку,чтобы возобновить печать"
+#define MESSAGE_INSERT_RU             "Вставьте нить и нажмите кнопку,чтобы продолжить"
+#define MESSAGE_LOAD_RU               "Дождитесь загрузки нити"
+#define MESSAGE_PURGE_RU              "Дождитесь чистки нити"
+#define MESSAGE_RESUME_RU             "Подождите,пока печать возобновится ..."
+#define MESSAGE_HEAT_RU               "Нажмите кнопку, чтобы нагреть форсунку"
+#define MESSAGE_HEATING_RU            "Подогрев форсунки Пожалуйста, подождите ..."
+#define MESSAGE_OPTION_RU             "Очистить больше или продолжить печать?"
+#define MESSAGE_PURGE_MORE_RU         "чистка"
+#define MESSAGE_CONTINUE_PRINT_RU     "Распечатать"
+#define EEPROM_SETTINGS_TITLE_RU      "Настройки EEPROM"
+#define EEPROM_SETTINGS_STORE_RU      "Сохранение настроек в EEPROM"
+#define EEPROM_SETTINGS_READ_RU       "Чтение настроек из EEPROM"
+#define EEPROM_SETTINGS_REVERT_RU     "Восстановить заводские настройки по умолчанию"
+
+#define EEPROM_STORE_TIPS_RU          "Сохранить настройки в EEPROM?"
+#define EEPROM_READ_TIPS_RU           "Читать настройки из EEPROM?"
+#define EEPROM_REVERT_TIPS_RU         "Revert settings to factory defaults?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h
index c8b0a7194d002c655aa5a3620aac0ac406b3266d..ea481c89a24e4bb6360414594bb17d38eb179d20 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_s_cn.h
@@ -22,6 +22,211 @@
 #pragma once
 
 //*************简体中文***********************//
+#define NEXT_CN                       "下一页"
+#define PREVIOUS_CN                   "上一页"
+#define DEFAULT_CN                    "默认值"
+#define KEY_BACK_CN                   "退格"
+#define KEY_REST_CN                   "重置"
+#define KEY_CONFIRM_CN                "确定"
+
+#define MACHINE_PARA_TITLE_CN         "机器参数"
+#define MACHINE_TYPE_CNOFIG_CN        "机器设置"
+#define TEMPERATURE_CONFIG_CN         "温度设置"
+#define MOTOR_CONFIG_CN               "电机设置"
+#define ADVANCE_CONFIG_CN             "高级设置"
+
+#define MACHINE_CONFIG_TITLE_CN       "机器参数>机器配置"
+#define MACHINE_TYPE_CN               "机型选择"
+#define MACHINE_STROKE_CN             "行程设置"
+#define MACHINE_HOMEDIR_CN            "归零方向"
+#define MACHINE_ENDSTOP_TYPE_CN       "限位开关类型"
+#define MACHINE_FILAMENT_CONFIG_CN    "换料设置"
+#define MACHINE_LEVELING_CONFIG_CN    "调平设置"
+
+#define MACHINE_TYPE_CONFIG_TITLE_CN  "机器参数>机型选择"
+#define MACHINE_TYPE_XYZ_CN           "XYZ机型"
+#define MACHINE_TYPE_DELTA_CN         "Delta机型"
+#define MACHINE_TYPE_COREXY_CN        "Corexy机型"
+
+#define MACHINE_STROKE_CONF_TITLE_CN  "机器参数>机器行程"
+#define X_MAX_LENGTH_CN               "X轴最大行程"
+#define Y_MAX_LENGTH_CN               "Y轴最大行程"
+#define Z_MAX_LENGTH_CN               "Z轴最大行程"
+
+#define X_MIN_LENGTH_CN               "X轴最小行程"
+#define Y_MIN_LENGTH_CN               "Y轴最小行程"
+#define Z_MIN_LENGTH_CN               "Z轴最小行程"
+
+#define HOME_DIR_CONF_TITLE_CN        "机器参数>归零方向"
+#define HOME_DIR_X_CN                 "X轴归零方向"
+#define HOME_DIR_Y_CN                 "Y轴归零方向"
+#define HOME_DIR_Z_CN                 "Z轴归零方向"
+#define HOME_MIN_CN                   "MIN"
+#define HOME_MAX_CN                   "MAX"
+
+#define ENDSTOP_CONF_TITLE_CN         "机器参数>限位开关"
+#define MIN_ENDSTOP_X_CN              "X轴最小限位"
+#define MIN_ENDSTOP_Y_CN              "Y轴最小限位"
+#define MIN_ENDSTOP_Z_CN              "Z轴最小限位"
+#define MAX_ENDSTOP_X_CN              "X轴最大限位"
+#define MAX_ENDSTOP_Y_CN              "Y轴最大限位"
+#define MAX_ENDSTOP_Z_CN              "Z轴最大限位"
+#define ENDSTOP_FIL_CN                "断料开关类型"
+#define ENDSTOP_LEVEL_CN              "调平开关类型"
+#define ENDSTOP_OPENED_CN             "常开"
+#define ENDSTOP_CLOSED_CN             "常闭"
+
+#define FILAMENT_CONF_TITLE_CN        "换料设置"
+#define FILAMENT_IN_TEMPERATURE_CN    "进料温度"
+#define FILAMENT_IN_LENGTH_CN         "进料长度"
+#define FILAMENT_IN_SPEED_CN          "进料速度"
+#define FILAMENT_OUT_TEMPERATURE_CN   "退料温度"
+#define FILAMENT_OUT_LENGTH_CN        "退料长度"
+#define FILAMENT_OUT_SPEED_CN         "退料速度"
+
+#define LEVELING_CONF_TITLE_CN        "调平设置"
+#define LEVELING_PARA_CONF_CN         "调平设置"
+#define LEVELING_DELTA_CN             "delta机型设置"
+#define LEVELING_XYZ_CN               "手动调平坐标设置"
+
+#define LEVELING_PARA_CONF_TITLE_CN   "调平参数"
+#define AUTO_LEVELING_ENABLE_CN       "自动调平"
+#define BLTOUCH_LEVELING_ENABLE_CN    "启动BLtouch"
+#define PROBE_PORT_CN                 "调平探针接口"
+#define PROBE_X_OFFSET_CN             "探针X方向偏移"
+#define PROBE_Y_OFFSET_CN             "探针Y方向偏移"
+#define PROBE_Z_OFFSET_CN             "探针Z方向偏移"
+#define PROBE_XY_SPEED_CN             "探针XY方向移动速度"
+#define PROBE_Z_SPEED_CN              "探针Z方向移动速度"
+#define ENABLE_CN                     "是"
+#define DISABLE_CN                    "否"
+#define Z_MIN_CN                      "ZMin"
+#define Z_MAX_CN                      "ZMax"
+
+#define DELTA_LEVEL_CONF_TITLE_CN     "Delta机器参数"
+#define DELTA_LEVEL_CONF_CN           "Delta机器调平"
+#define DELTA_MACHINE_RADIUS_CN       "机器半径"
+#define DELTA_DIAGONAL_ROD_CN         "机器杆长"
+#define DELTA_PRINT_RADIUS_CN         "打印半径"
+#define DELTA_HEIGHT_CN               "打印高度"
+#define SMOOTH_ROD_OFFSET_CN          "滑块偏移"
+#define EFFECTOR_OFFSET_CN            "效应器偏移"
+#define CALIBRATION_RADIUS_CN         "调平半径"
+
+#define XYZ_LEVEL_CONF_TITLE_CN       "XYZ机器参数"
+#define PROBE_REACH_MAX_LEFT_CN       "探针达到最左位置"
+#define PROBE_REACH_MAX_RIGHT_CN      "探针达到最右位置"
+#define PROBE_REACH_MAX_FRONT_CN      "探针达到最前位置"
+#define PROBE_REACH_MAX_BACK_CN       "探针达到最后位置"
+
+#define TEMPERATURE_CONF_TITLE_CN     "机器参数>温度设置"
+#define NOZZLE_CONF_CN                "喷头设置"
+#define HOTBED_CONF_CN                "热床设置"
+#define PREHEAT_TEMPER_CN             "预设温度"
+
+#define NOZZLE_CONF_TITLE_CN          "机器参数>喷头设置"
+#define NOZZLECNT_CN                  "喷头数量"
+#define NOZZLE_TYPE_CN                "E0温感类型"
+#define NOZZLE_ADJUST_TYPE_CN         "PID调温"
+#define NOZZLE_MIN_TEMPERATURE_CN     "最低温度"
+#define NOZZLE_MAX_TEMPERATURE_CN     "最高温度"
+#define EXTRUD_MIN_TEMPER_CN          "最低挤出温度"
+
+#define HOTBED_CONF_TITLE_CN          "机器参数>热床设置"
+#define HOTBED_ADJUST_CN              "PID调温"
+#define HOTBED_MIN_TEMPERATURE_CN     "最低温度"
+#define HOTBED_MAX_TEMPERATURE_CN     "最高温度"
+
+#define MOTOR_CONF_TITLE_CN           "机器参数>电机设置"
+#define MAXFEEDRATE_CONF_CN           "最大速度设置"
+#define ACCELERATION_CONF_CN          "加速度设置"
+#define JERKCONF_CN                   "突变速度设置"
+#define STEPSCONF_CN                  "脉冲设置"
+#define TMC_CURRENT_CN                "TMC 驱动电流设置"
+#define TMC_STEP_MODE_CN              "TMC 驱动模式设置"
+#define MOTORDIRCONF_CN               "电机方向设置"
+#define HOMEFEEDRATECONF_CN           "归零速度设置"
+
+#define MAXFEEDRATE_CONF_TITLE_CN     "机器参数>最大速度"
+#define X_MAXFEEDRATE_CN              "X轴最大速度"
+#define Y_MAXFEEDRATE_CN              "Y轴最大速度"
+#define Z_MAXFEEDRATE_CN              "Z轴最大速度"
+#define E0_MAXFEEDRATE_CN             "E0轴最大速度"
+#define E1_MAXFEEDRATE_CN             "E1轴最大速度"
+
+#define ACCELERATION_CONF_TITLE_CN    "机器参数>加速度"
+#define PRINT_ACCELERATION_CN         "打印加速度"
+#define RETRACT_ACCELERATION_CN       "回抽加速度"
+#define TRAVEL_ACCELERATION_CN        "空载加速度"
+#define X_ACCELERATION_CN             "X轴加速度"
+#define Y_ACCELERATION_CN             "Y轴加速度"
+#define Z_ACCELERATION_CN             "Z轴加速度"
+#define E0_ACCELERATION_CN            "E0轴加速度"
+#define E1_ACCELERATION_CN            "E1轴加速度"
+
+#define JERK_CONF_TITLE_CN            "机器参数>突变速度"
+#define X_JERK_CN                     "X轴突变速度"
+#define Y_JERK_CN                     "Y轴突变速度"
+#define Z_JERK_CN                     "Z轴突变速度"
+#define E_JERK_CN                     "E轴突变速度"
+
+#define STEPS_CONF_TITLE_CN           "机器参数>脉冲设置"
+#define X_STEPS_CN                    "X轴脉冲"
+#define Y_STEPS_CN                    "Y轴脉冲"
+#define Z_STEPS_CN                    "Z轴脉冲"
+#define E0_STEPS_CN                   "E0轴脉冲"
+#define E1_STEPS_CN                   "E1轴脉冲"
+
+#define TMC_CURRENT_CONF_TITLE_CN   "机器参数>TMC电流设置"
+#define X_TMC_CURRENT_CN            "X轴电流(毫安)"
+#define Y_TMC_CURRENT_CN            "Y轴电流(毫安)"
+#define Z_TMC_CURRENT_CN            "Z轴电流(毫安)"
+#define E0_TMC_CURRENT_CN           "E0轴电流(毫安)"
+#define E1_TMC_CURRENT_CN           "E1轴电流(毫安)"
+
+#define TMC_MODE_CONF_TITLE_CN  "机器参数>TMC模式设置"
+#define X_TMC_MODE_CN           "X轴是否使能静音模式"
+#define Y_TMC_MODE_CN           "Y轴是否使能静音模式"
+#define Z_TMC_MODE_CN           "Z轴是否使能静音模式"
+#define E0_TMC_MODE_CN          "E0轴是否使能静音模式"
+#define E1_TMC_MODE_CN          "E1轴是否使能静音模式"
+
+#define MOTORDIR_CONF_TITLE_CN          "机器参数>电机方向"
+#define X_MOTORDIR_CN                   "X轴电机方向"
+#define Y_MOTORDIR_CN                   "Y轴电机方向"
+#define Z_MOTORDIR_CN                   "Z轴电机方向"
+#define E0_MOTORDIR_CN                  "E0轴电机方向"
+#define E1_MOTORDIR_CN                  "E1轴电机方向"
+#define INVERT_P_CN                     "正向"
+#define INVERT_N_CN                     "反向"
+
+#define HOMEFEEDRATE_CONF_TITLE_CN      "机器参数>归零速度"
+#define X_HOMESPEED_CN                  "XY轴归零速度"
+#define Y_HOMESPEED_CN                  "Y轴归零速度"
+#define Z_HOMESPEED_CN                  "Z轴归零速度"
+
+#define ADVANCED_CONF_TITLE_CN          "机器参数>高级设置"
+#define PWROFF_DECTION_CN               "断电检测模块"
+#define PWROFF_AFTER_PRINT_CN           "启动打完关机功能"
+#define HAVE_UPS_CN                     "机器配备UPS电源"
+#define Z2_AND_Z2ENDSTOP_CONF_CN        "双Z轴双限位功能设置"
+#define ENABLE_PINS_CONF_CN             "电机使能脚电平设置"
+
+#define Z2_AND_Z2ENDSTOP_CONF_TITLE_CN  "双z双限位设置"
+#define Z2_ENABLE_CN                    "启用Z2轴"
+#define Z2_ENDSTOP_CN                   "启用Z2限位"
+#define Z2_PORT_CN                      "Z2限位接口"
+
+#define ENABLE_PINS_CONF_TITLE_CN       "电机使能脚电平"
+#define X_ENABLE_PINS_INVERT_CN         "X轴电机使能电平"
+#define Y_ENABLE_PINS_INVERT_CN         "Y轴电机使能电平"
+#define Z_ENABLE_PINS_INVERT_CN         "Z轴电机使能电平"
+#define E_ENABLE_PINS_INVERT_CN         "E轴电机使能电平"
+
+#define PAUSE_POSITION_CN    "打印暂停位置设置"
+#define PAUSE_POSITION_X_CN  "X轴暂停位置(绝对位置,-1无效)"
+#define PAUSE_POSITION_Y_CN  "Y轴暂停位置(绝对位置,-1无效)"
+#define PAUSE_POSITION_Z_CN  "Z轴暂停位置(相对位置,-1无效)"
 #define TOOL_TEXT_CN                "工具"
 #define PREHEAT_TEXT_CN             "预热"
 #define MOVE_TEXT_CN                "移动"
@@ -98,6 +303,8 @@
 #define MOTOR_OFF_TEXT_CN         "关闭电机"
 #define MOTOR_OFF_XY_TEXT_CN      "关闭XY"
 #define SHUTDOWN_TEXT_CN          "关机"
+#define MACHINE_PARA_CN           "机器参数"
+#define EEPROM_SETTINGS_CN        "Eeprom设置"
 
 #define U_DISK_TEXT_CN            "U盘"
 #define SD_CARD_TEXT_CN           "SD卡"
@@ -249,16 +456,24 @@
 #define PRINTING_OPERATION_GBK      "操作"
 #define PRINTING_PAUSE_GBK          "暂停"
 
-#define MESSEGE_PAUSING_CN          "暂停中..."
-#define MESSEGE_CHANGING_CN         "等待换料开始..."
-#define MESSEGE_UNLOAD_CN           "退料中,请稍等..."
-#define MESSEGE_WAITING_CN          "点击按钮恢复打印"
-#define MESSEGE_INSERT_CN           "装载耗材后,点击按钮开始打印"
-#define MESSEGE_LOAD_CN             "进料中,请稍等..."
-#define MESSEGE_PURGE_CN            "等待挤出..."
-#define MESSEGE_RESUME_CN           "等待恢复打印..."
-#define MESSEGE_HEAT_CN             "按下按钮,加热喷头"
-#define MESSEGE_HEATING_CN          "喷头加热中,请等待..."
-#define MESSEGE_OPTION_CN           "挤出更多还是继续打印?"
-#define MESSEGE_PURGE_MORE_CN       "挤出"
-#define MESSEGE_CONTINUE_PRINT_CN   "打印"
+#define MESSAGE_PAUSING_CN        "暂停中..."
+#define MESSAGE_CHANGING_CN       "等待换料开始..."
+#define MESSAGE_UNLOAD_CN         "退料中,请稍等..."
+#define MESSAGE_WAITING_CN        "点击按钮恢复打印"
+#define MESSAGE_INSERT_CN         "装载耗材后,点击按钮开始打印"
+#define MESSAGE_LOAD_CN           "进料中,请稍等..."
+#define MESSAGE_PURGE_CN          "等待挤出..."
+#define MESSAGE_RESUME_CN         "等待恢复打印..."
+#define MESSAGE_HEAT_CN           "按下按钮,加热喷头"
+#define MESSAGE_HEATING_CN        "喷头加热中,请等待..."
+#define MESSAGE_OPTION_CN         "挤出更多还是继续打印?"
+#define MESSAGE_PURGE_MORE_CN     "挤出"
+#define MESSAGE_CONTINUE_PRINT_CN "打印"
+#define EEPROM_SETTINGS_TITLE_CN  "EEPROM 设置"
+#define EEPROM_SETTINGS_STORE_CN  "保存参数至EEPROM"
+#define EEPROM_SETTINGS_READ_CN   "读取EEPROM参数"
+#define EEPROM_SETTINGS_REVERT_CN "恢复默认参数"
+
+#define EEPROM_STORE_TIPS_CN  "是否保存参数到EEPROM?"
+#define EEPROM_READ_TIPS_CN   "是否使用EEPROM参数?"
+#define EEPROM_REVERT_TIPS_CN "是否恢复默认参数?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h
index 75d1fd539d8b12c9c0fc03583dffbf5684674122..289874c6baf112e002bb104d3db7ea796ed24617 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_sp.h
@@ -98,6 +98,8 @@
 #define MOTOR_OFF_TEXT_SP       "Apagar motor"
 #define MOTOR_OFF_XY_TEXT_SP    "Off-XY"
 #define SHUTDOWN_TEXT_SP        "Apagar"
+#define MACHINE_PARA_SP         "Config"
+#define EEPROM_SETTINGS_SP      "Eeprom Set"
 
 #define U_DISK_TEXT_SP              "PENDRIVE"
 #define SD_CARD_TEXT_SP             "SD"
@@ -245,9 +247,9 @@
 #define DIALOG_PRINT_MODEL_SP       "¿Está seguro?"
 #define DIALOG_CANCEL_PRINT_SP      "¿Está seguro que desea detener la impresión?"
 
-#define DIALOG_RETRY_SP               "Reintentar"
-#define DIALOG_STOP_SP                "Stop"
-#define DIALOG_REPRINT_FROM_BREAKPOINT_SP   "Reprint from breakpoint?"
+#define DIALOG_RETRY_SP             "Reintentar"
+#define DIALOG_STOP_SP              "Stop"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_SP "Reprint from breakpoint?"
 //#define DIALOG_UNBIND_PRINTER_SP    "Unbind the printer?"
 #define DIALOG_ERROR_TIPS1_SP         "Error:archivo no encontrado, \npor favor insertar SD o disco USB."
 #define DIALOG_ERROR_TIPS2_SP         "error:transacción fallida, \nconfigurar  baudrate del \ndisplay para la placa base!"
@@ -260,20 +262,28 @@
 #define DIALOG_REPRINT_SP             "Print again"
 #define DIALOG_WIFI_ENABLE_TIPS_SP    "The wifi module is being configured,\nplease wait a moment....."
 
-#define PRINTING_SP                 "Imprimiendo"
-#define PRINTING_AJUSTES_SP         "Ajustes"
-#define PRINTING_PAUSAR_SP          "Pausar"
+#define PRINTING_SP               "Imprimiendo"
+#define PRINTING_AJUSTES_SP       "Ajustes"
+#define PRINTING_PAUSAR_SP        "Pausar"
+
+#define MESSAGE_PAUSING_SP        "Aparcando..."
+#define MESSAGE_CHANGING_SP       "Esperando para iniciar el cambio de filamento"
+#define MESSAGE_UNLOAD_SP         "Espere para liberar el filamento"
+#define MESSAGE_WAITING_SP        "Pulsar el botón para reanudar impresión"
+#define MESSAGE_INSERT_SP         "Inserte el filamento y pulse el botón para continuar..."
+#define MESSAGE_LOAD_SP           "Espere para purgar el filamento"
+#define MESSAGE_PURGE_SP          "Espere para purgar el filamento"
+#define MESSAGE_RESUME_SP         "Esperando impresora para reanudar..."
+#define MESSAGE_HEAT_SP           "Pulse el botón para calentar la boquilla"
+#define MESSAGE_HEATING_SP        "Calentando boquilla Espere por favor..."
+#define MESSAGE_OPTION_SP         "¿Purgar más o continuar con la impresión?"
+#define MESSAGE_PURGE_MORE_SP     "Purga"
+#define MESSAGE_CONTINUE_PRINT_SP "Impresión"
+#define EEPROM_SETTINGS_TITLE_SP  "Configuraciones EEPROM"
+#define EEPROM_SETTINGS_STORE_SP  "Guardar configuración en EEPROM"
+#define EEPROM_SETTINGS_READ_SP   "Leer la configuración de EEPROM"
+#define EEPROM_SETTINGS_REVERT_SP "Revert settings to factory defaults"
 
-#define MESSEGE_PAUSING_SP          "Aparcando..."
-#define MESSEGE_CHANGING_SP         "Esperando para iniciar el cambio de filamento"
-#define MESSEGE_UNLOAD_SP           "Espere para liberar el filamento"
-#define MESSEGE_WAITING_SP          "Pulsar el botón para reanudar impresión"
-#define MESSEGE_INSERT_SP           "Inserte el filamento y pulse el botón para continuar..."
-#define MESSEGE_LOAD_SP             "Espere para purgar el filamento"
-#define MESSEGE_PURGE_SP            "Espere para purgar el filamento"
-#define MESSEGE_RESUME_SP           "Esperando impresora para reanudar..."
-#define MESSEGE_HEAT_SP             "Pulse el botón para calentar la boquilla"
-#define MESSEGE_HEATING_SP          "Calentando boquilla Espere por favor..."
-#define MESSEGE_OPTION_SP           "¿Purgar más o continuar con la impresión?"
-#define MESSEGE_PURGE_MORE_SP       "Purga"
-#define MESSEGE_CONTINUE_PRINT_SP   "Impresión"
+#define EEPROM_STORE_TIPS_SP  "¿Guardar ajustes en EEPROM?"
+#define EEPROM_READ_TIPS_SP   "Leer la configuración de EEPROM?"
+#define EEPROM_REVERT_TIPS_SP "Revert settings to factory defaults?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..19bd511d9a38b538527ccc9b5b908a11d6948eae 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_Language_t_cn.h
@@ -0,0 +1,480 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+//***************繁体中文**********************//
+#define NEXT_T_CN                       "下一頁"
+#define PREVIOUS_T_CN                   "上一頁"
+#define DEFAULT_T_CN                    "默認值"
+#define KEY_BACK_T_CN                   "退格"
+#define KEY_REST_T_CN                   "重置"
+#define KEY_CONFIRM_T_CN                "確定"
+
+#define MACHINE_PARA_TITLE_T_CN         "機器參數"
+#define MACHINE_TYPE_CNOFIG_T_CN        "機器設置"
+#define TEMPERATURE_CONFIG_T_CN         "溫度設置"
+#define MOTOR_CONFIG_T_CN               "電機設置"
+#define ADVANCE_CONFIG_T_CN             "高級設置"
+
+#define MACHINE_CONFIG_TITLE_T_CN       "機器參數>機器配置"
+#define MACHINE_TYPE_T_CN               "機型選擇"
+#define MACHINE_STROKE_T_CN             "行程設置"
+#define MACHINE_HOMEDIR_T_CN            "歸零方向"
+#define MACHINE_ENDSTOP_TYPE_T_CN       "限位開關類型"
+#define MACHINE_FILAMENT_CONFIG_T_CN    "換料設置"
+#define MACHINE_LEVELING_CONFIG_T_CN    "調平設置"
+
+#define MACHINE_TYPE_CONFIG_TITLE_T_CN  "機器參數>機型選擇"
+#define MACHINE_TYPE_XYZ_T_CN           "XYZæ©Ÿåž‹"
+#define MACHINE_TYPE_DELTA_T_CN         "Deltaæ©Ÿåž‹"
+#define MACHINE_TYPE_COREXY_T_CN        "Corexyæ©Ÿåž‹"
+
+#define MACHINE_STROKE_CONF_TITLE_T_CN  "機器參數>機器行程"
+#define X_MAX_LENGTH_T_CN               "X軸最大行程"
+#define Y_MAX_LENGTH_T_CN               "Y軸最大行程"
+#define Z_MAX_LENGTH_T_CN               "Z軸最大行程"
+
+#define X_MIN_LENGTH_T_CN               "X軸最小行程"
+#define Y_MIN_LENGTH_T_CN               "Y軸最小行程"
+#define Z_MIN_LENGTH_T_CN               "Z軸最小行程"
+
+#define HOME_DIR_CONF_TITLE_T_CN        "機器參數>歸零方向"
+#define HOME_DIR_X_T_CN                 "X軸歸零方向"
+#define HOME_DIR_Y_T_CN                 "Y軸歸零方向"
+#define HOME_DIR_Z_T_CN                 "Z軸歸零方向"
+#define HOME_MIN_T_CN                   "MIN"
+#define HOME_MAX_T_CN                   "MAX"
+
+#define ENDSTOP_CONF_TITLE_T_CN         "機器參數>限位開關"
+#define MIN_ENDSTOP_X_T_CN              "X軸最小限位"
+#define MIN_ENDSTOP_Y_T_CN              "Y軸最小限位"
+#define MIN_ENDSTOP_Z_T_CN              "Z軸最小限位"
+#define MAX_ENDSTOP_X_T_CN              "X軸最大限位"
+#define MAX_ENDSTOP_Y_T_CN              "Y軸最大限位"
+#define MAX_ENDSTOP_Z_T_CN              "Z軸最大限位"
+#define ENDSTOP_FIL_T_CN                "斷料開關類型"
+#define ENDSTOP_LEVEL_T_CN              "調平開關類型"
+#define ENDSTOP_OPENED_T_CN             "常開"
+#define ENDSTOP_CLOSED_T_CN             "常閉"
+
+#define FILAMENT_CONF_TITLE_T_CN        "換料設置"
+#define FILAMENT_IN_TEMPERATURE_T_CN    "進料溫度"
+#define FILAMENT_IN_LENGTH_T_CN         "進料長度"
+#define FILAMENT_IN_SPEED_T_CN          "進料速度"
+#define FILAMENT_OUT_TEMPERATURE_T_CN   "退料溫度"
+#define FILAMENT_OUT_LENGTH_T_CN        "退料長度"
+#define FILAMENT_OUT_SPEED_T_CN         "退料速度"
+
+#define LEVELING_CONF_TITLE_T_CN        "調平設置"
+#define LEVELING_PARA_CONF_T_CN         "調平設置"
+#define LEVELING_DELTA_T_CN             "delta機型設置"
+#define LEVELING_XYZ_T_CN               "手動調平坐標設置"
+
+#define LEVELING_PARA_CONF_TITLE_T_CN   "調平參數"
+#define AUTO_LEVELING_ENABLE_T_CN       "自動調平"
+#define BLTOUCH_LEVELING_ENABLE_T_CN    "å•Ÿå‹•BLtouch"
+#define PROBE_PORT_T_CN                 "調平探針接口"
+#define PROBE_X_OFFSET_T_CN             "探針X方向偏移"
+#define PROBE_Y_OFFSET_T_CN             "探针Y方向偏移"
+#define PROBE_Z_OFFSET_T_CN             "探针Z方向偏移"
+#define PROBE_XY_SPEED_T_CN             "探针XY方向移動速度"
+#define PROBE_Z_SPEED_T_CN              "探针Z方向移動速度"
+#define ENABLE_T_CN                     "是"
+#define DISABLE_T_CN                    "否"
+#define Z_MIN_T_CN                      "ZMin"
+#define Z_MAX_T_CN                      "ZMax"
+
+#define DELTA_LEVEL_CONF_TITLE_T_CN     "Delta機器參數"
+#define DELTA_LEVEL_CONF_T_CN           "Delta機器調平"
+#define DELTA_MACHINE_RADIUS_T_CN       "機器半徑"
+#define DELTA_DIAGONAL_ROD_T_CN         "機器桿長"
+#define DELTA_PRINT_RADIUS_T_CN         "打印半徑"
+#define DELTA_HEIGHT_T_CN               "打印高度"
+#define SMOOTH_ROD_OFFSET_T_CN          "滑塊偏移"
+#define EFFECTOR_OFFSET_T_CN            "效應器偏移"
+#define CALIBRATION_RADIUS_T_CN         "調平半徑"
+
+#define XYZ_LEVEL_CONF_TITLE_T_CN       "XYZ機器參數"
+#define PROBE_REACH_MAX_LEFT_T_CN       "探针達到最左位置"
+#define PROBE_REACH_MAX_RIGHT_T_CN      "探针達到最右位置"
+#define PROBE_REACH_MAX_FRONT_T_CN      "探针達到最前位置"
+#define PROBE_REACH_MAX_BACK_T_CN       "探针達到最後位置"
+
+#define TEMPERATURE_CONF_TITLE_T_CN     "機器參數>溫度設置"
+#define NOZZLE_CONF_T_CN                "噴頭設置"
+#define HOTBED_CONF_T_CN                "熱床設置"
+#define PREHEAT_TEMPER_T_CN             "預設溫度"
+
+#define NOZZLE_CONF_TITLE_T_CN          "機器參數>噴頭設置"
+#define NOZZLECNT_T_CN                  "噴頭數量"
+#define NOZZLE_TYPE_T_CN                "E0溫感類型"
+#define NOZZLE_ADJUST_TYPE_T_CN         "PID調溫"
+#define NOZZLE_MIN_TEMPERATURE_T_CN     "最低溫度"
+#define NOZZLE_MAX_TEMPERATURE_T_CN     "最高溫度"
+#define EXTRUD_MIN_TEMPER_T_CN          "最低擠出溫度"
+
+#define HOTBED_CONF_TITLE_T_CN          "機器參數>熱床設置"
+#define HOTBED_ADJUST_T_CN              "PID調溫"
+#define HOTBED_MIN_TEMPERATURE_T_CN     "最低溫度"
+#define HOTBED_MAX_TEMPERATURE_T_CN     "最高溫度"
+
+#define MOTOR_CONF_TITLE_T_CN           "機器參數>電機設置"
+#define MAXFEEDRATE_CONF_T_CN           "最大速度設置"
+#define ACCELERATION_CONF_T_CN          "加速度設置"
+#define JERKCONF_T_CN                   "突變速度設置"
+#define STEPSCONF_T_CN                  "脈沖設置"
+#define TMC_CURRENT_T_CN                "TMC 驅動電流設置"
+#define TMC_STEP_MODE_T_CN              "TMC 驅動模式設置"
+#define MOTORDIRCONF_T_CN               "電機方向設置"
+#define HOMEFEEDRATECONF_T_CN           "歸零速度設置"
+
+#define MAXFEEDRATE_CONF_TITLE_T_CN     "機器參數>最大速度"
+#define X_MAXFEEDRATE_T_CN              "X軸最大速度"
+#define Y_MAXFEEDRATE_T_CN              "Y軸最大速度"
+#define Z_MAXFEEDRATE_T_CN              "Z軸最大速度"
+#define E0_MAXFEEDRATE_T_CN             "E0軸最大速度"
+#define E1_MAXFEEDRATE_T_CN             "E1軸最大速度"
+
+#define ACCELERATION_CONF_TITLE_T_CN    "機器參數>加速度"
+#define PRINT_ACCELERATION_T_CN         "打印加速度"
+#define RETRACT_ACCELERATION_T_CN       "回抽加速度"
+#define TRAVEL_ACCELERATION_T_CN        "空載加速度"
+#define X_ACCELERATION_T_CN             "X軸加速度"
+#define Y_ACCELERATION_T_CN             "Y軸加速度"
+#define Z_ACCELERATION_T_CN             "Z軸加速度"
+#define E0_ACCELERATION_T_CN            "E0軸加速度"
+#define E1_ACCELERATION_T_CN            "E1軸加速度"
+
+#define JERK_CONF_TITLE_T_CN            "機器參數>突變速度"
+#define X_JERK_T_CN                     "X軸突變速度"
+#define Y_JERK_T_CN                     "Y軸突變速度"
+#define Z_JERK_T_CN                     "Z軸突變速度"
+#define E_JERK_T_CN                     "E軸突變速度"
+
+#define STEPS_CONF_TITLE_T_CN           "機器參數>脈衝設置"
+#define X_STEPS_T_CN                    "X軸脈沖"
+#define Y_STEPS_T_CN                    "Y軸脈沖"
+#define Z_STEPS_T_CN                    "Z軸脈沖"
+#define E0_STEPS_T_CN                   "E0軸脈沖"
+#define E1_STEPS_T_CN                   "E1軸脈沖"
+
+#define TMC_CURRENT_CONF_TITLE_T_CN     "機器參數>TMC電流設置"
+#define X_TMC_CURRENT_T_CN              "X軸電流(毫安)"
+#define Y_TMC_CURRENT_T_CN              "Y軸電流(毫安)"
+#define Z_TMC_CURRENT_T_CN              "Z軸電流(毫安)"
+#define E0_TMC_CURRENT_T_CN             "E0軸電流(毫安)"
+#define E1_TMC_CURRENT_T_CN             "E1軸電流(毫安)"
+
+#define TMC_MODE_CONF_TITLE_T_CN        "機器參數>TMC模式設置"
+#define X_TMC_MODE_T_CN                 "X軸是否使能靜音模式"
+#define Y_TMC_MODE_T_CN                 "Y軸是否使能靜音模式"
+#define Z_TMC_MODE_T_CN                 "Z軸是否使能靜音模式"
+#define E0_TMC_MODE_T_CN                "E0軸是否使能靜音模式"
+#define E1_TMC_MODE_T_CN                "E1軸是否使能靜音模式"
+
+#define MOTORDIR_CONF_TITLE_T_CN        "機器參數>電機方向"
+#define X_MOTORDIR_T_CN                 "X軸電機方向"
+#define Y_MOTORDIR_T_CN                 "Y軸電機方向"
+#define Z_MOTORDIR_T_CN                 "Z軸電機方向"
+#define E0_MOTORDIR_T_CN                "E0軸電機方向"
+#define E1_MOTORDIR_T_CN                "E1軸電機方向"
+#define INVERT_P_T_CN                   "正向"
+#define INVERT_N_T_CN                   "反向"
+
+#define HOMEFEEDRATE_CONF_TITLE_T_CN    "機器參數>歸零速度"
+#define X_HOMESPEED_T_CN                "XY軸歸零速度"
+#define Y_HOMESPEED_T_CN                "Y軸歸零速度"
+#define Z_HOMESPEED_T_CN                "Z軸歸零速度"
+
+#define ADVANCED_CONF_TITLE_T_CN        "機器參數>高級設置"
+#define PWROFF_DECTION_T_CN             "斷電檢測模塊"
+#define PWROFF_AFTER_PRINT_T_CN         "啟動打完關機功能"
+#define HAVE_UPS_T_CN                   "機器配備UPS電壓"
+#define Z2_AND_Z2ENDSTOP_CONF_T_CN      "雙z軸雙限位功能設置"
+#define ENABLE_PINS_CONF_T_CN           "電機使能腳電平設置"
+
+#define Z2_AND_Z2ENDSTOP_CONF_TITLE_T_CN  "雙z軸雙限位設置"
+#define Z2_ENABLE_T_CN                    "啟用Z2軸"
+#define Z2_ENDSTOP_T_CN                   "啟用Z2限位"
+#define Z2_PORT_T_CN                      "Z2限位接口"
+
+#define ENABLE_PINS_CONF_TITLE_T_CN     "電機使能腳電平"
+#define X_ENABLE_PINS_INVERT_T_CN       "X軸電機使能電平"
+#define Y_ENABLE_PINS_INVERT_T_CN       "Y軸電機使能電平"
+#define Z_ENABLE_PINS_INVERT_T_CN       "Z軸電機使能電平"
+#define E_ENABLE_PINS_INVERT_T_CN       "E軸電機使能電平"
+
+#define PAUSE_POSITION_T_CN             "打印暫停位置設置"
+#define PAUSE_POSITION_X_T_CN           "X軸暫停位置(絕對位置,-1無效)"
+#define PAUSE_POSITION_Y_T_CN           "Y軸暫停位置(絕對位置,-1無效)"
+#define PAUSE_POSITION_Z_T_CN           "Z軸暫停位置(相對位置,-1無效)"
+
+#define TOOL_TEXT_T_CN                  "工具"
+#define PREHEAT_TEXT_T_CN               "預熱"
+#define  MOVE_TEXT_T_CN                 "移動"
+#define HOME_TEXT_T_CN                  "回零"
+#define PRINT_TEXT_T_CN                 "打印"
+#define EXTRUDE_TEXT_T_CN               "擠出"
+#define LEVELING_TEXT_T_CN              "調平"
+#define AUTO_LEVELING_TEXT_T_CN         "自動調平"
+#define SET_TEXT_T_CN                   "設置"
+#define MORE_TEXT_T_CN                  "更多"
+
+#define ADD_TEXT_T_CN                   "增加"
+#define DEC_TEXT_T_CN                   "減少"
+#define EXTRUDER_1_TEXT_T_CN            "å™´é ­1"
+#define EXTRUDER_2_TEXT_T_CN            "å™´é ­2"
+#define HEATBED_TEXT_T_CN               "熱床"
+#define TEXT_1C_T_CN                    "1℃"
+#define TEXT_5C_T_CN                    "5℃"
+#define TEXT_10C_T_CN                   "10℃"
+#define CLOSE_TEXT_T_CN                 "關閉"
+
+#define BACK_TEXT_T_CN                  "返回"
+
+#define TOOL_PREHEAT_T_CN               "預熱"
+#define TOOL_EXTRUDE_T_CN               "擠出"
+#define TOOL_MOVE_T_CN                  "移動"
+#define TOOL_HOME_T_CN                  "回零"
+#define TOOL_LEVELING_T_CN              "調平"
+#define TOOL_AUTO_LEVELING_T_CN         "自動調平"
+#define TOOL_FILAMENT_T_CN              "換料"
+#define TOOL_MORE_T_CN                  "更多"
+
+#define AXIS_X_ADD_TEXT_T_CN            "X+"
+#define AXIS_X_DEC_TEXT_T_CN            "X-"
+#define AXIS_Y_ADD_TEXT_T_CN            "Y+"
+#define AXIS_Y_DEC_TEXT_T_CN            "Y-"
+#define AXIS_Z_ADD_TEXT_T_CN            "Z+"
+#define AXIS_Z_DEC_TEXT_T_CN            "Z-"
+#define TEXT_01MM_T_CN                  "0.1mm"
+#define TEXT_1MM_T_CN                   "1mm"
+#define TEXT_10MM_T_CN                  "10mm"
+
+#define HOME_X_TEXT_T_CN                "X"
+#define HOME_Y_TEXT_T_CN                "Y"
+#define HOME_Z_TEXT_T_CN                "Z"
+#define HOME_ALL_TEXT_T_CN              "回零"
+#define HOME_STOPMOVE_T_CN              "急停"
+
+#define PAGE_UP_TEXT_T_CN               "上一頁"
+#define PAGE_DOWN_TEXT_T_CN             "下一頁"
+
+#define EXTRUDER_IN_TEXT_T_CN           "進料"
+#define EXTRUDER_OUT_TEXT_T_CN          "退料"
+#define EXTRUDE_1MM_TEXT_T_CN           "1mm"
+#define EXTRUDE_5MM_TEXT_T_CN           "5mm"
+#define EXTRUDE_10MM_TEXT_T_CN          "10mm"
+#define EXTRUDE_LOW_SPEED_TEXT_T_CN     "低速"
+#define EXTRUDE_MEDIUM_SPEED_TEXT_T_CN  "常速"
+#define EXTRUDE_HIGH_SPEED_TEXT_T_CN    "高速"
+
+#define LEVELING_POINT1_TEXT_T_CN       "第一點"
+#define LEVELING_POINT2_TEXT_T_CN       "第二點"
+#define LEVELING_POINT3_TEXT_T_CN       "第三點"
+#define LEVELING_POINT4_TEXT_T_CN       "第四點"
+#define LEVELING_POINT5_TEXT_T_CN       "第五點"
+
+#define FILESYS_TEXT_T_CN               "文件系統"
+#define WIFI_TEXT_T_CN                  "WIFI"
+#define FAN_TEXT_T_CN                   "風扇"
+#define ABOUT_TEXT_T_CN                 "關於"
+#define BREAK_POINT_TEXT_T_CN           "斷點續打"
+#define FILAMENT_TEXT_T_CN              "換料"
+#define LANGUAGE_TEXT_T_CN              "語言"
+#define MOTOR_OFF_TEXT_T_CN             "關閉電機"
+#define MOTOR_OFF_XY_TEXT_T_CN          "關閉XY"
+#define SHUTDOWN_TEXT_T_CN              "關機"
+#define MACHINE_PARA_T_CN               "機器參數"
+#define EEPROM_SETTINGS_T_CN            "Eeprom設置"
+
+#define U_DISK_TEXT_T_CN                "U盤"
+#define SD_CARD_TEXT_T_CN               "SD卡"
+#define WIFI_NAME_TEXT_T_CN             "無線網絡:"
+#define WIFI_KEY_TEXT_T_CN              "密碼: "
+#define WIFI_IP_TEXT_T_CN               "IP: "
+#define WIFI_AP_TEXT_T_CN               "狀態: AP"
+#define WIFI_STA_TEXT_T_CN              "狀態: STA"
+#define WIFI_CONNECTED_TEXT_T_CN        "已連接"
+#define WIFI_DISCONNECTED_TEXT_T_CN     "未連接"
+#define WIFI_EXCEPTION_TEXT_T_CN        "模塊異常"
+#define CLOUD_TEXT_T_CN                 "雲服務"
+#define CLOUD_BIND_T_CN                 "已綁定"
+#define CLOUD_UNBIND_T_CN               "解綁"
+#define CLOUD_UNBINDING_T_CN            "解绑中"
+#define CLOUD_DISCONNECTED_T_CN         "未連接"
+#define CLOUD_UNBINDED_T_CN             "未綁定"
+#define CLOUD_BINDED_T_CN               "已綁定"
+#define CLOUD_DISABLE_T_CN              "已禁用"
+
+#define FAN_ADD_TEXT_T_CN               "增加"
+#define FAN_DEC_TEXT_T_CN               "減少"
+#define FAN_OPEN_TEXT_T_CN              "100%"
+#define FAN_HALF_TEXT_T_CN              "50%"
+#define FAN_CLOSE_TEXT_T_CN             "關閉"
+#define FAN_TIPS1_TEXT_T_CN             "風扇"
+#define FAN_TIPS2_TEXT_T_CN             "FAN\nClose"
+
+#define FILAMENT_IN_TEXT_T_CN           "進料"
+#define FILAMENT_OUT_TEXT_T_CN          "退料"
+#define FILAMENT_EXT0_TEXT_T_CN         "å™´é ­1"
+#define FILAMENT_EXT1_TEXT_T_CN         "å™´é ­2"
+#define FILAMENT_HEAT_TEXT_T_CN         "預熱"
+#define FILAMENT_STOP_TEXT_T_CN         "停止"
+//#define FILAMENT_CHANGE_TEXT_T_CN     "準備換料"
+#define FILAMENT_TIPS2_TEXT_T_CN        "T:"
+#define FILAMENT_TIPS3_TEXT_T_CN        "正在進料"
+#define FILAMENT_TIPS4_TEXT_T_CN        "正在退料"
+#define FILAMENT_TIPS5_TEXT_T_CN        "溫度太低,請先預熱"
+#define FILAMENT_TIPS6_TEXT_T_CN        "換料完成"
+
+#if 0
+  #define FILAMENT_REPLAYS_IDLE_TEXT_T_CN "請按<進料>或<退料>進行換料!"
+  #define FILAMENT_CHANGE_TEXT_T_CN       "待打印機暫停后,請按<進料>或<退料>進行換料!"
+#endif
+
+  #define FILAMENT_CHANGE_TEXT_T_CN       "待打印機暫停后,\n請按<進料>或<退料>"
+
+#define FILAMENT_DIALOG_LOAD_HEAT_TIPS_T_CN       "準備進料,正在加熱,請稍等"
+#define FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_T_CN     "準備退料,正在加熱,請稍等"
+#define FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_T_CN   "加熱完成,請裝載耗材后,按<確定>開始進料"
+#define FILAMENT_DIALOG_LOAD_CONFIRM2_TIPS_T_CN   "請裝載耗,按<確定>開始進料!"
+#define FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_T_CN  "加熱完成,请按<確定>開始退料!"
+#define FILAMENT_DIALOG_LOADING_TIPS_T_CN         "正在進料,请等待耗材加載完成!"
+#define FILAMENT_DIALOG_UNLOADING_TIPS_T_CN       "正在退料,请等待耗材卸載完成!"
+#define FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_T_CN   "進料完成,请按<確定>返回"
+#define FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_T_CN "退料完成,请按<確定>返回"
+
+#define PRE_HEAT_EXT_TEXT_T_CN        "å™´é ­"
+#define PRE_HEAT_BED_TEXT_T_CN        "熱床"
+
+#define FILE_LOADING_T_CN             "正在載入......"
+#define NO_FILE_AND_CHECK_T_CN        "無文件!請插入sd卡/u盤!"
+#define NO_FILE_T_CN                  "無文件!"
+
+#define EXTRUDER_TEMP_TEXT_T_CN       "溫度"
+#define EXTRUDER_E_LENGTH1_TEXT_T_CN  "å™´é ­"
+#define EXTRUDER_E_LENGTH2_TEXT_T_CN  "å™´é ­"
+#define EXTRUDER_E_LENGTH3_TEXT_T_CN  "å™´é ­"
+
+#define ABOUT_TYPE_TEXT_T_CN          "Type: "
+#define ABOUT_VERSION_TEXT_T_CN       "Firmware: "
+#define ABOUT_WIFI_TEXT_T_CN          "Wifi: "
+
+#define PRINTING_OPERATION_T_CN       "操作"
+#define PRINTING_PAUSE_T_CN           "暫停"
+#define PRINTING_TEMP_T_CN            "溫度"
+#define PRINTING_CHANGESPEED_T_CN     "變速"
+#define PRINTING_RESUME_T_CN          "恢復"
+#define PRINTING_STOP_T_CN            "停止"
+#define PRINTING_MORE_T_CN            "更多"
+#define PRINTING_EXTRUDER_T_CN        "擠出"
+#define PRINTING_MOVE_T_CN            "移動"
+
+#define EXTRUDER_SPEED_T_CN           "擠出"
+#define MOVE_SPEED_T_CN               "移動"
+#define EXTRUDER_SPEED_STATE_T_CN     "擠出速度"
+#define MOVE_SPEED_STATE_T_CN         "移動速度"
+#define STEP_1PERCENT_T_CN            "1%%"
+#define STEP_5PERCENT_T_CN            "5%%"
+#define STEP_10PERCENT_T_CN           "10%%"
+
+#define ZOFFSET_T_CN                  "Z Offset"
+#define ZOFFSET_INC_T_CN              "增加"
+#define ZOFFSET_DEC_T_CN              "減少"
+
+#define TITLE_READYPRINT_T_CN         "準備打印"
+#define TITLE_PREHEAT_T_CN            "預熱"
+#define TITLE_MOVE_T_CN               "移動"
+#define TITLE_HOME_T_CN               "回零"
+#define TITLE_EXTRUDE_T_CN            "擠出"
+#define TITLE_LEVELING_T_CN           "調平"
+#define TITLE_SET_T_CN                "設置"
+#define TITLE_MORE_T_CN               "更多"
+#define TITLE_CHOOSEFILE_T_CN         "選擇文件"
+#define TITLE_PRINTING_T_CN           "正在打印"
+#define TITLE_OPERATION_T_CN          "操作"
+#define TITLE_ADJUST_T_CN             "調整"
+#define  TITLE_WIRELESS_T_CN          "無線網絡"
+#define  TITLE_FILAMENT_T_CN          "換料"
+#define TITLE_ABOUT_T_CN              "關於"
+#define TITLE_FAN_T_CN                "風扇"
+#define TITLE_LANGUAGE_T_CN           "語言"
+#define TITLE_PAUSE_T_CN              "暫停"
+#define TITLE_CHANGESPEED_T_CN        "變速"
+#define TITLE_CLOUD_TEXT_T_CN         "雲服務"
+#define TITLE_DIALOG_CONFIRM_T_CN     "確認"
+#define TITLE_FILESYS_T_CN            "文件系統"
+#define TITLE_ZOFFSET_T_CN            "Z Offset"
+
+#define AUTO_SHUTDOWN_T_CN            "自動關機"
+#define MANUAL_SHUTDOWN_T_CN          "手動關機"
+
+#define DIALOG_CONFIRM_T_CN           "確定"
+#define DIALOG_CANCLE_T_CN            "取消"
+#define DIALOG_OK_T_CN                "確認"
+#define DIALOG_RESET_T_CN             "重設"
+#define DIALOG_RETRY_T_CN             "重試"
+#define DIALOG_DISABLE_T_CN           "禁用"
+#define DIALOG_PRINT_MODEL_T_CN       "打印模型?"
+#define DIALOG_CANCEL_PRINT_T_CN      "停止打印?"
+#define DIALOG_RETRY_T_CN             "重試"
+#define DIALOG_STOP_T_CN              "停止"
+#define DIALOG_REPRINT_FROM_BREAKPOINT_T_CN "從斷點續打?"
+//#define DIALOG_UNBIND_PRINTER_T_CN    "解除綁定?"
+#define DIALOG_ERROR_TIPS1_T_CN       "錯誤:找不到文件,請插入sd卡/u盤!"
+#define DIALOG_ERROR_TIPS2_T_CN       "錯誤:通信失敗,請檢查波特率或主板硬件!"
+#define DIALOG_ERROR_TIPS3_T_CN       "錯誤:文件名或文件路徑太長!"
+#define DIALOG_CLOSE_MACHINE_T_CN     "正在關機......"
+#define DIALOG_UNBIND_PRINTER_T_CN    "解除綁定?"
+#define DIALOG_FILAMENT_NO_PRESS_T_CN "請先裝載耗材!"
+#define DIALOG_PRINT_FINISH_T_CN      "打印完成!"
+#define DIALOG_PRINT_TIME_T_CN        "打印時間: "
+#define DIALOG_REPRINT_T_CN           "再打印壹次"
+#define DIALOG_WIFI_ENABLE_TIPS_T_CN  "wifi模塊正在配置中,請稍等......"
+
+#define TEXT_VALUE_T_CN               "%d℃/%d℃"
+#define EXTRUDE_TEXT_VALUE_T_T_CN     ": %d℃"
+#define WIFI_RECONNECT_TEXT_T_CN      "重新連接"
+
+#define MESSAGE_PAUSING_T_CN          "暫停中..."
+#define MESSAGE_CHANGING_T_CN         "等待換料開始..."
+#define MESSAGE_UNLOAD_T_CN           "退料中,請稍等..."
+#define MESSAGE_WAITING_T_CN          "點擊按鈕恢復打印"
+#define MESSAGE_INSERT_T_CN           "裝載耗材後,點擊按鈕開始打印"
+#define MESSAGE_LOAD_T_CN             "進料中,請稍等..."
+#define MESSAGE_PURGE_T_CN            "等待擠出..."
+#define MESSAGE_RESUME_T_CN           "等待恢復打印..."
+#define MESSAGE_HEAT_T_CN             "按下按鈕,加熱噴頭"
+#define MESSAGE_HEATING_T_CN          "噴頭加熱中,請等待..."
+#define MESSAGE_OPTION_T_CN           "擠出更多還是繼續打印"
+#define MESSAGE_PURGE_MORE_T_CN       "擠出"
+#define MESSAGE_CONTINUE_PRINT_T_CN   "打印"
+
+#define EEPROM_SETTINGS_TITLE_T_CN    "EEPROM 設置"
+#define EEPROM_SETTINGS_STORE_T_CN    "保存參數至EEPROM"
+#define EEPROM_SETTINGS_READ_T_CN     "讀取EEPROM參數"
+#define EEPROM_SETTINGS_REVERT_T_CN   "恢復默認參數"
+
+#define EEPROM_STORE_TIPS_T_CN        "是否保存參數到EEPROM?"
+#define EEPROM_READ_TIPS_T_CN         "是否使用EEPROM參數?"
+#define EEPROM_REVERT_TIPS_T_CN       "是否恢復默認參數?"
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp b/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp
index 5da3dd16815058bfd39bc8430576a8af0249e87c..e8ac3f3519144bcf6d97f3535db61789963ea5b5 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_fsmc.cpp
@@ -22,7 +22,7 @@
 
 #include "../../../../inc/MarlinConfig.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
   #if defined(ARDUINO_ARCH_STM32F1) && PIN_EXISTS(FSMC_CS) // FSMC on 100/144 pins SoCs
 
@@ -270,4 +270,4 @@
 
     #endif // LCD_USE_DMA_FSMC
   #endif // ARDUINO_ARCH_STM32F1 && FSMC_CS_PIN
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp
index ac69bf06697d582d74fb0f6d9b54cd070ffc7a1f..f24f08e98e3aa0ae7758ac5285d1cf0e3d5fce8c 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.cpp
@@ -21,25 +21,28 @@
  */
 
 /**
- * @file lcd_lvgl_configuration.c
+ * @file tft_lvgl_configuration.cpp
  * @date    2020-02-21
  */
 
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
-#include "../../../../MarlinCore.h"
+#if ENABLED(TFT_LVGL_UI_SPI)
+  #include "SPI_TFT.h"
+#endif
 
 #include "tft_lvgl_configuration.h"
-#include "lvgl.h"
-#include "../../../../feature/touch/xpt2046.h"
 #include "draw_ready_print.h"
 #include "W25Qxx.h"
 #include "pic_manager.h"
-
 #include "mks_hardware_test.h"
 #include "draw_ui.h"
+#include <lvgl.h>
+
+#include "../../../../MarlinCore.h"
+#include "../../../../feature/touch/xpt2046.h"
 
 #if ENABLED(POWER_LOSS_RECOVERY)
   #include "../../../../feature/powerloss.h"
@@ -47,26 +50,13 @@
 
 #include <SPI.h>
 
-#if ENABLED(SPI_GRAPHICAL_TFT)
-  #include "SPI_TFT.h"
-#endif
-
-extern void LCD_IO_Init(uint8_t cs, uint8_t rs);
-extern void LCD_IO_WriteData(uint16_t RegValue);
-extern void LCD_IO_WriteReg(uint16_t Reg);
-extern void LCD_IO_WriteSequence(uint16_t *data, uint16_t length);
-extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count);
-
 #if HAS_SPI_FLASH_FONT
   extern void init_gb2312_font();
 #endif
 
 static lv_disp_buf_t disp_buf;
 #if ENABLED(SDSUPPORT)
-  extern void UpdatePic();
-  #if HAS_SPI_FLASH_FONT
-    extern void UpdateFont();
-  #endif
+  extern void UpdateAssets();
 #endif
 uint16_t DeviceCode = 0x9488;
 extern uint8_t sel_id;
@@ -96,6 +86,13 @@ void SysTick_Callback() {
   print_time_count();
 }
 
+#if DISABLED(TFT_LVGL_UI_SPI)
+
+extern void LCD_IO_Init(uint8_t cs, uint8_t rs);
+extern void LCD_IO_WriteData(uint16_t RegValue);
+extern void LCD_IO_WriteReg(uint16_t Reg);
+
+extern void LCD_IO_WriteMultiple(uint16_t color, uint32_t count);
 void tft_set_cursor(uint16_t x, uint16_t y) {
   LCD_IO_WriteReg(0x002A);
   LCD_IO_WriteData(x >> 8);
@@ -133,9 +130,9 @@ void tft_set_point(uint16_t x, uint16_t y, uint16_t point) {
   if ((x > 480) || (y > 320)) return;
   //}
   //**if ( (x>320)||(y>240) ) return;
-  tft_set_cursor(x, y); /*设置光标位置*/
+  tft_set_cursor(x, y);
 
-  LCD_WriteRAM_Prepare();   /* 开始写入GRAM*/
+  LCD_WriteRAM_Prepare();
   //LCD_WriteRAM(point);
   LCD_IO_WriteData(point);
 }
@@ -143,7 +140,7 @@ void tft_set_point(uint16_t x, uint16_t y, uint16_t point) {
 void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue) {
   /* Write 16-bit Index, then Write Reg */
   ClrCs
-    LCD_IO_WriteReg(LCD_Reg);
+  LCD_IO_WriteReg(LCD_Reg);
   /* Write 16-bit Reg */
   LCD_IO_WriteData(LCD_RegValue);
   SetCs
@@ -265,7 +262,6 @@ void LCD_Clear(uint16_t Color) {
 
 extern uint16_t ILI9488_ReadRAM();
 
-#if DISABLED(SPI_GRAPHICAL_TFT)
 
 void init_tft() {
   uint16_t i;
@@ -356,12 +352,10 @@ void init_tft() {
 
     LCD_IO_WriteReg(0x0036);
     //ILI9488_WriteData(0x0068);
-    //if (gCfgItems.overturn_180 != 0xEE)
-    //{
+    //if (gCfgItems.overturn_180 != 0xEE) {
     LCD_IO_WriteData(0x0068);
     //}
-    //else
-    //{
+    //else {
     //ILI9488_WriteData(0x00A8);
     //}
 
@@ -406,16 +400,22 @@ void init_tft() {
   }
 }
 
-#endif // if DISABLED(SPI_GRAPHICAL_TFT)
+#endif // !TFT_LVGL_UI_SPI
 
 extern uint8_t bmp_public_buf[17 * 1024];
+
 void tft_lvgl_init() {
+
   //uint16_t test_id=0;
   W25QXX.init(SPI_QUARTER_SPEED);
   //test_id=W25QXX.W25QXX_ReadID();
 
+  gCfgItems_init();
+  ui_cfg_init();
+  disp_language_init();
+
   //init tft first!
-  #if ENABLED(SPI_GRAPHICAL_TFT)
+  #if ENABLED(TFT_LVGL_UI_SPI)
     SPI_TFT.spi_init(SPI_FULL_SPEED);
     SPI_TFT.LCD_init();
   #else
@@ -423,20 +423,13 @@ void tft_lvgl_init() {
   #endif
 
   #if ENABLED(SDSUPPORT)
-    UpdatePic();
-    #if HAS_SPI_FLASH_FONT
-      UpdateFont();
-    #endif
+    UpdateAssets();
   #endif
+  mks_test_get();
 
-  gCfgItems_init();
-  ui_cfg_init();
-  disp_language_init();
   //spi_flash_read_test();
 
-  #if ENABLED(TOUCH_BUTTONS)
-    touch.init();
-  #endif
+  TERN_(TOUCH_BUTTONS, touch.init());
 
   lv_init();
 
@@ -465,33 +458,32 @@ void tft_lvgl_init() {
   filament_pin_setup();
 
   #if ENABLED(POWER_LOSS_RECOVERY)
-  if (recovery.valid()) {
-    if (gCfgItems.from_flash_pic == 1)
-      flash_preview_begin = 1;
-    else
-      default_preview_flg = 1;
+    if (recovery.valid()) {
+      if (gCfgItems.from_flash_pic == 1)
+        flash_preview_begin = 1;
+      else
+        default_preview_flg = 1;
 
-    uiCfg.print_state = REPRINTING;
+      uiCfg.print_state = REPRINTING;
 
-    memset(public_buf_m, 0, sizeof(public_buf_m));
-    strncpy(public_buf_m, recovery.info.sd_filename, sizeof(public_buf_m));
-    card.printLongPath(public_buf_m);
+      ZERO(public_buf_m);
+      strncpy(public_buf_m, recovery.info.sd_filename, sizeof(public_buf_m));
+      card.printLongPath(public_buf_m);
 
-    strncpy(list_file.long_name[sel_id], card.longFilename, sizeof(list_file.long_name[sel_id]));
+      strncpy(list_file.long_name[sel_id], card.longFilename, sizeof(list_file.long_name[sel_id]));
 
-    lv_draw_printing();
-  }
-  else
+      lv_draw_printing();
+    }
+    else
   #endif
-  lv_draw_ready_print();
+    lv_draw_ready_print();
 
-  #if ENABLED(MKS_TEST)
-    Test_GPIO();
-  #endif
+  if (mks_test_flag == 0x1E)
+    mks_gpio_test();
 }
 
 void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p) {
-  #if ENABLED(SPI_GRAPHICAL_TFT)
+  #if ENABLED(TFT_LVGL_UI_SPI)
     uint16_t i, width, height;
     uint16_t clr_temp;
     uint8_t tbuf[480 * 2];
@@ -525,7 +517,9 @@ void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * co
     lv_disp_flush_ready(disp);       /* Indicate you are ready with the flushing*/
 
     W25QXX.init(SPI_QUARTER_SPEED);
-  #else
+
+  #else // !TFT_LVGL_UI_SPI
+
     #if 1
       uint16_t i, width, height;
       uint16_t clr_temp;
@@ -543,7 +537,8 @@ void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * co
 
       lv_disp_flush_ready(disp);       /* Indicate you are ready with the flushing*/
     #endif
-  #endif // SPI_GRAPHICAL_TFT
+
+  #endif // !TFT_LVGL_UI_SPI
 }
 
 #define TICK_CYCLE 1
@@ -554,7 +549,7 @@ unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) {
   return TICK_CYCLE * (lastTick <= curTick ? (curTick - lastTick) : (0xFFFFFFFF - lastTick + curTick));
 }
 
-#if ENABLED(SPI_GRAPHICAL_TFT)
+#if ENABLED(TFT_LVGL_UI_SPI)
 
   #ifndef USE_XPT2046
     #define USE_XPT2046       1
@@ -564,12 +559,12 @@ unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) {
   #endif
 
   #if USE_XPT2046
-    #define XPT2046_HOR_RES   480
-    #define XPT2046_VER_RES   320
-    #define XPT2046_X_MIN     201
-    #define XPT2046_Y_MIN     164
-    #define XPT2046_X_MAX     3919
-    #define XPT2046_Y_MAX     3776
+    #define XPT2046_HOR_RES 480
+    #define XPT2046_VER_RES 320
+    #define XPT2046_X_MIN   201
+    #define XPT2046_Y_MIN   164
+    #define XPT2046_X_MAX  3919
+    #define XPT2046_Y_MAX  3776
     #define XPT2046_AVG       4
     #define XPT2046_INV       1
   #endif
@@ -579,34 +574,34 @@ unsigned int getTickDiff(unsigned int curTick, unsigned int lastTick) {
   #ifndef USE_XPT2046
     #define USE_XPT2046       1
     #ifndef XPT2046_XY_SWAP
-      #define XPT2046_XY_SWAP   1
+      #define XPT2046_XY_SWAP 1
     #endif
     #ifndef XPT2046_X_INV
-      #define XPT2046_X_INV     0
+      #define XPT2046_X_INV   0
     #endif
     #ifndef XPT2046_Y_INV
-      #define XPT2046_Y_INV     1
+      #define XPT2046_Y_INV   1
     #endif
   #endif
 
   #if USE_XPT2046
     #ifndef XPT2046_HOR_RES
-      #define XPT2046_HOR_RES   480
+      #define XPT2046_HOR_RES 480
     #endif
     #ifndef XPT2046_VER_RES
-      #define XPT2046_VER_RES   320
+      #define XPT2046_VER_RES 320
     #endif
     #ifndef XPT2046_X_MIN
-      #define XPT2046_X_MIN     201
+      #define XPT2046_X_MIN   201
     #endif
     #ifndef XPT2046_Y_MIN
-      #define XPT2046_Y_MIN     164
+      #define XPT2046_Y_MIN   164
     #endif
     #ifndef XPT2046_X_MAX
-      #define XPT2046_X_MAX     3919
+      #define XPT2046_X_MAX  3919
     #endif
     #ifndef XPT2046_Y_MAX
-      #define XPT2046_Y_MAX     3776
+      #define XPT2046_Y_MAX  3776
     #endif
     #ifndef XPT2046_AVG
       #define XPT2046_AVG       4
@@ -637,39 +632,25 @@ static void xpt2046_corr(uint16_t *x, uint16_t *y) {
   #endif
 }
 
-#define  times  4
+#define times 4
 #define CHX   0x90
 #define CHY   0xD0
 
 int SPI2_ReadWrite2Bytes(void) {
-  volatile uint16_t ans = 0;
-  uint16_t temp = 0;
-  #if ENABLED(SPI_GRAPHICAL_TFT)
-    temp = SPI_TFT.spi_read_write_byte(0xFF);
-    ans = temp << 8;
-    temp = SPI_TFT.spi_read_write_byte(0xFF);
-    ans |= temp;
-    ans >>= 3;
-  #else
-    temp = W25QXX.spi_flash_read_write_byte(0xFF);
-    ans = temp << 8;
-    temp = W25QXX.spi_flash_read_write_byte(0xFF);
-    ans |= temp;
-    ans >>= 3;
-  #endif
-  return ans & 0x0FFF;
+  #define SPI_READ_WRITE_BYTE(B) TERN(TFT_LVGL_UI_SPI, SPI_TFT.spi_read_write_byte, W25QXX.spi_flash_read_write_byte)(B)
+  const uint16_t t1 = SPI_READ_WRITE_BYTE(0xFF),
+                 t2 = SPI_READ_WRITE_BYTE(0xFF);
+  return (((t1 << 8) | t2) >> 3) & 0x0FFF;
 }
 
 uint16_t x_addata[times], y_addata[times];
 void XPT2046_Rd_Addata(uint16_t *X_Addata, uint16_t *Y_Addata) {
   uint16_t i, j, k;
 
-  #if ENABLED(SPI_GRAPHICAL_TFT)
-    SPI_TFT.spi_init(SPI_QUARTER_SPEED);
-  #endif
+  TERN(TFT_LVGL_UI_SPI, SPI_TFT.spi_init, W25QXX.init)(SPI_SPEED_6);
 
   for (i = 0; i < times; i++) {
-    #if ENABLED(SPI_GRAPHICAL_TFT)
+    #if ENABLED(TFT_LVGL_UI_SPI)
       OUT_WRITE(TOUCH_CS_PIN, LOW);
       SPI_TFT.spi_read_write_byte(CHX);
       y_addata[i] = SPI2_ReadWrite2Bytes();
@@ -692,6 +673,7 @@ void XPT2046_Rd_Addata(uint16_t *X_Addata, uint16_t *Y_Addata) {
     #endif
 
   }
+  TERN(TFT_LVGL_UI_SPI,,W25QXX.init(SPI_QUARTER_SPEED));
 
   for (i = 0; i < times; i++)
     for (j = i + 1; j < times; j++)
@@ -726,8 +708,10 @@ void XPT2046_Rd_Addata(uint16_t *X_Addata, uint16_t *Y_Addata) {
 #define ADC_VALID_OFFSET  10
 
 uint8_t TOUCH_PressValid(uint16_t _usX, uint16_t _usY) {
-  if (   (_usX <= ADC_VALID_OFFSET) || (_usY <= ADC_VALID_OFFSET)
-      || (_usX >= 4095 - ADC_VALID_OFFSET) || (_usY >= 4095 - ADC_VALID_OFFSET)
+  if ( (_usX <= ADC_VALID_OFFSET)
+    || (_usY <= ADC_VALID_OFFSET)
+    || (_usX >= 4095 - ADC_VALID_OFFSET)
+    || (_usY >= 4095 - ADC_VALID_OFFSET)
   ) return 0;
   return 1;
 }
@@ -754,7 +738,7 @@ bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) {
 
       data->state = LV_INDEV_STATE_PR;
 
-      /*Set the coordinates (if released use the last pressed coordinates)*/
+      /* Set the coordinates (if released use the last pressed coordinates) */
 
       // SERIAL_ECHOLNPAIR("antes X: ", last_x, ", y: ", last_y);
       xpt2046_corr((uint16_t *)&last_x, (uint16_t *)&last_y);
@@ -774,4 +758,4 @@ bool my_touchpad_read(lv_indev_drv_t * indev_driver, lv_indev_data_t * data) {
   return false; /*Return `false` because we are not buffering and no more data to read*/
 }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h
index 81ff4b1b037dba2bdf2efd4cc145875f26e13ccd..1b33d6e6bfb3f3d0b80b7abc4202c30d4136b167 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_lvgl_configuration.h
@@ -30,7 +30,7 @@
 //extern "C" {
 //#endif
 
-#include "lvgl.h"
+#include <lvgl.h>
 
 void tft_lvgl_init();
 void my_disp_flush(lv_disp_drv_t * disp, const lv_area_t * area, lv_color_t * color_p);
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp
index cdee6880e210cbf31a9fc31a78d289b45d1cf892..1ea47cef2dd43fa8a51734c09f2c1f751a82a3ea 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.cpp
@@ -21,53 +21,689 @@
  */
 #include "../../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
 
 #include "../../../../MarlinCore.h"
 
 #include "draw_ui.h"
 #include "tft_multi_language.h"
 
-//********************************************//
-
-//*********************************************//
-
-common_menu_def common_menu;
-main_menu_def main_menu;
-preheat_menu_def preheat_menu;
-move_menu_def move_menu;
-home_menu_def home_menu;
-file_menu_def file_menu;
-extrude_menu_def extrude_menu;
-leveling_menu_def leveling_menu;
-set_menu_def set_menu;
-more_menu_def more_menu;
-wifi_menu_def wifi_menu;
-cloud_menu_def cloud_menu;
-about_menu_def about_menu;
-fan_menu_def fan_menu;
-filament_menu_def filament_menu;
-printing_menu_def printing_menu;
-operation_menu_def operation_menu;
-pause_menu_def pause_menu;
-speed_menu_def speed_menu;
-printing_more_menu_def printing_more_menu;
-dialog_menu_def dialog_menu;
-language_menu_def language_menu;
-print_file_dialog_menu_def print_file_dialog_menu;
-filesys_menu_def filesys_menu;
-zoffset_menu_def zoffset_menu;
-tool_menu_def tool_menu;
-MachinePara_menu_def MachinePara_menu;
-MachineSettings_menu_def MachineSettings_menu;
+// ********************************************* //
+
+common_menu_def              common_menu;
+main_menu_def                main_menu;
+preheat_menu_def             preheat_menu;
+move_menu_def                move_menu;
+home_menu_def                home_menu;
+file_menu_def                file_menu;
+extrude_menu_def             extrude_menu;
+leveling_menu_def            leveling_menu;
+set_menu_def                 set_menu;
+more_menu_def                more_menu;
+wifi_menu_def                wifi_menu;
+cloud_menu_def               cloud_menu;
+about_menu_def               about_menu;
+fan_menu_def                 fan_menu;
+filament_menu_def            filament_menu;
+printing_menu_def            printing_menu;
+operation_menu_def           operation_menu;
+pause_menu_def               pause_menu;
+speed_menu_def               speed_menu;
+printing_more_menu_def       printing_more_menu;
+dialog_menu_def              dialog_menu;
+language_menu_def            language_menu;
+print_file_dialog_menu_def   print_file_dialog_menu;
+filesys_menu_def             filesys_menu;
+zoffset_menu_def             zoffset_menu;
+tool_menu_def                tool_menu;
+MachinePara_menu_def         MachinePara_menu;
+MachineSettings_menu_def     MachineSettings_menu;
 TemperatureSettings_menu_def TemperatureSettings_menu;
-pause_msg_def pause_msg_menu;
+pause_msg_def                pause_msg_menu;
+eeprom_def                   eeprom_menu;
+
+machine_common_def machine_menu;
+void machine_setting_disp() {
+  if (gCfgItems.language == LANG_SIMPLE_CHINESE) {
+    MachinePara_menu.title              = MACHINE_PARA_TITLE_CN;
+    MachinePara_menu.MachineSetting     = MACHINE_TYPE_CNOFIG_CN;
+    MachinePara_menu.TemperatureSetting = TEMPERATURE_CONFIG_CN;
+    MachinePara_menu.MotorSetting       = MOTOR_CONFIG_CN;
+    MachinePara_menu.AdvanceSetting     = ADVANCE_CONFIG_CN;
+
+    machine_menu.default_value = DEFAULT_CN;
+    machine_menu.next          = NEXT_CN;
+    machine_menu.previous      = PREVIOUS_CN;
+
+    machine_menu.MachineConfigTitle = MACHINE_CONFIG_TITLE_CN;
+    machine_menu.MachineType        = MACHINE_TYPE_CN;
+    machine_menu.Stroke             = MACHINE_STROKE_CN;
+    machine_menu.HomeDir            = MACHINE_HOMEDIR_CN;
+    machine_menu.EndStopType        = MACHINE_ENDSTOP_TYPE_CN;
+    machine_menu.FilamentConf       = MACHINE_FILAMENT_CONFIG_CN;
+    machine_menu.LevelingConf       = MACHINE_LEVELING_CONFIG_CN;
+
+    machine_menu.MachineTypeConfTitle = MACHINE_TYPE_CONFIG_TITLE_CN;
+    machine_menu.xyz                  = MACHINE_TYPE_XYZ_CN;
+    machine_menu.delta                = MACHINE_TYPE_DELTA_CN;
+    machine_menu.corexy               = MACHINE_TYPE_COREXY_CN;
+
+    machine_menu.StrokeConfTitle = MACHINE_STROKE_CONF_TITLE_CN;
+    machine_menu.xStroke         = X_MAX_LENGTH_CN;
+    machine_menu.yStroke         = Y_MAX_LENGTH_CN;
+    machine_menu.zStroke         = Z_MAX_LENGTH_CN;
+
+    machine_menu.xmin = X_MIN_LENGTH_CN;
+    machine_menu.ymin = Y_MIN_LENGTH_CN;
+    machine_menu.zmin = Z_MIN_LENGTH_CN;
+
+    machine_menu.HomeDirConfTitle = HOME_DIR_CONF_TITLE_CN;
+    machine_menu.xHomeDir         = HOME_DIR_X_CN;
+    machine_menu.yHomeDir         = HOME_DIR_Y_CN;
+    machine_menu.zHomeDir         = HOME_DIR_Z_CN;
+    machine_menu.min              = HOME_MIN_CN;
+    machine_menu.max              = HOME_MAX_CN;
+
+    machine_menu.EndstopConfTitle = ENDSTOP_CONF_TITLE_CN;
+    machine_menu.xEndstop_min     = MIN_ENDSTOP_X_CN;
+    machine_menu.yEndstop_min     = MIN_ENDSTOP_Y_CN;
+    machine_menu.zEndstop_min     = MIN_ENDSTOP_Z_CN;
+    machine_menu.xEndstop_max     = MAX_ENDSTOP_X_CN;
+    machine_menu.yEndstop_max     = MAX_ENDSTOP_Y_CN;
+    machine_menu.zEndstop_max     = MAX_ENDSTOP_Z_CN;
+    machine_menu.FilamentEndstop  = ENDSTOP_FIL_CN;
+    machine_menu.LevelingEndstop  = ENDSTOP_LEVEL_CN;
+    machine_menu.opened           = ENDSTOP_OPENED_CN;
+    machine_menu.closed           = ENDSTOP_CLOSED_CN;
+
+    machine_menu.FilamentConfTitle = FILAMENT_CONF_TITLE_CN;
+    machine_menu.InTemperature     = FILAMENT_IN_TEMPERATURE_CN;
+    machine_menu.InLength          = FILAMENT_IN_LENGTH_CN;
+    machine_menu.InSpeed           = FILAMENT_IN_SPEED_CN;
+    machine_menu.OutTemperature    = FILAMENT_OUT_TEMPERATURE_CN;
+    machine_menu.OutLength         = FILAMENT_OUT_LENGTH_CN;
+    machine_menu.OutSpeed          = FILAMENT_OUT_SPEED_CN;
+
+    machine_menu.LevelingParaConfTitle = LEVELING_CONF_TITLE_CN;
+    machine_menu.LevelingParaConf      = LEVELING_PARA_CONF_CN;
+    machine_menu.DeltaLevelConf        = LEVELING_DELTA_CN;
+    machine_menu.XYZLevelconf          = LEVELING_XYZ_CN;
+
+    machine_menu.LevelingSubConfTitle = LEVELING_PARA_CONF_TITLE_CN;
+    machine_menu.AutoLevelEnable      = AUTO_LEVELING_ENABLE_CN;
+    machine_menu.BLtouchEnable        = BLTOUCH_LEVELING_ENABLE_CN;
+    machine_menu.ProbePort            = PROBE_PORT_CN;
+    machine_menu.ProbeXoffset         = PROBE_X_OFFSET_CN;
+    machine_menu.ProbeYoffset         = PROBE_Y_OFFSET_CN;
+    machine_menu.ProbeZoffset         = PROBE_Z_OFFSET_CN;
+    machine_menu.ProbeXYspeed         = PROBE_XY_SPEED_CN;
+    machine_menu.ProbeZspeed          = PROBE_Z_SPEED_CN;
+    machine_menu.enable               = ENABLE_CN;
+    machine_menu.disable              = DISABLE_CN;
+    machine_menu.z_min                = Z_MIN_CN;
+    machine_menu.z_max                = Z_MAX_CN;
+
+    machine_menu.LevelingSubDeltaConfTitle = DELTA_LEVEL_CONF_TITLE_CN;
+    machine_menu.MachineRadius             = DELTA_MACHINE_RADIUS_CN;
+    machine_menu.DiagonalRod               = DELTA_DIAGONAL_ROD_CN;
+    machine_menu.PrintableRadius           = DELTA_PRINT_RADIUS_CN;
+    machine_menu.DeltaHeight               = DELTA_HEIGHT_CN;
+    machine_menu.SmoothRodOffset           = SMOOTH_ROD_OFFSET_CN;
+    machine_menu.EffectorOffset            = EFFECTOR_OFFSET_CN;
+    machine_menu.CalibrationRadius         = CALIBRATION_RADIUS_CN;
+
+    machine_menu.LevelingSubXYZConfTitle = XYZ_LEVEL_CONF_TITLE_CN;
+    // machine_menu.ProbeMaxLeft=PROBE_REACH_MAX_LEFT_CN;
+    // machine_menu.ProbeMaxRigh=PROBE_REACH_MAX_RIGHT_CN;
+    // machine_menu.ProbeMaxfront=PROBE_REACH_MAX_FRONT_CN;
+    // machine_menu.ProbeMaxback=PROBE_REACH_MAX_BACK_CN;
+
+    machine_menu.TemperatureConfTitle = TEMPERATURE_CONF_TITLE_CN;
+    machine_menu.NozzleConf           = NOZZLE_CONF_CN;
+    machine_menu.HotBedConf           = HOTBED_CONF_CN;
+    machine_menu.PreheatTemperConf    = PREHEAT_TEMPER_CN;
+
+    machine_menu.NozzleConfTitle      = NOZZLE_CONF_TITLE_CN;
+    machine_menu.NozzleCnt            = NOZZLECNT_CN;
+    machine_menu.NozzleType           = NOZZLE_TYPE_CN;
+    machine_menu.NozzleAdjustType     = NOZZLE_ADJUST_TYPE_CN;
+    machine_menu.NozzleMinTemperature = NOZZLE_MIN_TEMPERATURE_CN;
+    machine_menu.NozzleMaxTemperature = NOZZLE_MAX_TEMPERATURE_CN;
+    machine_menu.Extrude_Min_Temper   = EXTRUD_MIN_TEMPER_CN;
+
+    // machine_menu.HotbedEnable=HOTBED_ENABLE_CN;
+    machine_menu.HotbedConfTitle      = HOTBED_CONF_TITLE_CN;
+    machine_menu.HotbedAjustType      = HOTBED_ADJUST_CN;
+    machine_menu.HotbedMinTemperature = HOTBED_MIN_TEMPERATURE_CN;
+    machine_menu.HotbedMaxTemperature = HOTBED_MAX_TEMPERATURE_CN;
+
+    machine_menu.MotorConfTitle   = MOTOR_CONF_TITLE_CN;
+    machine_menu.MaxFeedRateConf  = MAXFEEDRATE_CONF_CN;
+    machine_menu.AccelerationConf = ACCELERATION_CONF_CN;
+    machine_menu.JerkConf         = JERKCONF_CN;
+    machine_menu.StepsConf        = STEPSCONF_CN;
+    machine_menu.TMCcurrentConf   = TMC_CURRENT_CN;
+    machine_menu.TMCStepModeConf  = TMC_STEP_MODE_CN;
+    machine_menu.MotorDirConf     = MOTORDIRCONF_CN;
+    machine_menu.HomeFeedRateConf = HOMEFEEDRATECONF_CN;
+    machine_menu.PausePosition    = PAUSE_POSITION_CN;
+
+    machine_menu.MaxFeedRateConfTitle = MAXFEEDRATE_CONF_TITLE_CN;
+    machine_menu.XMaxFeedRate         = X_MAXFEEDRATE_CN;
+    machine_menu.YMaxFeedRate         = Y_MAXFEEDRATE_CN;
+    machine_menu.ZMaxFeedRate         = Z_MAXFEEDRATE_CN;
+    machine_menu.E0MaxFeedRate        = E0_MAXFEEDRATE_CN;
+    machine_menu.E1MaxFeedRate        = E1_MAXFEEDRATE_CN;
+
+    machine_menu.AccelerationConfTitle = ACCELERATION_CONF_TITLE_CN;
+    machine_menu.PrintAcceleration     = PRINT_ACCELERATION_CN;
+    machine_menu.RetractAcceleration   = RETRACT_ACCELERATION_CN;
+    machine_menu.TravelAcceleration    = TRAVEL_ACCELERATION_CN;
+    machine_menu.X_Acceleration        = X_ACCELERATION_CN;
+    machine_menu.Y_Acceleration        = Y_ACCELERATION_CN;
+    machine_menu.Z_Acceleration        = Z_ACCELERATION_CN;
+    machine_menu.E0_Acceleration       = E0_ACCELERATION_CN;
+    machine_menu.E1_Acceleration       = E1_ACCELERATION_CN;
+
+    machine_menu.JerkConfTitle = JERK_CONF_TITLE_CN;
+    machine_menu.X_Jerk        = X_JERK_CN;
+    machine_menu.Y_Jerk        = Y_JERK_CN;
+    machine_menu.Z_Jerk        = Z_JERK_CN;
+    machine_menu.E_Jerk        = E_JERK_CN;
+
+    machine_menu.StepsConfTitle = STEPS_CONF_TITLE_CN;
+    machine_menu.X_Steps        = X_STEPS_CN;
+    machine_menu.Y_Steps        = Y_STEPS_CN;
+    machine_menu.Z_Steps        = Z_STEPS_CN;
+    machine_menu.E0_Steps       = E0_STEPS_CN;
+    machine_menu.E1_Steps       = E1_STEPS_CN;
+
+    machine_menu.TmcCurrentConfTitle = TMC_CURRENT_CONF_TITLE_CN;
+    machine_menu.X_Current           = X_TMC_CURRENT_CN;
+    machine_menu.Y_Current           = Y_TMC_CURRENT_CN;
+    machine_menu.Z_Current           = Z_TMC_CURRENT_CN;
+    machine_menu.E0_Current          = E0_TMC_CURRENT_CN;
+    machine_menu.E1_Current          = E1_TMC_CURRENT_CN;
+
+    machine_menu.TmcStepModeConfTitle = TMC_MODE_CONF_TITLE_CN;
+    machine_menu.X_StepMode           = X_TMC_MODE_CN;
+    machine_menu.Y_StepMode           = Y_TMC_MODE_CN;
+    machine_menu.Z_StepMode           = Z_TMC_MODE_CN;
+    machine_menu.E0_StepMode          = E0_TMC_MODE_CN;
+    machine_menu.E1_StepMode          = E1_TMC_MODE_CN;
+
+    machine_menu.MotorDirConfTitle = MOTORDIR_CONF_TITLE_CN;
+    machine_menu.X_MotorDir        = X_MOTORDIR_CN;
+    machine_menu.Y_MotorDir        = Y_MOTORDIR_CN;
+    machine_menu.Z_MotorDir        = Z_MOTORDIR_CN;
+    machine_menu.E0_MotorDir       = E0_MOTORDIR_CN;
+    machine_menu.E1_MotorDir       = E1_MOTORDIR_CN;
+    machine_menu.Invert_0          = INVERT_P_CN;
+    machine_menu.Invert_1          = INVERT_N_CN;
+
+    machine_menu.HomeFeedRateConfTitle = HOMEFEEDRATE_CONF_TITLE_CN;
+    machine_menu.XY_HomeFeedRate       = X_HOMESPEED_CN;
+    // machine_menu.Y_HomeFeedRate=Y_HOMESPEED_CN;
+    machine_menu.Z_HomeFeedRate = Z_HOMESPEED_CN;
+
+    machine_menu.AdvancedConfTitle = ADVANCED_CONF_TITLE_CN;
+    machine_menu.PwrOffDection     = PWROFF_DECTION_CN;
+    machine_menu.PwrOffAfterPrint  = PWROFF_AFTER_PRINT_CN;
+    machine_menu.HaveUps           = HAVE_UPS_CN;
+    machine_menu.Z2andZ2Endstop    = Z2_AND_Z2ENDSTOP_CONF_CN;
+    machine_menu.EnablePinsInvert  = ENABLE_PINS_CONF_CN;
+
+    machine_menu.Z2ConfTitle     = Z2_AND_Z2ENDSTOP_CONF_TITLE_CN;
+    machine_menu.Z2Enable        = Z2_ENABLE_CN;
+    machine_menu.Z2EndstopEnable = Z2_ENDSTOP_CN;
+    machine_menu.Z2Port          = Z2_PORT_CN;
+
+    machine_menu.EnablePinsInvertTitle = ENABLE_PINS_CONF_TITLE_CN;
+    machine_menu.XInvert               = X_ENABLE_PINS_INVERT_CN;
+    machine_menu.YInvert               = Y_ENABLE_PINS_INVERT_CN;
+    machine_menu.ZInvert               = Z_ENABLE_PINS_INVERT_CN;
+    machine_menu.EInvert               = E_ENABLE_PINS_INVERT_CN;
+
+    machine_menu.key_back    = KEY_BACK_CN;
+    machine_menu.key_reset   = KEY_REST_CN;
+    machine_menu.key_confirm = KEY_CONFIRM_CN;
+
+    machine_menu.PausePosText = PAUSE_POSITION_CN;
+    machine_menu.xPos         = PAUSE_POSITION_X_CN;
+    machine_menu.yPos         = PAUSE_POSITION_Y_CN;
+    machine_menu.zPos         = PAUSE_POSITION_Z_CN;
+  }
+  else if (gCfgItems.language == LANG_COMPLEX_CHINESE) {
+    MachinePara_menu.title              = MACHINE_PARA_TITLE_T_CN;
+    MachinePara_menu.MachineSetting     = MACHINE_TYPE_CNOFIG_T_CN;
+    MachinePara_menu.TemperatureSetting = TEMPERATURE_CONFIG_T_CN;
+    MachinePara_menu.MotorSetting       = MOTOR_CONFIG_T_CN;
+    MachinePara_menu.AdvanceSetting     = ADVANCE_CONFIG_T_CN;
+
+    machine_menu.default_value = DEFAULT_T_CN;
+    machine_menu.next          = NEXT_T_CN;
+    machine_menu.previous      = PREVIOUS_T_CN;
+
+    machine_menu.MachineConfigTitle = MACHINE_CONFIG_TITLE_T_CN;
+    machine_menu.MachineType        = MACHINE_TYPE_T_CN;
+    machine_menu.Stroke             = MACHINE_STROKE_T_CN;
+    machine_menu.HomeDir            = MACHINE_HOMEDIR_T_CN;
+    machine_menu.EndStopType        = MACHINE_ENDSTOP_TYPE_T_CN;
+    machine_menu.FilamentConf       = MACHINE_FILAMENT_CONFIG_T_CN;
+    machine_menu.LevelingConf       = MACHINE_LEVELING_CONFIG_T_CN;
+
+    machine_menu.MachineTypeConfTitle = MACHINE_TYPE_CONFIG_TITLE_T_CN;
+    machine_menu.xyz                  = MACHINE_TYPE_XYZ_T_CN;
+    machine_menu.delta                = MACHINE_TYPE_DELTA_T_CN;
+    machine_menu.corexy               = MACHINE_TYPE_COREXY_T_CN;
+
+    machine_menu.StrokeConfTitle = MACHINE_STROKE_CONF_TITLE_T_CN;
+    machine_menu.xStroke         = X_MAX_LENGTH_T_CN;
+    machine_menu.yStroke         = Y_MAX_LENGTH_T_CN;
+    machine_menu.zStroke         = Z_MAX_LENGTH_T_CN;
+
+    machine_menu.xmin = X_MIN_LENGTH_T_CN;
+    machine_menu.ymin = Y_MIN_LENGTH_T_CN;
+    machine_menu.zmin = Z_MIN_LENGTH_T_CN;
+
+    machine_menu.HomeDirConfTitle = HOME_DIR_CONF_TITLE_T_CN;
+    machine_menu.xHomeDir         = HOME_DIR_X_T_CN;
+    machine_menu.yHomeDir         = HOME_DIR_Y_T_CN;
+    machine_menu.zHomeDir         = HOME_DIR_Z_T_CN;
+    machine_menu.min              = HOME_MIN_T_CN;
+    machine_menu.max              = HOME_MAX_T_CN;
+
+    machine_menu.EndstopConfTitle = ENDSTOP_CONF_TITLE_T_CN;
+    machine_menu.xEndstop_min     = MIN_ENDSTOP_X_T_CN;
+    machine_menu.yEndstop_min     = MIN_ENDSTOP_Y_T_CN;
+    machine_menu.zEndstop_min     = MIN_ENDSTOP_Z_T_CN;
+    machine_menu.xEndstop_max     = MAX_ENDSTOP_X_T_CN;
+    machine_menu.yEndstop_max     = MAX_ENDSTOP_Y_T_CN;
+    machine_menu.zEndstop_max     = MAX_ENDSTOP_Z_T_CN;
+    machine_menu.FilamentEndstop  = ENDSTOP_FIL_T_CN;
+    machine_menu.LevelingEndstop  = ENDSTOP_LEVEL_T_CN;
+    machine_menu.opened           = ENDSTOP_OPENED_T_CN;
+    machine_menu.closed           = ENDSTOP_CLOSED_T_CN;
+
+    machine_menu.FilamentConfTitle = FILAMENT_CONF_TITLE_T_CN;
+    machine_menu.InTemperature     = FILAMENT_IN_TEMPERATURE_T_CN;
+    machine_menu.InLength          = FILAMENT_IN_LENGTH_T_CN;
+    machine_menu.InSpeed           = FILAMENT_IN_SPEED_T_CN;
+    machine_menu.OutTemperature    = FILAMENT_OUT_TEMPERATURE_T_CN;
+    machine_menu.OutLength         = FILAMENT_OUT_LENGTH_T_CN;
+    machine_menu.OutSpeed          = FILAMENT_OUT_SPEED_T_CN;
+
+    machine_menu.LevelingParaConfTitle = LEVELING_CONF_TITLE_T_CN;
+    machine_menu.LevelingParaConf      = LEVELING_PARA_CONF_T_CN;
+    machine_menu.DeltaLevelConf        = LEVELING_DELTA_T_CN;
+    machine_menu.XYZLevelconf          = LEVELING_XYZ_T_CN;
+
+    machine_menu.LevelingSubConfTitle = LEVELING_PARA_CONF_TITLE_T_CN;
+    machine_menu.AutoLevelEnable      = AUTO_LEVELING_ENABLE_T_CN;
+    machine_menu.BLtouchEnable        = BLTOUCH_LEVELING_ENABLE_T_CN;
+    machine_menu.ProbePort            = PROBE_PORT_T_CN;
+    machine_menu.ProbeXoffset         = PROBE_X_OFFSET_T_CN;
+    machine_menu.ProbeYoffset         = PROBE_Y_OFFSET_T_CN;
+    machine_menu.ProbeZoffset         = PROBE_Z_OFFSET_T_CN;
+    machine_menu.ProbeXYspeed         = PROBE_XY_SPEED_T_CN;
+    machine_menu.ProbeZspeed          = PROBE_Z_SPEED_T_CN;
+    machine_menu.enable               = ENABLE_T_CN;
+    machine_menu.disable              = DISABLE_T_CN;
+    machine_menu.z_min                = Z_MIN_T_CN;
+    machine_menu.z_max                = Z_MAX_T_CN;
+
+    machine_menu.LevelingSubDeltaConfTitle = DELTA_LEVEL_CONF_TITLE_T_CN;
+    machine_menu.MachineRadius             = DELTA_MACHINE_RADIUS_T_CN;
+    machine_menu.DiagonalRod               = DELTA_DIAGONAL_ROD_T_CN;
+    machine_menu.PrintableRadius           = DELTA_PRINT_RADIUS_T_CN;
+    machine_menu.DeltaHeight               = DELTA_HEIGHT_T_CN;
+    machine_menu.SmoothRodOffset           = SMOOTH_ROD_OFFSET_T_CN;
+    machine_menu.EffectorOffset            = EFFECTOR_OFFSET_T_CN;
+    machine_menu.CalibrationRadius         = CALIBRATION_RADIUS_T_CN;
+
+    machine_menu.LevelingSubXYZConfTitle = XYZ_LEVEL_CONF_TITLE_T_CN;
+    // machine_menu.ProbeMaxLeft=PROBE_REACH_MAX_LEFT_T_CN;
+    // machine_menu.ProbeMaxRigh=PROBE_REACH_MAX_RIGHT_T_CN;
+    // machine_menu.ProbeMaxfront=PROBE_REACH_MAX_FRONT_T_CN;
+    // machine_menu.ProbeMaxback=PROBE_REACH_MAX_BACK_T_CN;
+
+    machine_menu.TemperatureConfTitle = TEMPERATURE_CONF_TITLE_T_CN;
+    machine_menu.NozzleConf           = NOZZLE_CONF_T_CN;
+    machine_menu.HotBedConf           = HOTBED_CONF_T_CN;
+    machine_menu.PreheatTemperConf    = PREHEAT_TEMPER_T_CN;
+
+    machine_menu.NozzleConfTitle      = NOZZLE_CONF_TITLE_T_CN;
+    machine_menu.NozzleCnt            = NOZZLECNT_T_CN;
+    machine_menu.NozzleType           = NOZZLE_TYPE_T_CN;
+    machine_menu.NozzleAdjustType     = NOZZLE_ADJUST_TYPE_T_CN;
+    machine_menu.NozzleMinTemperature = NOZZLE_MIN_TEMPERATURE_T_CN;
+    machine_menu.NozzleMaxTemperature = NOZZLE_MAX_TEMPERATURE_T_CN;
+    machine_menu.Extrude_Min_Temper   = EXTRUD_MIN_TEMPER_T_CN;
+
+    // machine_menu.HotbedEnable=HOTBED_ENABLE_T_CN;
+    machine_menu.HotbedConfTitle      = HOTBED_CONF_TITLE_T_CN;
+    machine_menu.HotbedAjustType      = HOTBED_ADJUST_T_CN;
+    machine_menu.HotbedMinTemperature = HOTBED_MIN_TEMPERATURE_T_CN;
+    machine_menu.HotbedMaxTemperature = HOTBED_MAX_TEMPERATURE_T_CN;
+
+    machine_menu.MotorConfTitle   = MOTOR_CONF_TITLE_T_CN;
+    machine_menu.MaxFeedRateConf  = MAXFEEDRATE_CONF_T_CN;
+    machine_menu.AccelerationConf = ACCELERATION_CONF_T_CN;
+    machine_menu.JerkConf         = JERKCONF_T_CN;
+    machine_menu.StepsConf        = STEPSCONF_T_CN;
+    machine_menu.TMCcurrentConf   = TMC_CURRENT_T_CN;
+    machine_menu.TMCStepModeConf  = TMC_STEP_MODE_T_CN;
+    machine_menu.MotorDirConf     = MOTORDIRCONF_T_CN;
+    machine_menu.HomeFeedRateConf = HOMEFEEDRATECONF_T_CN;
+    machine_menu.PausePosition    = PAUSE_POSITION_T_CN;
+
+    machine_menu.MaxFeedRateConfTitle = MAXFEEDRATE_CONF_TITLE_T_CN;
+    machine_menu.XMaxFeedRate         = X_MAXFEEDRATE_T_CN;
+    machine_menu.YMaxFeedRate         = Y_MAXFEEDRATE_T_CN;
+    machine_menu.ZMaxFeedRate         = Z_MAXFEEDRATE_T_CN;
+    machine_menu.E0MaxFeedRate        = E0_MAXFEEDRATE_T_CN;
+    machine_menu.E1MaxFeedRate        = E1_MAXFEEDRATE_T_CN;
+
+    machine_menu.AccelerationConfTitle = ACCELERATION_CONF_TITLE_T_CN;
+    machine_menu.PrintAcceleration     = PRINT_ACCELERATION_T_CN;
+    machine_menu.RetractAcceleration   = RETRACT_ACCELERATION_T_CN;
+    machine_menu.TravelAcceleration    = TRAVEL_ACCELERATION_T_CN;
+    machine_menu.X_Acceleration        = X_ACCELERATION_T_CN;
+    machine_menu.Y_Acceleration        = Y_ACCELERATION_T_CN;
+    machine_menu.Z_Acceleration        = Z_ACCELERATION_T_CN;
+    machine_menu.E0_Acceleration       = E0_ACCELERATION_T_CN;
+    machine_menu.E1_Acceleration       = E1_ACCELERATION_T_CN;
+
+    machine_menu.JerkConfTitle = JERK_CONF_TITLE_T_CN;
+    machine_menu.X_Jerk        = X_JERK_T_CN;
+    machine_menu.Y_Jerk        = Y_JERK_T_CN;
+    machine_menu.Z_Jerk        = Z_JERK_T_CN;
+    machine_menu.E_Jerk        = E_JERK_T_CN;
+
+    machine_menu.StepsConfTitle = STEPS_CONF_TITLE_T_CN;
+    machine_menu.X_Steps        = X_STEPS_T_CN;
+    machine_menu.Y_Steps        = Y_STEPS_T_CN;
+    machine_menu.Z_Steps        = Z_STEPS_T_CN;
+    machine_menu.E0_Steps       = E0_STEPS_T_CN;
+    machine_menu.E1_Steps       = E1_STEPS_T_CN;
+
+    machine_menu.TmcCurrentConfTitle = TMC_CURRENT_CONF_TITLE_T_CN;
+    machine_menu.X_Current           = X_TMC_CURRENT_T_CN;
+    machine_menu.Y_Current           = Y_TMC_CURRENT_T_CN;
+    machine_menu.Z_Current           = Z_TMC_CURRENT_T_CN;
+    machine_menu.E0_Current          = E0_TMC_CURRENT_T_CN;
+    machine_menu.E1_Current          = E1_TMC_CURRENT_T_CN;
+
+    machine_menu.TmcStepModeConfTitle = TMC_MODE_CONF_TITLE_T_CN;
+    machine_menu.X_StepMode           = X_TMC_MODE_T_CN;
+    machine_menu.Y_StepMode           = Y_TMC_MODE_T_CN;
+    machine_menu.Z_StepMode           = Z_TMC_MODE_T_CN;
+    machine_menu.E0_StepMode          = E0_TMC_MODE_T_CN;
+    machine_menu.E1_StepMode          = E1_TMC_MODE_T_CN;
+
+    machine_menu.MotorDirConfTitle = MOTORDIR_CONF_TITLE_T_CN;
+    machine_menu.X_MotorDir        = X_MOTORDIR_T_CN;
+    machine_menu.Y_MotorDir        = Y_MOTORDIR_T_CN;
+    machine_menu.Z_MotorDir        = Z_MOTORDIR_T_CN;
+    machine_menu.E0_MotorDir       = E0_MOTORDIR_T_CN;
+    machine_menu.E1_MotorDir       = E1_MOTORDIR_T_CN;
+    machine_menu.Invert_0          = INVERT_P_T_CN;
+    machine_menu.Invert_1          = INVERT_N_T_CN;
+
+    machine_menu.HomeFeedRateConfTitle = HOMEFEEDRATE_CONF_TITLE_T_CN;
+    machine_menu.XY_HomeFeedRate       = X_HOMESPEED_T_CN;
+    // machine_menu.Y_HomeFeedRate=Y_HOMESPEED_T_CN;
+    machine_menu.Z_HomeFeedRate = Z_HOMESPEED_T_CN;
+
+    machine_menu.AdvancedConfTitle = ADVANCED_CONF_TITLE_T_CN;
+    machine_menu.PwrOffDection     = PWROFF_DECTION_T_CN;
+    machine_menu.PwrOffAfterPrint  = PWROFF_AFTER_PRINT_T_CN;
+    machine_menu.HaveUps           = HAVE_UPS_T_CN;
+    machine_menu.Z2andZ2Endstop    = Z2_AND_Z2ENDSTOP_CONF_T_CN;
+    machine_menu.EnablePinsInvert  = ENABLE_PINS_CONF_T_CN;
+
+    machine_menu.Z2ConfTitle     = Z2_AND_Z2ENDSTOP_CONF_TITLE_T_CN;
+    machine_menu.Z2Enable        = Z2_ENABLE_T_CN;
+    machine_menu.Z2EndstopEnable = Z2_ENDSTOP_T_CN;
+    machine_menu.Z2Port          = Z2_PORT_T_CN;
+
+    machine_menu.EnablePinsInvertTitle = ENABLE_PINS_CONF_TITLE_T_CN;
+    machine_menu.XInvert               = X_ENABLE_PINS_INVERT_T_CN;
+    machine_menu.YInvert               = Y_ENABLE_PINS_INVERT_T_CN;
+    machine_menu.ZInvert               = Z_ENABLE_PINS_INVERT_T_CN;
+    machine_menu.EInvert               = E_ENABLE_PINS_INVERT_T_CN;
+
+    machine_menu.key_back    = KEY_BACK_T_CN;
+    machine_menu.key_reset   = KEY_REST_T_CN;
+    machine_menu.key_confirm = KEY_CONFIRM_T_CN;
+    // machine_menu.high_level = MOTOR_EN_HIGH_LEVEL_T_CN;
+    // machine_menu.low_level = MOTOR_EN_LOW_LEVEL_T_CN;
+
+    machine_menu.PausePosText = PAUSE_POSITION_T_CN;
+    machine_menu.xPos         = PAUSE_POSITION_X_T_CN;
+    machine_menu.yPos         = PAUSE_POSITION_Y_T_CN;
+    machine_menu.zPos         = PAUSE_POSITION_Z_T_CN;
+
+  }
+  else {
+    MachinePara_menu.title              = MACHINE_PARA_TITLE_EN;
+    MachinePara_menu.MachineSetting     = MACHINE_TYPE_CNOFIG_EN;
+    MachinePara_menu.TemperatureSetting = TEMPERATURE_CONFIG_EN;
+    MachinePara_menu.MotorSetting       = MOTOR_CONFIG_EN;
+    MachinePara_menu.AdvanceSetting     = ADVANCE_CONFIG_EN;
+
+    machine_menu.default_value = DEFAULT_EN;
+    machine_menu.next          = NEXT_EN;
+    machine_menu.previous      = PREVIOUS_EN;
+
+    machine_menu.MachineConfigTitle = MACHINE_CONFIG_TITLE_EN;
+    machine_menu.MachineType        = MACHINE_TYPE_EN;
+    machine_menu.Stroke             = MACHINE_STROKE_EN;
+    machine_menu.HomeDir            = MACHINE_HOMEDIR_EN;
+    machine_menu.EndStopType        = MACHINE_ENDSTOP_TYPE_EN;
+    machine_menu.FilamentConf       = MACHINE_FILAMENT_CONFIG_EN;
+    machine_menu.LevelingConf       = MACHINE_LEVELING_CONFIG_EN;
+
+    machine_menu.MachineTypeConfTitle = MACHINE_TYPE_CONFIG_TITLE_EN;
+    machine_menu.xyz                  = MACHINE_TYPE_XYZ_EN;
+    machine_menu.delta                = MACHINE_TYPE_DELTA_EN;
+    machine_menu.corexy               = MACHINE_TYPE_COREXY_EN;
+
+    machine_menu.StrokeConfTitle = MACHINE_STROKE_CONF_TITLE_EN;
+    machine_menu.xStroke         = X_MAX_LENGTH_EN;
+    machine_menu.yStroke         = Y_MAX_LENGTH_EN;
+    machine_menu.zStroke         = Z_MAX_LENGTH_EN;
+
+    machine_menu.xmin = X_MIN_LENGTH_EN;
+    machine_menu.ymin = Y_MIN_LENGTH_EN;
+    machine_menu.zmin = Z_MIN_LENGTH_EN;
+
+    machine_menu.HomeDirConfTitle = HOME_DIR_CONF_TITLE_EN;
+    machine_menu.xHomeDir         = HOME_DIR_X_EN;
+    machine_menu.yHomeDir         = HOME_DIR_Y_EN;
+    machine_menu.zHomeDir         = HOME_DIR_Z_EN;
+    machine_menu.min              = HOME_MIN_EN;
+    machine_menu.max              = HOME_MAX_EN;
+
+    machine_menu.EndstopConfTitle = ENDSTOP_CONF_TITLE_EN;
+    machine_menu.xEndstop_min     = MIN_ENDSTOP_X_EN;
+    machine_menu.yEndstop_min     = MIN_ENDSTOP_Y_EN;
+    machine_menu.zEndstop_min     = MIN_ENDSTOP_Z_EN;
+    machine_menu.xEndstop_max     = MAX_ENDSTOP_X_EN;
+    machine_menu.yEndstop_max     = MAX_ENDSTOP_Y_EN;
+    machine_menu.zEndstop_max     = MAX_ENDSTOP_Z_EN;
+    machine_menu.FilamentEndstop  = ENDSTOP_FIL_EN;
+    machine_menu.LevelingEndstop  = ENDSTOP_LEVEL_EN;
+    machine_menu.opened           = ENDSTOP_OPENED_EN;
+    machine_menu.closed           = ENDSTOP_CLOSED_EN;
+
+    machine_menu.FilamentConfTitle = FILAMENT_CONF_TITLE_EN;
+    machine_menu.InTemperature     = FILAMENT_IN_TEMPERATURE_EN;
+    machine_menu.InLength          = FILAMENT_IN_LENGTH_EN;
+    machine_menu.InSpeed           = FILAMENT_IN_SPEED_EN;
+    machine_menu.OutTemperature    = FILAMENT_OUT_TEMPERATURE_EN;
+    machine_menu.OutLength         = FILAMENT_OUT_LENGTH_EN;
+    machine_menu.OutSpeed          = FILAMENT_OUT_SPEED_EN;
+
+    machine_menu.LevelingParaConfTitle = LEVELING_CONF_TITLE_EN;
+    machine_menu.LevelingParaConf      = LEVELING_PARA_CONF_EN;
+    machine_menu.DeltaLevelConf        = LEVELING_DELTA_EN;
+    machine_menu.XYZLevelconf          = LEVELING_XYZ_EN;
+
+    machine_menu.LevelingSubConfTitle = LEVELING_PARA_CONF_TITLE_EN;
+    machine_menu.AutoLevelEnable      = AUTO_LEVELING_ENABLE_EN;
+    machine_menu.BLtouchEnable        = BLTOUCH_LEVELING_ENABLE_EN;
+    machine_menu.ProbePort            = PROBE_PORT_EN;
+    machine_menu.ProbeXoffset         = PROBE_X_OFFSET_EN;
+    machine_menu.ProbeYoffset         = PROBE_Y_OFFSET_EN;
+    machine_menu.ProbeZoffset         = PROBE_Z_OFFSET_EN;
+    machine_menu.ProbeXYspeed         = PROBE_XY_SPEED_EN;
+    machine_menu.ProbeZspeed          = PROBE_Z_SPEED_EN;
+    machine_menu.enable               = ENABLE_EN;
+    machine_menu.disable              = DISABLE_EN;
+    machine_menu.z_min                = Z_MIN_EN;
+    machine_menu.z_max                = Z_MAX_EN;
+
+    machine_menu.LevelingSubDeltaConfTitle = DELTA_LEVEL_CONF_TITLE_EN;
+    machine_menu.MachineRadius             = DELTA_MACHINE_RADIUS_EN;
+    machine_menu.DiagonalRod               = DELTA_DIAGONAL_ROD_EN;
+    machine_menu.PrintableRadius           = DELTA_PRINT_RADIUS_EN;
+    machine_menu.DeltaHeight               = DELTA_HEIGHT_EN;
+    machine_menu.SmoothRodOffset           = SMOOTH_ROD_OFFSET_EN;
+    machine_menu.EffectorOffset            = EFFECTOR_OFFSET_EN;
+    machine_menu.CalibrationRadius         = CALIBRATION_RADIUS_EN;
+
+    machine_menu.LevelingSubXYZConfTitle = XYZ_LEVEL_CONF_TITLE_EN;
+    // machine_menu.Level_positon=PROBE_REACH_MAX_LEFT_EN;
+    // machine_menu.ProbeMaxRigh=PROBE_REACH_MAX_RIGHT_EN;
+    // machine_menu.ProbeMaxfront=PROBE_REACH_MAX_FRONT_EN;
+    // machine_menu.ProbeMaxback=PROBE_REACH_MAX_BACK_EN;
+
+    machine_menu.TemperatureConfTitle = TEMPERATURE_CONF_TITLE_EN;
+    machine_menu.NozzleConf           = NOZZLE_CONF_EN;
+    machine_menu.HotBedConf           = HOTBED_CONF_EN;
+    machine_menu.PreheatTemperConf    = PREHEAT_TEMPER_EN;
+
+    machine_menu.NozzleConfTitle      = NOZZLE_CONF_TITLE_EN;
+    machine_menu.NozzleCnt            = NOZZLECNT_EN;
+    machine_menu.NozzleType           = NOZZLE_TYPE_EN;
+    machine_menu.NozzleAdjustType     = NOZZLE_ADJUST_TYPE_EN;
+    machine_menu.NozzleMinTemperature = NOZZLE_MIN_TEMPERATURE_EN;
+    machine_menu.NozzleMaxTemperature = NOZZLE_MAX_TEMPERATURE_EN;
+    machine_menu.Extrude_Min_Temper   = EXTRUD_MIN_TEMPER_EN;
+
+    machine_menu.HotbedEnable         = HOTBED_ENABLE_EN;
+    machine_menu.HotbedConfTitle      = HOTBED_CONF_TITLE_EN;
+    machine_menu.HotbedAjustType      = HOTBED_ADJUST_EN;
+    machine_menu.HotbedMinTemperature = HOTBED_MIN_TEMPERATURE_EN;
+    machine_menu.HotbedMaxTemperature = HOTBED_MAX_TEMPERATURE_EN;
+
+    machine_menu.MotorConfTitle   = MOTOR_CONF_TITLE_EN;
+    machine_menu.MaxFeedRateConf  = MAXFEEDRATE_CONF_EN;
+    machine_menu.AccelerationConf = ACCELERATION_CONF_EN;
+    machine_menu.JerkConf         = JERKCONF_EN;
+    machine_menu.StepsConf        = STEPSCONF_EN;
+    machine_menu.TMCcurrentConf   = TMC_CURRENT_EN;
+    machine_menu.TMCStepModeConf  = TMC_STEP_MODE_EN;
+    machine_menu.MotorDirConf     = MOTORDIRCONF_EN;
+    machine_menu.HomeFeedRateConf = HOMEFEEDRATECONF_EN;
+    machine_menu.PausePosition    = PAUSE_POSITION_EN;
+
+    machine_menu.MaxFeedRateConfTitle = MAXFEEDRATE_CONF_TITLE_EN;
+    machine_menu.XMaxFeedRate         = X_MAXFEEDRATE_EN;
+    machine_menu.YMaxFeedRate         = Y_MAXFEEDRATE_EN;
+    machine_menu.ZMaxFeedRate         = Z_MAXFEEDRATE_EN;
+    machine_menu.E0MaxFeedRate        = E0_MAXFEEDRATE_EN;
+    machine_menu.E1MaxFeedRate        = E1_MAXFEEDRATE_EN;
+
+    machine_menu.AccelerationConfTitle = ACCELERATION_CONF_TITLE_EN;
+    machine_menu.PrintAcceleration     = PRINT_ACCELERATION_EN;
+    machine_menu.RetractAcceleration   = RETRACT_ACCELERATION_EN;
+    machine_menu.TravelAcceleration    = TRAVEL_ACCELERATION_EN;
+    machine_menu.X_Acceleration        = X_ACCELERATION_EN;
+    machine_menu.Y_Acceleration        = Y_ACCELERATION_EN;
+    machine_menu.Z_Acceleration        = Z_ACCELERATION_EN;
+    machine_menu.E0_Acceleration       = E0_ACCELERATION_EN;
+    machine_menu.E1_Acceleration       = E1_ACCELERATION_EN;
+
+    machine_menu.JerkConfTitle = JERK_CONF_TITLE_EN;
+    machine_menu.X_Jerk        = X_JERK_EN;
+    machine_menu.Y_Jerk        = Y_JERK_EN;
+    machine_menu.Z_Jerk        = Z_JERK_EN;
+    machine_menu.E_Jerk        = E_JERK_EN;
+
+    machine_menu.StepsConfTitle = STEPS_CONF_TITLE_EN;
+    machine_menu.X_Steps        = X_STEPS_EN;
+    machine_menu.Y_Steps        = Y_STEPS_EN;
+    machine_menu.Z_Steps        = Z_STEPS_EN;
+    machine_menu.E0_Steps       = E0_STEPS_EN;
+    machine_menu.E1_Steps       = E1_STEPS_EN;
+
+    machine_menu.TmcCurrentConfTitle = TMC_CURRENT_CONF_TITLE_EN;
+    machine_menu.X_Current           = X_TMC_CURRENT_EN;
+    machine_menu.Y_Current           = Y_TMC_CURRENT_EN;
+    machine_menu.Z_Current           = Z_TMC_CURRENT_EN;
+    machine_menu.E0_Current          = E0_TMC_CURRENT_EN;
+    machine_menu.E1_Current          = E1_TMC_CURRENT_EN;
+
+    machine_menu.TmcStepModeConfTitle = TMC_MODE_CONF_TITLE_EN;
+    machine_menu.X_StepMode           = X_TMC_MODE_EN;
+    machine_menu.Y_StepMode           = Y_TMC_MODE_EN;
+    machine_menu.Z_StepMode           = Z_TMC_MODE_EN;
+    machine_menu.E0_StepMode          = E0_TMC_MODE_EN;
+    machine_menu.E1_StepMode          = E1_TMC_MODE_EN;
+
+    machine_menu.MotorDirConfTitle = MOTORDIR_CONF_TITLE_EN;
+    machine_menu.X_MotorDir        = X_MOTORDIR_EN;
+    machine_menu.Y_MotorDir        = Y_MOTORDIR_EN;
+    machine_menu.Z_MotorDir        = Z_MOTORDIR_EN;
+    machine_menu.E0_MotorDir       = E0_MOTORDIR_EN;
+    machine_menu.E1_MotorDir       = E1_MOTORDIR_EN;
+    machine_menu.Invert_0          = INVERT_P_EN;
+    machine_menu.Invert_1          = INVERT_N_EN;
+
+    machine_menu.HomeFeedRateConfTitle = HOMEFEEDRATE_CONF_TITLE_EN;
+    machine_menu.XY_HomeFeedRate       = X_HOMESPEED_EN;
+    // machine_menu.Y_HomeFeedRate=Y_HOMESPEED_EN;
+    machine_menu.Z_HomeFeedRate = Z_HOMESPEED_EN;
+
+    machine_menu.AdvancedConfTitle = ADVANCED_CONF_TITLE_EN;
+    machine_menu.PwrOffDection     = PWROFF_DECTION_EN;
+    machine_menu.PwrOffAfterPrint  = PWROFF_AFTER_PRINT_EN;
+    machine_menu.HaveUps           = HAVE_UPS_EN;
+    machine_menu.Z2andZ2Endstop    = Z2_AND_Z2ENDSTOP_CONF_EN;
+    machine_menu.EnablePinsInvert  = ENABLE_PINS_CONF_EN;
+
+    machine_menu.Z2ConfTitle     = Z2_AND_Z2ENDSTOP_CONF_TITLE_EN;
+    machine_menu.Z2Enable        = Z2_ENABLE_EN;
+    machine_menu.Z2EndstopEnable = Z2_ENDSTOP_EN;
+    machine_menu.Z2Port          = Z2_PORT_EN;
+
+    machine_menu.EnablePinsInvertTitle = ENABLE_PINS_CONF_TITLE_EN;
+    machine_menu.XInvert               = X_ENABLE_PINS_INVERT_EN;
+    machine_menu.YInvert               = Y_ENABLE_PINS_INVERT_EN;
+    machine_menu.ZInvert               = Z_ENABLE_PINS_INVERT_EN;
+    machine_menu.EInvert               = E_ENABLE_PINS_INVERT_EN;
+
+    machine_menu.key_back    = KEY_BACK_EN;
+    machine_menu.key_reset   = KEY_REST_EN;
+    machine_menu.key_confirm = KEY_CONFIRM_EN;
+    //
+    machine_menu.high_level = MOTOR_EN_HIGH_LEVEL_EN;
+    machine_menu.low_level  = MOTOR_EN_LOW_LEVEL_EN;
+
+    machine_menu.PausePosText = PAUSE_POSITION_EN;
+    machine_menu.xPos         = PAUSE_POSITION_X_EN;
+    machine_menu.yPos         = PAUSE_POSITION_Y_EN;
+    machine_menu.zPos         = PAUSE_POSITION_Z_EN;
+  }
+}
 
 void disp_language_init() {
   preheat_menu.value_state = TEXT_VALUE;
-  preheat_menu.step_1c = TEXT_1C;
-  preheat_menu.step_5c = TEXT_5C;
-  preheat_menu.step_10c = TEXT_10C;
+  preheat_menu.step_1c     = TEXT_1C;
+  preheat_menu.step_5c     = TEXT_5C;
+  preheat_menu.step_10c    = TEXT_10C;
 
   move_menu.x_add = AXIS_X_ADD_TEXT;
   move_menu.x_dec = AXIS_X_DEC_TEXT;
@@ -78,1826 +714,1901 @@ void disp_language_init() {
 
   move_menu.step_001mm = TEXT_001MM;
   move_menu.step_005mm = TEXT_005MM;
-  move_menu.step_01mm = TEXT_01MM;
-  move_menu.step_1mm = TEXT_1MM;
-  move_menu.step_10mm = TEXT_10MM;
+  move_menu.step_01mm  = TEXT_01MM;
+  move_menu.step_1mm   = TEXT_1MM;
+  move_menu.step_10mm  = TEXT_10MM;
 
-  home_menu.home_x = HOME_X_TEXT;
-  home_menu.home_y = HOME_Y_TEXT;
-  home_menu.home_z = HOME_Z_TEXT;
+  home_menu.home_x   = HOME_X_TEXT;
+  home_menu.home_y   = HOME_Y_TEXT;
+  home_menu.home_z   = HOME_Z_TEXT;
   home_menu.home_all = HOME_ALL_TEXT;
 
-  extrude_menu.temp_value = TEXT_VALUE_T;
+  extrude_menu.temp_value     = TEXT_VALUE_T;
   extrude_menu.count_value_mm = TEXT_VALUE_mm;
   extrude_menu.count_value_cm = TEXT_VALUE_cm;
-  extrude_menu.count_value_m = TEXT_VALUE_m;
-  extrude_menu.step_1mm = EXTRUDE_1MM_TEXT;
-  extrude_menu.step_5mm = EXTRUDE_5MM_TEXT;
-  extrude_menu.step_10mm = EXTRUDE_10MM_TEXT;
+  extrude_menu.count_value_m  = TEXT_VALUE_m;
+  extrude_menu.step_1mm       = EXTRUDE_1MM_TEXT;
+  extrude_menu.step_5mm       = EXTRUDE_5MM_TEXT;
+  extrude_menu.step_10mm      = EXTRUDE_10MM_TEXT;
 
   fan_menu.full = FAN_OPEN_TEXT;
   fan_menu.half = FAN_HALF_TEXT;
-  fan_menu.off = FAN_CLOSE_TEXT;
+  fan_menu.off  = FAN_CLOSE_TEXT;
 
-  speed_menu.step_1percent = STEP_1PERCENT;
-  speed_menu.step_5percent = STEP_5PERCENT;
+  speed_menu.step_1percent  = STEP_1PERCENT;
+  speed_menu.step_5percent  = STEP_5PERCENT;
   speed_menu.step_10percent = STEP_10PERCENT;
 
-  language_menu.chinese_s = LANGUAGE_S_CN;
-  language_menu.chinese_t = LANGUAGE_T_CN;
-  language_menu.english = LANGUAGE_EN;
-  language_menu.russian = LANGUAGE_RU;
-  language_menu.spanish = LANGUAGE_SP;
-  language_menu.german = LANGUAGE_GE;
-  language_menu.japan = LANGUAGE_JP;
-  language_menu.korean = LANGUAGE_KR;
+  language_menu.chinese_s  = LANGUAGE_S_CN;
+  language_menu.chinese_t  = LANGUAGE_T_CN;
+  language_menu.english    = LANGUAGE_EN;
+  language_menu.russian    = LANGUAGE_RU;
+  language_menu.spanish    = LANGUAGE_SP;
+  language_menu.german     = LANGUAGE_GE;
+  language_menu.japan      = LANGUAGE_JP;
+  language_menu.korean     = LANGUAGE_KR;
   language_menu.portuguese = LANGUAGE_PR;
-  language_menu.italy = LANGUAGE_IT;
-  language_menu.brazil = LANGUAGE_BR;
-  language_menu.french = LANGUAGE_FR;
+  language_menu.italy      = LANGUAGE_IT;
+  language_menu.brazil     = LANGUAGE_BR;
+  language_menu.french     = LANGUAGE_FR;
 
-  about_menu.type_name = ABOUT_TYPE_TEXT;
+  about_menu.type_name  = ABOUT_TYPE_TEXT;
   about_menu.firmware_v = ABOUT_VERSION_TEXT;
-  //about_menu.wifi = ABOUT_WIFI_TEXT;
-
-  wifi_menu.ip = WIFI_IP_TEXT;
-  wifi_menu.wifi = WIFI_NAME_TEXT;
-  wifi_menu.key = WIFI_KEY_TEXT;
-  wifi_menu.state_ap = WIFI_STATE_AP_TEXT;
-  wifi_menu.state_sta = WIFI_STATE_STA_TEXT;
-  wifi_menu.connected = WIFI_CONNECTED_TEXT;
+  // about_menu.wifi = ABOUT_WIFI_TEXT;
+
+  wifi_menu.ip           = WIFI_IP_TEXT;
+  wifi_menu.wifi         = WIFI_NAME_TEXT;
+  wifi_menu.key          = WIFI_KEY_TEXT;
+  wifi_menu.state_ap     = WIFI_STATE_AP_TEXT;
+  wifi_menu.state_sta    = WIFI_STATE_STA_TEXT;
+  wifi_menu.connected    = WIFI_CONNECTED_TEXT;
   wifi_menu.disconnected = WIFI_DISCONNECTED_TEXT;
-  wifi_menu.exception = WIFI_EXCEPTION_TEXT;
+  wifi_menu.exception    = WIFI_EXCEPTION_TEXT;
 
-  printing_menu.temp1 = TEXT_VALUE;
-  printing_menu.temp2 = TEXT_VALUE;
+  printing_menu.temp1    = TEXT_VALUE;
+  printing_menu.temp2    = TEXT_VALUE;
   printing_menu.bed_temp = TEXT_VALUE;
 
   filament_menu.stat_temp = TEXT_VALUE;
 
   zoffset_menu.step001 = ZOFFSET_STEP001;
-  zoffset_menu.step01 = ZOFFSET_STEP01;
-  zoffset_menu.step1 = ZOFFSET_STEP1;
-
-  //wifi-list
+  zoffset_menu.step01  = ZOFFSET_STEP01;
+  zoffset_menu.step1   = ZOFFSET_STEP1;
+
+  machine_menu.key_0     = KEYBOARD_KEY0_EN;
+  machine_menu.key_1     = KEYBOARD_KEY1_EN;
+  machine_menu.key_2     = KEYBOARD_KEY2_EN;
+  machine_menu.key_3     = KEYBOARD_KEY3_EN;
+  machine_menu.key_4     = KEYBOARD_KEY4_EN;
+  machine_menu.key_5     = KEYBOARD_KEY5_EN;
+  machine_menu.key_6     = KEYBOARD_KEY6_EN;
+  machine_menu.key_7     = KEYBOARD_KEY7_EN;
+  machine_menu.key_8     = KEYBOARD_KEY8_EN;
+  machine_menu.key_9     = KEYBOARD_KEY9_EN;
+  machine_menu.key_point = KEYBOARD_KEY_POINT_EN;
+  machine_menu.negative  = KEYBOARD_KEY_NEGATIVE_EN;
+  // wifi-list
   #if 0
-    list_menu.title = TEXT_WIFI_MENU_TITLE_EN;
+    list_menu.title      = TEXT_WIFI_MENU_TITLE_EN;
     list_menu.file_pages = FILE_PAGES_EN;
-    //keyboard
-    keyboard_menu.apply = MANUAL_IP_APPLY_EN;
+    // keyboard
+    keyboard_menu.apply    = MANUAL_IP_APPLY_EN;
     keyboard_menu.password = TEXT_WIFI_PASSWORD_EN;
-    keyboard_menu.space = TEXT_WIFI_SAPCE_EN;
-    keyboard_menu.letter = TEXT_WIFI_LETTER_EN;
-    keyboard_menu.digital = TEXT_WIFI_DIGITAL_EN;
-    keyboard_menu.symbol = TEXT_WIFI_SYMBOL_EN;
-    //tips
-    tips_menu.pointBold = TEXT_WIFI_POINT_BOLD_EN;
-    tips_menu.joining = TEXT_WIFI_JOINING_EN;
-    tips_menu.failedJoin = TEXT_WIFI_FAILED_JOIN_EN;
+    keyboard_menu.space    = TEXT_WIFI_SAPCE_EN;
+    keyboard_menu.letter   = TEXT_WIFI_LETTER_EN;
+    keyboard_menu.digital  = TEXT_WIFI_DIGITAL_EN;
+    keyboard_menu.symbol   = TEXT_WIFI_SYMBOL_EN;
+    // tips
+    tips_menu.pointBold    = TEXT_WIFI_POINT_BOLD_EN;
+    tips_menu.joining      = TEXT_WIFI_JOINING_EN;
+    tips_menu.failedJoin   = TEXT_WIFI_FAILED_JOIN_EN;
     tips_menu.wifiConected = TEXT_WIFI_WIFI_CONECTED_EN;
   #endif
+  machine_setting_disp();
+
   operation_menu.babystep = TEXT_BABY_STEP_EN;
 
   switch (gCfgItems.language) {
     case LANG_SIMPLE_CHINESE:
-      common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_CN;
-      common_menu.text_back = BACK_TEXT_CN;
-      common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_CN;
-      common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_CN;
-      common_menu.print_special_title = PRINTING_GBK;
-      common_menu.pause_special_title = PRINTING_PAUSE_GBK;
+      common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_CN;
+      common_menu.text_back             = BACK_TEXT_CN;
+      common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_CN;
+      common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_CN;
+      common_menu.print_special_title   = PRINTING_GBK;
+      common_menu.pause_special_title   = PRINTING_PAUSE_GBK;
       common_menu.operate_special_title = PRINTING_OPERATION_GBK;
       //
-      main_menu.title = TITLE_READYPRINT_CN;
-      main_menu.preheat = PREHEAT_TEXT_CN;
-      main_menu.move = MOVE_TEXT_CN;
-      main_menu.home = HOME_TEXT_CN;
-      main_menu.print = PRINT_TEXT_CN;
-      main_menu.extrude = EXTRUDE_TEXT_CN;
-      main_menu.leveling = LEVELING_TEXT_CN;
+      main_menu.title        = TITLE_READYPRINT_CN;
+      main_menu.preheat      = PREHEAT_TEXT_CN;
+      main_menu.move         = MOVE_TEXT_CN;
+      main_menu.home         = HOME_TEXT_CN;
+      main_menu.print        = PRINT_TEXT_CN;
+      main_menu.extrude      = EXTRUDE_TEXT_CN;
+      main_menu.leveling     = LEVELING_TEXT_CN;
       main_menu.autoleveling = AUTO_LEVELING_TEXT_CN;
-      main_menu.fan = FAN_TEXT_CN;
-      main_menu.set = SET_TEXT_CN;
-      main_menu.more = MORE_TEXT_CN;
-      main_menu.tool = TOOL_TEXT_CN;
-      //TOOL
-      tool_menu.title = TOOL_TEXT_CN;
-      tool_menu.preheat = TOOL_PREHEAT_CN;
-      tool_menu.extrude = TOOL_EXTRUDE_CN;
-      tool_menu.move = TOOL_MOVE_CN;
-      tool_menu.home = TOOL_HOME_CN;
-      tool_menu.leveling = TOOL_LEVELING_CN;
+      main_menu.fan          = FAN_TEXT_CN;
+      main_menu.set          = SET_TEXT_CN;
+      main_menu.more         = MORE_TEXT_CN;
+      main_menu.tool         = TOOL_TEXT_CN;
+      // TOOL
+      tool_menu.title        = TOOL_TEXT_CN;
+      tool_menu.preheat      = TOOL_PREHEAT_CN;
+      tool_menu.extrude      = TOOL_EXTRUDE_CN;
+      tool_menu.move         = TOOL_MOVE_CN;
+      tool_menu.home         = TOOL_HOME_CN;
+      tool_menu.leveling     = TOOL_LEVELING_CN;
       tool_menu.autoleveling = TOOL_AUTO_LEVELING_CN;
-      tool_menu.filament = TOOL_FILAMENT_CN;
-      tool_menu.more = TOOL_MORE_CN;
+      tool_menu.filament     = TOOL_FILAMENT_CN;
+      tool_menu.more         = TOOL_MORE_CN;
       //
       preheat_menu.adjust_title = TITLE_ADJUST_CN;
-      preheat_menu.title = TITLE_PREHEAT_CN;
-      preheat_menu.add = ADD_TEXT_CN;
-      preheat_menu.dec = DEC_TEXT_CN;
-      preheat_menu.ext1 = EXTRUDER_1_TEXT_CN;
-      preheat_menu.ext2 = EXTRUDER_2_TEXT_CN;
-      preheat_menu.hotbed = HEATBED_TEXT_CN;
-      preheat_menu.off = CLOSE_TEXT_CN;
+      preheat_menu.title        = TITLE_PREHEAT_CN;
+      preheat_menu.add          = ADD_TEXT_CN;
+      preheat_menu.dec          = DEC_TEXT_CN;
+      preheat_menu.ext1         = EXTRUDER_1_TEXT_CN;
+      preheat_menu.ext2         = EXTRUDER_2_TEXT_CN;
+      preheat_menu.hotbed       = HEATBED_TEXT_CN;
+      preheat_menu.off          = CLOSE_TEXT_CN;
 
       preheat_menu.value_state = TEXT_VALUE_CN;
-      preheat_menu.step_1c = TEXT_1C_CN;
-      preheat_menu.step_5c = TEXT_5C_CN;
-      preheat_menu.step_10c = TEXT_10C_CN;
+      preheat_menu.step_1c     = TEXT_1C_CN;
+      preheat_menu.step_5c     = TEXT_5C_CN;
+      preheat_menu.step_10c    = TEXT_10C_CN;
       //
       move_menu.title = MOVE_TEXT_CN;
       //
-      home_menu.title = TITLE_HOME_CN;
+      home_menu.title    = TITLE_HOME_CN;
       home_menu.stopmove = HOME_STOPMOVE_CN;
       //
-      file_menu.title = TITLE_CHOOSEFILE_CN;
-      file_menu.page_up = PAGE_UP_TEXT_CN;
-      file_menu.page_down = PAGE_DOWN_TEXT_CN;
-      file_menu.file_loading = FILE_LOADING_CN;
-      file_menu.no_file = NO_FILE_CN;
-      file_menu.no_file_and_check = NO_FILE_CN;//NO_FILE_AND_CHECK_CN;
+      file_menu.title             = TITLE_CHOOSEFILE_CN;
+      file_menu.page_up           = PAGE_UP_TEXT_CN;
+      file_menu.page_down         = PAGE_DOWN_TEXT_CN;
+      file_menu.file_loading      = FILE_LOADING_CN;
+      file_menu.no_file           = NO_FILE_CN;
+      file_menu.no_file_and_check = NO_FILE_CN;// NO_FILE_AND_CHECK_CN;
       //
-      extrude_menu.title = TITLE_EXTRUDE_CN;
-      extrude_menu.in = EXTRUDER_IN_TEXT_CN;
-      extrude_menu.out = EXTRUDER_OUT_TEXT_CN;
-      extrude_menu.ext1 = EXTRUDER_1_TEXT_CN;
-      extrude_menu.ext2 = EXTRUDER_2_TEXT_CN;
-      extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_CN;
-      extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_CN;
-      extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_CN;
+      extrude_menu.title       = TITLE_EXTRUDE_CN;
+      extrude_menu.in          = EXTRUDER_IN_TEXT_CN;
+      extrude_menu.out         = EXTRUDER_OUT_TEXT_CN;
+      extrude_menu.ext1        = EXTRUDER_1_TEXT_CN;
+      extrude_menu.ext2        = EXTRUDER_2_TEXT_CN;
+      extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_CN;
+      extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_CN;
+      extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_CN;
       extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_CN;
-      extrude_menu.temp_value = EXTRUDE_TEXT_VALUE_T_CN;
+      extrude_menu.temp_value  = EXTRUDE_TEXT_VALUE_T_CN;
       //
-      leveling_menu.title = TITLE_LEVELING_CN;
+      leveling_menu.title     = TITLE_LEVELING_CN;
       leveling_menu.position1 = LEVELING_POINT1_TEXT_CN;
       leveling_menu.position2 = LEVELING_POINT2_TEXT_CN;
       leveling_menu.position3 = LEVELING_POINT3_TEXT_CN;
       leveling_menu.position4 = LEVELING_POINT4_TEXT_CN;
       leveling_menu.position5 = LEVELING_POINT5_TEXT_CN;
       //
-      set_menu.title = TITLE_SET_CN;
-      set_menu.filesys = FILESYS_TEXT_CN;
-      set_menu.wifi = WIFI_TEXT_CN;
-      set_menu.about = ABOUT_TEXT_CN;
-      set_menu.fan = FAN_TEXT_CN;
-      set_menu.filament = FILAMENT_TEXT_CN;
-      set_menu.breakpoint = BREAK_POINT_TEXT_CN;
-      set_menu.motoroff = MOTOR_OFF_TEXT_CN;
-      set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_CN;
-      set_menu.language = LANGUAGE_TEXT_CN;
-      set_menu.shutdown = SHUTDOWN_TEXT_CN;
-      //set_menu.machine_para = MACHINE_PARA_CN;
-
+      set_menu.title        = TITLE_SET_CN;
+      set_menu.filesys      = FILESYS_TEXT_CN;
+      set_menu.wifi         = WIFI_TEXT_CN;
+      set_menu.about        = ABOUT_TEXT_CN;
+      set_menu.fan          = FAN_TEXT_CN;
+      set_menu.filament     = FILAMENT_TEXT_CN;
+      set_menu.breakpoint   = BREAK_POINT_TEXT_CN;
+      set_menu.motoroff     = MOTOR_OFF_TEXT_CN;
+      set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_CN;
+      set_menu.language     = LANGUAGE_TEXT_CN;
+      set_menu.shutdown     = SHUTDOWN_TEXT_CN;
+      set_menu.machine_para = MACHINE_PARA_CN;
+      set_menu.eepromSet    = EEPROM_SETTINGS_CN;
       //
-      filesys_menu.title = TITLE_FILESYS_CN;
-      filesys_menu.sd_sys = SD_CARD_TEXT_CN;
+      filesys_menu.title   = TITLE_FILESYS_CN;
+      filesys_menu.sd_sys  = SD_CARD_TEXT_CN;
       filesys_menu.usb_sys = U_DISK_TEXT_CN;
       //
-      more_menu.title = TITLE_MORE_CN;
+      more_menu.title   = TITLE_MORE_CN;
       more_menu.zoffset = ZOFFSET_CN;
-      //WIFI
+      // WIFI
       wifi_menu.title = WIFI_TEXT;
-      //wifi_menu.key = WIFI_KEY_TEXT_CN;
-      //wifi_menu.ip = WIFI_IP_TEXT_CN;
-      //wifi_menu.state = WIFI_STA_TEXT_CN;
-      wifi_menu.cloud = CLOUD_TEXT_CN;
+      // wifi_menu.key = WIFI_KEY_TEXT_CN;
+      // wifi_menu.ip = WIFI_IP_TEXT_CN;
+      // wifi_menu.state = WIFI_STA_TEXT_CN;
+      wifi_menu.cloud     = CLOUD_TEXT_CN;
       wifi_menu.reconnect = WIFI_RECONNECT_TEXT_CN;
-      //CLOUD
-      cloud_menu.title = TITLE_CLOUD_TEXT_CN;
-      cloud_menu.bind = CLOUD_BINDED_CN;
-      cloud_menu.binded = CLOUD_BINDED_CN;
-      cloud_menu.unbind = CLOUD_UNBIND_CN;
-      cloud_menu.unbinding = CLOUD_UNBINDED_CN;
+      // CLOUD
+      cloud_menu.title        = TITLE_CLOUD_TEXT_CN;
+      cloud_menu.bind         = CLOUD_BINDED_CN;
+      cloud_menu.binded       = CLOUD_BINDED_CN;
+      cloud_menu.unbind       = CLOUD_UNBIND_CN;
+      cloud_menu.unbinding    = CLOUD_UNBINDED_CN;
       cloud_menu.disconnected = CLOUD_DISCONNECTED_CN;
-      cloud_menu.disable = CLOUD_DISABLE_CN;
+      cloud_menu.disable      = CLOUD_DISABLE_CN;
       //
-      about_menu.title = ABOUT_TEXT_CN;
-      about_menu.type = ABOUT_TYPE_TEXT_CN;
+      about_menu.title   = ABOUT_TEXT_CN;
+      about_menu.type    = ABOUT_TYPE_TEXT_CN;
       about_menu.version = ABOUT_VERSION_TEXT_CN;
-      about_menu.wifi = ABOUT_WIFI_TEXT_CN;
+      about_menu.wifi    = ABOUT_WIFI_TEXT_CN;
 
       //
       fan_menu.title = FAN_TEXT_CN;
-      fan_menu.add = FAN_ADD_TEXT_CN;
-      fan_menu.dec = FAN_DEC_TEXT_CN;
+      fan_menu.add   = FAN_ADD_TEXT_CN;
+      fan_menu.dec   = FAN_DEC_TEXT_CN;
       fan_menu.state = FAN_TIPS1_TEXT_CN;
       //
-      filament_menu.title = TITLE_FILAMENT_CN;
-      filament_menu.in = FILAMENT_IN_TEXT_CN;
-      filament_menu.out = FILAMENT_OUT_TEXT_CN;
-      filament_menu.ext1 = FILAMENT_EXT0_TEXT_CN;
-      filament_menu.ext2 = FILAMENT_EXT1_TEXT_CN;
-      filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_CN;
-      filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_CN;
-      filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_CN;
-      filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_CN;
-      filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_CN;
-      filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_CN;
+      filament_menu.title                               = TITLE_FILAMENT_CN;
+      filament_menu.in                                  = FILAMENT_IN_TEXT_CN;
+      filament_menu.out                                 = FILAMENT_OUT_TEXT_CN;
+      filament_menu.ext1                                = FILAMENT_EXT0_TEXT_CN;
+      filament_menu.ext2                                = FILAMENT_EXT1_TEXT_CN;
+      filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_CN;
+      filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_CN;
+      filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_CN;
+      filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_CN;
+      filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_CN;
+      filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_CN;
       filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_CN;
-      filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_CN;
-      filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_CN;
+      filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_CN;
+      filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_CN;
 
 
       //
       language_menu.title = TITLE_LANGUAGE_CN;
-      language_menu.next = PAGE_DOWN_TEXT_CN;
-      language_menu.up = PAGE_UP_TEXT_CN;
+      language_menu.next  = PAGE_DOWN_TEXT_CN;
+      language_menu.up    = PAGE_UP_TEXT_CN;
 
       //
-      printing_menu.title = TITLE_PRINTING_CN;
+      printing_menu.title  = TITLE_PRINTING_CN;
       printing_menu.option = PRINTING_OPERATION_CN;
-      printing_menu.stop = PRINTING_STOP_CN;
-      printing_menu.pause = PRINTING_PAUSE_CN;
+      printing_menu.stop   = PRINTING_STOP_CN;
+      printing_menu.pause  = PRINTING_PAUSE_CN;
       printing_menu.resume = PRINTING_RESUME_CN;
 
       //
-      operation_menu.title = TITLE_OPERATION_CN;
-      operation_menu.pause = PRINTING_PAUSE_CN;
-      operation_menu.stop = PRINTING_STOP_CN;
-      operation_menu.temp = PRINTING_TEMP_CN;
-      operation_menu.fan = FAN_TEXT_CN;
-      operation_menu.filament = FILAMENT_TEXT_CN;
-      operation_menu.extr = PRINTING_EXTRUDER_CN;
-      operation_menu.speed = PRINTING_CHANGESPEED_CN;
-      operation_menu.more = PRINTING_MORE_CN;
-      operation_menu.move = PRINTING_MOVE_CN;
-      operation_menu.auto_off = AUTO_SHUTDOWN_CN;
+      operation_menu.title      = TITLE_OPERATION_CN;
+      operation_menu.pause      = PRINTING_PAUSE_CN;
+      operation_menu.stop       = PRINTING_STOP_CN;
+      operation_menu.temp       = PRINTING_TEMP_CN;
+      operation_menu.fan        = FAN_TEXT_CN;
+      operation_menu.filament   = FILAMENT_TEXT_CN;
+      operation_menu.extr       = PRINTING_EXTRUDER_CN;
+      operation_menu.speed      = PRINTING_CHANGESPEED_CN;
+      operation_menu.more       = PRINTING_MORE_CN;
+      operation_menu.move       = PRINTING_MOVE_CN;
+      operation_menu.auto_off   = AUTO_SHUTDOWN_CN;
       operation_menu.manual_off = MANUAL_SHUTDOWN_CN;
       //
-      pause_menu.title = TITLE_PAUSE_CN;
-      pause_menu.resume = PRINTING_RESUME_CN;
-      pause_menu.stop = PRINTING_STOP_CN;
-      pause_menu.extrude = PRINTING_EXTRUDER_CN;
-      pause_menu.move = PRINTING_MOVE_CN;
+      pause_menu.title    = TITLE_PAUSE_CN;
+      pause_menu.resume   = PRINTING_RESUME_CN;
+      pause_menu.stop     = PRINTING_STOP_CN;
+      pause_menu.extrude  = PRINTING_EXTRUDER_CN;
+      pause_menu.move     = PRINTING_MOVE_CN;
       pause_menu.filament = FILAMENT_TEXT_CN;
-      pause_menu.more = PRINTING_MORE_CN;
+      pause_menu.more     = PRINTING_MORE_CN;
 
       //
-      speed_menu.title = PRINTING_CHANGESPEED_CN;
-      speed_menu.add = ADD_TEXT_CN;
-      speed_menu.dec = DEC_TEXT_CN;
-      speed_menu.move = MOVE_SPEED_CN;
-      speed_menu.extrude = EXTRUDER_SPEED_CN;
+      speed_menu.title         = PRINTING_CHANGESPEED_CN;
+      speed_menu.add           = ADD_TEXT_CN;
+      speed_menu.dec           = DEC_TEXT_CN;
+      speed_menu.move          = MOVE_SPEED_CN;
+      speed_menu.extrude       = EXTRUDER_SPEED_CN;
       speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_CN;
-      speed_menu.move_speed = MOVE_SPEED_STATE_CN;
+      speed_menu.move_speed    = MOVE_SPEED_STATE_CN;
       //
-      printing_more_menu.title = TITLE_MORE_CN;
-      printing_more_menu.fan = FAN_TEXT_CN;
+      printing_more_menu.title      = TITLE_MORE_CN;
+      printing_more_menu.fan        = FAN_TEXT_CN;
       printing_more_menu.auto_close = AUTO_SHUTDOWN_CN;
-      printing_more_menu.manual = MANUAL_SHUTDOWN_CN;
-      printing_more_menu.speed = PRINTING_CHANGESPEED_CN;
-      printing_more_menu.temp = PRINTING_TEMP_CN;
-
-      //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
-      print_file_dialog_menu.confirm = DIALOG_CONFIRM_CN;
-      print_file_dialog_menu.cancle = DIALOG_CANCLE_CN;
-      print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_CN;
-      print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_CN;
-      print_file_dialog_menu.retry = DIALOG_RETRY_CN;
-      print_file_dialog_menu.stop = DIALOG_STOP_CN;
-      print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_CN;
+      printing_more_menu.manual     = MANUAL_SHUTDOWN_CN;
+      printing_more_menu.speed      = PRINTING_CHANGESPEED_CN;
+      printing_more_menu.temp       = PRINTING_TEMP_CN;
+
+      // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
+      print_file_dialog_menu.confirm               = DIALOG_CONFIRM_CN;
+      print_file_dialog_menu.cancle                = DIALOG_CANCLE_CN;
+      print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_CN;
+      print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_CN;
+      print_file_dialog_menu.retry                 = DIALOG_RETRY_CN;
+      print_file_dialog_menu.stop                  = DIALOG_STOP_CN;
+      print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_CN;
       print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_CN;
 
       print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_CN;
-      print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_CN;
+      print_file_dialog_menu.filament_no_press   = DIALOG_FILAMENT_NO_PRESS_CN;
 
-      print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_CN;
-      print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_CN;
-      print_file_dialog_menu.reprint = DIALOG_REPRINT_CN;
+      print_file_dialog_menu.print_finish     = DIALOG_PRINT_FINISH_CN;
+      print_file_dialog_menu.print_time       = DIALOG_PRINT_TIME_CN;
+      print_file_dialog_menu.reprint          = DIALOG_REPRINT_CN;
       print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_CN;
 
-      //ZOFFSET
+      // ZOFFSET
       zoffset_menu.title = TITLE_ZOFFSET_CN;
-      zoffset_menu.inc = ZOFFSET_INC_CN;
-      zoffset_menu.dec = ZOFFSET_DEC_CN;
-
-      pause_msg_menu.pausing = MESSEGE_PAUSING_CN;
-      pause_msg_menu.changing = MESSEGE_CHANGING_CN;
-      pause_msg_menu.unload = MESSEGE_UNLOAD_CN;
-      pause_msg_menu.waiting = MESSEGE_WAITING_CN;
-      pause_msg_menu.insert = MESSEGE_INSERT_CN;
-      pause_msg_menu.load = MESSEGE_LOAD_CN;
-      pause_msg_menu.purge = MESSEGE_PURGE_CN;
-      pause_msg_menu.resume = MESSEGE_RESUME_CN;
-      pause_msg_menu.heat = MESSEGE_HEAT_CN;
-      pause_msg_menu.heating = MESSEGE_HEATING_CN;
-      pause_msg_menu.option = MESSEGE_OPTION_CN;
-      pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_CN;
-      pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_CN;
+      zoffset_menu.inc   = ZOFFSET_INC_CN;
+      zoffset_menu.dec   = ZOFFSET_DEC_CN;
+
+      pause_msg_menu.pausing       = MESSAGE_PAUSING_CN;
+      pause_msg_menu.changing      = MESSAGE_CHANGING_CN;
+      pause_msg_menu.unload        = MESSAGE_UNLOAD_CN;
+      pause_msg_menu.waiting       = MESSAGE_WAITING_CN;
+      pause_msg_menu.insert        = MESSAGE_INSERT_CN;
+      pause_msg_menu.load          = MESSAGE_LOAD_CN;
+      pause_msg_menu.purge         = MESSAGE_PURGE_CN;
+      pause_msg_menu.resume        = MESSAGE_RESUME_CN;
+      pause_msg_menu.heat          = MESSAGE_HEAT_CN;
+      pause_msg_menu.heating       = MESSAGE_HEATING_CN;
+      pause_msg_menu.option        = MESSAGE_OPTION_CN;
+      pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_CN;
+      pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_CN;
+      eeprom_menu.title            = EEPROM_SETTINGS_TITLE_CN;
+      eeprom_menu.store            = EEPROM_SETTINGS_STORE_CN;
+      eeprom_menu.read             = EEPROM_SETTINGS_READ_CN;
+      eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_CN;
+      eeprom_menu.storeTips        = EEPROM_STORE_TIPS_CN;
+      eeprom_menu.readTips         =  EEPROM_READ_TIPS_CN;
+      eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_CN;
       break;
 
       #if 1
         #if 1
 
           case LANG_COMPLEX_CHINESE:
-            common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_CN;
-            common_menu.text_back = BACK_TEXT_CN;
-            common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_CN;
-            common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_CN;
-            common_menu.print_special_title = PRINTING_GBK;
-            common_menu.pause_special_title = PRINTING_PAUSE_GBK;
+            common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_T_CN;
+            common_menu.text_back             = BACK_TEXT_T_CN;
+            common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_T_CN;
+            common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_T_CN;
+            common_menu.print_special_title   = PRINTING_GBK;
+            common_menu.pause_special_title   = PRINTING_PAUSE_GBK;
             common_menu.operate_special_title = PRINTING_OPERATION_GBK;
             //
-            main_menu.title = TITLE_READYPRINT_CN;
-            main_menu.preheat = PREHEAT_TEXT_CN;
-            main_menu.move = MOVE_TEXT_CN;
-            main_menu.home = HOME_TEXT_CN;
-            main_menu.print = PRINT_TEXT_CN;
-            main_menu.extrude = EXTRUDE_TEXT_CN;
-            main_menu.leveling = LEVELING_TEXT_CN;
-            main_menu.autoleveling = AUTO_LEVELING_TEXT_CN;
-            main_menu.fan = FAN_TEXT_CN;
-            main_menu.set = SET_TEXT_CN;
-            main_menu.more = MORE_TEXT_CN;
-            main_menu.tool = TOOL_TEXT_CN;
-            //TOOL
-            tool_menu.title = TOOL_TEXT_CN;
-            tool_menu.preheat = TOOL_PREHEAT_CN;
-            tool_menu.extrude = TOOL_EXTRUDE_CN;
-            tool_menu.move = TOOL_MOVE_CN;
-            tool_menu.home = TOOL_HOME_CN;
-            tool_menu.leveling = TOOL_LEVELING_CN;
-            tool_menu.autoleveling = TOOL_AUTO_LEVELING_CN;
-            tool_menu.filament = TOOL_FILAMENT_CN;
-            tool_menu.more = TOOL_MORE_CN;
-            //
-            preheat_menu.adjust_title = TITLE_ADJUST_CN;
-            preheat_menu.title = TITLE_PREHEAT_CN;
-            preheat_menu.add = ADD_TEXT_CN;
-            preheat_menu.dec = DEC_TEXT_CN;
-            preheat_menu.ext1 = EXTRUDER_1_TEXT_CN;
-            preheat_menu.ext2 = EXTRUDER_2_TEXT_CN;
-            preheat_menu.hotbed = HEATBED_TEXT_CN;
-            preheat_menu.off = CLOSE_TEXT_CN;
-            preheat_menu.value_state = TEXT_VALUE_CN;
-            preheat_menu.step_1c = TEXT_1C_CN;
-            preheat_menu.step_5c = TEXT_5C_CN;
-            preheat_menu.step_10c = TEXT_10C_CN;
-            //
-            move_menu.title = MOVE_TEXT_CN;
-            more_menu.zoffset = ZOFFSET_CN;
-            //
-            home_menu.title = TITLE_HOME_CN;
-            home_menu.stopmove = HOME_STOPMOVE_CN;
-            //
-            file_menu.title = TITLE_CHOOSEFILE_CN;
-            file_menu.page_up = PAGE_UP_TEXT_CN;
-            file_menu.page_down = PAGE_DOWN_TEXT_CN;
-            file_menu.file_loading = FILE_LOADING_CN;
-            file_menu.no_file = NO_FILE_CN;
-            file_menu.no_file_and_check = NO_FILE_CN;//NO_FILE_AND_CHECK_T_CN;
-            //
-            extrude_menu.title = TITLE_EXTRUDE_CN;
-            extrude_menu.in = EXTRUDER_IN_TEXT_CN;
-            extrude_menu.out = EXTRUDER_OUT_TEXT_CN;
-            extrude_menu.ext1 = EXTRUDER_1_TEXT_CN;
-            extrude_menu.ext2 = EXTRUDER_2_TEXT_CN;
-            extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_CN;
-            extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_CN;
-            extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_CN;
-            extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_CN;
-            extrude_menu.temp_value = EXTRUDE_TEXT_VALUE_T_CN;
-            //
-            leveling_menu.title = TITLE_LEVELING_CN;
-            leveling_menu.position1 = LEVELING_POINT1_TEXT_CN;
-            leveling_menu.position2 = LEVELING_POINT2_TEXT_CN;
-            leveling_menu.position3 = LEVELING_POINT3_TEXT_CN;
-            leveling_menu.position4 = LEVELING_POINT4_TEXT_CN;
-            leveling_menu.position5 = LEVELING_POINT5_TEXT_CN;
-            //
-            set_menu.title = TITLE_SET_CN;
-            set_menu.filesys = FILESYS_TEXT_CN;
-            set_menu.wifi = WIFI_TEXT_CN;
-            set_menu.about = ABOUT_TEXT_CN;
-            set_menu.fan = FAN_TEXT_CN;
-            set_menu.filament = FILAMENT_TEXT_CN;
-            set_menu.breakpoint = BREAK_POINT_TEXT_CN;
-            set_menu.motoroff = MOTOR_OFF_TEXT_CN;
-            set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_CN;
-            set_menu.language = LANGUAGE_TEXT_CN;
-            set_menu.shutdown = SHUTDOWN_TEXT_CN;
-            //set_menu.machine_para = MACHINE_PARA_CN;
-            //
-            filesys_menu.title = TITLE_FILESYS_CN;
-            filesys_menu.sd_sys = SD_CARD_TEXT_CN;
-            filesys_menu.usb_sys = U_DISK_TEXT_CN;
-            //
-            more_menu.title = TITLE_MORE_CN;
-            //WIFI
+            main_menu.title        = TITLE_READYPRINT_T_CN;
+            main_menu.preheat      = PREHEAT_TEXT_T_CN;
+            main_menu.move         = MOVE_TEXT_T_CN;
+            main_menu.home         = HOME_TEXT_T_CN;
+            main_menu.print        = PRINT_TEXT_T_CN;
+            main_menu.extrude      = EXTRUDE_TEXT_T_CN;
+            main_menu.leveling     = LEVELING_TEXT_T_CN;
+            main_menu.autoleveling = AUTO_LEVELING_TEXT_T_CN;
+            main_menu.fan          = FAN_TEXT_T_CN;
+            main_menu.set          = SET_TEXT_T_CN;
+            main_menu.more         = MORE_TEXT_T_CN;
+            main_menu.tool         = TOOL_TEXT_T_CN;
+            // TOOL
+            tool_menu.title        = TOOL_TEXT_T_CN;
+            tool_menu.preheat      = TOOL_PREHEAT_T_CN;
+            tool_menu.extrude      = TOOL_EXTRUDE_T_CN;
+            tool_menu.move         = TOOL_MOVE_T_CN;
+            tool_menu.home         = TOOL_HOME_T_CN;
+            tool_menu.leveling     = TOOL_LEVELING_T_CN;
+            tool_menu.autoleveling = TOOL_AUTO_LEVELING_T_CN;
+            tool_menu.filament     = TOOL_FILAMENT_T_CN;
+            tool_menu.more         = TOOL_MORE_T_CN;
+            //
+            preheat_menu.adjust_title = TITLE_ADJUST_T_CN;
+            preheat_menu.title        = TITLE_PREHEAT_T_CN;
+            preheat_menu.add          = ADD_TEXT_T_CN;
+            preheat_menu.dec          = DEC_TEXT_T_CN;
+            preheat_menu.ext1         = EXTRUDER_1_TEXT_T_CN;
+            preheat_menu.ext2         = EXTRUDER_2_TEXT_T_CN;
+            preheat_menu.hotbed       = HEATBED_TEXT_T_CN;
+            preheat_menu.off          = CLOSE_TEXT_T_CN;
+            preheat_menu.value_state  = TEXT_VALUE_T_CN;
+            preheat_menu.step_1c      = TEXT_1C_T_CN;
+            preheat_menu.step_5c      = TEXT_5C_T_CN;
+            preheat_menu.step_10c     = TEXT_10C_T_CN;
+            //
+            move_menu.title   = MOVE_TEXT_T_CN;
+            more_menu.zoffset = ZOFFSET_T_CN;
+            //
+            home_menu.title    = TITLE_HOME_T_CN;
+            home_menu.stopmove = HOME_STOPMOVE_T_CN;
+            //
+            file_menu.title             = TITLE_CHOOSEFILE_T_CN;
+            file_menu.page_up           = PAGE_UP_TEXT_T_CN;
+            file_menu.page_down         = PAGE_DOWN_TEXT_T_CN;
+            file_menu.file_loading      = FILE_LOADING_T_CN;
+            file_menu.no_file           = NO_FILE_T_CN;
+            file_menu.no_file_and_check = NO_FILE_T_CN;// NO_FILE_AND_CHECK_T_CN;
+            //
+            extrude_menu.title       = TITLE_EXTRUDE_T_CN;
+            extrude_menu.in          = EXTRUDER_IN_TEXT_T_CN;
+            extrude_menu.out         = EXTRUDER_OUT_TEXT_T_CN;
+            extrude_menu.ext1        = EXTRUDER_1_TEXT_T_CN;
+            extrude_menu.ext2        = EXTRUDER_2_TEXT_T_CN;
+            extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_T_CN;
+            extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_T_CN;
+            extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_T_CN;
+            extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_T_CN;
+            extrude_menu.temp_value  = EXTRUDE_TEXT_VALUE_T_T_CN;
+            //
+            leveling_menu.title     = TITLE_LEVELING_CN;
+            leveling_menu.position1 = LEVELING_POINT1_TEXT_T_CN;
+            leveling_menu.position2 = LEVELING_POINT2_TEXT_T_CN;
+            leveling_menu.position3 = LEVELING_POINT3_TEXT_T_CN;
+            leveling_menu.position4 = LEVELING_POINT4_TEXT_T_CN;
+            leveling_menu.position5 = LEVELING_POINT5_TEXT_T_CN;
+            //
+            set_menu.title        = TITLE_SET_T_CN;
+            set_menu.filesys      = FILESYS_TEXT_T_CN;
+            set_menu.wifi         = WIFI_TEXT_T_CN;
+            set_menu.about        = ABOUT_TEXT_T_CN;
+            set_menu.fan          = FAN_TEXT_T_CN;
+            set_menu.filament     = FILAMENT_TEXT_T_CN;
+            set_menu.breakpoint   = BREAK_POINT_TEXT_T_CN;
+            set_menu.motoroff     = MOTOR_OFF_TEXT_T_CN;
+            set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_T_CN;
+            set_menu.language     = LANGUAGE_TEXT_T_CN;
+            set_menu.shutdown     = SHUTDOWN_TEXT_T_CN;
+            set_menu.machine_para = MACHINE_PARA_T_CN;
+            set_menu.eepromSet    = EEPROM_SETTINGS_T_CN;
+            filesys_menu.title    = TITLE_FILESYS_T_CN;
+            filesys_menu.sd_sys   = SD_CARD_TEXT_T_CN;
+            filesys_menu.usb_sys  = U_DISK_TEXT_T_CN;
+            //
+            more_menu.title = TITLE_MORE_T_CN;
+            // WIFI
             wifi_menu.title = WIFI_TEXT;
-            //wifi_menu.key = WIFI_KEY_TEXT_CN;
-            //wifi_menu.ip = WIFI_IP_TEXT_CN;
-            //wifi_menu.state = WIFI_STA_TEXT_CN;
-            wifi_menu.cloud = CLOUD_TEXT_CN;
-            wifi_menu.reconnect = WIFI_RECONNECT_TEXT_CN;
-            //CLOUD
-            cloud_menu.title = TITLE_CLOUD_TEXT_CN;
-            cloud_menu.bind = CLOUD_BINDED_CN;
-            cloud_menu.binded = CLOUD_BINDED_CN;
-            cloud_menu.unbind = CLOUD_UNBIND_CN;
-            cloud_menu.unbinding = CLOUD_UNBINDED_CN;
-            cloud_menu.disconnected = CLOUD_DISCONNECTED_CN;
-            cloud_menu.disable = CLOUD_DISABLE_CN;
-            //
-            about_menu.title = ABOUT_TEXT_CN;
-            about_menu.type = ABOUT_TYPE_TEXT_CN;
-            about_menu.version = ABOUT_VERSION_TEXT_CN;
-            about_menu.wifi = ABOUT_WIFI_TEXT_CN;
-
-            //
-            fan_menu.title = FAN_TEXT_CN;
-            fan_menu.add = FAN_ADD_TEXT_CN;
-            fan_menu.dec = FAN_DEC_TEXT_CN;
-            fan_menu.state = FAN_TIPS1_TEXT_CN;
-            //
-            filament_menu.title = TITLE_FILAMENT_CN;
-            filament_menu.in = FILAMENT_IN_TEXT_CN;
-            filament_menu.out = FILAMENT_OUT_TEXT_CN;
-            filament_menu.ext1 = FILAMENT_EXT0_TEXT_CN;
-            filament_menu.ext2 = FILAMENT_EXT1_TEXT_CN;
-            filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_CN;
-            filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_CN;
-            filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_CN;
-            filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_CN;
-            filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_CN;
-            filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_CN;
-            filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_CN;
-            filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_CN;
-            filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_CN;
-
-
-            //
-            language_menu.title = TITLE_LANGUAGE_CN;
-            language_menu.next = PAGE_DOWN_TEXT_CN;
-            language_menu.up = PAGE_UP_TEXT_CN;
-
-            //
-            printing_menu.title = TITLE_PRINTING_CN;
-            printing_menu.option = PRINTING_OPERATION_CN;
-            printing_menu.stop = PRINTING_STOP_CN;
-            printing_menu.pause = PRINTING_PAUSE_CN;
-            printing_menu.resume = PRINTING_RESUME_CN;
-
-            //
-            operation_menu.title = TITLE_OPERATION_CN;
-            operation_menu.pause = PRINTING_PAUSE_CN;
-            operation_menu.stop = PRINTING_STOP_CN;
-            operation_menu.temp = PRINTING_TEMP_CN;
-            operation_menu.fan = FAN_TEXT_CN;
-            operation_menu.extr = PRINTING_EXTRUDER_CN;
-            operation_menu.speed = PRINTING_CHANGESPEED_CN;
-            operation_menu.filament = FILAMENT_TEXT_CN;
-            operation_menu.more = PRINTING_MORE_CN;
-            operation_menu.move = PRINTING_MOVE_CN;
-            operation_menu.auto_off = AUTO_SHUTDOWN_CN;
-            operation_menu.manual_off = MANUAL_SHUTDOWN_CN;
-            //
-            pause_menu.title = TITLE_PAUSE_CN;
-            pause_menu.resume = PRINTING_RESUME_CN;
-            pause_menu.stop = PRINTING_STOP_CN;
-            pause_menu.extrude = PRINTING_EXTRUDER_CN;
-            pause_menu.move = PRINTING_MOVE_CN;
-            pause_menu.filament = FILAMENT_TEXT_CN;
-            pause_menu.more = PRINTING_MORE_CN;
-
-            //
-            speed_menu.title = PRINTING_CHANGESPEED_CN;
-            speed_menu.add = ADD_TEXT_CN;
-            speed_menu.dec = DEC_TEXT_CN;
-            speed_menu.move = MOVE_SPEED_CN;
-            speed_menu.extrude = EXTRUDER_SPEED_CN;
-            speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_CN;
-            speed_menu.move_speed = MOVE_SPEED_STATE_CN;
-            //
-            printing_more_menu.title = TITLE_MORE_CN;
-            printing_more_menu.fan = FAN_TEXT_CN;
-            printing_more_menu.auto_close = AUTO_SHUTDOWN_CN;
-            printing_more_menu.manual = MANUAL_SHUTDOWN_CN;
-            printing_more_menu.speed = PRINTING_CHANGESPEED_CN;
-            printing_more_menu.temp = PRINTING_TEMP_CN;
-
-            //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
-            print_file_dialog_menu.confirm = DIALOG_CONFIRM_CN;
-            print_file_dialog_menu.cancle = DIALOG_CANCLE_CN;
-            print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_CN;
-            print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_CN;
-            print_file_dialog_menu.retry = DIALOG_RETRY_CN;
-            print_file_dialog_menu.stop = DIALOG_STOP_CN;
-            print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_CN;
-            print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_CN;
-
-            print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_CN;
-            print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_CN;
-            print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_CN;
-            print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_CN;
-            print_file_dialog_menu.reprint = DIALOG_REPRINT_CN;
-            print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_CN;
-            //ZOFFSET
-            zoffset_menu.title = TITLE_ZOFFSET_CN;
-            zoffset_menu.inc = ZOFFSET_INC_CN;
-            zoffset_menu.dec = ZOFFSET_DEC_CN;
-
-            pause_msg_menu.pausing = MESSEGE_PAUSING_CN;
-            pause_msg_menu.changing = MESSEGE_CHANGING_CN;
-            pause_msg_menu.unload = MESSEGE_UNLOAD_CN;
-            pause_msg_menu.waiting = MESSEGE_WAITING_CN;
-            pause_msg_menu.insert = MESSEGE_INSERT_CN;
-            pause_msg_menu.load = MESSEGE_LOAD_CN;
-            pause_msg_menu.purge = MESSEGE_PURGE_CN;
-            pause_msg_menu.resume = MESSEGE_RESUME_CN;
-            pause_msg_menu.heat = MESSEGE_HEAT_CN;
-            pause_msg_menu.heating = MESSEGE_HEATING_CN;
-            pause_msg_menu.option = MESSEGE_OPTION_CN;
-            pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_CN;
-            pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_CN;
+            // wifi_menu.key = WIFI_KEY_TEXT_CN;
+            // wifi_menu.ip = WIFI_IP_TEXT_CN;
+            // wifi_menu.state= WIFI_STA_TEXT_CN;
+            wifi_menu.cloud     = CLOUD_TEXT_T_CN;
+            wifi_menu.reconnect = WIFI_RECONNECT_TEXT_T_CN;
+            // CLOUD
+            cloud_menu.title        = TITLE_CLOUD_TEXT_T_CN;
+            cloud_menu.bind         = CLOUD_BINDED_T_CN;
+            cloud_menu.binded       = CLOUD_BINDED_T_CN;
+            cloud_menu.unbind       = CLOUD_UNBIND_T_CN;
+            cloud_menu.unbinding    = CLOUD_UNBINDED_T_CN;
+            cloud_menu.disconnected = CLOUD_DISCONNECTED_T_CN;
+            cloud_menu.disable      = CLOUD_DISABLE_T_CN;
+            //
+            about_menu.title   = ABOUT_TEXT_T_CN;
+            about_menu.type    = ABOUT_TYPE_TEXT_T_CN;
+            about_menu.version = ABOUT_VERSION_TEXT_T_CN;
+            about_menu.wifi    = ABOUT_WIFI_TEXT_T_CN;
+
+            //
+            fan_menu.title = FAN_TEXT_T_CN;
+            fan_menu.add   = FAN_ADD_TEXT_T_CN;
+            fan_menu.dec   = FAN_DEC_TEXT_T_CN;
+            fan_menu.state = FAN_TIPS1_TEXT_T_CN;
+            //
+            filament_menu.title                               = TITLE_FILAMENT_T_CN;
+            filament_menu.in                                  = FILAMENT_IN_TEXT_T_CN;
+            filament_menu.out                                 = FILAMENT_OUT_TEXT_T_CN;
+            filament_menu.ext1                                = FILAMENT_EXT0_TEXT_T_CN;
+            filament_menu.ext2                                = FILAMENT_EXT1_TEXT_T_CN;
+            filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_T_CN;
+            filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_T_CN;
+            filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_T_CN;
+            filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_T_CN;
+            filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_T_CN;
+            filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_T_CN;
+            filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_T_CN;
+            filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_T_CN;
+            filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_T_CN;
+
+
+            //
+            language_menu.title = TITLE_LANGUAGE_T_CN;
+            language_menu.next  = PAGE_DOWN_TEXT_T_CN;
+            language_menu.up    = PAGE_UP_TEXT_T_CN;
+
+            //
+            printing_menu.title  = TITLE_PRINTING_T_CN;
+            printing_menu.option = PRINTING_OPERATION_T_CN;
+            printing_menu.stop   = PRINTING_STOP_T_CN;
+            printing_menu.pause  = PRINTING_PAUSE_T_CN;
+            printing_menu.resume = PRINTING_RESUME_T_CN;
+
+            //
+            operation_menu.title      = TITLE_OPERATION_T_CN;
+            operation_menu.pause      = PRINTING_PAUSE_T_CN;
+            operation_menu.stop       = PRINTING_STOP_T_CN;
+            operation_menu.temp       = PRINTING_TEMP_T_CN;
+            operation_menu.fan        = FAN_TEXT_T_CN;
+            operation_menu.extr       = PRINTING_EXTRUDER_T_CN;
+            operation_menu.speed      = PRINTING_CHANGESPEED_T_CN;
+            operation_menu.filament   = FILAMENT_TEXT_T_CN;
+            operation_menu.more       = PRINTING_MORE_T_CN;
+            operation_menu.move       = PRINTING_MOVE_T_CN;
+            operation_menu.auto_off   = AUTO_SHUTDOWN_T_CN;
+            operation_menu.manual_off = MANUAL_SHUTDOWN_T_CN;
+            //
+            pause_menu.title    = TITLE_PAUSE_T_CN;
+            pause_menu.resume   = PRINTING_RESUME_T_CN;
+            pause_menu.stop     = PRINTING_STOP_T_CN;
+            pause_menu.extrude  = PRINTING_EXTRUDER_T_CN;
+            pause_menu.move     = PRINTING_MOVE_T_CN;
+            pause_menu.filament = FILAMENT_TEXT_T_CN;
+            pause_menu.more     = PRINTING_MORE_T_CN;
+
+            //
+            speed_menu.title         = PRINTING_CHANGESPEED_T_CN;
+            speed_menu.add           = ADD_TEXT_T_CN;
+            speed_menu.dec           = DEC_TEXT_T_CN;
+            speed_menu.move          = MOVE_SPEED_T_CN;
+            speed_menu.extrude       = EXTRUDER_SPEED_T_CN;
+            speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_T_CN;
+            speed_menu.move_speed    = MOVE_SPEED_STATE_T_CN;
+            //
+            printing_more_menu.title      = TITLE_MORE_T_CN;
+            printing_more_menu.fan        = FAN_TEXT_T_CN;
+            printing_more_menu.auto_close = AUTO_SHUTDOWN_T_CN;
+            printing_more_menu.manual     = MANUAL_SHUTDOWN_T_CN;
+            printing_more_menu.speed      = PRINTING_CHANGESPEED_T_CN;
+            printing_more_menu.temp       = PRINTING_TEMP_T_CN;
+
+            // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_CN;
+            print_file_dialog_menu.confirm               = DIALOG_CONFIRM_T_CN;
+            print_file_dialog_menu.cancle                = DIALOG_CANCLE_T_CN;
+            print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_T_CN;
+            print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_T_CN;
+            print_file_dialog_menu.retry                 = DIALOG_RETRY_T_CN;
+            print_file_dialog_menu.stop                  = DIALOG_STOP_T_CN;
+            print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_T_CN;
+            print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_T_CN;
+
+            print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_T_CN;
+            print_file_dialog_menu.filament_no_press   = DIALOG_FILAMENT_NO_PRESS_T_CN;
+            print_file_dialog_menu.print_finish        = DIALOG_PRINT_FINISH_T_CN;
+            print_file_dialog_menu.print_time          = DIALOG_PRINT_TIME_T_CN;
+            print_file_dialog_menu.reprint             = DIALOG_REPRINT_T_CN;
+            print_file_dialog_menu.wifi_enable_tips    = DIALOG_WIFI_ENABLE_TIPS_T_CN;
+            // ZOFFSET
+            zoffset_menu.title = TITLE_ZOFFSET_T_CN;
+            zoffset_menu.inc   = ZOFFSET_INC_T_CN;
+            zoffset_menu.dec   = ZOFFSET_DEC_T_CN;
+
+            pause_msg_menu.pausing       = MESSAGE_PAUSING_T_CN;
+            pause_msg_menu.changing      = MESSAGE_CHANGING_T_CN;
+            pause_msg_menu.unload        = MESSAGE_UNLOAD_T_CN;
+            pause_msg_menu.waiting       = MESSAGE_WAITING_T_CN;
+            pause_msg_menu.insert        = MESSAGE_INSERT_T_CN;
+            pause_msg_menu.load          = MESSAGE_LOAD_T_CN;
+            pause_msg_menu.purge         = MESSAGE_PURGE_T_CN;
+            pause_msg_menu.resume        = MESSAGE_RESUME_T_CN;
+            pause_msg_menu.heat          = MESSAGE_HEAT_T_CN;
+            pause_msg_menu.heating       = MESSAGE_HEATING_T_CN;
+            pause_msg_menu.option        = MESSAGE_OPTION_T_CN;
+            pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_T_CN;
+            pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_T_CN;
+            eeprom_menu.title            = EEPROM_SETTINGS_TITLE_T_CN;
+            eeprom_menu.store            = EEPROM_SETTINGS_STORE_T_CN;
+            eeprom_menu.read             = EEPROM_SETTINGS_READ_T_CN;
+            eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_T_CN;
+            eeprom_menu.storeTips        = EEPROM_STORE_TIPS_T_CN;
+            eeprom_menu.readTips         =  EEPROM_READ_TIPS_T_CN;
+            eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_T_CN;
             break;
           case LANG_ENGLISH:
-            common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_EN;
-            common_menu.text_back = BACK_TEXT_EN;
-            common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_EN;
-            common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_EN;
-            common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
-            common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+            common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_EN;
+            common_menu.text_back             = BACK_TEXT_EN;
+            common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_EN;
+            common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_EN;
+            common_menu.print_special_title   = PRINTING_OTHER_LANGUGE;
+            common_menu.pause_special_title   = PRINTING_PAUSE_OTHER_LANGUGE;
             common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
             //
-            main_menu.title = TITLE_READYPRINT_EN;
-            main_menu.preheat = PREHEAT_TEXT_EN;
-            main_menu.move = MOVE_TEXT_EN;
-            main_menu.home = HOME_TEXT_EN;
-            main_menu.print = PRINT_TEXT_EN;
-            main_menu.extrude = EXTRUDE_TEXT_EN;
-            main_menu.leveling = LEVELING_TEXT_EN;
+            main_menu.title        = TITLE_READYPRINT_EN;
+            main_menu.preheat      = PREHEAT_TEXT_EN;
+            main_menu.move         = MOVE_TEXT_EN;
+            main_menu.home         = HOME_TEXT_EN;
+            main_menu.print        = PRINT_TEXT_EN;
+            main_menu.extrude      = EXTRUDE_TEXT_EN;
+            main_menu.leveling     = LEVELING_TEXT_EN;
             main_menu.autoleveling = AUTO_LEVELING_TEXT_EN;
-            main_menu.fan = FAN_TEXT_EN;
-            main_menu.set = SET_TEXT_EN;
-            main_menu.more = MORE_TEXT_EN;
-            main_menu.tool = TOOL_TEXT_EN;
-            //TOOL
-            tool_menu.title = TOOL_TEXT_EN;
-            tool_menu.preheat = TOOL_PREHEAT_EN;
-            tool_menu.extrude = TOOL_EXTRUDE_EN;
-            tool_menu.move = TOOL_MOVE_EN;
-            tool_menu.home = TOOL_HOME_EN;
-            tool_menu.leveling = TOOL_LEVELING_EN;
+            main_menu.fan          = FAN_TEXT_EN;
+            main_menu.set          = SET_TEXT_EN;
+            main_menu.more         = MORE_TEXT_EN;
+            main_menu.tool         = TOOL_TEXT_EN;
+            // TOOL
+            tool_menu.title        = TOOL_TEXT_EN;
+            tool_menu.preheat      = TOOL_PREHEAT_EN;
+            tool_menu.extrude      = TOOL_EXTRUDE_EN;
+            tool_menu.move         = TOOL_MOVE_EN;
+            tool_menu.home         = TOOL_HOME_EN;
+            tool_menu.leveling     = TOOL_LEVELING_EN;
             tool_menu.autoleveling = TOOL_AUTO_LEVELING_EN;
-            tool_menu.filament = TOOL_FILAMENT_EN;
-            tool_menu.more = TOOL_MORE_EN;
+            tool_menu.filament     = TOOL_FILAMENT_EN;
+            tool_menu.more         = TOOL_MORE_EN;
             //
             preheat_menu.adjust_title = TITLE_ADJUST_EN;
-            preheat_menu.title = TITLE_PREHEAT_EN;
-            preheat_menu.add = ADD_TEXT_EN;
-            preheat_menu.dec = DEC_TEXT_EN;
-            preheat_menu.ext1 = EXTRUDER_1_TEXT_EN;
-            preheat_menu.ext2 = EXTRUDER_2_TEXT_EN;
-            preheat_menu.hotbed = HEATBED_TEXT_EN;
-            preheat_menu.off = CLOSE_TEXT_EN;
+            preheat_menu.title        = TITLE_PREHEAT_EN;
+            preheat_menu.add          = ADD_TEXT_EN;
+            preheat_menu.dec          = DEC_TEXT_EN;
+            preheat_menu.ext1         = EXTRUDER_1_TEXT_EN;
+            preheat_menu.ext2         = EXTRUDER_2_TEXT_EN;
+            preheat_menu.hotbed       = HEATBED_TEXT_EN;
+            preheat_menu.off          = CLOSE_TEXT_EN;
             //
             move_menu.title = TITLE_MOVE_EN;
             //
-            home_menu.title = TITLE_HOME_EN;
+            home_menu.title    = TITLE_HOME_EN;
             home_menu.stopmove = HOME_STOPMOVE_EN;
             //
-            file_menu.title = TITLE_CHOOSEFILE_EN;
-            file_menu.page_up = PAGE_UP_TEXT_EN;
-            file_menu.page_down = PAGE_DOWN_TEXT_EN;
-            file_menu.file_loading = FILE_LOADING_EN;
-            file_menu.no_file = NO_FILE_EN;
-            file_menu.no_file_and_check = NO_FILE_EN;//NO_FILE_AND_CHECK_EN;
-            //
-            extrude_menu.title = TITLE_EXTRUDE_EN;
-            extrude_menu.in = EXTRUDER_IN_TEXT_EN;
-            extrude_menu.out = EXTRUDER_OUT_TEXT_EN;
-            extrude_menu.ext1 = EXTRUDER_1_TEXT_EN;
-            extrude_menu.ext2 = EXTRUDER_2_TEXT_EN;
-            extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_EN;
-            extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
-            extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_EN;
+            file_menu.title             = TITLE_CHOOSEFILE_EN;
+            file_menu.page_up           = PAGE_UP_TEXT_EN;
+            file_menu.page_down         = PAGE_DOWN_TEXT_EN;
+            file_menu.file_loading      = FILE_LOADING_EN;
+            file_menu.no_file           = NO_FILE_EN;
+            file_menu.no_file_and_check = NO_FILE_EN;// NO_FILE_AND_CHECK_EN;
+            //
+            extrude_menu.title       = TITLE_EXTRUDE_EN;
+            extrude_menu.in          = EXTRUDER_IN_TEXT_EN;
+            extrude_menu.out         = EXTRUDER_OUT_TEXT_EN;
+            extrude_menu.ext1        = EXTRUDER_1_TEXT_EN;
+            extrude_menu.ext2        = EXTRUDER_2_TEXT_EN;
+            extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_EN;
+            extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
+            extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_EN;
             extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_EN;
             //
-            leveling_menu.title = TITLE_LEVELING_EN;
+            leveling_menu.title     = TITLE_LEVELING_EN;
             leveling_menu.position1 = LEVELING_POINT1_TEXT_EN;
             leveling_menu.position2 = LEVELING_POINT2_TEXT_EN;
             leveling_menu.position3 = LEVELING_POINT3_TEXT_EN;
             leveling_menu.position4 = LEVELING_POINT4_TEXT_EN;
             leveling_menu.position5 = LEVELING_POINT5_TEXT_EN;
             //
-            set_menu.title = TITLE_SET_EN;
-            set_menu.filesys = FILESYS_TEXT_EN;
-            set_menu.wifi = WIFI_TEXT_EN;
-            set_menu.about = ABOUT_TEXT_EN;
-            set_menu.fan = FAN_TEXT_EN;
-            set_menu.filament = FILAMENT_TEXT_EN;
-            set_menu.breakpoint = BREAK_POINT_TEXT_EN;
-            set_menu.motoroff = MOTOR_OFF_TEXT_EN;
-            set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_EN;
-            set_menu.language = LANGUAGE_TEXT_EN;
-            set_menu.shutdown = SHUTDOWN_TEXT_EN;
-            //set_menu.machine_para = MACHINE_PARA_EN;
-            //
-            more_menu.title = TITLE_MORE_EN;
-            more_menu.zoffset = ZOFFSET_EN;
-            //
-            filesys_menu.title = TITLE_FILESYS_EN;
-            filesys_menu.sd_sys = SD_CARD_TEXT_EN;
+            set_menu.title        = TITLE_SET_EN;
+            set_menu.filesys      = FILESYS_TEXT_EN;
+            set_menu.wifi         = WIFI_TEXT_EN;
+            set_menu.about        = ABOUT_TEXT_EN;
+            set_menu.fan          = FAN_TEXT_EN;
+            set_menu.filament     = FILAMENT_TEXT_EN;
+            set_menu.breakpoint   = BREAK_POINT_TEXT_EN;
+            set_menu.motoroff     = MOTOR_OFF_TEXT_EN;
+            set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_EN;
+            set_menu.language     = LANGUAGE_TEXT_EN;
+            set_menu.shutdown     = SHUTDOWN_TEXT_EN;
+            set_menu.machine_para = MACHINE_PARA_EN;
+            set_menu.eepromSet    = EEPROM_SETTINGS_EN;
+            more_menu.title       = TITLE_MORE_EN;
+            more_menu.zoffset     = ZOFFSET_EN;
+            //
+            filesys_menu.title   = TITLE_FILESYS_EN;
+            filesys_menu.sd_sys  = SD_CARD_TEXT_EN;
             filesys_menu.usb_sys = U_DISK_TEXT_EN;
-            //WIFI
+            // WIFI
             wifi_menu.title = WIFI_TEXT;
-            //wifi_menu.key = WIFI_KEY_TEXT_EN;
-            //wifi_menu.ip = WIFI_IP_TEXT_EN;
-            //wifi_menu.state = WIFI_STA_TEXT_EN;
-            wifi_menu.cloud = CLOUD_TEXT_EN;
+            // wifi_menu.key = WIFI_KEY_TEXT_EN;
+            // wifi_menu.ip = WIFI_IP_TEXT_EN;
+            // wifi_menu.state = WIFI_STA_TEXT_EN;
+            wifi_menu.cloud     = CLOUD_TEXT_EN;
             wifi_menu.reconnect = WIFI_RECONNECT_TEXT_EN;
 
-            cloud_menu.title = TITLE_CLOUD_TEXT_EN;
-            cloud_menu.bind = CLOUD_BINDED_EN;
-            cloud_menu.binded = CLOUD_BINDED_EN;
-            cloud_menu.unbind = CLOUD_UNBIND_EN;
-            cloud_menu.unbinding = CLOUD_UNBINDED_EN;
+            cloud_menu.title        = TITLE_CLOUD_TEXT_EN;
+            cloud_menu.bind         = CLOUD_BINDED_EN;
+            cloud_menu.binded       = CLOUD_BINDED_EN;
+            cloud_menu.unbind       = CLOUD_UNBIND_EN;
+            cloud_menu.unbinding    = CLOUD_UNBINDED_EN;
             cloud_menu.disconnected = CLOUD_DISCONNECTED_EN;
-            cloud_menu.disable = CLOUD_DISABLE_EN;
+            cloud_menu.disable      = CLOUD_DISABLE_EN;
             //
-            about_menu.title = TITLE_ABOUT_EN;
-            about_menu.type = ABOUT_TYPE_TEXT_EN;
+            about_menu.title   = TITLE_ABOUT_EN;
+            about_menu.type    = ABOUT_TYPE_TEXT_EN;
             about_menu.version = ABOUT_VERSION_TEXT_EN;
-            about_menu.wifi = ABOUT_WIFI_TEXT_EN;
+            about_menu.wifi    = ABOUT_WIFI_TEXT_EN;
             //
             fan_menu.title = TITLE_FAN_EN;
-            fan_menu.add = FAN_ADD_TEXT_EN;
-            fan_menu.dec = FAN_DEC_TEXT_EN;
+            fan_menu.add   = FAN_ADD_TEXT_EN;
+            fan_menu.dec   = FAN_DEC_TEXT_EN;
             fan_menu.state = FAN_TIPS1_TEXT_EN;
             //
-            filament_menu.title = TITLE_FILAMENT_EN;
-            filament_menu.in = FILAMENT_IN_TEXT_EN;
-            filament_menu.out = FILAMENT_OUT_TEXT_EN;
-            filament_menu.ext1 = FILAMENT_EXT0_TEXT_EN;
-            filament_menu.ext2 = FILAMENT_EXT1_TEXT_EN;
-            filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_EN;
-            filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
-            filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
-            filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_EN;
-            filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
-            filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
+            filament_menu.title                               = TITLE_FILAMENT_EN;
+            filament_menu.in                                  = FILAMENT_IN_TEXT_EN;
+            filament_menu.out                                 = FILAMENT_OUT_TEXT_EN;
+            filament_menu.ext1                                = FILAMENT_EXT0_TEXT_EN;
+            filament_menu.ext2                                = FILAMENT_EXT1_TEXT_EN;
+            filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_EN;
+            filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
+            filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
+            filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_EN;
+            filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
+            filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
             filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_EN;
-            filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
-            filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
+            filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
+            filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
 
             //
             language_menu.title = TITLE_LANGUAGE_EN;
-            language_menu.next = PAGE_DOWN_TEXT_EN;
-            language_menu.up = PAGE_UP_TEXT_EN;
+            language_menu.next  = PAGE_DOWN_TEXT_EN;
+            language_menu.up    = PAGE_UP_TEXT_EN;
             //
-            printing_menu.title = TITLE_PRINTING_EN;
+            printing_menu.title  = TITLE_PRINTING_EN;
             printing_menu.option = PRINTING_OPERATION_EN;
-            printing_menu.stop = PRINTING_STOP_EN;
-            printing_menu.pause = PRINTING_PAUSE_EN;
+            printing_menu.stop   = PRINTING_STOP_EN;
+            printing_menu.pause  = PRINTING_PAUSE_EN;
             printing_menu.resume = PRINTING_RESUME_EN;
 
             //
-            operation_menu.title = TITLE_OPERATION_EN;
-            operation_menu.pause = PRINTING_PAUSE_EN;
-            operation_menu.stop = PRINTING_STOP_EN;
-            operation_menu.temp = PRINTING_TEMP_EN;
-            operation_menu.fan = FAN_TEXT_EN;
-            operation_menu.extr = PRINTING_EXTRUDER_EN;
-            operation_menu.speed = PRINTING_CHANGESPEED_EN;
-            operation_menu.filament = FILAMENT_TEXT_EN;
-            operation_menu.more = PRINTING_MORE_EN;
-            operation_menu.move = PRINTING_MOVE_EN;
-            operation_menu.auto_off = AUTO_SHUTDOWN_EN;
+            operation_menu.title      = TITLE_OPERATION_EN;
+            operation_menu.pause      = PRINTING_PAUSE_EN;
+            operation_menu.stop       = PRINTING_STOP_EN;
+            operation_menu.temp       = PRINTING_TEMP_EN;
+            operation_menu.fan        = FAN_TEXT_EN;
+            operation_menu.extr       = PRINTING_EXTRUDER_EN;
+            operation_menu.speed      = PRINTING_CHANGESPEED_EN;
+            operation_menu.filament   = FILAMENT_TEXT_EN;
+            operation_menu.more       = PRINTING_MORE_EN;
+            operation_menu.move       = PRINTING_MOVE_EN;
+            operation_menu.auto_off   = AUTO_SHUTDOWN_EN;
             operation_menu.manual_off = MANUAL_SHUTDOWN_EN;
             //
-            pause_menu.title = TITLE_PAUSE_EN;
-            pause_menu.resume = PRINTING_RESUME_EN;
-            pause_menu.stop = PRINTING_STOP_EN;
-            pause_menu.extrude = PRINTING_EXTRUDER_EN;
-            pause_menu.move = PRINTING_MOVE_EN;
+            pause_menu.title    = TITLE_PAUSE_EN;
+            pause_menu.resume   = PRINTING_RESUME_EN;
+            pause_menu.stop     = PRINTING_STOP_EN;
+            pause_menu.extrude  = PRINTING_EXTRUDER_EN;
+            pause_menu.move     = PRINTING_MOVE_EN;
             pause_menu.filament = FILAMENT_TEXT_EN;
-            pause_menu.more = PRINTING_MORE_EN;
+            pause_menu.more     = PRINTING_MORE_EN;
 
             //
-            speed_menu.title = TITLE_CHANGESPEED_EN;
-            speed_menu.add = ADD_TEXT_EN;
-            speed_menu.dec = DEC_TEXT_EN;
-            speed_menu.move = MOVE_SPEED_EN;
-            speed_menu.extrude = EXTRUDER_SPEED_EN;
+            speed_menu.title         = TITLE_CHANGESPEED_EN;
+            speed_menu.add           = ADD_TEXT_EN;
+            speed_menu.dec           = DEC_TEXT_EN;
+            speed_menu.move          = MOVE_SPEED_EN;
+            speed_menu.extrude       = EXTRUDER_SPEED_EN;
             speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_EN;
-            speed_menu.move_speed = MOVE_SPEED_STATE_EN;
+            speed_menu.move_speed    = MOVE_SPEED_STATE_EN;
             //
-            printing_more_menu.title = TITLE_MORE_EN;
-            printing_more_menu.fan = FAN_TEXT_EN;
+            printing_more_menu.title      = TITLE_MORE_EN;
+            printing_more_menu.fan        = FAN_TEXT_EN;
             printing_more_menu.auto_close = AUTO_SHUTDOWN_EN;
-            printing_more_menu.manual = MANUAL_SHUTDOWN_EN;
-            printing_more_menu.speed = PRINTING_CHANGESPEED_EN;
-            printing_more_menu.temp = PRINTING_TEMP_EN;
-
-            //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
-            print_file_dialog_menu.confirm = DIALOG_CONFIRM_EN;
-            print_file_dialog_menu.cancle = DIALOG_CANCLE_EN;
-            print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_EN;
-            print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_EN;
-            print_file_dialog_menu.retry = DIALOG_RETRY_EN;
-            print_file_dialog_menu.stop = DIALOG_STOP_EN;
-            print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_EN;
+            printing_more_menu.manual     = MANUAL_SHUTDOWN_EN;
+            printing_more_menu.speed      = PRINTING_CHANGESPEED_EN;
+            printing_more_menu.temp       = PRINTING_TEMP_EN;
+
+            // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
+            print_file_dialog_menu.confirm               = DIALOG_CONFIRM_EN;
+            print_file_dialog_menu.cancle                = DIALOG_CANCLE_EN;
+            print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_EN;
+            print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_EN;
+            print_file_dialog_menu.retry                 = DIALOG_RETRY_EN;
+            print_file_dialog_menu.stop                  = DIALOG_STOP_EN;
+            print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_EN;
             print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_EN;
-            print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_EN;
-            print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_EN;
-            print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_EN;
-            print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_EN;
-            print_file_dialog_menu.reprint = DIALOG_REPRINT_EN;
-            print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_EN;
-            //ZOFFSET
+            print_file_dialog_menu.close_machine_error   = DIALOG_ERROR_TIPS2_EN;
+            print_file_dialog_menu.filament_no_press     = DIALOG_FILAMENT_NO_PRESS_EN;
+            print_file_dialog_menu.print_finish          = DIALOG_PRINT_FINISH_EN;
+            print_file_dialog_menu.print_time            = DIALOG_PRINT_TIME_EN;
+            print_file_dialog_menu.reprint               = DIALOG_REPRINT_EN;
+            print_file_dialog_menu.wifi_enable_tips      = DIALOG_WIFI_ENABLE_TIPS_EN;
+            // ZOFFSET
             zoffset_menu.title = TITLE_ZOFFSET_EN;
-            zoffset_menu.inc = ZOFFSET_INC_EN;
-            zoffset_menu.dec = ZOFFSET_DEC_EN;
-
-            pause_msg_menu.pausing = MESSEGE_PAUSING_EN;
-            pause_msg_menu.changing = MESSEGE_CHANGING_EN;
-            pause_msg_menu.unload = MESSEGE_UNLOAD_EN;
-            pause_msg_menu.waiting = MESSEGE_WAITING_EN;
-            pause_msg_menu.insert = MESSEGE_INSERT_EN;
-            pause_msg_menu.load = MESSEGE_LOAD_EN;
-            pause_msg_menu.purge = MESSEGE_PURGE_EN;
-            pause_msg_menu.resume = MESSEGE_RESUME_EN;
-            pause_msg_menu.heat = MESSEGE_HEAT_EN;
-            pause_msg_menu.heating = MESSEGE_HEATING_EN;
-            pause_msg_menu.option = MESSEGE_OPTION_EN;
-            pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_EN;
-            pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_EN;
+            zoffset_menu.inc   = ZOFFSET_INC_EN;
+            zoffset_menu.dec   = ZOFFSET_DEC_EN;
+
+            pause_msg_menu.pausing       = MESSAGE_PAUSING_EN;
+            pause_msg_menu.changing      = MESSAGE_CHANGING_EN;
+            pause_msg_menu.unload        = MESSAGE_UNLOAD_EN;
+            pause_msg_menu.waiting       = MESSAGE_WAITING_EN;
+            pause_msg_menu.insert        = MESSAGE_INSERT_EN;
+            pause_msg_menu.load          = MESSAGE_LOAD_EN;
+            pause_msg_menu.purge         = MESSAGE_PURGE_EN;
+            pause_msg_menu.resume        = MESSAGE_RESUME_EN;
+            pause_msg_menu.heat          = MESSAGE_HEAT_EN;
+            pause_msg_menu.heating       = MESSAGE_HEATING_EN;
+            pause_msg_menu.option        = MESSAGE_OPTION_EN;
+            pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_EN;
+            pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_EN;
+            eeprom_menu.title            = EEPROM_SETTINGS_TITLE_EN;
+            eeprom_menu.store            = EEPROM_SETTINGS_STORE_EN;
+            eeprom_menu.read             = EEPROM_SETTINGS_READ_EN;
+            eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_EN;
+            eeprom_menu.storeTips        = EEPROM_STORE_TIPS_EN;
+            eeprom_menu.readTips         =  EEPROM_READ_TIPS_EN;
+            eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_EN;
             break;
           case LANG_RUSSIAN:
-            common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_RU;
-            common_menu.text_back = BACK_TEXT_RU;
-            common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_RU;
-            common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_RU;
-            common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
-            common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+            common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_RU;
+            common_menu.text_back             = BACK_TEXT_RU;
+            common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_RU;
+            common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_RU;
+            common_menu.print_special_title   = PRINTING_OTHER_LANGUGE;
+            common_menu.pause_special_title   = PRINTING_PAUSE_OTHER_LANGUGE;
             common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
             //
-            main_menu.title = TITLE_READYPRINT_RU;
-            main_menu.preheat = PREHEAT_TEXT_RU;
-            main_menu.move = MOVE_TEXT_RU;
-            main_menu.home = HOME_TEXT_RU;
-            main_menu.print = PRINT_TEXT_RU;
-            main_menu.extrude = EXTRUDE_TEXT_RU;
-            main_menu.leveling = LEVELING_TEXT_RU;
+            main_menu.title        = TITLE_READYPRINT_RU;
+            main_menu.preheat      = PREHEAT_TEXT_RU;
+            main_menu.move         = MOVE_TEXT_RU;
+            main_menu.home         = HOME_TEXT_RU;
+            main_menu.print        = PRINT_TEXT_RU;
+            main_menu.extrude      = EXTRUDE_TEXT_RU;
+            main_menu.leveling     = LEVELING_TEXT_RU;
             main_menu.autoleveling = AUTO_LEVELING_TEXT_RU;
-            main_menu.fan = FAN_TEXT_RU;
-            main_menu.set = SET_TEXT_RU;
-            main_menu.more = MORE_TEXT_RU;
-            main_menu.tool = TOOL_TEXT_RU;
-            //TOOL
-            tool_menu.title = TOOL_TEXT_RU;
-            tool_menu.preheat = TOOL_PREHEAT_RU;
-            tool_menu.extrude = TOOL_EXTRUDE_RU;
-            tool_menu.move = TOOL_MOVE_RU;
-            tool_menu.home = TOOL_HOME_RU;
-            tool_menu.leveling = TOOL_LEVELING_RU;
+            main_menu.fan          = FAN_TEXT_RU;
+            main_menu.set          = SET_TEXT_RU;
+            main_menu.more         = MORE_TEXT_RU;
+            main_menu.tool         = TOOL_TEXT_RU;
+            // TOOL
+            tool_menu.title        = TOOL_TEXT_RU;
+            tool_menu.preheat      = TOOL_PREHEAT_RU;
+            tool_menu.extrude      = TOOL_EXTRUDE_RU;
+            tool_menu.move         = TOOL_MOVE_RU;
+            tool_menu.home         = TOOL_HOME_RU;
+            tool_menu.leveling     = TOOL_LEVELING_RU;
             tool_menu.autoleveling = TOOL_AUTO_LEVELING_RU;
-            tool_menu.filament = TOOL_FILAMENT_RU;
-            tool_menu.more = TOOL_MORE_RU;
+            tool_menu.filament     = TOOL_FILAMENT_RU;
+            tool_menu.more         = TOOL_MORE_RU;
             //
             preheat_menu.adjust_title = TITLE_ADJUST_RU;
-            preheat_menu.title = TITLE_PREHEAT_RU;
-            preheat_menu.add = ADD_TEXT_RU;
-            preheat_menu.dec = DEC_TEXT_RU;
-            preheat_menu.ext1 = EXTRUDER_1_TEXT_RU;
-            preheat_menu.ext2 = EXTRUDER_2_TEXT_RU;
-            preheat_menu.hotbed = HEATBED_TEXT_RU;
-            preheat_menu.off = CLOSE_TEXT_RU;
+            preheat_menu.title        = TITLE_PREHEAT_RU;
+            preheat_menu.add          = ADD_TEXT_RU;
+            preheat_menu.dec          = DEC_TEXT_RU;
+            preheat_menu.ext1         = EXTRUDER_1_TEXT_RU;
+            preheat_menu.ext2         = EXTRUDER_2_TEXT_RU;
+            preheat_menu.hotbed       = HEATBED_TEXT_RU;
+            preheat_menu.off          = CLOSE_TEXT_RU;
             //
             move_menu.title = MOVE_TEXT_RU;
             //
-            home_menu.title = TITLE_HOME_RU;
+            home_menu.title    = TITLE_HOME_RU;
             home_menu.stopmove = HOME_STOPMOVE_RU;
             //
-            file_menu.title = TITLE_CHOOSEFILE_RU;
-            file_menu.page_up = PAGE_UP_TEXT_RU;
-            file_menu.page_down = PAGE_DOWN_TEXT_RU;
-            file_menu.file_loading = FILE_LOADING_RU;
-            file_menu.no_file = NO_FILE_RU;
-            file_menu.no_file_and_check = NO_FILE_RU;//NO_FILE_AND_CHECK_RU;
-            //
-            extrude_menu.title = TITLE_EXTRUDE_RU;
-            extrude_menu.in = EXTRUDER_IN_TEXT_RU;
-            extrude_menu.out = EXTRUDER_OUT_TEXT_RU;
-            extrude_menu.ext1 = EXTRUDER_1_TEXT_RU;
-            extrude_menu.ext2 = EXTRUDER_2_TEXT_RU;
-            extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_RU;
-            extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_RU;
-            extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_RU;
+            file_menu.title             = TITLE_CHOOSEFILE_RU;
+            file_menu.page_up           = PAGE_UP_TEXT_RU;
+            file_menu.page_down         = PAGE_DOWN_TEXT_RU;
+            file_menu.file_loading      = FILE_LOADING_RU;
+            file_menu.no_file           = NO_FILE_RU;
+            file_menu.no_file_and_check = NO_FILE_RU;// NO_FILE_AND_CHECK_RU;
+            //
+            extrude_menu.title       = TITLE_EXTRUDE_RU;
+            extrude_menu.in          = EXTRUDER_IN_TEXT_RU;
+            extrude_menu.out         = EXTRUDER_OUT_TEXT_RU;
+            extrude_menu.ext1        = EXTRUDER_1_TEXT_RU;
+            extrude_menu.ext2        = EXTRUDER_2_TEXT_RU;
+            extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_RU;
+            extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_RU;
+            extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_RU;
             extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_RU;
             //
-            leveling_menu.title = TITLE_LEVELING_RU;
+            leveling_menu.title     = TITLE_LEVELING_RU;
             leveling_menu.position1 = LEVELING_POINT1_TEXT_RU;
             leveling_menu.position2 = LEVELING_POINT2_TEXT_RU;
             leveling_menu.position3 = LEVELING_POINT3_TEXT_RU;
             leveling_menu.position4 = LEVELING_POINT4_TEXT_RU;
             leveling_menu.position5 = LEVELING_POINT5_TEXT_RU;
             //
-            set_menu.title = TITLE_SET_RU;
-            set_menu.filesys = FILESYS_TEXT_RU;
-            set_menu.wifi = WIFI_TEXT_RU;
-            set_menu.about = ABOUT_TEXT_RU;
-            set_menu.fan = FAN_TEXT_RU;
-            set_menu.filament = FILAMENT_TEXT_RU;
-            set_menu.breakpoint = BREAK_POINT_TEXT_RU;
-            set_menu.motoroff = MOTOR_OFF_TEXT_RU;
-            set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_RU;
-            set_menu.language = LANGUAGE_TEXT_RU;
-            set_menu.shutdown = SHUTDOWN_TEXT_RU;
-            //
-            more_menu.title = TITLE_MORE_RU;
-            more_menu.zoffset = ZOFFSET_RU;
-            //
-            filesys_menu.title = TITLE_FILESYS_RU;
-            filesys_menu.sd_sys = SD_CARD_TEXT_RU;
+            set_menu.title        = TITLE_SET_RU;
+            set_menu.filesys      = FILESYS_TEXT_RU;
+            set_menu.wifi         = WIFI_TEXT_RU;
+            set_menu.about        = ABOUT_TEXT_RU;
+            set_menu.fan          = FAN_TEXT_RU;
+            set_menu.filament     = FILAMENT_TEXT_RU;
+            set_menu.breakpoint   = BREAK_POINT_TEXT_RU;
+            set_menu.motoroff     = MOTOR_OFF_TEXT_RU;
+            set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_RU;
+            set_menu.language     = LANGUAGE_TEXT_RU;
+            set_menu.shutdown     = SHUTDOWN_TEXT_RU;
+            set_menu.machine_para = MACHINE_PARA_RU;
+            set_menu.eepromSet    = EEPROM_SETTINGS_RU;
+            more_menu.title       = TITLE_MORE_RU;
+            more_menu.zoffset     = ZOFFSET_RU;
+            //
+            filesys_menu.title   = TITLE_FILESYS_RU;
+            filesys_menu.sd_sys  = SD_CARD_TEXT_RU;
             filesys_menu.usb_sys = U_DISK_TEXT_RU;
-            //WIFI
+            // WIFI
             wifi_menu.title = WIFI_TEXT;
-            //wifi_menu.key = WIFI_KEY_TEXT_RU;
-            //wifi_menu.ip = WIFI_IP_TEXT_RU;
-            //wifi_menu.state = WIFI_STA_TEXT_RU;
-            wifi_menu.cloud = CLOUD_TEXT_RU;
+            // wifi_menu.key = WIFI_KEY_TEXT_RU;
+            // wifi_menu.ip = WIFI_IP_TEXT_RU;
+            // wifi_menu.state = WIFI_STA_TEXT_RU;
+            wifi_menu.cloud     = CLOUD_TEXT_RU;
             wifi_menu.reconnect = WIFI_RECONNECT_TEXT_RU;
 
 
-            cloud_menu.title = TITLE_CLOUD_TEXT_RU;
-            cloud_menu.bind = CLOUD_BINDED_RU;
-            cloud_menu.binded = CLOUD_BINDED_RU;
-            cloud_menu.unbind = CLOUD_UNBIND_RU;
-            cloud_menu.unbinding = CLOUD_UNBINDED_RU;
+            cloud_menu.title        = TITLE_CLOUD_TEXT_RU;
+            cloud_menu.bind         = CLOUD_BINDED_RU;
+            cloud_menu.binded       = CLOUD_BINDED_RU;
+            cloud_menu.unbind       = CLOUD_UNBIND_RU;
+            cloud_menu.unbinding    = CLOUD_UNBINDED_RU;
             cloud_menu.disconnected = CLOUD_DISCONNECTED_RU;
-            cloud_menu.disable = CLOUD_DISABLE_RU;
+            cloud_menu.disable      = CLOUD_DISABLE_RU;
             //
-            about_menu.title = ABOUT_TEXT_RU;
-            about_menu.type = ABOUT_TYPE_TEXT_RU;
+            about_menu.title   = ABOUT_TEXT_RU;
+            about_menu.type    = ABOUT_TYPE_TEXT_RU;
             about_menu.version = ABOUT_VERSION_TEXT_RU;
-            about_menu.wifi = ABOUT_WIFI_TEXT_RU;
+            about_menu.wifi    = ABOUT_WIFI_TEXT_RU;
             //
             fan_menu.title = FAN_TEXT_RU;
-            fan_menu.add = FAN_ADD_TEXT_RU;
-            fan_menu.dec = FAN_DEC_TEXT_RU;
+            fan_menu.add   = FAN_ADD_TEXT_RU;
+            fan_menu.dec   = FAN_DEC_TEXT_RU;
             fan_menu.state = FAN_TIPS1_TEXT_RU;
             //
-            filament_menu.title = TITLE_FILAMENT_RU;
-            filament_menu.in = FILAMENT_IN_TEXT_RU;
-            filament_menu.out = FILAMENT_OUT_TEXT_RU;
-            filament_menu.ext1 = FILAMENT_EXT0_TEXT_RU;
-            filament_menu.ext2 = FILAMENT_EXT1_TEXT_RU;
-            filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_RU;
-            filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_RU;
-            filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_RU;
-            filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_RU;
-            filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_RU;
-            filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_RU;
+            filament_menu.title                               = TITLE_FILAMENT_RU;
+            filament_menu.in                                  = FILAMENT_IN_TEXT_RU;
+            filament_menu.out                                 = FILAMENT_OUT_TEXT_RU;
+            filament_menu.ext1                                = FILAMENT_EXT0_TEXT_RU;
+            filament_menu.ext2                                = FILAMENT_EXT1_TEXT_RU;
+            filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_RU;
+            filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_RU;
+            filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_RU;
+            filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_RU;
+            filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_RU;
+            filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_RU;
             filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_RU;
-            filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_RU;
-            filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_RU;
+            filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_RU;
+            filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_RU;
 
             //
             language_menu.title = LANGUAGE_TEXT_RU;
-            language_menu.next = PAGE_DOWN_TEXT_RU;
-            language_menu.up = PAGE_UP_TEXT_RU;
+            language_menu.next  = PAGE_DOWN_TEXT_RU;
+            language_menu.up    = PAGE_UP_TEXT_RU;
             //
-            printing_menu.title = TITLE_PRINTING_RU;
+            printing_menu.title  = TITLE_PRINTING_RU;
             printing_menu.option = PRINTING_OPERATION_RU;
-            printing_menu.stop = PRINTING_STOP_RU;
-            printing_menu.pause = PRINTING_PAUSE_RU;
+            printing_menu.stop   = PRINTING_STOP_RU;
+            printing_menu.pause  = PRINTING_PAUSE_RU;
             printing_menu.resume = PRINTING_RESUME_RU;
 
             //
-            operation_menu.title = TITLE_OPERATION_RU;
-            operation_menu.pause = PRINTING_PAUSE_RU;
-            operation_menu.stop = PRINTING_STOP_RU;
-            operation_menu.temp = PRINTING_TEMP_RU;
-            operation_menu.fan = FAN_TEXT_RU;
-            operation_menu.extr = PRINTING_EXTRUDER_RU;
-            operation_menu.speed = PRINTING_CHANGESPEED_RU;
-            operation_menu.filament = FILAMENT_TEXT_RU;
-            operation_menu.more = PRINTING_MORE_RU;
-            operation_menu.move = PRINTING_MOVE_RU;
-            operation_menu.auto_off = AUTO_SHUTDOWN_RU;
+            operation_menu.title      = TITLE_OPERATION_RU;
+            operation_menu.pause      = PRINTING_PAUSE_RU;
+            operation_menu.stop       = PRINTING_STOP_RU;
+            operation_menu.temp       = PRINTING_TEMP_RU;
+            operation_menu.fan        = FAN_TEXT_RU;
+            operation_menu.extr       = PRINTING_EXTRUDER_RU;
+            operation_menu.speed      = PRINTING_CHANGESPEED_RU;
+            operation_menu.filament   = FILAMENT_TEXT_RU;
+            operation_menu.more       = PRINTING_MORE_RU;
+            operation_menu.move       = PRINTING_MOVE_RU;
+            operation_menu.auto_off   = AUTO_SHUTDOWN_RU;
             operation_menu.manual_off = MANUAL_SHUTDOWN_RU;
             //
-            pause_menu.title = TITLE_PAUSE_RU;
-            pause_menu.resume = PRINTING_RESUME_RU;
-            pause_menu.stop = PRINTING_STOP_RU;
-            pause_menu.extrude = PRINTING_EXTRUDER_RU;
-            pause_menu.move = PRINTING_MOVE_RU;
+            pause_menu.title    = TITLE_PAUSE_RU;
+            pause_menu.resume   = PRINTING_RESUME_RU;
+            pause_menu.stop     = PRINTING_STOP_RU;
+            pause_menu.extrude  = PRINTING_EXTRUDER_RU;
+            pause_menu.move     = PRINTING_MOVE_RU;
             pause_menu.filament = FILAMENT_TEXT_RU;
-            pause_menu.more = PRINTING_MORE_RU;
+            pause_menu.more     = PRINTING_MORE_RU;
 
             //
-            speed_menu.title = PRINTING_CHANGESPEED_RU;
-            speed_menu.add = ADD_TEXT_RU;
-            speed_menu.dec = DEC_TEXT_RU;
-            speed_menu.move = MOVE_SPEED_RU;
-            speed_menu.extrude = EXTRUDER_SPEED_RU;
+            speed_menu.title         = PRINTING_CHANGESPEED_RU;
+            speed_menu.add           = ADD_TEXT_RU;
+            speed_menu.dec           = DEC_TEXT_RU;
+            speed_menu.move          = MOVE_SPEED_RU;
+            speed_menu.extrude       = EXTRUDER_SPEED_RU;
             speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_RU;
-            speed_menu.move_speed = MOVE_SPEED_STATE_RU;
+            speed_menu.move_speed    = MOVE_SPEED_STATE_RU;
             //
-            printing_more_menu.title = TITLE_MORE_RU;
-            printing_more_menu.fan = FAN_TEXT_RU;
+            printing_more_menu.title      = TITLE_MORE_RU;
+            printing_more_menu.fan        = FAN_TEXT_RU;
             printing_more_menu.auto_close = AUTO_SHUTDOWN_RU;
-            printing_more_menu.manual = MANUAL_SHUTDOWN_RU;
-            printing_more_menu.speed = PRINTING_CHANGESPEED_RU;
-            printing_more_menu.temp = PRINTING_TEMP_RU;
-            //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_RU;
-            print_file_dialog_menu.confirm = DIALOG_CONFIRM_RU;
-            print_file_dialog_menu.cancle = DIALOG_CANCLE_RU;
-            print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_RU;
-            print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_RU;
-            print_file_dialog_menu.retry = DIALOG_RETRY_RU;
-            print_file_dialog_menu.stop = DIALOG_STOP_RU;
-            print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_RU;
+            printing_more_menu.manual     = MANUAL_SHUTDOWN_RU;
+            printing_more_menu.speed      = PRINTING_CHANGESPEED_RU;
+            printing_more_menu.temp       = PRINTING_TEMP_RU;
+            // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_RU;
+            print_file_dialog_menu.confirm               = DIALOG_CONFIRM_RU;
+            print_file_dialog_menu.cancle                = DIALOG_CANCLE_RU;
+            print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_RU;
+            print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_RU;
+            print_file_dialog_menu.retry                 = DIALOG_RETRY_RU;
+            print_file_dialog_menu.stop                  = DIALOG_STOP_RU;
+            print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_RU;
             print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_RU;
-            print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_RU;
-            print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_RU;
-            print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_RU;
-            print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_RU;
-            print_file_dialog_menu.reprint = DIALOG_REPRINT_RU;
-            print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_RU;
-            //ZOFFSET
+            print_file_dialog_menu.close_machine_error   = DIALOG_ERROR_TIPS2_RU;
+            print_file_dialog_menu.filament_no_press     = DIALOG_FILAMENT_NO_PRESS_RU;
+            print_file_dialog_menu.print_finish          = DIALOG_PRINT_FINISH_RU;
+            print_file_dialog_menu.print_time            = DIALOG_PRINT_TIME_RU;
+            print_file_dialog_menu.reprint               = DIALOG_REPRINT_RU;
+            print_file_dialog_menu.wifi_enable_tips      = DIALOG_WIFI_ENABLE_TIPS_RU;
+            // ZOFFSET
             zoffset_menu.title = TITLE_ZOFFSET_RU;
-            zoffset_menu.inc = ZOFFSET_INC_RU;
-            zoffset_menu.dec = ZOFFSET_DEC_RU;
-
-            pause_msg_menu.pausing = MESSEGE_PAUSING_RU;
-            pause_msg_menu.changing = MESSEGE_CHANGING_RU;
-            pause_msg_menu.unload = MESSEGE_UNLOAD_RU;
-            pause_msg_menu.waiting = MESSEGE_WAITING_RU;
-            pause_msg_menu.insert = MESSEGE_INSERT_RU;
-            pause_msg_menu.load = MESSEGE_LOAD_RU;
-            pause_msg_menu.purge = MESSEGE_PURGE_RU;
-            pause_msg_menu.resume = MESSEGE_RESUME_RU;
-            pause_msg_menu.heat = MESSEGE_HEAT_RU;
-            pause_msg_menu.heating = MESSEGE_HEATING_RU;
-            pause_msg_menu.option = MESSEGE_OPTION_RU;
-            pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_RU;
-            pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_RU;
+            zoffset_menu.inc   = ZOFFSET_INC_RU;
+            zoffset_menu.dec   = ZOFFSET_DEC_RU;
+
+            pause_msg_menu.pausing       = MESSAGE_PAUSING_RU;
+            pause_msg_menu.changing      = MESSAGE_CHANGING_RU;
+            pause_msg_menu.unload        = MESSAGE_UNLOAD_RU;
+            pause_msg_menu.waiting       = MESSAGE_WAITING_RU;
+            pause_msg_menu.insert        = MESSAGE_INSERT_RU;
+            pause_msg_menu.load          = MESSAGE_LOAD_RU;
+            pause_msg_menu.purge         = MESSAGE_PURGE_RU;
+            pause_msg_menu.resume        = MESSAGE_RESUME_RU;
+            pause_msg_menu.heat          = MESSAGE_HEAT_RU;
+            pause_msg_menu.heating       = MESSAGE_HEATING_RU;
+            pause_msg_menu.option        = MESSAGE_OPTION_RU;
+            pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_RU;
+            pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_RU;
+            eeprom_menu.title            = EEPROM_SETTINGS_TITLE_RU;
+            eeprom_menu.store            = EEPROM_SETTINGS_STORE_RU;
+            eeprom_menu.read             = EEPROM_SETTINGS_READ_RU;
+            eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_RU;
+            eeprom_menu.storeTips        = EEPROM_STORE_TIPS_RU;
+            eeprom_menu.readTips         =  EEPROM_READ_TIPS_RU;
+            eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_RU;
             break;
           case LANG_SPANISH:
-            common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_SP;
-            common_menu.text_back = BACK_TEXT_SP;
-            common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_SP;
-            common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_SP;
-            common_menu.print_special_title = PRINTING_SP;
-            common_menu.pause_special_title = PRINTING_PAUSAR_SP;
+            common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_SP;
+            common_menu.text_back             = BACK_TEXT_SP;
+            common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_SP;
+            common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_SP;
+            common_menu.print_special_title   = PRINTING_SP;
+            common_menu.pause_special_title   = PRINTING_PAUSAR_SP;
             common_menu.operate_special_title = PRINTING_AJUSTES_SP;
             //
-            main_menu.title = TITLE_READYPRINT_SP;
-            main_menu.preheat = PREHEAT_TEXT_SP;
-            main_menu.move = MOVE_TEXT_SP;
-            main_menu.home = HOME_TEXT_SP;
-            main_menu.print = PRINT_TEXT_SP;
-            main_menu.extrude = EXTRUDE_TEXT_SP;
-            main_menu.leveling = LEVELING_TEXT_SP;
+            main_menu.title        = TITLE_READYPRINT_SP;
+            main_menu.preheat      = PREHEAT_TEXT_SP;
+            main_menu.move         = MOVE_TEXT_SP;
+            main_menu.home         = HOME_TEXT_SP;
+            main_menu.print        = PRINT_TEXT_SP;
+            main_menu.extrude      = EXTRUDE_TEXT_SP;
+            main_menu.leveling     = LEVELING_TEXT_SP;
             main_menu.autoleveling = AUTO_LEVELING_TEXT_SP;
-            main_menu.fan = FAN_TEXT_SP;
-            main_menu.set = SET_TEXT_SP;
-            main_menu.more = MORE_TEXT_SP;
-            main_menu.tool = TOOL_TEXT_SP;
-            //TOOL
-            tool_menu.title = TOOL_TEXT_SP;
-            tool_menu.preheat = TOOL_PREHEAT_SP;
-            tool_menu.extrude = TOOL_EXTRUDE_SP;
-            tool_menu.move = TOOL_MOVE_SP;
-            tool_menu.home = TOOL_HOME_SP;
-            tool_menu.leveling = TOOL_LEVELING_SP;
+            main_menu.fan          = FAN_TEXT_SP;
+            main_menu.set          = SET_TEXT_SP;
+            main_menu.more         = MORE_TEXT_SP;
+            main_menu.tool         = TOOL_TEXT_SP;
+            // TOOL
+            tool_menu.title        = TOOL_TEXT_SP;
+            tool_menu.preheat      = TOOL_PREHEAT_SP;
+            tool_menu.extrude      = TOOL_EXTRUDE_SP;
+            tool_menu.move         = TOOL_MOVE_SP;
+            tool_menu.home         = TOOL_HOME_SP;
+            tool_menu.leveling     = TOOL_LEVELING_SP;
             tool_menu.autoleveling = TOOL_AUTO_LEVELING_SP;
-            tool_menu.filament = TOOL_FILAMENT_SP;
-            tool_menu.more = TOOL_MORE_SP;
+            tool_menu.filament     = TOOL_FILAMENT_SP;
+            tool_menu.more         = TOOL_MORE_SP;
             //
             preheat_menu.adjust_title = TITLE_ADJUST_SP;
-            preheat_menu.title = TITLE_PREHEAT_SP;
-            preheat_menu.add = ADD_TEXT_SP;
-            preheat_menu.dec = DEC_TEXT_SP;
-            preheat_menu.ext1 = EXTRUDER_1_TEXT_SP;
-            preheat_menu.ext2 = EXTRUDER_2_TEXT_SP;
-            preheat_menu.hotbed = HEATBED_TEXT_SP;
-            preheat_menu.off = CLOSE_TEXT_SP;
+            preheat_menu.title        = TITLE_PREHEAT_SP;
+            preheat_menu.add          = ADD_TEXT_SP;
+            preheat_menu.dec          = DEC_TEXT_SP;
+            preheat_menu.ext1         = EXTRUDER_1_TEXT_SP;
+            preheat_menu.ext2         = EXTRUDER_2_TEXT_SP;
+            preheat_menu.hotbed       = HEATBED_TEXT_SP;
+            preheat_menu.off          = CLOSE_TEXT_SP;
             //
             move_menu.title = MOVE_TEXT_SP;
             //
-            home_menu.title = TITLE_HOME_SP;
-            home_menu.home_x = HOME_X_TEXT_SP;
-            home_menu.home_y = HOME_Y_TEXT_SP;
-            home_menu.home_z = HOME_Z_TEXT_SP;
+            home_menu.title    = TITLE_HOME_SP;
+            home_menu.home_x   = HOME_X_TEXT_SP;
+            home_menu.home_y   = HOME_Y_TEXT_SP;
+            home_menu.home_z   = HOME_Z_TEXT_SP;
             home_menu.home_all = HOME_ALL_TEXT_SP;
             home_menu.stopmove = HOME_STOPMOVE_SP;
             //
-            file_menu.title = TITLE_CHOOSEFILE_SP;
-            file_menu.page_up = PAGE_UP_TEXT_SP;
-            file_menu.page_down = PAGE_DOWN_TEXT_SP;
-            file_menu.file_loading = FILE_LOADING_SP;
-            file_menu.no_file = NO_FILE_SP;
-            file_menu.no_file_and_check = NO_FILE_SP;//NO_FILE_AND_CHECK_SP;
-            //
-            extrude_menu.title = TITLE_EXTRUDE_SP;
-            extrude_menu.in = EXTRUDER_IN_TEXT_SP;
-            extrude_menu.out = EXTRUDER_OUT_TEXT_SP;
-            extrude_menu.ext1 = EXTRUDER_1_TEXT_SP;
-            extrude_menu.ext2 = EXTRUDER_2_TEXT_SP;
-            extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_SP;
-            extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_SP;
-            extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_SP;
+            file_menu.title             = TITLE_CHOOSEFILE_SP;
+            file_menu.page_up           = PAGE_UP_TEXT_SP;
+            file_menu.page_down         = PAGE_DOWN_TEXT_SP;
+            file_menu.file_loading      = FILE_LOADING_SP;
+            file_menu.no_file           = NO_FILE_SP;
+            file_menu.no_file_and_check = NO_FILE_SP;// NO_FILE_AND_CHECK_SP;
+            //
+            extrude_menu.title       = TITLE_EXTRUDE_SP;
+            extrude_menu.in          = EXTRUDER_IN_TEXT_SP;
+            extrude_menu.out         = EXTRUDER_OUT_TEXT_SP;
+            extrude_menu.ext1        = EXTRUDER_1_TEXT_SP;
+            extrude_menu.ext2        = EXTRUDER_2_TEXT_SP;
+            extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_SP;
+            extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_SP;
+            extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_SP;
             extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_SP;
             //
-            leveling_menu.title = TITLE_LEVELING_SP;
+            leveling_menu.title     = TITLE_LEVELING_SP;
             leveling_menu.position1 = LEVELING_POINT1_TEXT_SP;
             leveling_menu.position2 = LEVELING_POINT2_TEXT_SP;
             leveling_menu.position3 = LEVELING_POINT3_TEXT_SP;
             leveling_menu.position4 = LEVELING_POINT4_TEXT_SP;
             leveling_menu.position5 = LEVELING_POINT5_TEXT_SP;
             //
-            set_menu.title = TITLE_SET_SP;
-            set_menu.filesys = FILESYS_TEXT_SP;
-            set_menu.wifi = WIFI_TEXT_SP;
-            set_menu.about = ABOUT_TEXT_SP;
-            set_menu.fan = FAN_TEXT_SP;
-            set_menu.filament = FILAMENT_TEXT_SP;
-            set_menu.breakpoint = BREAK_POINT_TEXT_SP;
-            set_menu.motoroff = MOTOR_OFF_TEXT_SP;
-            set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_SP;
-            set_menu.language = LANGUAGE_TEXT_SP;
-            set_menu.shutdown = SHUTDOWN_TEXT_SP;
-            //
-            more_menu.title = TITLE_MORE_SP;
-            more_menu.zoffset = ZOFFSET_SP;
-            //
-            filesys_menu.title = TITLE_FILESYS_SP;
-            filesys_menu.sd_sys = SD_CARD_TEXT_SP;
+            set_menu.title        = TITLE_SET_SP;
+            set_menu.filesys      = FILESYS_TEXT_SP;
+            set_menu.wifi         = WIFI_TEXT_SP;
+            set_menu.about        = ABOUT_TEXT_SP;
+            set_menu.fan          = FAN_TEXT_SP;
+            set_menu.filament     = FILAMENT_TEXT_SP;
+            set_menu.breakpoint   = BREAK_POINT_TEXT_SP;
+            set_menu.motoroff     = MOTOR_OFF_TEXT_SP;
+            set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_SP;
+            set_menu.language     = LANGUAGE_TEXT_SP;
+            set_menu.shutdown     = SHUTDOWN_TEXT_SP;
+            set_menu.machine_para = MACHINE_PARA_SP;
+            set_menu.eepromSet    = EEPROM_SETTINGS_SP;
+            more_menu.title       = TITLE_MORE_SP;
+            more_menu.zoffset     = ZOFFSET_SP;
+            //
+            filesys_menu.title   = TITLE_FILESYS_SP;
+            filesys_menu.sd_sys  = SD_CARD_TEXT_SP;
             filesys_menu.usb_sys = U_DISK_TEXT_SP;
 
-            //WIFI
+            // WIFI
             wifi_menu.title = WIFI_TEXT;
-            //wifi_menu.key = WIFI_KEY_TEXT_SP;
-            //wifi_menu.ip = WIFI_IP_TEXT_SP;
-            //wifi_menu.state = WIFI_STA_TEXT_SP;
-            wifi_menu.cloud = CLOUD_TEXT_SP;
+            // wifi_menu.key = WIFI_KEY_TEXT_SP;
+            // wifi_menu.ip = WIFI_IP_TEXT_SP;
+            // wifi_menu.state = WIFI_STA_TEXT_SP;
+            wifi_menu.cloud     = CLOUD_TEXT_SP;
             wifi_menu.reconnect = WIFI_RECONNECT_TEXT_SP;
 
-            cloud_menu.title = TITLE_CLOUD_TEXT_SP;
-            cloud_menu.bind = CLOUD_BINDED_SP;
-            cloud_menu.binded = CLOUD_BINDED_SP;
-            cloud_menu.unbind = CLOUD_UNBIND_SP;
-            cloud_menu.unbinding = CLOUD_UNBINDED_SP;
+            cloud_menu.title        = TITLE_CLOUD_TEXT_SP;
+            cloud_menu.bind         = CLOUD_BINDED_SP;
+            cloud_menu.binded       = CLOUD_BINDED_SP;
+            cloud_menu.unbind       = CLOUD_UNBIND_SP;
+            cloud_menu.unbinding    = CLOUD_UNBINDED_SP;
             cloud_menu.disconnected = CLOUD_DISCONNECTED_SP;
-            cloud_menu.disable = CLOUD_DISABLE_SP;
+            cloud_menu.disable      = CLOUD_DISABLE_SP;
             //
-            about_menu.title = ABOUT_TEXT_SP;
-            about_menu.type = ABOUT_TYPE_TEXT_SP;
+            about_menu.title   = ABOUT_TEXT_SP;
+            about_menu.type    = ABOUT_TYPE_TEXT_SP;
             about_menu.version = ABOUT_VERSION_TEXT_SP;
-            about_menu.wifi = ABOUT_WIFI_TEXT_SP;
+            about_menu.wifi    = ABOUT_WIFI_TEXT_SP;
             //
             fan_menu.title = FAN_TEXT_SP;
-            fan_menu.add = FAN_ADD_TEXT_SP;
-            fan_menu.dec = FAN_DEC_TEXT_SP;
+            fan_menu.add   = FAN_ADD_TEXT_SP;
+            fan_menu.dec   = FAN_DEC_TEXT_SP;
             fan_menu.state = FAN_TIPS1_TEXT_SP;
             //
-            filament_menu.title = TITLE_FILAMENT_SP;
-            filament_menu.in = FILAMENT_IN_TEXT_SP;
-            filament_menu.out = FILAMENT_OUT_TEXT_SP;
-            filament_menu.ext1 = FILAMENT_EXT0_TEXT_SP;
-            filament_menu.ext2 = FILAMENT_EXT1_TEXT_SP;
-            filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_SP;
-            filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_SP;
-            filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_SP;
-            filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_SP;
-            filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_SP;
-            filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_SP;
+            filament_menu.title                               = TITLE_FILAMENT_SP;
+            filament_menu.in                                  = FILAMENT_IN_TEXT_SP;
+            filament_menu.out                                 = FILAMENT_OUT_TEXT_SP;
+            filament_menu.ext1                                = FILAMENT_EXT0_TEXT_SP;
+            filament_menu.ext2                                = FILAMENT_EXT1_TEXT_SP;
+            filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_SP;
+            filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_SP;
+            filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_SP;
+            filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_SP;
+            filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_SP;
+            filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_SP;
             filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_SP;
-            filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_SP;
-            filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_SP;
+            filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_SP;
+            filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_SP;
 
             //
             language_menu.title = LANGUAGE_TEXT_SP;
-            language_menu.next = PAGE_DOWN_TEXT_SP;
-            language_menu.up = PAGE_UP_TEXT_SP;
+            language_menu.next  = PAGE_DOWN_TEXT_SP;
+            language_menu.up    = PAGE_UP_TEXT_SP;
             //
-            printing_menu.title = TITLE_PRINTING_SP;
+            printing_menu.title  = TITLE_PRINTING_SP;
             printing_menu.option = PRINTING_OPERATION_SP;
-            printing_menu.stop = PRINTING_STOP_SP;
-            printing_menu.pause = PRINTING_PAUSE_SP;
+            printing_menu.stop   = PRINTING_STOP_SP;
+            printing_menu.pause  = PRINTING_PAUSE_SP;
             printing_menu.resume = PRINTING_RESUME_SP;
 
             //
-            operation_menu.title = TITLE_OPERATION_SP;
-            operation_menu.pause = PRINTING_PAUSE_SP;
-            operation_menu.stop = PRINTING_STOP_SP;
-            operation_menu.temp = PRINTING_TEMP_SP;
-            operation_menu.fan = FAN_TEXT_SP;
-            operation_menu.extr = PRINTING_EXTRUDER_SP;
-            operation_menu.speed = PRINTING_CHANGESPEED_SP;
-            operation_menu.filament = FILAMENT_TEXT_SP;
-            operation_menu.more = PRINTING_MORE_SP;
-            operation_menu.move = PRINTING_MOVE_SP;
-            operation_menu.auto_off = AUTO_SHUTDOWN_SP;
+            operation_menu.title      = TITLE_OPERATION_SP;
+            operation_menu.pause      = PRINTING_PAUSE_SP;
+            operation_menu.stop       = PRINTING_STOP_SP;
+            operation_menu.temp       = PRINTING_TEMP_SP;
+            operation_menu.fan        = FAN_TEXT_SP;
+            operation_menu.extr       = PRINTING_EXTRUDER_SP;
+            operation_menu.speed      = PRINTING_CHANGESPEED_SP;
+            operation_menu.filament   = FILAMENT_TEXT_SP;
+            operation_menu.more       = PRINTING_MORE_SP;
+            operation_menu.move       = PRINTING_MOVE_SP;
+            operation_menu.auto_off   = AUTO_SHUTDOWN_SP;
             operation_menu.manual_off = MANUAL_SHUTDOWN_SP;
             //
-            pause_menu.title = TITLE_PAUSE_RU;
-            pause_menu.resume = PRINTING_RESUME_SP;
-            pause_menu.stop = PRINTING_STOP_SP;
-            pause_menu.extrude = PRINTING_EXTRUDER_SP;
-            pause_menu.move = PRINTING_MOVE_SP;
+            pause_menu.title    = TITLE_PAUSE_RU;
+            pause_menu.resume   = PRINTING_RESUME_SP;
+            pause_menu.stop     = PRINTING_STOP_SP;
+            pause_menu.extrude  = PRINTING_EXTRUDER_SP;
+            pause_menu.move     = PRINTING_MOVE_SP;
             pause_menu.filament = FILAMENT_TEXT_SP;
-            pause_menu.more = PRINTING_MORE_SP;
+            pause_menu.more     = PRINTING_MORE_SP;
 
             //
-            speed_menu.title = PRINTING_CHANGESPEED_SP;
-            speed_menu.add = ADD_TEXT_SP;
-            speed_menu.dec = DEC_TEXT_SP;
-            speed_menu.move = MOVE_SPEED_SP;
-            speed_menu.extrude = EXTRUDER_SPEED_SP;
+            speed_menu.title         = PRINTING_CHANGESPEED_SP;
+            speed_menu.add           = ADD_TEXT_SP;
+            speed_menu.dec           = DEC_TEXT_SP;
+            speed_menu.move          = MOVE_SPEED_SP;
+            speed_menu.extrude       = EXTRUDER_SPEED_SP;
             speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_SP;
-            speed_menu.move_speed = MOVE_SPEED_STATE_SP;
+            speed_menu.move_speed    = MOVE_SPEED_STATE_SP;
             //
-            printing_more_menu.title = TITLE_MORE_SP;
-            printing_more_menu.fan = FAN_TEXT_SP;
+            printing_more_menu.title      = TITLE_MORE_SP;
+            printing_more_menu.fan        = FAN_TEXT_SP;
             printing_more_menu.auto_close = AUTO_SHUTDOWN_SP;
-            printing_more_menu.manual = MANUAL_SHUTDOWN_SP;
-            printing_more_menu.speed = PRINTING_CHANGESPEED_SP;
-            printing_more_menu.temp = PRINTING_TEMP_SP;
-
-            //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
-            print_file_dialog_menu.confirm = DIALOG_CONFIRM_SP;
-            print_file_dialog_menu.cancle = DIALOG_CANCLE_SP;
-            print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_SP;
-            print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_SP;
-            print_file_dialog_menu.retry = DIALOG_RETRY_SP;
-            print_file_dialog_menu.stop = DIALOG_STOP_SP;
-            print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_SP;
+            printing_more_menu.manual     = MANUAL_SHUTDOWN_SP;
+            printing_more_menu.speed      = PRINTING_CHANGESPEED_SP;
+            printing_more_menu.temp       = PRINTING_TEMP_SP;
+
+            // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
+            print_file_dialog_menu.confirm               = DIALOG_CONFIRM_SP;
+            print_file_dialog_menu.cancle                = DIALOG_CANCLE_SP;
+            print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_SP;
+            print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_SP;
+            print_file_dialog_menu.retry                 = DIALOG_RETRY_SP;
+            print_file_dialog_menu.stop                  = DIALOG_STOP_SP;
+            print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_SP;
             print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_SP;
-            print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_SP;
-            print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_SP;
-            print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_SP;
-            print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_SP;
-            print_file_dialog_menu.reprint = DIALOG_REPRINT_SP;
-            print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_SP;
-            //ZOFFSET
+            print_file_dialog_menu.close_machine_error   = DIALOG_ERROR_TIPS2_SP;
+            print_file_dialog_menu.filament_no_press     = DIALOG_FILAMENT_NO_PRESS_SP;
+            print_file_dialog_menu.print_finish          = DIALOG_PRINT_FINISH_SP;
+            print_file_dialog_menu.print_time            = DIALOG_PRINT_TIME_SP;
+            print_file_dialog_menu.reprint               = DIALOG_REPRINT_SP;
+            print_file_dialog_menu.wifi_enable_tips      = DIALOG_WIFI_ENABLE_TIPS_SP;
+            // ZOFFSET
             zoffset_menu.title = TITLE_ZOFFSET_SP;
-            zoffset_menu.inc = ZOFFSET_INC_SP;
-            zoffset_menu.dec = ZOFFSET_DEC_SP;
-
-            pause_msg_menu.pausing = MESSEGE_PAUSING_SP;
-            pause_msg_menu.changing = MESSEGE_CHANGING_SP;
-            pause_msg_menu.unload = MESSEGE_UNLOAD_SP;
-            pause_msg_menu.waiting = MESSEGE_WAITING_SP;
-            pause_msg_menu.insert = MESSEGE_INSERT_SP;
-            pause_msg_menu.load = MESSEGE_LOAD_SP;
-            pause_msg_menu.purge = MESSEGE_PURGE_SP;
-            pause_msg_menu.resume = MESSEGE_RESUME_SP;
-            pause_msg_menu.heat = MESSEGE_HEAT_SP;
-            pause_msg_menu.heating = MESSEGE_HEATING_SP;
-            pause_msg_menu.option = MESSEGE_OPTION_SP;
-            pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_SP;
-            pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_SP;
+            zoffset_menu.inc   = ZOFFSET_INC_SP;
+            zoffset_menu.dec   = ZOFFSET_DEC_SP;
+
+            pause_msg_menu.pausing       = MESSAGE_PAUSING_SP;
+            pause_msg_menu.changing      = MESSAGE_CHANGING_SP;
+            pause_msg_menu.unload        = MESSAGE_UNLOAD_SP;
+            pause_msg_menu.waiting       = MESSAGE_WAITING_SP;
+            pause_msg_menu.insert        = MESSAGE_INSERT_SP;
+            pause_msg_menu.load          = MESSAGE_LOAD_SP;
+            pause_msg_menu.purge         = MESSAGE_PURGE_SP;
+            pause_msg_menu.resume        = MESSAGE_RESUME_SP;
+            pause_msg_menu.heat          = MESSAGE_HEAT_SP;
+            pause_msg_menu.heating       = MESSAGE_HEATING_SP;
+            pause_msg_menu.option        = MESSAGE_OPTION_SP;
+            pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_SP;
+            pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_SP;
+            eeprom_menu.title            = EEPROM_SETTINGS_TITLE_SP;
+            eeprom_menu.store            = EEPROM_SETTINGS_STORE_SP;
+            eeprom_menu.read             = EEPROM_SETTINGS_READ_SP;
+            eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_SP;
+            eeprom_menu.storeTips        = EEPROM_STORE_TIPS_SP;
+            eeprom_menu.readTips         =  EEPROM_READ_TIPS_SP;
+            eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_SP;
             break;
 
-        #endif
+        #endif // if 1
 
         case LANG_FRENCH:
-          common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_FR;
-          common_menu.text_back = BACK_TEXT_FR;
-          common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_FR;
-          common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_FR;
-          common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
-          common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+          common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_FR;
+          common_menu.text_back             = BACK_TEXT_FR;
+          common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_FR;
+          common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_FR;
+          common_menu.print_special_title   = PRINTING_OTHER_LANGUGE;
+          common_menu.pause_special_title   = PRINTING_PAUSE_OTHER_LANGUGE;
           common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
 
           //
-          main_menu.title = TITLE_READYPRINT_FR;
-          main_menu.preheat = PREHEAT_TEXT_FR;
-          main_menu.move = MOVE_TEXT_FR;
-          main_menu.home = HOME_TEXT_FR;
-          main_menu.print = PRINT_TEXT_FR;
-          main_menu.extrude = EXTRUDE_TEXT_FR;
-          main_menu.leveling = LEVELING_TEXT_FR;
+          main_menu.title        = TITLE_READYPRINT_FR;
+          main_menu.preheat      = PREHEAT_TEXT_FR;
+          main_menu.move         = MOVE_TEXT_FR;
+          main_menu.home         = HOME_TEXT_FR;
+          main_menu.print        = PRINT_TEXT_FR;
+          main_menu.extrude      = EXTRUDE_TEXT_FR;
+          main_menu.leveling     = LEVELING_TEXT_FR;
           main_menu.autoleveling = AUTO_LEVELING_TEXT_FR;
-          main_menu.fan = FAN_TEXT_FR;
-          main_menu.set = SET_TEXT_FR;
-          main_menu.more = MORE_TEXT_FR;
-          main_menu.tool = TOOL_TEXT_FR;
-          //TOOL
-          tool_menu.title = TOOL_TEXT_FR;
-          tool_menu.preheat = TOOL_PREHEAT_FR;
-          tool_menu.extrude = TOOL_EXTRUDE_FR;
-          tool_menu.move = TOOL_MOVE_FR;
-          tool_menu.home = TOOL_HOME_FR;
-          tool_menu.leveling = TOOL_LEVELING_FR;
+          main_menu.fan          = FAN_TEXT_FR;
+          main_menu.set          = SET_TEXT_FR;
+          main_menu.more         = MORE_TEXT_FR;
+          main_menu.tool         = TOOL_TEXT_FR;
+          // TOOL
+          tool_menu.title        = TOOL_TEXT_FR;
+          tool_menu.preheat      = TOOL_PREHEAT_FR;
+          tool_menu.extrude      = TOOL_EXTRUDE_FR;
+          tool_menu.move         = TOOL_MOVE_FR;
+          tool_menu.home         = TOOL_HOME_FR;
+          tool_menu.leveling     = TOOL_LEVELING_FR;
           tool_menu.autoleveling = TOOL_AUTO_LEVELING_FR;
-          tool_menu.filament = TOOL_FILAMENT_FR;
-          tool_menu.more = TOOL_MORE_FR;
+          tool_menu.filament     = TOOL_FILAMENT_FR;
+          tool_menu.more         = TOOL_MORE_FR;
           //
           preheat_menu.adjust_title = TITLE_ADJUST_FR;
-          preheat_menu.title = TITLE_PREHEAT_FR;
-          preheat_menu.add = ADD_TEXT_FR;
-          preheat_menu.dec = DEC_TEXT_FR;
-          preheat_menu.ext1 = EXTRUDER_1_TEXT_FR;
-          preheat_menu.ext2 = EXTRUDER_2_TEXT_FR;
-          preheat_menu.hotbed = HEATBED_TEXT_FR;
-          preheat_menu.off = CLOSE_TEXT_FR;
+          preheat_menu.title        = TITLE_PREHEAT_FR;
+          preheat_menu.add          = ADD_TEXT_FR;
+          preheat_menu.dec          = DEC_TEXT_FR;
+          preheat_menu.ext1         = EXTRUDER_1_TEXT_FR;
+          preheat_menu.ext2         = EXTRUDER_2_TEXT_FR;
+          preheat_menu.hotbed       = HEATBED_TEXT_FR;
+          preheat_menu.off          = CLOSE_TEXT_FR;
           //
           move_menu.title = MOVE_TEXT_FR;
           //
-          home_menu.title = TITLE_HOME_FR;
+          home_menu.title    = TITLE_HOME_FR;
           home_menu.stopmove = HOME_STOPMOVE_FR;
           //
-          file_menu.title = TITLE_CHOOSEFILE_FR;
-          file_menu.page_up = PAGE_UP_TEXT_FR;
+          file_menu.title     = TITLE_CHOOSEFILE_FR;
+          file_menu.page_up   = PAGE_UP_TEXT_FR;
           file_menu.page_down = PAGE_DOWN_TEXT_FR;
           //
-          extrude_menu.title = TITLE_EXTRUDE_FR;
-          extrude_menu.in = EXTRUDER_IN_TEXT_FR;
-          extrude_menu.out = EXTRUDER_OUT_TEXT_FR;
-          extrude_menu.ext1 = EXTRUDER_1_TEXT_FR;
-          extrude_menu.ext2 = EXTRUDER_2_TEXT_FR;
-          extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_FR;
-          extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_FR;
-          extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_FR;
+          extrude_menu.title       = TITLE_EXTRUDE_FR;
+          extrude_menu.in          = EXTRUDER_IN_TEXT_FR;
+          extrude_menu.out         = EXTRUDER_OUT_TEXT_FR;
+          extrude_menu.ext1        = EXTRUDER_1_TEXT_FR;
+          extrude_menu.ext2        = EXTRUDER_2_TEXT_FR;
+          extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_FR;
+          extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_FR;
+          extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_FR;
           extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_FR;
           //
-          leveling_menu.title = TITLE_LEVELING_FR;
+          leveling_menu.title     = TITLE_LEVELING_FR;
           leveling_menu.position1 = LEVELING_POINT1_TEXT_FR;
           leveling_menu.position2 = LEVELING_POINT2_TEXT_FR;
           leveling_menu.position3 = LEVELING_POINT3_TEXT_FR;
           leveling_menu.position4 = LEVELING_POINT4_TEXT_FR;
           leveling_menu.position5 = LEVELING_POINT5_TEXT_FR;
           //
-          set_menu.title = TITLE_SET_FR;
-          set_menu.filesys = FILESYS_TEXT_FR;
-          set_menu.wifi = WIFI_TEXT_FR;
-          set_menu.about = ABOUT_TEXT_FR;
-          set_menu.fan = FAN_TEXT_FR;
-          set_menu.filament = FILAMENT_TEXT_FR;
-          set_menu.breakpoint = BREAK_POINT_TEXT_FR;
-          set_menu.motoroff = MOTOR_OFF_TEXT_FR;
-          set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_FR;
-          set_menu.language = LANGUAGE_TEXT_FR;
-          set_menu.shutdown = SHUTDOWN_TEXT_FR;
+          set_menu.title        = TITLE_SET_FR;
+          set_menu.filesys      = FILESYS_TEXT_FR;
+          set_menu.wifi         = WIFI_TEXT_FR;
+          set_menu.about        = ABOUT_TEXT_FR;
+          set_menu.fan          = FAN_TEXT_FR;
+          set_menu.filament     = FILAMENT_TEXT_FR;
+          set_menu.breakpoint   = BREAK_POINT_TEXT_FR;
+          set_menu.motoroff     = MOTOR_OFF_TEXT_FR;
+          set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_FR;
+          set_menu.language     = LANGUAGE_TEXT_FR;
+          set_menu.shutdown     = SHUTDOWN_TEXT_FR;
+          set_menu.machine_para = MACHINE_PARA_FR;
+          set_menu.eepromSet    = EEPROM_SETTINGS_FR;
+          more_menu.title       = TITLE_MORE_FR;
+          more_menu.zoffset     = ZOFFSET_FR;
           //
-          more_menu.title = TITLE_MORE_FR;
-          more_menu.zoffset = ZOFFSET_FR;
-          //
-          filesys_menu.title = TITLE_FILESYS_FR;
-          filesys_menu.sd_sys = SD_CARD_TEXT_FR;
-          filesys_menu.usb_sys = U_DISK_TEXT_FR;
-          file_menu.file_loading = FILE_LOADING_FR;
-          file_menu.no_file = NO_FILE_FR;
-          file_menu.no_file_and_check = NO_FILE_FR;//NO_FILE_AND_CHECK_FR;
-          //WIFI
+          filesys_menu.title          = TITLE_FILESYS_FR;
+          filesys_menu.sd_sys         = SD_CARD_TEXT_FR;
+          filesys_menu.usb_sys        = U_DISK_TEXT_FR;
+          file_menu.file_loading      = FILE_LOADING_FR;
+          file_menu.no_file           = NO_FILE_FR;
+          file_menu.no_file_and_check = NO_FILE_FR;// NO_FILE_AND_CHECK_FR;
+          // WIFI
           wifi_menu.title = WIFI_NAME_TEXT_FR;
-          //wifi_menu.key = WIFI_KEY_TEXT_FR;
-          //wifi_menu.ip = WIFI_IP_TEXT_FR;
-          //wifi_menu.state = WIFI_STA_TEXT_FR;
-          //wifi_menu.cloud = CLOSE_TEXT_FR;
-          wifi_menu.cloud = CLOUD_TEXT_FR;
+          // wifi_menu.key = WIFI_KEY_TEXT_FR;
+          // wifi_menu.ip = WIFI_IP_TEXT_FR;
+          // wifi_menu.state = WIFI_STA_TEXT_FR;
+          // wifi_menu.cloud = CLOSE_TEXT_FR;
+          wifi_menu.cloud     = CLOUD_TEXT_FR;
           wifi_menu.reconnect = WIFI_RECONNECT_TEXT_FR;
 
-          cloud_menu.title = TITLE_CLOUD_TEXT_FR;
-          cloud_menu.bind = CLOUD_BINDED_FR;
-          cloud_menu.binded = CLOUD_BINDED_FR;
-          cloud_menu.unbind = CLOUD_UNBIND_FR;
-          cloud_menu.unbinding = CLOUD_UNBINDED_FR;
+          cloud_menu.title        = TITLE_CLOUD_TEXT_FR;
+          cloud_menu.bind         = CLOUD_BINDED_FR;
+          cloud_menu.binded       = CLOUD_BINDED_FR;
+          cloud_menu.unbind       = CLOUD_UNBIND_FR;
+          cloud_menu.unbinding    = CLOUD_UNBINDED_FR;
           cloud_menu.disconnected = CLOUD_DISCONNECTED_FR;
-          cloud_menu.disable = CLOUD_DISABLE_FR;
+          cloud_menu.disable      = CLOUD_DISABLE_FR;
           //
-          about_menu.title = ABOUT_TEXT_FR;
-          about_menu.type = ABOUT_TYPE_TEXT_FR;
+          about_menu.title   = ABOUT_TEXT_FR;
+          about_menu.type    = ABOUT_TYPE_TEXT_FR;
           about_menu.version = ABOUT_VERSION_TEXT_FR;
-          about_menu.wifi = ABOUT_WIFI_TEXT_FR;
+          about_menu.wifi    = ABOUT_WIFI_TEXT_FR;
           //
           fan_menu.title = FAN_TEXT_FR;
-          fan_menu.add = FAN_ADD_TEXT_FR;
-          fan_menu.dec = FAN_DEC_TEXT_FR;
+          fan_menu.add   = FAN_ADD_TEXT_FR;
+          fan_menu.dec   = FAN_DEC_TEXT_FR;
           fan_menu.state = FAN_TIPS1_TEXT_FR;
           //
-          filament_menu.title = TITLE_FILAMENT_FR;
-          filament_menu.in = FILAMENT_IN_TEXT_FR;
-          filament_menu.out = FILAMENT_OUT_TEXT_FR;
-          filament_menu.ext1 = FILAMENT_EXT0_TEXT_FR;
-          filament_menu.ext2 = FILAMENT_EXT1_TEXT_FR;
-          filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_FR;
-          filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_FR;
-          filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_FR;
-          filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_FR;
-          filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_FR;
-          filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_FR;
+          filament_menu.title                               = TITLE_FILAMENT_FR;
+          filament_menu.in                                  = FILAMENT_IN_TEXT_FR;
+          filament_menu.out                                 = FILAMENT_OUT_TEXT_FR;
+          filament_menu.ext1                                = FILAMENT_EXT0_TEXT_FR;
+          filament_menu.ext2                                = FILAMENT_EXT1_TEXT_FR;
+          filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_FR;
+          filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_FR;
+          filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_FR;
+          filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_FR;
+          filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_FR;
+          filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_FR;
           filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_FR;
-          filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_FR;
-          filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_FR;
+          filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_FR;
+          filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_FR;
 
           //
           language_menu.title = LANGUAGE_TEXT_FR;
 
           //
-          printing_menu.title = TITLE_PRINTING_FR;
+          printing_menu.title  = TITLE_PRINTING_FR;
           printing_menu.option = PRINTING_OPERATION_FR;
-          printing_menu.stop = PRINTING_STOP_FR;
-          printing_menu.pause = PRINTING_PAUSE_FR;
+          printing_menu.stop   = PRINTING_STOP_FR;
+          printing_menu.pause  = PRINTING_PAUSE_FR;
           printing_menu.resume = PRINTING_RESUME_FR;
 
           //
-          operation_menu.title = TITLE_OPERATION_FR;
-          operation_menu.pause = PRINTING_PAUSE_FR;
-          operation_menu.stop = PRINTING_STOP_FR;
-          operation_menu.temp = PRINTING_TEMP_FR;
-          operation_menu.fan = FAN_TEXT_FR;
-          operation_menu.extr = PRINTING_EXTRUDER_FR;
-          operation_menu.speed = PRINTING_CHANGESPEED_FR;
-          operation_menu.filament = FILAMENT_TEXT_FR;
-          operation_menu.more = PRINTING_MORE_FR;
-          operation_menu.move = PRINTING_MOVE_FR;
-          operation_menu.auto_off = AUTO_SHUTDOWN_FR;
+          operation_menu.title      = TITLE_OPERATION_FR;
+          operation_menu.pause      = PRINTING_PAUSE_FR;
+          operation_menu.stop       = PRINTING_STOP_FR;
+          operation_menu.temp       = PRINTING_TEMP_FR;
+          operation_menu.fan        = FAN_TEXT_FR;
+          operation_menu.extr       = PRINTING_EXTRUDER_FR;
+          operation_menu.speed      = PRINTING_CHANGESPEED_FR;
+          operation_menu.filament   = FILAMENT_TEXT_FR;
+          operation_menu.more       = PRINTING_MORE_FR;
+          operation_menu.move       = PRINTING_MOVE_FR;
+          operation_menu.auto_off   = AUTO_SHUTDOWN_FR;
           operation_menu.manual_off = MANUAL_SHUTDOWN_FR;
           //
-          pause_menu.title = TITLE_PAUSE_FR;
-          pause_menu.resume = PRINTING_RESUME_FR;
-          pause_menu.stop = PRINTING_STOP_FR;
-          pause_menu.extrude = PRINTING_EXTRUDER_FR;
-          pause_menu.move = PRINTING_MOVE_FR;
+          pause_menu.title    = TITLE_PAUSE_FR;
+          pause_menu.resume   = PRINTING_RESUME_FR;
+          pause_menu.stop     = PRINTING_STOP_FR;
+          pause_menu.extrude  = PRINTING_EXTRUDER_FR;
+          pause_menu.move     = PRINTING_MOVE_FR;
           pause_menu.filament = FILAMENT_TEXT_FR;
-          pause_menu.more = PRINTING_MORE_FR;
+          pause_menu.more     = PRINTING_MORE_FR;
 
           //
-          speed_menu.title = PRINTING_CHANGESPEED_FR;
-          speed_menu.add = ADD_TEXT_FR;
-          speed_menu.dec = DEC_TEXT_FR;
-          speed_menu.move = MOVE_SPEED_FR;
-          speed_menu.extrude = EXTRUDER_SPEED_FR;
+          speed_menu.title         = PRINTING_CHANGESPEED_FR;
+          speed_menu.add           = ADD_TEXT_FR;
+          speed_menu.dec           = DEC_TEXT_FR;
+          speed_menu.move          = MOVE_SPEED_FR;
+          speed_menu.extrude       = EXTRUDER_SPEED_FR;
           speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_FR;
-          speed_menu.move_speed = MOVE_SPEED_STATE_FR;
+          speed_menu.move_speed    = MOVE_SPEED_STATE_FR;
           //
-          printing_more_menu.fan = FAN_TEXT_FR;
+          printing_more_menu.fan        = FAN_TEXT_FR;
           printing_more_menu.auto_close = AUTO_SHUTDOWN_FR;
-          printing_more_menu.manual = MANUAL_SHUTDOWN_FR;
-          printing_more_menu.speed = PRINTING_CHANGESPEED_FR;
-          printing_more_menu.temp = PRINTING_TEMP_FR;
-
-          //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
-          print_file_dialog_menu.confirm = DIALOG_CONFIRM_FR;
-          print_file_dialog_menu.cancle = DIALOG_CANCLE_FR;
-          print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_FR;
-          print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_FR;
-          print_file_dialog_menu.retry = DIALOG_RETRY_FR;
-          print_file_dialog_menu.stop = DIALOG_STOP_FR;
-          print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_FR;
+          printing_more_menu.manual     = MANUAL_SHUTDOWN_FR;
+          printing_more_menu.speed      = PRINTING_CHANGESPEED_FR;
+          printing_more_menu.temp       = PRINTING_TEMP_FR;
+
+          // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
+          print_file_dialog_menu.confirm               = DIALOG_CONFIRM_FR;
+          print_file_dialog_menu.cancle                = DIALOG_CANCLE_FR;
+          print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_FR;
+          print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_FR;
+          print_file_dialog_menu.retry                 = DIALOG_RETRY_FR;
+          print_file_dialog_menu.stop                  = DIALOG_STOP_FR;
+          print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_FR;
           print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_FR;
-          print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_FR;
-          print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_FR;
-          print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_FR;
-          print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_FR;
-          print_file_dialog_menu.reprint = DIALOG_REPRINT_FR;
-          print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_FR;
-          //ZOFFSET
+          print_file_dialog_menu.close_machine_error   = DIALOG_ERROR_TIPS2_FR;
+          print_file_dialog_menu.filament_no_press     = DIALOG_FILAMENT_NO_PRESS_FR;
+          print_file_dialog_menu.print_finish          = DIALOG_PRINT_FINISH_FR;
+          print_file_dialog_menu.print_time            = DIALOG_PRINT_TIME_FR;
+          print_file_dialog_menu.reprint               = DIALOG_REPRINT_FR;
+          print_file_dialog_menu.wifi_enable_tips      = DIALOG_WIFI_ENABLE_TIPS_FR;
+          // ZOFFSET
           zoffset_menu.title = TITLE_ZOFFSET_FR;
-          zoffset_menu.inc = ZOFFSET_INC_FR;
-          zoffset_menu.dec = ZOFFSET_DEC_FR;
-
-          pause_msg_menu.pausing = MESSEGE_PAUSING_FR;
-          pause_msg_menu.changing = MESSEGE_CHANGING_FR;
-          pause_msg_menu.unload = MESSEGE_UNLOAD_FR;
-          pause_msg_menu.waiting = MESSEGE_WAITING_FR;
-          pause_msg_menu.insert = MESSEGE_INSERT_FR;
-          pause_msg_menu.load = MESSEGE_LOAD_FR;
-          pause_msg_menu.purge = MESSEGE_PURGE_FR;
-          pause_msg_menu.resume = MESSEGE_RESUME_FR;
-          pause_msg_menu.heat = MESSEGE_HEAT_FR;
-          pause_msg_menu.heating = MESSEGE_HEATING_FR;
-          pause_msg_menu.option = MESSEGE_OPTION_FR;
-          pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_FR;
-          pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_FR;
+          zoffset_menu.inc   = ZOFFSET_INC_FR;
+          zoffset_menu.dec   = ZOFFSET_DEC_FR;
+
+          pause_msg_menu.pausing       = MESSAGE_PAUSING_FR;
+          pause_msg_menu.changing      = MESSAGE_CHANGING_FR;
+          pause_msg_menu.unload        = MESSAGE_UNLOAD_FR;
+          pause_msg_menu.waiting       = MESSAGE_WAITING_FR;
+          pause_msg_menu.insert        = MESSAGE_INSERT_FR;
+          pause_msg_menu.load          = MESSAGE_LOAD_FR;
+          pause_msg_menu.purge         = MESSAGE_PURGE_FR;
+          pause_msg_menu.resume        = MESSAGE_RESUME_FR;
+          pause_msg_menu.heat          = MESSAGE_HEAT_FR;
+          pause_msg_menu.heating       = MESSAGE_HEATING_FR;
+          pause_msg_menu.option        = MESSAGE_OPTION_FR;
+          pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_FR;
+          pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_FR;
+          eeprom_menu.title            = EEPROM_SETTINGS_TITLE_FR;
+          eeprom_menu.store            = EEPROM_SETTINGS_STORE_FR;
+          eeprom_menu.read             = EEPROM_SETTINGS_READ_FR;
+          eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_FR;
+          eeprom_menu.storeTips        = EEPROM_STORE_TIPS_FR;
+          eeprom_menu.readTips         =  EEPROM_READ_TIPS_FR;
+          eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_FR;
           break;
 
         case LANG_ITALY:
-          common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_IT;
-          common_menu.text_back = BACK_TEXT_IT;
-          common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_IT;
-          common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_IT;
-          common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
-          common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+          common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_IT;
+          common_menu.text_back             = BACK_TEXT_IT;
+          common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_IT;
+          common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_IT;
+          common_menu.print_special_title   = PRINTING_OTHER_LANGUGE;
+          common_menu.pause_special_title   = PRINTING_PAUSE_OTHER_LANGUGE;
           common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
 
           //
-          main_menu.title = TITLE_READYPRINT_IT;
-          main_menu.preheat = PREHEAT_TEXT_IT;
-          main_menu.move = MOVE_TEXT_IT;
-          main_menu.home = HOME_TEXT_IT;
-          main_menu.print = PRINT_TEXT_IT;
-          main_menu.extrude = EXTRUDE_TEXT_IT;
-          main_menu.leveling = LEVELING_TEXT_IT;
+          main_menu.title        = TITLE_READYPRINT_IT;
+          main_menu.preheat      = PREHEAT_TEXT_IT;
+          main_menu.move         = MOVE_TEXT_IT;
+          main_menu.home         = HOME_TEXT_IT;
+          main_menu.print        = PRINT_TEXT_IT;
+          main_menu.extrude      = EXTRUDE_TEXT_IT;
+          main_menu.leveling     = LEVELING_TEXT_IT;
           main_menu.autoleveling = AUTO_LEVELING_TEXT_IT;
-          main_menu.fan = FAN_TEXT_IT;
-          main_menu.set = SET_TEXT_IT;
-          main_menu.more = MORE_TEXT_IT;
-          main_menu.tool = TOOL_TEXT_IT;
-          //TOOL
-          tool_menu.title = TOOL_TEXT_IT;
-          tool_menu.preheat = TOOL_PREHEAT_IT;
-          tool_menu.extrude = TOOL_EXTRUDE_IT;
-          tool_menu.move = TOOL_MOVE_IT;
-          tool_menu.home = TOOL_HOME_IT;
-          tool_menu.leveling = TOOL_LEVELING_IT;
+          main_menu.fan          = FAN_TEXT_IT;
+          main_menu.set          = SET_TEXT_IT;
+          main_menu.more         = MORE_TEXT_IT;
+          main_menu.tool         = TOOL_TEXT_IT;
+          // TOOL
+          tool_menu.title        = TOOL_TEXT_IT;
+          tool_menu.preheat      = TOOL_PREHEAT_IT;
+          tool_menu.extrude      = TOOL_EXTRUDE_IT;
+          tool_menu.move         = TOOL_MOVE_IT;
+          tool_menu.home         = TOOL_HOME_IT;
+          tool_menu.leveling     = TOOL_LEVELING_IT;
           tool_menu.autoleveling = TOOL_AUTO_LEVELING_IT;
-          tool_menu.filament = TOOL_FILAMENT_IT;
-          tool_menu.more = TOOL_MORE_IT;
+          tool_menu.filament     = TOOL_FILAMENT_IT;
+          tool_menu.more         = TOOL_MORE_IT;
           //
           preheat_menu.adjust_title = TITLE_ADJUST_IT;
-          preheat_menu.title = TITLE_PREHEAT_IT;
-          preheat_menu.add = ADD_TEXT_IT;
-          preheat_menu.dec = DEC_TEXT_IT;
-          preheat_menu.ext1 = EXTRUDER_1_TEXT_IT;
-          preheat_menu.ext2 = EXTRUDER_2_TEXT_IT;
-          preheat_menu.hotbed = HEATBED_TEXT_IT;
-          preheat_menu.off = CLOSE_TEXT_IT;
+          preheat_menu.title        = TITLE_PREHEAT_IT;
+          preheat_menu.add          = ADD_TEXT_IT;
+          preheat_menu.dec          = DEC_TEXT_IT;
+          preheat_menu.ext1         = EXTRUDER_1_TEXT_IT;
+          preheat_menu.ext2         = EXTRUDER_2_TEXT_IT;
+          preheat_menu.hotbed       = HEATBED_TEXT_IT;
+          preheat_menu.off          = CLOSE_TEXT_IT;
           //
           move_menu.title = MOVE_TEXT_IT;
           //
-          home_menu.title = TITLE_HOME_IT;
+          home_menu.title    = TITLE_HOME_IT;
           home_menu.stopmove = HOME_STOPMOVE_IT;
           //
-          file_menu.title = TITLE_CHOOSEFILE_IT;
-          file_menu.page_up = PAGE_UP_TEXT_IT;
-          file_menu.page_down = PAGE_DOWN_TEXT_IT;
-          file_menu.file_loading = FILE_LOADING_IT;
-          file_menu.no_file = NO_FILE_IT;
-          file_menu.no_file_and_check = NO_FILE_IT;//NO_FILE_AND_CHECK_IT;
+          file_menu.title             = TITLE_CHOOSEFILE_IT;
+          file_menu.page_up           = PAGE_UP_TEXT_IT;
+          file_menu.page_down         = PAGE_DOWN_TEXT_IT;
+          file_menu.file_loading      = FILE_LOADING_IT;
+          file_menu.no_file           = NO_FILE_IT;
+          file_menu.no_file_and_check = NO_FILE_IT;// NO_FILE_AND_CHECK_IT;
           //
-          extrude_menu.title = TITLE_EXTRUDE_IT;
-          extrude_menu.in = EXTRUDER_IN_TEXT_IT;
-          extrude_menu.out = EXTRUDER_OUT_TEXT_IT;
-          extrude_menu.ext1 = EXTRUDER_1_TEXT_IT;
-          extrude_menu.ext2 = EXTRUDER_2_TEXT_IT;
-          extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_IT;
-          extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_IT;
-          extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_IT;
+          extrude_menu.title       = TITLE_EXTRUDE_IT;
+          extrude_menu.in          = EXTRUDER_IN_TEXT_IT;
+          extrude_menu.out         = EXTRUDER_OUT_TEXT_IT;
+          extrude_menu.ext1        = EXTRUDER_1_TEXT_IT;
+          extrude_menu.ext2        = EXTRUDER_2_TEXT_IT;
+          extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_IT;
+          extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_IT;
+          extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_IT;
           extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_IT;
           //
-          leveling_menu.title = TITLE_LEVELING_IT;
+          leveling_menu.title     = TITLE_LEVELING_IT;
           leveling_menu.position1 = LEVELING_POINT1_TEXT_IT;
           leveling_menu.position2 = LEVELING_POINT2_TEXT_IT;
           leveling_menu.position3 = LEVELING_POINT3_TEXT_IT;
           leveling_menu.position4 = LEVELING_POINT4_TEXT_IT;
           leveling_menu.position5 = LEVELING_POINT5_TEXT_IT;
           //
-          set_menu.title = TITLE_SET_IT;
-          set_menu.filesys = FILESYS_TEXT_IT;
-          set_menu.wifi = WIFI_TEXT_IT;
-          set_menu.about = ABOUT_TEXT_IT;
-          set_menu.fan = FAN_TEXT_IT;
-          set_menu.filament = FILAMENT_TEXT_IT;
-          set_menu.breakpoint = BREAK_POINT_TEXT_IT;
-          set_menu.motoroff = MOTOR_OFF_TEXT_IT;
-          set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_IT;
-          set_menu.language = LANGUAGE_TEXT_IT;
-          set_menu.shutdown = SHUTDOWN_TEXT_IT;
-          //
-          more_menu.title = TITLE_MORE_IT;
-          more_menu.zoffset = ZOFFSET_IT;
+          set_menu.title        = TITLE_SET_IT;
+          set_menu.filesys      = FILESYS_TEXT_IT;
+          set_menu.wifi         = WIFI_TEXT_IT;
+          set_menu.about        = ABOUT_TEXT_IT;
+          set_menu.fan          = FAN_TEXT_IT;
+          set_menu.filament     = FILAMENT_TEXT_IT;
+          set_menu.breakpoint   = BREAK_POINT_TEXT_IT;
+          set_menu.motoroff     = MOTOR_OFF_TEXT_IT;
+          set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_IT;
+          set_menu.language     = LANGUAGE_TEXT_IT;
+          set_menu.shutdown     = SHUTDOWN_TEXT_IT;
+          set_menu.machine_para = MACHINE_PARA_IT;
+          set_menu.eepromSet    = EEPROM_SETTINGS_IT;
+          more_menu.title       = TITLE_MORE_IT;
+          more_menu.zoffset     = ZOFFSET_IT;
           //
-          filesys_menu.title = TITLE_FILESYS_IT;
-          filesys_menu.sd_sys = SD_CARD_TEXT_IT;
+          filesys_menu.title   = TITLE_FILESYS_IT;
+          filesys_menu.sd_sys  = SD_CARD_TEXT_IT;
           filesys_menu.usb_sys = U_DISK_TEXT_IT;
 
-          //WIFI
+          // WIFI
           wifi_menu.title = WIFI_NAME_TEXT_IT;
-          //wifi_menu.key = WIFI_KEY_TEXT_IT;
-          //wifi_menu.ip = WIFI_IP_TEXT_IT;
-          //wifi_menu.state = WIFI_STA_TEXT_IT;
-          wifi_menu.cloud = CLOSE_TEXT_IT;
+          // wifi_menu.key = WIFI_KEY_TEXT_IT;
+          // wifi_menu.ip = WIFI_IP_TEXT_IT;
+          // wifi_menu.state = WIFI_STA_TEXT_IT;
+          wifi_menu.cloud     = CLOSE_TEXT_IT;
           wifi_menu.reconnect = WIFI_RECONNECT_TEXT_IT;
 
-          cloud_menu.title = TITLE_CLOUD_TEXT_IT;
-          cloud_menu.bind = CLOUD_BINDED_IT;
-          cloud_menu.binded = CLOUD_BINDED_IT;
-          cloud_menu.unbind = CLOUD_UNBIND_IT;
-          cloud_menu.unbinding = CLOUD_UNBINDED_IT;
+          cloud_menu.title        = TITLE_CLOUD_TEXT_IT;
+          cloud_menu.bind         = CLOUD_BINDED_IT;
+          cloud_menu.binded       = CLOUD_BINDED_IT;
+          cloud_menu.unbind       = CLOUD_UNBIND_IT;
+          cloud_menu.unbinding    = CLOUD_UNBINDED_IT;
           cloud_menu.disconnected = CLOUD_DISCONNECTED_IT;
-          cloud_menu.disable = CLOUD_DISABLE_IT;
+          cloud_menu.disable      = CLOUD_DISABLE_IT;
           //
-          about_menu.title = ABOUT_TEXT_IT;
-          about_menu.type = ABOUT_TYPE_TEXT_IT;
+          about_menu.title   = ABOUT_TEXT_IT;
+          about_menu.type    = ABOUT_TYPE_TEXT_IT;
           about_menu.version = ABOUT_VERSION_TEXT_IT;
-          about_menu.wifi = ABOUT_WIFI_TEXT_IT;
+          about_menu.wifi    = ABOUT_WIFI_TEXT_IT;
           //
           fan_menu.title = FAN_TEXT_IT;
-          fan_menu.add = FAN_ADD_TEXT_IT;
-          fan_menu.dec = FAN_DEC_TEXT_IT;
+          fan_menu.add   = FAN_ADD_TEXT_IT;
+          fan_menu.dec   = FAN_DEC_TEXT_IT;
           fan_menu.state = FAN_TIPS1_TEXT_IT;
           //
-          filament_menu.title = TITLE_FILAMENT_IT;
-          filament_menu.in = FILAMENT_IN_TEXT_IT;
-          filament_menu.out = FILAMENT_OUT_TEXT_IT;
-          filament_menu.ext1 = FILAMENT_EXT0_TEXT_IT;
-          filament_menu.ext2 = FILAMENT_EXT1_TEXT_IT;
-          filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_IT;
-          filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT;
-          filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT;
-          filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_IT;
-          filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT;
-          filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT;
+          filament_menu.title                               = TITLE_FILAMENT_IT;
+          filament_menu.in                                  = FILAMENT_IN_TEXT_IT;
+          filament_menu.out                                 = FILAMENT_OUT_TEXT_IT;
+          filament_menu.ext1                                = FILAMENT_EXT0_TEXT_IT;
+          filament_menu.ext2                                = FILAMENT_EXT1_TEXT_IT;
+          filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_IT;
+          filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_IT;
+          filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_IT;
+          filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_IT;
+          filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_IT;
+          filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_IT;
           filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_IT;
-          filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_IT;
-          filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT;
+          filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_IT;
+          filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_IT;
 
           //
           language_menu.title = LANGUAGE_TEXT_IT;
 
           //
-          printing_menu.title = TITLE_PRINTING_IT;
+          printing_menu.title  = TITLE_PRINTING_IT;
           printing_menu.option = PRINTING_OPERATION_IT;
-          printing_menu.stop = PRINTING_STOP_IT;
-          printing_menu.pause = PRINTING_PAUSE_IT;
+          printing_menu.stop   = PRINTING_STOP_IT;
+          printing_menu.pause  = PRINTING_PAUSE_IT;
           printing_menu.resume = PRINTING_RESUME_IT;
 
           //
-          operation_menu.title = TITLE_OPERATION_IT;
-          operation_menu.pause = PRINTING_PAUSE_IT;
-          operation_menu.stop = PRINTING_STOP_IT;
-          operation_menu.temp = PRINTING_TEMP_IT;
-          operation_menu.fan = FAN_TEXT_IT;
-          operation_menu.extr = PRINTING_EXTRUDER_IT;
-          operation_menu.speed = PRINTING_CHANGESPEED_IT;
-          operation_menu.filament = FILAMENT_TEXT_IT;
-          operation_menu.more = PRINTING_MORE_IT;
-          operation_menu.move = PRINTING_MOVE_IT;
-          operation_menu.auto_off = AUTO_SHUTDOWN_IT;
+          operation_menu.title      = TITLE_OPERATION_IT;
+          operation_menu.pause      = PRINTING_PAUSE_IT;
+          operation_menu.stop       = PRINTING_STOP_IT;
+          operation_menu.temp       = PRINTING_TEMP_IT;
+          operation_menu.fan        = FAN_TEXT_IT;
+          operation_menu.extr       = PRINTING_EXTRUDER_IT;
+          operation_menu.speed      = PRINTING_CHANGESPEED_IT;
+          operation_menu.filament   = FILAMENT_TEXT_IT;
+          operation_menu.more       = PRINTING_MORE_IT;
+          operation_menu.move       = PRINTING_MOVE_IT;
+          operation_menu.auto_off   = AUTO_SHUTDOWN_IT;
           operation_menu.manual_off = MANUAL_SHUTDOWN_IT;
           //
-          pause_menu.title = TITLE_PAUSE_IT;
-          pause_menu.resume = PRINTING_RESUME_IT;
-          pause_menu.stop = PRINTING_STOP_IT;
-          pause_menu.extrude = PRINTING_EXTRUDER_IT;
-          pause_menu.move = PRINTING_MOVE_IT;
+          pause_menu.title    = TITLE_PAUSE_IT;
+          pause_menu.resume   = PRINTING_RESUME_IT;
+          pause_menu.stop     = PRINTING_STOP_IT;
+          pause_menu.extrude  = PRINTING_EXTRUDER_IT;
+          pause_menu.move     = PRINTING_MOVE_IT;
           pause_menu.filament = FILAMENT_TEXT_IT;
-          pause_menu.more = PRINTING_MORE_IT;
+          pause_menu.more     = PRINTING_MORE_IT;
 
           //
-          speed_menu.title = PRINTING_CHANGESPEED_IT;
-          speed_menu.add = ADD_TEXT_IT;
-          speed_menu.dec = DEC_TEXT_IT;
-          speed_menu.move = MOVE_SPEED_IT;
-          speed_menu.extrude = EXTRUDER_SPEED_IT;
+          speed_menu.title         = PRINTING_CHANGESPEED_IT;
+          speed_menu.add           = ADD_TEXT_IT;
+          speed_menu.dec           = DEC_TEXT_IT;
+          speed_menu.move          = MOVE_SPEED_IT;
+          speed_menu.extrude       = EXTRUDER_SPEED_IT;
           speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_IT;
-          speed_menu.move_speed = MOVE_SPEED_STATE_IT;
+          speed_menu.move_speed    = MOVE_SPEED_STATE_IT;
           //
-          printing_more_menu.fan = FAN_TEXT_IT;
+          printing_more_menu.fan        = FAN_TEXT_IT;
           printing_more_menu.auto_close = AUTO_SHUTDOWN_IT;
-          printing_more_menu.manual = MANUAL_SHUTDOWN_IT;
-          printing_more_menu.temp = PRINTING_TEMP_IT;
-          printing_more_menu.speed = PRINTING_CHANGESPEED_IT;
-
-          //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
-          print_file_dialog_menu.confirm = DIALOG_CONFIRM_IT;
-          print_file_dialog_menu.cancle = DIALOG_CANCLE_IT;
-          print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_IT;
-          print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_IT;
-          print_file_dialog_menu.retry = DIALOG_RETRY_IT;
-          print_file_dialog_menu.stop = DIALOG_STOP_IT;
-          print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_IT;
+          printing_more_menu.manual     = MANUAL_SHUTDOWN_IT;
+          printing_more_menu.temp       = PRINTING_TEMP_IT;
+          printing_more_menu.speed      = PRINTING_CHANGESPEED_IT;
+
+          // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_SP;
+          print_file_dialog_menu.confirm               = DIALOG_CONFIRM_IT;
+          print_file_dialog_menu.cancle                = DIALOG_CANCLE_IT;
+          print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_IT;
+          print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_IT;
+          print_file_dialog_menu.retry                 = DIALOG_RETRY_IT;
+          print_file_dialog_menu.stop                  = DIALOG_STOP_IT;
+          print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_IT;
           print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_IT;
-          print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_IT;
-          print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_IT;
-          print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_IT;
-          print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_IT;
-          print_file_dialog_menu.reprint = DIALOG_REPRINT_IT;
-          print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_IT;
-          //ZOFFSET
+          print_file_dialog_menu.close_machine_error   = DIALOG_ERROR_TIPS2_IT;
+          print_file_dialog_menu.filament_no_press     = DIALOG_FILAMENT_NO_PRESS_IT;
+          print_file_dialog_menu.print_finish          = DIALOG_PRINT_FINISH_IT;
+          print_file_dialog_menu.print_time            = DIALOG_PRINT_TIME_IT;
+          print_file_dialog_menu.reprint               = DIALOG_REPRINT_IT;
+          print_file_dialog_menu.wifi_enable_tips      = DIALOG_WIFI_ENABLE_TIPS_IT;
+          // ZOFFSET
           zoffset_menu.title = TITLE_ZOFFSET_IT;
-          zoffset_menu.inc = ZOFFSET_INC_IT;
-          zoffset_menu.dec = ZOFFSET_DEC_IT;
-
-          pause_msg_menu.pausing = MESSEGE_PAUSING_IT;
-          pause_msg_menu.changing = MESSEGE_CHANGING_IT;
-          pause_msg_menu.unload = MESSEGE_UNLOAD_IT;
-          pause_msg_menu.waiting = MESSEGE_WAITING_IT;
-          pause_msg_menu.insert = MESSEGE_INSERT_IT;
-          pause_msg_menu.load = MESSEGE_LOAD_IT;
-          pause_msg_menu.purge = MESSEGE_PURGE_IT;
-          pause_msg_menu.resume = MESSEGE_RESUME_IT;
-          pause_msg_menu.heat = MESSEGE_HEAT_IT;
-          pause_msg_menu.heating = MESSEGE_HEATING_IT;
-          pause_msg_menu.option = MESSEGE_OPTION_IT;
-          pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_IT;
-          pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_IT;
+          zoffset_menu.inc   = ZOFFSET_INC_IT;
+          zoffset_menu.dec   = ZOFFSET_DEC_IT;
+
+          pause_msg_menu.pausing       = MESSAGE_PAUSING_IT;
+          pause_msg_menu.changing      = MESSAGE_CHANGING_IT;
+          pause_msg_menu.unload        = MESSAGE_UNLOAD_IT;
+          pause_msg_menu.waiting       = MESSAGE_WAITING_IT;
+          pause_msg_menu.insert        = MESSAGE_INSERT_IT;
+          pause_msg_menu.load          = MESSAGE_LOAD_IT;
+          pause_msg_menu.purge         = MESSAGE_PURGE_IT;
+          pause_msg_menu.resume        = MESSAGE_RESUME_IT;
+          pause_msg_menu.heat          = MESSAGE_HEAT_IT;
+          pause_msg_menu.heating       = MESSAGE_HEATING_IT;
+          pause_msg_menu.option        = MESSAGE_OPTION_IT;
+          pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_IT;
+          pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_IT;
+          eeprom_menu.title            = EEPROM_SETTINGS_TITLE_IT;
+          eeprom_menu.store            = EEPROM_SETTINGS_STORE_IT;
+          eeprom_menu.read             = EEPROM_SETTINGS_READ_IT;
+          eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_IT;
+          eeprom_menu.storeTips        = EEPROM_STORE_TIPS_IT;
+          eeprom_menu.readTips         =  EEPROM_READ_TIPS_IT;
+          eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_IT;
           break;
 
-      #endif
+      #endif // if 1
 
     default:
-      common_menu.dialog_confirm_title = TITLE_DIALOG_CONFIRM_EN;
-      common_menu.text_back = BACK_TEXT_EN;
-      common_menu.close_machine_tips = DIALOG_CLOSE_MACHINE_EN;
-      common_menu.unbind_printer_tips = DIALOG_UNBIND_PRINTER_EN;
-      common_menu.print_special_title = PRINTING_OTHER_LANGUGE;
-      common_menu.pause_special_title = PRINTING_PAUSE_OTHER_LANGUGE;
+      common_menu.dialog_confirm_title  = TITLE_DIALOG_CONFIRM_EN;
+      common_menu.text_back             = BACK_TEXT_EN;
+      common_menu.close_machine_tips    = DIALOG_CLOSE_MACHINE_EN;
+      common_menu.unbind_printer_tips   = DIALOG_UNBIND_PRINTER_EN;
+      common_menu.print_special_title   = PRINTING_OTHER_LANGUGE;
+      common_menu.pause_special_title   = PRINTING_PAUSE_OTHER_LANGUGE;
       common_menu.operate_special_title = PRINTING_OPERATION_OTHER_LANGUGE;
       //
-      main_menu.title = TITLE_READYPRINT_EN;
-      main_menu.preheat = PREHEAT_TEXT_EN;
-      main_menu.move = MOVE_TEXT_EN;
-      main_menu.home = HOME_TEXT_EN;
-      main_menu.print = PRINT_TEXT_EN;
-      main_menu.extrude = EXTRUDE_TEXT_EN;
-      main_menu.leveling = LEVELING_TEXT_EN;
+      main_menu.title        = TITLE_READYPRINT_EN;
+      main_menu.preheat      = PREHEAT_TEXT_EN;
+      main_menu.move         = MOVE_TEXT_EN;
+      main_menu.home         = HOME_TEXT_EN;
+      main_menu.print        = PRINT_TEXT_EN;
+      main_menu.extrude      = EXTRUDE_TEXT_EN;
+      main_menu.leveling     = LEVELING_TEXT_EN;
       main_menu.autoleveling = AUTO_LEVELING_TEXT_EN;
-      main_menu.fan = FAN_TEXT_EN;
-      main_menu.set = SET_TEXT_EN;
-      main_menu.more = MORE_TEXT_EN;
-      main_menu.tool = TOOL_TEXT_EN;
-      //TOOL
-      tool_menu.title = TOOL_TEXT_EN;
-      tool_menu.preheat = TOOL_PREHEAT_EN;
-      tool_menu.extrude = TOOL_EXTRUDE_EN;
-      tool_menu.move = TOOL_MOVE_EN;
-      tool_menu.home = TOOL_HOME_EN;
-      tool_menu.leveling = TOOL_LEVELING_EN;
+      main_menu.fan          = FAN_TEXT_EN;
+      main_menu.set          = SET_TEXT_EN;
+      main_menu.more         = MORE_TEXT_EN;
+      main_menu.tool         = TOOL_TEXT_EN;
+      // TOOL
+      tool_menu.title        = TOOL_TEXT_EN;
+      tool_menu.preheat      = TOOL_PREHEAT_EN;
+      tool_menu.extrude      = TOOL_EXTRUDE_EN;
+      tool_menu.move         = TOOL_MOVE_EN;
+      tool_menu.home         = TOOL_HOME_EN;
+      tool_menu.leveling     = TOOL_LEVELING_EN;
       tool_menu.autoleveling = TOOL_AUTO_LEVELING_EN;
-      tool_menu.filament = TOOL_FILAMENT_EN;
-      tool_menu.more = TOOL_MORE_EN;
+      tool_menu.filament     = TOOL_FILAMENT_EN;
+      tool_menu.more         = TOOL_MORE_EN;
       //
       preheat_menu.adjust_title = TITLE_ADJUST_EN;
-      preheat_menu.title = TITLE_PREHEAT_EN;
-      preheat_menu.add = ADD_TEXT_EN;
-      preheat_menu.dec = DEC_TEXT_EN;
-      preheat_menu.ext1 = EXTRUDER_1_TEXT_EN;
-      preheat_menu.ext2 = EXTRUDER_2_TEXT_EN;
-      preheat_menu.hotbed = HEATBED_TEXT_EN;
-      preheat_menu.off = CLOSE_TEXT_EN;
+      preheat_menu.title        = TITLE_PREHEAT_EN;
+      preheat_menu.add          = ADD_TEXT_EN;
+      preheat_menu.dec          = DEC_TEXT_EN;
+      preheat_menu.ext1         = EXTRUDER_1_TEXT_EN;
+      preheat_menu.ext2         = EXTRUDER_2_TEXT_EN;
+      preheat_menu.hotbed       = HEATBED_TEXT_EN;
+      preheat_menu.off          = CLOSE_TEXT_EN;
       //
       move_menu.title = TITLE_MOVE_EN;
       //
-      home_menu.title = TITLE_HOME_EN;
+      home_menu.title    = TITLE_HOME_EN;
       home_menu.stopmove = HOME_STOPMOVE_EN;
       //
-      file_menu.title = TITLE_CHOOSEFILE_EN;
-      file_menu.page_up = PAGE_UP_TEXT_EN;
-      file_menu.page_down = PAGE_DOWN_TEXT_EN;
-      file_menu.file_loading = FILE_LOADING_EN;
-      file_menu.no_file = NO_FILE_EN;
-      file_menu.no_file_and_check = NO_FILE_EN;//NO_FILE_AND_CHECK_EN;
+      file_menu.title             = TITLE_CHOOSEFILE_EN;
+      file_menu.page_up           = PAGE_UP_TEXT_EN;
+      file_menu.page_down         = PAGE_DOWN_TEXT_EN;
+      file_menu.file_loading      = FILE_LOADING_EN;
+      file_menu.no_file           = NO_FILE_EN;
+      file_menu.no_file_and_check = NO_FILE_EN;// NO_FILE_AND_CHECK_EN;
       //
-      extrude_menu.title = TITLE_EXTRUDE_EN;
-      extrude_menu.in = EXTRUDER_IN_TEXT_EN;
-      extrude_menu.out = EXTRUDER_OUT_TEXT_EN;
-      extrude_menu.ext1 = EXTRUDER_1_TEXT_EN;
-      extrude_menu.ext2 = EXTRUDER_2_TEXT_EN;
-      extrude_menu.low = EXTRUDE_LOW_SPEED_TEXT_EN;
-      extrude_menu.normal = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
-      extrude_menu.high = EXTRUDE_HIGH_SPEED_TEXT_EN;
+      extrude_menu.title       = TITLE_EXTRUDE_EN;
+      extrude_menu.in          = EXTRUDER_IN_TEXT_EN;
+      extrude_menu.out         = EXTRUDER_OUT_TEXT_EN;
+      extrude_menu.ext1        = EXTRUDER_1_TEXT_EN;
+      extrude_menu.ext2        = EXTRUDER_2_TEXT_EN;
+      extrude_menu.low         = EXTRUDE_LOW_SPEED_TEXT_EN;
+      extrude_menu.normal      = EXTRUDE_MEDIUM_SPEED_TEXT_EN;
+      extrude_menu.high        = EXTRUDE_HIGH_SPEED_TEXT_EN;
       extrude_menu.temper_text = EXTRUDER_TEMP_TEXT_EN;
       //
-      leveling_menu.title = TITLE_LEVELING_EN;
+      leveling_menu.title     = TITLE_LEVELING_EN;
       leveling_menu.position1 = LEVELING_POINT1_TEXT_EN;
       leveling_menu.position2 = LEVELING_POINT2_TEXT_EN;
       leveling_menu.position3 = LEVELING_POINT3_TEXT_EN;
       leveling_menu.position4 = LEVELING_POINT4_TEXT_EN;
       leveling_menu.position5 = LEVELING_POINT5_TEXT_EN;
       //
-      set_menu.title = TITLE_SET_EN;
-      set_menu.filesys = FILESYS_TEXT_EN;
-      set_menu.wifi = WIFI_TEXT_EN;
-      set_menu.about = ABOUT_TEXT_EN;
-      set_menu.fan = FAN_TEXT_EN;
-      set_menu.filament = FILAMENT_TEXT_EN;
-      set_menu.breakpoint = BREAK_POINT_TEXT_EN;
-      set_menu.motoroff = MOTOR_OFF_TEXT_EN;
-      set_menu.motoroffXY = MOTOR_OFF_XY_TEXT_EN;
-      set_menu.language = LANGUAGE_TEXT_EN;
-      set_menu.shutdown = SHUTDOWN_TEXT_EN;
-      //set_menu.machine_para = MACHINE_PARA_EN;
+      set_menu.title        = TITLE_SET_EN;
+      set_menu.filesys      = FILESYS_TEXT_EN;
+      set_menu.wifi         = WIFI_TEXT_EN;
+      set_menu.about        = ABOUT_TEXT_EN;
+      set_menu.fan          = FAN_TEXT_EN;
+      set_menu.filament     = FILAMENT_TEXT_EN;
+      set_menu.breakpoint   = BREAK_POINT_TEXT_EN;
+      set_menu.motoroff     = MOTOR_OFF_TEXT_EN;
+      set_menu.motoroffXY   = MOTOR_OFF_XY_TEXT_EN;
+      set_menu.language     = LANGUAGE_TEXT_EN;
+      set_menu.shutdown     = SHUTDOWN_TEXT_EN;
+      set_menu.machine_para = MACHINE_PARA_EN;
+      set_menu.eepromSet    = EEPROM_SETTINGS_EN;
       //
-      more_menu.title = TITLE_MORE_EN;
+      more_menu.title   = TITLE_MORE_EN;
       more_menu.zoffset = ZOFFSET_EN;
       //
-      filesys_menu.title = TITLE_FILESYS_EN;
-      filesys_menu.sd_sys = SD_CARD_TEXT_EN;
+      filesys_menu.title   = TITLE_FILESYS_EN;
+      filesys_menu.sd_sys  = SD_CARD_TEXT_EN;
       filesys_menu.usb_sys = U_DISK_TEXT_EN;
-      //WIFI
+      // WIFI
       wifi_menu.title = WIFI_TEXT;
-      //wifi_menu.key = WIFI_KEY_TEXT_EN;
-      //wifi_menu.ip = WIFI_IP_TEXT_EN;
-      //wifi_menu.state = WIFI_STA_TEXT_EN;
-      wifi_menu.cloud = CLOUD_TEXT_EN;
+      // wifi_menu.key = WIFI_KEY_TEXT_EN;
+      // wifi_menu.ip = WIFI_IP_TEXT_EN;
+      // wifi_menu.state = WIFI_STA_TEXT_EN;
+      wifi_menu.cloud     = CLOUD_TEXT_EN;
       wifi_menu.reconnect = WIFI_RECONNECT_TEXT_EN;
 
-      cloud_menu.title = TITLE_CLOUD_TEXT_EN;
-      cloud_menu.bind = CLOUD_BINDED_EN;
-      cloud_menu.binded = CLOUD_BINDED_EN;
-      cloud_menu.unbind = CLOUD_UNBIND_EN;
-      cloud_menu.unbinding = CLOUD_UNBINDED_EN;
+      cloud_menu.title        = TITLE_CLOUD_TEXT_EN;
+      cloud_menu.bind         = CLOUD_BINDED_EN;
+      cloud_menu.binded       = CLOUD_BINDED_EN;
+      cloud_menu.unbind       = CLOUD_UNBIND_EN;
+      cloud_menu.unbinding    = CLOUD_UNBINDED_EN;
       cloud_menu.disconnected = CLOUD_DISCONNECTED_EN;
-      cloud_menu.disable = CLOUD_DISABLE_EN;
+      cloud_menu.disable      = CLOUD_DISABLE_EN;
       //
-      about_menu.title = TITLE_ABOUT_EN;
-      about_menu.type = ABOUT_TYPE_TEXT_EN;
+      about_menu.title   = TITLE_ABOUT_EN;
+      about_menu.type    = ABOUT_TYPE_TEXT_EN;
       about_menu.version = ABOUT_VERSION_TEXT_EN;
-      about_menu.wifi = ABOUT_WIFI_TEXT_EN;
+      about_menu.wifi    = ABOUT_WIFI_TEXT_EN;
       //
       fan_menu.title = TITLE_FAN_EN;
-      fan_menu.add = FAN_ADD_TEXT_EN;
-      fan_menu.dec = FAN_DEC_TEXT_EN;
+      fan_menu.add   = FAN_ADD_TEXT_EN;
+      fan_menu.dec   = FAN_DEC_TEXT_EN;
       fan_menu.state = FAN_TIPS1_TEXT_EN;
       //
-      filament_menu.title = TITLE_FILAMENT_EN;
-      filament_menu.in = FILAMENT_IN_TEXT_EN;
-      filament_menu.out = FILAMENT_OUT_TEXT_EN;
-      filament_menu.ext1 = FILAMENT_EXT0_TEXT_EN;
-      filament_menu.ext2 = FILAMENT_EXT1_TEXT_EN;
-      filament_menu.ready_replace = FILAMENT_CHANGE_TEXT_EN;
-      filament_menu.filament_dialog_load_heat = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
-      filament_menu.filament_dialog_load_heat_confirm = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
-      filament_menu.filament_dialog_loading = FILAMENT_DIALOG_LOADING_TIPS_EN;
-      filament_menu.filament_dialog_load_completed = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
-      filament_menu.filament_dialog_unload_heat = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
+      filament_menu.title                               = TITLE_FILAMENT_EN;
+      filament_menu.in                                  = FILAMENT_IN_TEXT_EN;
+      filament_menu.out                                 = FILAMENT_OUT_TEXT_EN;
+      filament_menu.ext1                                = FILAMENT_EXT0_TEXT_EN;
+      filament_menu.ext2                                = FILAMENT_EXT1_TEXT_EN;
+      filament_menu.ready_replace                       = FILAMENT_CHANGE_TEXT_EN;
+      filament_menu.filament_dialog_load_heat           = FILAMENT_DIALOG_LOAD_HEAT_TIPS_EN;
+      filament_menu.filament_dialog_load_heat_confirm   = FILAMENT_DIALOG_LOAD_CONFIRM1_TIPS_EN;
+      filament_menu.filament_dialog_loading             = FILAMENT_DIALOG_LOADING_TIPS_EN;
+      filament_menu.filament_dialog_load_completed      = FILAMENT_DIALOG_LOAD_COMPLETE_TIPS_EN;
+      filament_menu.filament_dialog_unload_heat         = FILAMENT_DIALOG_UNLOAD_HEAT_TIPS_EN;
       filament_menu.filament_dialog_unload_heat_confirm = FILAMENT_DIALOG_UNLOAD_CONFIRM_TIPS_EN;
-      filament_menu.filament_dialog_unloading = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
-      filament_menu.filament_dialog_unload_completed = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
+      filament_menu.filament_dialog_unloading           = FILAMENT_DIALOG_UNLOADING_TIPS_EN;
+      filament_menu.filament_dialog_unload_completed    = FILAMENT_DIALOG_UNLOAD_COMPLETE_TIPS_EN;
 
       //
       language_menu.title = TITLE_LANGUAGE_EN;
-      language_menu.next = PAGE_DOWN_TEXT_EN;
-      language_menu.up = PAGE_UP_TEXT_EN;
+      language_menu.next  = PAGE_DOWN_TEXT_EN;
+      language_menu.up    = PAGE_UP_TEXT_EN;
       //
-      printing_menu.title = TITLE_PRINTING_EN;
+      printing_menu.title  = TITLE_PRINTING_EN;
       printing_menu.option = PRINTING_OPERATION_EN;
-      printing_menu.stop = PRINTING_STOP_EN;
-      printing_menu.pause = PRINTING_PAUSE_EN;
+      printing_menu.stop   = PRINTING_STOP_EN;
+      printing_menu.pause  = PRINTING_PAUSE_EN;
       printing_menu.resume = PRINTING_RESUME_EN;
 
       //
-      operation_menu.title = TITLE_OPERATION_EN;
-      operation_menu.pause = PRINTING_PAUSE_EN;
-      operation_menu.stop = PRINTING_STOP_EN;
-      operation_menu.temp = PRINTING_TEMP_EN;
-      operation_menu.fan = FAN_TEXT_EN;
-      operation_menu.extr = PRINTING_EXTRUDER_EN;
-      operation_menu.speed = PRINTING_CHANGESPEED_EN;
-      operation_menu.filament = FILAMENT_TEXT_EN;
-      operation_menu.more = PRINTING_MORE_EN;
-      operation_menu.move = PRINTING_MOVE_EN;
-      operation_menu.auto_off = AUTO_SHUTDOWN_EN;
+      operation_menu.title      = TITLE_OPERATION_EN;
+      operation_menu.pause      = PRINTING_PAUSE_EN;
+      operation_menu.stop       = PRINTING_STOP_EN;
+      operation_menu.temp       = PRINTING_TEMP_EN;
+      operation_menu.fan        = FAN_TEXT_EN;
+      operation_menu.extr       = PRINTING_EXTRUDER_EN;
+      operation_menu.speed      = PRINTING_CHANGESPEED_EN;
+      operation_menu.filament   = FILAMENT_TEXT_EN;
+      operation_menu.more       = PRINTING_MORE_EN;
+      operation_menu.move       = PRINTING_MOVE_EN;
+      operation_menu.auto_off   = AUTO_SHUTDOWN_EN;
       operation_menu.manual_off = MANUAL_SHUTDOWN_EN;
       //
-      pause_menu.title = TITLE_PAUSE_EN;
-      pause_menu.resume = PRINTING_RESUME_EN;
-      pause_menu.stop = PRINTING_STOP_EN;
-      pause_menu.extrude = PRINTING_EXTRUDER_EN;
-      pause_menu.move = PRINTING_MOVE_EN;
+      pause_menu.title    = TITLE_PAUSE_EN;
+      pause_menu.resume   = PRINTING_RESUME_EN;
+      pause_menu.stop     = PRINTING_STOP_EN;
+      pause_menu.extrude  = PRINTING_EXTRUDER_EN;
+      pause_menu.move     = PRINTING_MOVE_EN;
       pause_menu.filament = FILAMENT_TEXT_EN;
-      pause_menu.more = PRINTING_MORE_EN;
+      pause_menu.more     = PRINTING_MORE_EN;
 
       //
-      speed_menu.title = TITLE_CHANGESPEED_EN;
-      speed_menu.add = ADD_TEXT_EN;
-      speed_menu.dec = DEC_TEXT_EN;
-      speed_menu.move = MOVE_SPEED_EN;
-      speed_menu.extrude = EXTRUDER_SPEED_EN;
+      speed_menu.title         = TITLE_CHANGESPEED_EN;
+      speed_menu.add           = ADD_TEXT_EN;
+      speed_menu.dec           = DEC_TEXT_EN;
+      speed_menu.move          = MOVE_SPEED_EN;
+      speed_menu.extrude       = EXTRUDER_SPEED_EN;
       speed_menu.extrude_speed = EXTRUDER_SPEED_STATE_EN;
-      speed_menu.move_speed = MOVE_SPEED_STATE_EN;
+      speed_menu.move_speed    = MOVE_SPEED_STATE_EN;
       //
-      printing_more_menu.title = TITLE_MORE_EN;
-      printing_more_menu.fan = FAN_TEXT_EN;
+      printing_more_menu.title      = TITLE_MORE_EN;
+      printing_more_menu.fan        = FAN_TEXT_EN;
       printing_more_menu.auto_close = AUTO_SHUTDOWN_EN;
-      printing_more_menu.manual = MANUAL_SHUTDOWN_EN;
-      printing_more_menu.speed = PRINTING_CHANGESPEED_EN;
-      printing_more_menu.temp = PRINTING_TEMP_EN;
-
-      //print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
-      print_file_dialog_menu.confirm = DIALOG_CONFIRM_EN;
-      print_file_dialog_menu.cancle = DIALOG_CANCLE_EN;
-      print_file_dialog_menu.print_file = DIALOG_PRINT_MODEL_EN;
-      print_file_dialog_menu.cancle_print = DIALOG_CANCEL_PRINT_EN;
-      print_file_dialog_menu.retry = DIALOG_RETRY_EN;
-      print_file_dialog_menu.stop = DIALOG_STOP_EN;
-      print_file_dialog_menu.no_file_print_tips = DIALOG_ERROR_TIPS1_EN;
+      printing_more_menu.manual     = MANUAL_SHUTDOWN_EN;
+      printing_more_menu.speed      = PRINTING_CHANGESPEED_EN;
+      printing_more_menu.temp       = PRINTING_TEMP_EN;
+
+      // print_file_dialog_menu.title = TITLE_DIALOG_CONFIRM_EN;
+      print_file_dialog_menu.confirm               = DIALOG_CONFIRM_EN;
+      print_file_dialog_menu.cancle                = DIALOG_CANCLE_EN;
+      print_file_dialog_menu.print_file            = DIALOG_PRINT_MODEL_EN;
+      print_file_dialog_menu.cancle_print          = DIALOG_CANCEL_PRINT_EN;
+      print_file_dialog_menu.retry                 = DIALOG_RETRY_EN;
+      print_file_dialog_menu.stop                  = DIALOG_STOP_EN;
+      print_file_dialog_menu.no_file_print_tips    = DIALOG_ERROR_TIPS1_EN;
       print_file_dialog_menu.print_from_breakpoint = DIALOG_REPRINT_FROM_BREAKPOINT_EN;
-      print_file_dialog_menu.close_machine_error = DIALOG_ERROR_TIPS2_EN;
-      print_file_dialog_menu.filament_no_press = DIALOG_FILAMENT_NO_PRESS_EN;
-      print_file_dialog_menu.print_finish = DIALOG_PRINT_FINISH_EN;
-      print_file_dialog_menu.print_time = DIALOG_PRINT_TIME_EN;
-      print_file_dialog_menu.reprint = DIALOG_REPRINT_EN;
-      print_file_dialog_menu.wifi_enable_tips = DIALOG_WIFI_ENABLE_TIPS_EN;
-      //ZOFFSET
+      print_file_dialog_menu.close_machine_error   = DIALOG_ERROR_TIPS2_EN;
+      print_file_dialog_menu.filament_no_press     = DIALOG_FILAMENT_NO_PRESS_EN;
+      print_file_dialog_menu.print_finish          = DIALOG_PRINT_FINISH_EN;
+      print_file_dialog_menu.print_time            = DIALOG_PRINT_TIME_EN;
+      print_file_dialog_menu.reprint               = DIALOG_REPRINT_EN;
+      print_file_dialog_menu.wifi_enable_tips      = DIALOG_WIFI_ENABLE_TIPS_EN;
+      // ZOFFSET
       zoffset_menu.title = TITLE_ZOFFSET_EN;
-      zoffset_menu.inc = ZOFFSET_INC_EN;
-      zoffset_menu.dec = ZOFFSET_DEC_EN;
-
-      pause_msg_menu.pausing = MESSEGE_PAUSING_EN;
-      pause_msg_menu.changing = MESSEGE_CHANGING_EN;
-      pause_msg_menu.unload = MESSEGE_UNLOAD_EN;
-      pause_msg_menu.waiting = MESSEGE_WAITING_EN;
-      pause_msg_menu.insert = MESSEGE_INSERT_EN;
-      pause_msg_menu.load = MESSEGE_LOAD_EN;
-      pause_msg_menu.purge = MESSEGE_PURGE_EN;
-      pause_msg_menu.resume = MESSEGE_RESUME_EN;
-      pause_msg_menu.heat = MESSEGE_HEAT_EN;
-      pause_msg_menu.heating = MESSEGE_HEATING_EN;
-      pause_msg_menu.option = MESSEGE_OPTION_EN;
-      pause_msg_menu.purgeMore = MESSEGE_PURGE_MORE_EN;
-      pause_msg_menu.continuePrint = MESSEGE_CONTINUE_PRINT_EN;
+      zoffset_menu.inc   = ZOFFSET_INC_EN;
+      zoffset_menu.dec   = ZOFFSET_DEC_EN;
+
+      pause_msg_menu.pausing       = MESSAGE_PAUSING_EN;
+      pause_msg_menu.changing      = MESSAGE_CHANGING_EN;
+      pause_msg_menu.unload        = MESSAGE_UNLOAD_EN;
+      pause_msg_menu.waiting       = MESSAGE_WAITING_EN;
+      pause_msg_menu.insert        = MESSAGE_INSERT_EN;
+      pause_msg_menu.load          = MESSAGE_LOAD_EN;
+      pause_msg_menu.purge         = MESSAGE_PURGE_EN;
+      pause_msg_menu.resume        = MESSAGE_RESUME_EN;
+      pause_msg_menu.heat          = MESSAGE_HEAT_EN;
+      pause_msg_menu.heating       = MESSAGE_HEATING_EN;
+      pause_msg_menu.option        = MESSAGE_OPTION_EN;
+      pause_msg_menu.purgeMore     = MESSAGE_PURGE_MORE_EN;
+      pause_msg_menu.continuePrint = MESSAGE_CONTINUE_PRINT_EN;
+      eeprom_menu.title            = EEPROM_SETTINGS_TITLE_EN;
+      eeprom_menu.store            = EEPROM_SETTINGS_STORE_EN;
+      eeprom_menu.read             = EEPROM_SETTINGS_READ_EN;
+      eeprom_menu.revert           = EEPROM_SETTINGS_REVERT_EN;
+      eeprom_menu.storeTips        = EEPROM_STORE_TIPS_EN;
+      eeprom_menu.readTips         =  EEPROM_READ_TIPS_EN;
+      eeprom_menu.revertTips       =  EEPROM_REVERT_TIPS_EN;
       break;
   }
 }
 
-#endif // TFT_LVGL_UI
+#endif // HAS_TFT_LVGL_UI
diff --git a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h
index 32834eafc6ef0218f8b9ab9e1c7acca0cfdf819b..585100935688f17211f95fdab1ba503fcdcb4bad 100644
--- a/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h
+++ b/Marlin/src/lcd/extui/lib/mks_ui/tft_multi_language.h
@@ -48,6 +48,228 @@ extern void disp_language_init();
 #define MULTI_LANGUAGE_ENABLE   1
 #define MULTI_LANGUAGE_DISABLE  0
 
+typedef struct machine_common_disp{
+  const char *default_value;
+
+  const char *next;
+  const char *previous;
+
+  const char *MachineConfigTitle;
+  const char *MachineType;
+  const char *Stroke;
+  const char *HomeDir;
+  const char *EndStopType;
+  const char *FilamentConf;
+  const char *LevelingConf;
+
+  const char *MachineTypeConfTitle;
+  const char *xyz;
+  const char *delta;
+  const char *corexy;
+
+  const char *StrokeConfTitle;
+  const char *xStroke;
+  const char *yStroke;
+  const char *zStroke;
+
+  const char *xmin;
+  const char *ymin;
+  const char *zmin;
+
+  const char *HomeDirConfTitle;
+  const char *xHomeDir;
+  const char *yHomeDir;
+  const char *zHomeDir;
+  const char *min;
+  const char *max;
+
+  const char *EndstopConfTitle;
+  const char *xEndstop_min;
+  const char *yEndstop_min;
+  const char *zEndstop_min;
+  const char *xEndstop_max;
+  const char *yEndstop_max;
+  const char *zEndstop_max;
+  const char *FilamentEndstop;
+  const char *LevelingEndstop;
+  const char *opened;
+  const char *closed;
+
+  const char *FilamentConfTitle;
+  const char *InTemperature;
+  const char *InLength;
+  const char *InSpeed;
+  const char *OutTemperature;
+  const char *OutLength;
+  const char *OutSpeed;
+
+  const char *LevelingParaConfTitle;
+  const char *LevelingParaConf;
+  const char *DeltaLevelConf;
+  const char *XYZLevelconf;
+
+  const char *LevelingSubConfTitle;
+  const char *AutoLevelEnable;
+  const char *BLtouchEnable;
+  const char *ProbePort;
+  const char *ProbeXoffset;
+  const char *ProbeYoffset;
+  const char *ProbeZoffset;
+  const char *ProbeXYspeed;
+  const char *ProbeZspeed;
+  const char *enable;
+  const char *disable;
+  const char *z_min;
+  const char *z_max;
+
+  const char *LevelingSubDeltaConfTitle;
+  const char *MachineRadius;
+  const char *DiagonalRod;
+  const char *PrintableRadius;
+  const char *DeltaHeight;
+  const char *SmoothRodOffset;
+  const char *EffectorOffset;
+  const char *CalibrationRadius;
+
+  const char *LevelingSubXYZConfTitle;
+  //const char *Level_positon1;
+  //const char *Level_positon2;
+  //const char *Level_positon3;
+  //const char *Level_positon4;
+
+  const char *TemperatureConfTitle;
+  const char *NozzleConf;
+  const char *HotBedConf;
+  const char *PreheatTemperConf;
+
+  const char *NozzleCnt;
+  const char *NozzleConfTitle;
+  const char *NozzleType;
+  const char *NozzleAdjustType;
+  const char *NozzleMinTemperature;
+  const char *NozzleMaxTemperature;
+  const char *Extrude_Min_Temper;
+
+  const char *HotbedEnable;
+  const char *HotbedConfTitle;
+  const char *HotbedAjustType;
+  const char *HotbedMinTemperature;
+  const char *HotbedMaxTemperature;
+
+  const char *MotorConfTitle;
+  const char *MaxFeedRateConf;
+  const char *AccelerationConf;
+  const char *JerkConf;
+  const char *StepsConf;
+  const char *MotorDirConf;
+  const char *HomeFeedRateConf;
+  const char *TMCcurrentConf;
+  const char *TMCStepModeConf;
+
+  const char *MaxFeedRateConfTitle;
+  const char *XMaxFeedRate;
+  const char *YMaxFeedRate;
+  const char *ZMaxFeedRate;
+  const char *E0MaxFeedRate;
+  const char *E1MaxFeedRate;
+
+  const char *AccelerationConfTitle;
+  const char *PrintAcceleration;
+  const char *RetractAcceleration;
+  const char *TravelAcceleration;
+  const char *X_Acceleration;
+  const char *Y_Acceleration;
+  const char *Z_Acceleration;
+  const char *E0_Acceleration;
+  const char *E1_Acceleration;
+
+  const char *JerkConfTitle;
+  const char *X_Jerk;
+  const char *Y_Jerk;
+  const char *Z_Jerk;
+  const char *E_Jerk;
+
+  const char *StepsConfTitle;
+  const char *X_Steps;
+  const char *Y_Steps;
+  const char *Z_Steps;
+  const char *E0_Steps;
+  const char *E1_Steps;
+
+  const char *TmcCurrentConfTitle;
+  const char *X_Current;
+  const char *Y_Current;
+  const char *Z_Current;
+  const char *E0_Current;
+  const char *E1_Current;
+
+  const char *TmcStepModeConfTitle;
+  const char *X_StepMode;
+  const char *Y_StepMode;
+  const char *Z_StepMode;
+  const char *E0_StepMode;
+  const char *E1_StepMode;
+
+  const char *MotorDirConfTitle;
+  const char *X_MotorDir;
+  const char *Y_MotorDir;
+  const char *Z_MotorDir;
+  const char *E0_MotorDir;
+  const char *E1_MotorDir;
+  const char *Invert_1;
+  const char *Invert_0;
+
+  const char *HomeFeedRateConfTitle;
+  const char *XY_HomeFeedRate;
+  const char *Y_HomeFeedRate;
+  const char *Z_HomeFeedRate;
+
+  const char *AdvancedConfTitle;
+  const char *PwrOffDection;
+  const char *PwrOffAfterPrint;
+  const char *HaveUps;
+  const char *Z2andZ2Endstop;
+  const char *EnablePinsInvert;
+  const char *PausePosition;
+
+  const char *Z2ConfTitle;
+  const char *Z2Enable;
+  const char *Z2EndstopEnable;
+  const char *Z2Port;
+
+  const char *EnablePinsInvertTitle;
+  const char *XInvert;
+  const char *YInvert;
+  const char *ZInvert;
+  const char *EInvert;
+
+  const char *key_1;
+  const char *key_2;
+  const char *key_3;
+  const char *key_4;
+  const char *key_5;
+  const char *key_6;
+  const char *key_7;
+  const char *key_8;
+  const char *key_9;
+  const char *key_0;
+  const char *key_point;
+  const char *key_back;
+  const char *key_reset;
+  const char *key_confirm;
+  const char *negative;
+  const char *low_level;
+  const char *high_level;
+
+  const char *PausePosText;
+  const char *xPos;
+  const char *yPos;
+  const char *zPos;
+
+} machine_common_def;
+
+extern machine_common_def machine_menu;
+
 typedef struct common_menu_disp {
   const char *text_back;
   const char *dialog_confirm_title;
@@ -59,6 +281,7 @@ typedef struct common_menu_disp {
   const char *next;
   const char *previous;
 } common_menu_def;
+
 extern common_menu_def common_menu;
 
 typedef struct main_menu_disp {
@@ -76,6 +299,7 @@ typedef struct main_menu_disp {
   const char *more;
   const char *machine_para;
 } main_menu_def;
+
 extern main_menu_def main_menu;
 
 typedef struct preheat_menu_disp {
@@ -96,7 +320,8 @@ typedef struct preheat_menu_disp {
 
   const char *dialog_tips;
 
-}preheat_menu_def;
+} preheat_menu_def;
+
 extern preheat_menu_def preheat_menu;
 
 typedef struct move_menu_disp {
@@ -114,6 +339,7 @@ typedef struct move_menu_disp {
   const char *step_10mm;
   const char *back;
 } move_menu_def;
+
 extern move_menu_def move_menu;
 
 typedef struct home_menu_disp {
@@ -125,6 +351,7 @@ typedef struct home_menu_disp {
   const char *stopmove;
   const char *back;
 } home_menu_def;
+
 extern home_menu_def home_menu;
 
 typedef struct file_menu_disp {
@@ -137,7 +364,8 @@ typedef struct file_menu_disp {
   const char *no_file;
   const char *no_file_and_check;
 
-}file_menu_def;
+} file_menu_def;
+
 extern file_menu_def file_menu;
 
 typedef struct extrude_menu_disp {
@@ -160,6 +388,7 @@ typedef struct extrude_menu_disp {
   const char *temp_value;
   const char *temper_text;
 } extrude_menu_def;
+
 extern extrude_menu_def extrude_menu;
 
 typedef struct leveling_menu_disp {
@@ -172,6 +401,7 @@ typedef struct leveling_menu_disp {
 
   char *back;
 } leveling_menu_def;
+
 extern leveling_menu_def leveling_menu;
 
 typedef struct set_menu_disp {
@@ -187,8 +417,10 @@ typedef struct set_menu_disp {
   const char *shutdown;
   const char *language;
   const char *machine_para;
+  const char *eepromSet;
   const char *back;
 } set_menu_def;
+
 extern set_menu_def set_menu;
 
 typedef struct filesys_menu_disp {
@@ -198,6 +430,7 @@ typedef struct filesys_menu_disp {
   const char *usb_sys;
   const char *back;
 } filesys_menu_def;
+
 extern filesys_menu_def filesys_menu;
 
 typedef struct more_menu_disp {
@@ -205,6 +438,7 @@ typedef struct more_menu_disp {
   const char *zoffset;
   const char *back;
 } more_menu_def;
+
 extern more_menu_def more_menu;
 
 typedef struct wifi_menu_disp {
@@ -221,6 +455,7 @@ typedef struct wifi_menu_disp {
   const char *back;
   const char *reconnect;
 } wifi_menu_def;
+
 extern wifi_menu_def wifi_menu;
 
 typedef struct cloud_menu_disp {
@@ -236,6 +471,7 @@ typedef struct cloud_menu_disp {
   const char *back;
   const char *unbind_printer_tips;
 } cloud_menu_def;
+
 extern cloud_menu_def cloud_menu;
 
 typedef struct about_menu_disp {
@@ -249,6 +485,7 @@ typedef struct about_menu_disp {
   const char *type_robin_mini;
   const char *back;
 } about_menu_def;
+
 extern about_menu_def about_menu;
 
 typedef struct fan_menu_disp {
@@ -263,6 +500,7 @@ typedef struct fan_menu_disp {
   const char *state;
   const char *state_value;
 } fan_menu_def;
+
 extern fan_menu_def fan_menu;
 
 typedef struct filament_menu_disp {
@@ -290,6 +528,7 @@ typedef struct filament_menu_disp {
   const char *filament_dialog_ok;
   const char *filament_dialog_back;
 } filament_menu_def;
+
 extern filament_menu_def filament_menu;
 
 typedef struct language_menu {
@@ -310,6 +549,7 @@ typedef struct language_menu {
   const char *up;
   const char *back;
 } language_menu_def;
+
 extern language_menu_def language_menu;
 
 typedef struct printing_menu_disp {
@@ -323,6 +563,7 @@ typedef struct printing_menu_disp {
   const char *resume;
   const char *stop;
 } printing_menu_def;
+
 extern printing_menu_def printing_menu;
 
 typedef struct operation_menu_disp {
@@ -341,6 +582,7 @@ typedef struct operation_menu_disp {
   const char *back;
   const char *babystep;
 } operation_menu_def;
+
 extern operation_menu_def operation_menu;
 
 typedef struct pause_menu_disp {
@@ -352,6 +594,7 @@ typedef struct pause_menu_disp {
   const char *filament;
   const char *more;
 } pause_menu_def;
+
 extern pause_menu_def pause_menu;
 
 typedef struct speed_menu_disp {
@@ -367,6 +610,7 @@ typedef struct speed_menu_disp {
   const char *move_speed;
   const char *extrude_speed;
 } speed_menu_def;
+
 extern speed_menu_def speed_menu;
 
 typedef struct printing_more_menu_disp {
@@ -378,6 +622,7 @@ typedef struct printing_more_menu_disp {
   const char *speed;
   const char *back;
 } printing_more_menu_def;
+
 extern printing_more_menu_def printing_more_menu;
 
 typedef struct dialog_menu_disp {
@@ -392,6 +637,7 @@ typedef struct dialog_menu_disp {
   const char *tip1_print_file;
   const char *tip2_stop_file;
 } dialog_menu_def;
+
 extern dialog_menu_def dialog_menu;
 
 typedef struct print_file_dialog_disp {
@@ -412,6 +658,7 @@ typedef struct print_file_dialog_disp {
   const char *reprint;
   const char *wifi_enable_tips;
 } print_file_dialog_menu_def;
+
 extern print_file_dialog_menu_def print_file_dialog_menu;
 
 typedef struct zoffset_menu_disp {
@@ -423,6 +670,7 @@ typedef struct zoffset_menu_disp {
   const char *step1;
   const char *back;
 } zoffset_menu_def;
+
 extern zoffset_menu_def zoffset_menu;
 
 typedef struct tool_menu_disp {
@@ -437,6 +685,7 @@ typedef struct tool_menu_disp {
   const char *more;
   const char *back;
 } tool_menu_def;
+
 extern tool_menu_def tool_menu;
 
 typedef struct MachinePara_menu_disp {
@@ -447,6 +696,7 @@ typedef struct MachinePara_menu_disp {
   const char *AdvanceSetting;
   //const char *back;
 } MachinePara_menu_def;
+
 extern MachinePara_menu_def MachinePara_menu;
 
 typedef struct MachineSettings_menu_disp {
@@ -459,6 +709,7 @@ typedef struct MachineSettings_menu_disp {
   const char *leveling;
   const char *back;
 } MachineSettings_menu_def;
+
 extern MachineSettings_menu_def MachineSettings_menu;
 
 typedef struct TemperatureSettings_menu_disp {
@@ -468,6 +719,7 @@ typedef struct TemperatureSettings_menu_disp {
   const char *preheat;
   const char *back;
 } TemperatureSettings_menu_def;
+
 extern TemperatureSettings_menu_def TemperatureSettings_menu;
 
 typedef struct pause_msg_disp {
@@ -485,23 +737,35 @@ typedef struct pause_msg_disp {
   const char *purgeMore;
   const char *continuePrint;
 } pause_msg_def;
+
 extern pause_msg_def pause_msg_menu;
 
+typedef struct eeprom_disp{
+  const char *title;
+  const char *store;
+  const char *read;
+  const char *revert;
+  const char *storeTips;
+  const char *readTips;
+  const char *revertTips;
+} eeprom_def;
+
+extern eeprom_def eeprom_menu;
 /*****************************************/
 //********************************************//
 //#if defined(TFT70)
 //
 //#elif defined(TFT35)
-#define TEXT_VALUE                  "%d/%d"
+#define TEXT_VALUE          "%d/%d"
 //#endif
 
-#define TEXT_VALUE_T                  ": %d℃"
-#define TEXT_VALUE_mm                 ": %dmm"
-#define TEXT_VALUE_cm                 ": %dcm"
-#define TEXT_VALUE_m                  ": %dm"
+#define TEXT_VALUE_T        ": %d℃"
+#define TEXT_VALUE_mm       ": %dmm"
+#define TEXT_VALUE_cm       ": %dcm"
+#define TEXT_VALUE_m        ": %dm"
 
-#define TEMP_UNIT_SYBOL               "%d℃"
-#define FLOAT_TEMP_UNIT_SYBOL               "%.1f℃"
+#define TEMP_UNIT_SYBOL       "%d℃"
+#define FLOAT_TEMP_UNIT_SYBOL "%.1f℃"
 
 #define TEXT_1C             "1℃"
 #define TEXT_5C             "5℃"
@@ -533,7 +797,7 @@ extern pause_msg_def pause_msg_menu;
 #define LANGUAGE_JP         "日本語"
 #define LANGUAGE_GE         "Deutsch"
 #define LANGUAGE_FR         "français"
-#define LANGUAGE_IT         "Italia"
+#define LANGUAGE_IT         "Italiano"
 #define LANGUAGE_PR         "português"
 #define LANGUAGE_KR         "Korean"
 #define LANGUAGE_BR         "Brazil"
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index 24ce57a764a75673ffe4e32f1c053e54fef4e8d2..9b8c1c60ffa581aa6b58eb7e70f01f7283513e5f 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -1098,11 +1098,7 @@ void prepare_line_to_destination() {
 }
 
 uint8_t axes_need_homing(uint8_t axis_bits/*=0x07*/) {
-  #if ENABLED(HOME_AFTER_DEACTIVATE)
-    #define HOMED_FLAGS axis_known_position
-  #else
-    #define HOMED_FLAGS axis_homed
-  #endif
+  #define HOMED_FLAGS TERN(HOME_AFTER_DEACTIVATE, axis_known_position, axis_homed)
   // Clear test bits that are homed
   if (TEST(axis_bits, X_AXIS) && TEST(HOMED_FLAGS, X_AXIS)) CBI(axis_bits, X_AXIS);
   if (TEST(axis_bits, Y_AXIS) && TEST(HOMED_FLAGS, Y_AXIS)) CBI(axis_bits, Y_AXIS);
diff --git a/Marlin/src/module/stepper.cpp b/Marlin/src/module/stepper.cpp
index 20514853ea1be9f55a40a340e492ae1f8d6c94b4..c9d87486f87dea54ee7065c9a20051f418f111d8 100644
--- a/Marlin/src/module/stepper.cpp
+++ b/Marlin/src/module/stepper.cpp
@@ -2551,7 +2551,7 @@ void Stepper::init() {
     AXIS_INIT(Z, Z);
   #endif
 
-  #if E_STEPPERS > 0 && HAS_E0_STEP
+  #if E_STEPPERS && HAS_E0_STEP
     E_AXIS_INIT(0);
   #endif
   #if E_STEPPERS > 1 && HAS_E1_STEP
diff --git a/Marlin/src/module/stepper/indirection.h b/Marlin/src/module/stepper/indirection.h
index a4db741966e08770f6382be3a9ed50597c608d04..e3d3730c79ea107cba3c1114fb94bd1840f0878c 100644
--- a/Marlin/src/module/stepper/indirection.h
+++ b/Marlin/src/module/stepper/indirection.h
@@ -865,14 +865,14 @@ void reset_stepper_drivers();    // Called by settings.load / settings.reset
 #endif
 
 #ifndef ENABLE_AXIS_E0
-  #if E_STEPPERS > 0 && HAS_E0_ENABLE
+  #if E_STEPPERS && HAS_E0_ENABLE
     #define  ENABLE_AXIS_E0() ENABLE_STEPPER_E0()
   #else
     #define  ENABLE_AXIS_E0() NOOP
   #endif
 #endif
 #ifndef DISABLE_AXIS_E0
-  #if E_STEPPERS > 0 && HAS_E0_ENABLE
+  #if E_STEPPERS && HAS_E0_ENABLE
     #define DISABLE_AXIS_E0() DISABLE_STEPPER_E0()
   #else
     #define DISABLE_AXIS_E0() NOOP
diff --git a/Marlin/src/pins/pins.h b/Marlin/src/pins/pins.h
index ba8a47324197ce6941385084a5550d8f98f80dc1..a8fb3f02f0b90a4df4044979169751ca2a4131d0 100644
--- a/Marlin/src/pins/pins.h
+++ b/Marlin/src/pins/pins.h
@@ -507,7 +507,9 @@
 #elif MB(MKS_ROBIN_MINI)
   #include "stm32f1/pins_MKS_ROBIN_MINI.h"      // STM32F1                                env:mks_robin_mini
 #elif MB(MKS_ROBIN_NANO)
-  #include "stm32f1/pins_MKS_ROBIN_NANO.h"      // STM32F1                                env:mks_robin_nano
+  #include "stm32f1/pins_MKS_ROBIN_NANO.h"      // STM32F1                                env:mks_robin_nano env:mks_robin_nano35
+#elif MB(MKS_ROBIN_NANO_V2)
+  #include "stm32f1/pins_MKS_ROBIN_NANO_V2.h"   // STM32F1                                env:mks_robin_nano env:mks_robin_nano35
 #elif MB(MKS_ROBIN_LITE)
   #include "stm32f1/pins_MKS_ROBIN_LITE.h"      // STM32F1                                env:mks_robin_lite
 #elif MB(BTT_SKR_MINI_V1_1)
diff --git a/Marlin/src/pins/sam/pins_RADDS.h b/Marlin/src/pins/sam/pins_RADDS.h
index 475a15d6f6de8871d9ada88231ca8a38247ee21f..78231afaffa2a90ae729f6c2318db424a60c80b8 100644
--- a/Marlin/src/pins/sam/pins_RADDS.h
+++ b/Marlin/src/pins/sam/pins_RADDS.h
@@ -31,6 +31,14 @@
 
 #define BOARD_INFO_NAME "RADDS"
 
+//
+// EEPROM
+//
+#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM)
+  #define I2C_EEPROM
+  #define MARLIN_EEPROM_SIZE 0x2000               // 8KB
+#endif
+
 //
 // Servos
 //
@@ -205,9 +213,6 @@
   #define FIL_RUNOUT_PIN                      39  // SERVO2_PIN
 #endif
 
-#define I2C_EEPROM
-#define MARLIN_EEPROM_SIZE 0x2000                 // 8KB
-
 //
 // M3/M4/M5 - Spindle/Laser Control
 //
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
index 8f529085c91fec1bea7d7f79eca4738ed5fa406c..0a733049b87e17ec6ad49da3e9ac76879fbc76ca 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V5.h
@@ -144,12 +144,13 @@
 
 #define SPI_FLASH_SIZE 0x200000                   // 2MB
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
   #define HAS_SPI_FLASH_FONT 0
   #define HAS_GCODE_PREVIEW 1
   #define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 0
   #define HAS_LANG_SELECT_SCREEN 0
   #define HAS_BAK_VIEW_IN_FLASH 0
+  #define HAS_LOGO_IN_FLASH 0
 
   //SPI 2
   #define W25QXX_CS_PIN                     PB12
diff --git a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
index 021c2e17611071255f0ed6ac4762482c994d5273..0fb3a9a8799e6657dbad08a3766983c95351e020 100644
--- a/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
+++ b/Marlin/src/pins/stm32f1/pins_CHITU3D_V6.h
@@ -150,12 +150,13 @@
 
 #define SPI_FLASH_SIZE 0x200000                   // 2MB
 
-#if ENABLED(TFT_LVGL_UI)
+#if HAS_TFT_LVGL_UI
   #define HAS_SPI_FLASH_FONT 0
   #define HAS_GCODE_PREVIEW 1
   #define HAS_GCODE_DEFAULT_VIEW_IN_FLASH 0
   #define HAS_LANG_SELECT_SCREEN 0
   #define HAS_BAK_VIEW_IN_FLASH 0
+  #define HAS_LOGO_IN_FLASH 0
 
   //SPI 2
   #define W25QXX_CS_PIN                     PB12
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
index 1d0fd15c23b2dd92e3138512b30c19a51a085e6f..610f4b5735dd7aa1e89d922269ee9c5787503218 100644
--- a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h
@@ -45,7 +45,7 @@
   #define FLASH_EEPROM_EMULATION
   #define EEPROM_PAGE_SIZE     (0x800U) // 2KB
   #define EEPROM_START_ADDRESS (0x8000000UL + (STM32_FLASH_SIZE) * 1024UL - (EEPROM_PAGE_SIZE) * 2UL)
-  #define MARLIN_EEPROM_SIZE   EEPROM_PAGE_SIZE  // 2KB
+  #define MARLIN_EEPROM_SIZE    EEPROM_PAGE_SIZE  // 2KB
 #endif
 
 #define ENABLE_SPI2
@@ -123,8 +123,8 @@
 //
 // Misc. Functions
 //
-//#define POWER_LOSS_PIN                    PA2   // PW_DET
-//#define PS_ON_PIN                         PA3   // PW_OFF
+#define POWER_LOSS_PIN                      PA2   // PW_DET
+#define PS_ON_PIN                           PA3   // PW_OFF
 
 //#define SUICIDE_PIN                       PB2   // Enable MKSPWC support ROBIN NANO v1.2 ONLY
 //#define SUICIDE_PIN_INVERTING false
@@ -132,13 +132,16 @@
 //#define KILL_PIN                          PA2   // Enable MKSPWC support ROBIN NANO v1.2 ONLY
 //#define KILL_PIN_INVERTING true                 // Enable MKSPWC support ROBIN NANO v1.2 ONLY
 
-//#define SERVO0_PIN                        PA8   // Enable BLTOUCH support ROBIN NANO v1.2 ONLY
+#define SERVO0_PIN                          PA8   // Enable BLTOUCH support ROBIN NANO v1.2 ONLY
 
 //#define LED_PIN                           PB2
 
 #define MT_DET_1_PIN                        PA4
+#define MT_DET_2_PIN                        PE6
 #define MT_DET_PIN_INVERTING false
 
+#define WIFI_IO0_PIN                        PC13
+
 //
 // SD Card
 //
@@ -162,76 +165,28 @@
  * to let the bootloader init the screen.
  */
 
-#if ENABLED(SPI_GRAPHICAL_TFT)
+#if ENABLED(TFT_LVGL_UI_SPI)
 
-  #if HAS_SPI_LCD
+  #define SPI_TFT_CS_PIN                    PD11
+  #define SPI_TFT_SCK_PIN                   PA5
+  #define SPI_TFT_MISO_PIN                  PA6
+  #define SPI_TFT_MOSI_PIN                  PA7
+  #define SPI_TFT_DC_PIN                    PD10
+  #define SPI_TFT_RST_PIN                   PC6
 
-    #define BEEPER_PIN                      PC5
-    #define BTN_ENC                         PE13
-    #define LCD_PINS_ENABLE                 PD13
-    #define LCD_PINS_RS                     PC6
-    #define BTN_EN1                         PE8
-    #define BTN_EN2                         PE11
-    #define LCD_BACKLIGHT_PIN               -1
+  #define LCD_BACKLIGHT_PIN                 PD13
 
-    // MKS MINI12864 and MKS LCD12864B; If using MKS LCD12864A (Need to remove RPK2 resistor)
-    #if ENABLED(MKS_MINI_12864)
-      #define LCD_BACKLIGHT_PIN             -1
-      #define LCD_RESET_PIN                 -1
-      #define DOGLCD_A0                     PD11
-      #define DOGLCD_CS                     PE15
-      #define DOGLCD_SCK                    PA5
-      #define DOGLCD_MOSI                   PA7
-
-      // Required for MKS_MINI_12864 with this board
-      #define MKS_LCD12864B
-      #undef SHOW_BOOTSCREEN
-
-    #else                                         // !MKS_MINI_12864
-
-      #define LCD_PINS_D4                   PE14
-      #if ENABLED(ULTIPANEL)
-        #define LCD_PINS_D5                 PE15
-        #define LCD_PINS_D6                 PD11
-        #define LCD_PINS_D7                 PD10
-      #endif
-
-      #ifndef BOARD_ST7920_DELAY_1
-        #define BOARD_ST7920_DELAY_1     DELAY_NS(125)
-      #endif
-      #ifndef BOARD_ST7920_DELAY_2
-        #define BOARD_ST7920_DELAY_2     DELAY_NS(125)
-      #endif
-      #ifndef BOARD_ST7920_DELAY_3
-        #define BOARD_ST7920_DELAY_3     DELAY_NS(125)
-      #endif
-
-    #endif // !MKS_MINI_12864
-
-  #else
-
-    #define SPI_TFT_CS_PIN                  PD11
-    #define SPI_TFT_SCK_PIN                 PA5
-    #define SPI_TFT_MISO_PIN                PA6
-    #define SPI_TFT_MOSI_PIN                PA7
-    #define SPI_TFT_DC_PIN                  PD10
-    #define SPI_TFT_RST_PIN                 PC6
-
-    #define LCD_BACKLIGHT_PIN               PD13
-
-    #define TOUCH_CS_PIN                    PE14  // SPI1_NSS
-    #define TOUCH_SCK_PIN                   PA5   // SPI1_SCK
-    #define TOUCH_MISO_PIN                  PA6   // SPI1_MISO
-    #define TOUCH_MOSI_PIN                  PA7   // SPI1_MOSI
-
-    #define BTN_EN1                         PE8
-    #define BTN_EN2                         PE11
-    #define BEEPER_PIN                      PC5
-    #define BTN_ENC                         PE13
-
-  #endif // HAS_SPI_LCD
-
-#elif ENABLED(TFT_LVGL_UI)
+  #define TOUCH_CS_PIN                      PE14  // SPI1_NSS
+  #define TOUCH_SCK_PIN                     PA5   // SPI1_SCK
+  #define TOUCH_MISO_PIN                    PA6   // SPI1_MISO
+  #define TOUCH_MOSI_PIN                    PA7   // SPI1_MOSI
+
+  #define BTN_EN1                           PE8
+  #define BTN_EN2                           PE11
+  #define BEEPER_PIN                        PC5
+  #define BTN_ENC                           PE13
+
+#elif ENABLED(TFT_LVGL_UI_FSMC)
 
   #define FSMC_CS_PIN                       PD7   // NE4
   #define FSMC_RS_PIN                       PD11  // A0
@@ -243,7 +198,11 @@
 
   #define LCD_BACKLIGHT_PIN                 PD13
 
-#elif ENABLED(FSMC_GRAPHICAL_TFT)
+#endif
+
+#if ENABLED(FSMC_GRAPHICAL_TFT)
+  //#define DOGLCD_MOSI                     -1    // prevent redefine Conditionals_post.h
+  //#define DOGLCD_SCK                      -1
 
   #define FSMC_CS_PIN                       PD7   // NE4
   #define FSMC_RS_PIN                       PD11  // A0
@@ -257,9 +216,54 @@
     #define TOUCH_MISO_PIN                  PB14  // SPI2_MISO
     #define TOUCH_MOSI_PIN                  PB15  // SPI2_MOSI
   #endif
-
 #endif
 
+#if HAS_SPI_LCD
+
+  #define BEEPER_PIN                        PC5
+  #define BTN_ENC                           PE13
+  #define LCD_PINS_ENABLE                   PD13
+  #define LCD_PINS_RS                       PC6
+  #define BTN_EN1                           PE8
+  #define BTN_EN2                           PE11
+  #define LCD_BACKLIGHT_PIN                 -1
+
+  // MKS MINI12864 and MKS LCD12864B; If using MKS LCD12864A (Need to remove RPK2 resistor)
+  #if ENABLED(MKS_MINI_12864)
+    #define LCD_BACKLIGHT_PIN               -1
+    #define LCD_RESET_PIN                   -1
+    #define DOGLCD_A0                       PD11
+    #define DOGLCD_CS                       PE15
+    #define DOGLCD_SCK                      PA5
+    #define DOGLCD_MOSI                     PA7
+
+    // Required for MKS_MINI_12864 with this board
+    #define MKS_LCD12864B
+    #undef SHOW_BOOTSCREEN
+
+  #else                                           // !MKS_MINI_12864
+
+    #define LCD_PINS_D4                     PE14
+    #if ENABLED(ULTIPANEL)
+      #define LCD_PINS_D5                   PE15
+      #define LCD_PINS_D6                   PD11
+      #define LCD_PINS_D7                   PD10
+    #endif
+
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+    #endif
+
+  #endif // !MKS_MINI_12864
+
+#endif // HAS_SPI_LCD
+
 #define SPI_FLASH
 #if ENABLED(SPI_FLASH)
   #define W25QXX_CS_PIN                     PB12
diff --git a/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h
new file mode 100644
index 0000000000000000000000000000000000000000..efec3edcd9cde1ddef32582b8a7d5d701ae32936
--- /dev/null
+++ b/Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_V2.h
@@ -0,0 +1,325 @@
+/**
+ * Marlin 3D Printer Firmware
+ * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
+ *
+ * Based on Sprinter and grbl.
+ * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ *
+ */
+#pragma once
+
+/**
+ * MKS Robin nano (STM32F130VET6) board pin assignments
+ */
+
+#ifndef __STM32F1__
+  #error "Oops! Select an STM32F1 board in 'Tools > Board.'"
+#elif HOTENDS > 2 || E_STEPPERS > 2
+  #error "MKS Robin nano supports up to 2 hotends / E-steppers. Comment out this line to continue."
+#endif
+
+#define BOARD_INFO_NAME "MKS Robin nano V2.0"
+
+//
+// Release PB4 (Y_ENABLE_PIN) from JTAG NRST role
+//
+
+//#define DISABLE_DEBUG
+
+//
+// EEPROM
+//
+//#define FLASH_EEPROM_EMULATION
+//#define SDCARD_EEPROM_EMULATION
+
+#if EITHER(NO_EEPROM_SELECTED, I2C_EEPROM)
+  #define I2C_EEPROM                              // EEPROM on I2C-0
+  #define MARLIN_EEPROM_SIZE 0x1000               // 4KB
+#endif
+
+//
+// Note: MKS Robin board is using SPI2 interface.
+//
+//#define SPI_MODULE 2
+#define ENABLE_SPI2
+
+//
+// Limit Switches
+//
+#define X_DIAG_PIN                          PA15
+#define Y_DIAG_PIN                          PA12
+#define Z_DIAG_PIN                          PA11
+#define E0_DIAG_PIN                         PC4
+#define E1_DIAG_PIN                         PE7
+
+#define X_STOP_PIN                          PA15
+#define Y_STOP_PIN                          PA12
+#define Z_MIN_PIN                           PA11
+#define Z_MAX_PIN                           PC4
+
+//
+// Steppers
+//
+#define X_ENABLE_PIN                        PE4
+#define X_STEP_PIN                          PE3
+#define X_DIR_PIN                           PE2
+#ifndef X_CS_PIN
+  #define X_CS_PIN                          PD5
+#endif
+
+#define Y_ENABLE_PIN                        PE1
+#define Y_STEP_PIN                          PE0
+#define Y_DIR_PIN                           PB9
+#ifndef Y_CS_PIN
+  #define Y_CS_PIN                          PD7
+#endif
+
+#define Z_ENABLE_PIN                        PB8
+#define Z_STEP_PIN                          PB5
+#define Z_DIR_PIN                           PB4
+#ifndef Z_CS_PIN
+  #define Z_CS_PIN                          PD4
+#endif
+
+#define E0_ENABLE_PIN                       PB3
+#define E0_STEP_PIN                         PD6
+#define E0_DIR_PIN                          PD3
+#ifndef E0_CS_PIN
+  #define E0_CS_PIN                         PD9
+#endif
+
+#define E1_ENABLE_PIN                       PA3
+#define E1_STEP_PIN                         PD15
+#define E1_DIR_PIN                          PA1
+#ifndef E1_CS_PIN
+  #define E1_CS_PIN                         PD8
+#endif
+
+//
+// Software SPI pins for TMC2130 stepper drivers
+//
+#if ENABLED(TMC_USE_SW_SPI)
+  #ifndef TMC_SW_MOSI
+    #define TMC_SW_MOSI                     PD14
+  #endif
+  #ifndef TMC_SW_MISO
+    #define TMC_SW_MISO                     PD1
+  #endif
+  #ifndef TMC_SW_SCK
+    #define TMC_SW_SCK                      PD0
+  #endif
+#endif
+
+#if HAS_TMC_UART
+  /**
+   * TMC2208/TMC2209 stepper drivers
+   *
+   * Hardware serial communication ports.
+   * If undefined software serial is used according to the pins below
+   */
+  //#define X_HARDWARE_SERIAL  Serial
+  //#define X2_HARDWARE_SERIAL Serial1
+  //#define Y_HARDWARE_SERIAL  Serial1
+  //#define Y2_HARDWARE_SERIAL Serial1
+  //#define Z_HARDWARE_SERIAL  Serial1
+  //#define Z2_HARDWARE_SERIAL Serial1
+  //#define E0_HARDWARE_SERIAL Serial1
+  //#define E1_HARDWARE_SERIAL Serial1
+  //#define E2_HARDWARE_SERIAL Serial1
+  //#define E3_HARDWARE_SERIAL Serial1
+  //#define E4_HARDWARE_SERIAL Serial1
+
+  //
+  // Software serial
+  //
+
+  #define X_SERIAL_TX_PIN                   PD5
+  #define X_SERIAL_RX_PIN                   PD5
+
+  #define Y_SERIAL_TX_PIN                   PD7
+  #define Y_SERIAL_RX_PIN                   PD7
+
+  #define Z_SERIAL_TX_PIN                   PD4
+  #define Z_SERIAL_RX_PIN                   PD4
+
+  #define E0_SERIAL_TX_PIN                  PD9
+  #define E0_SERIAL_RX_PIN                  PD9
+
+  #define E1_SERIAL_TX_PIN                  PD8
+  #define E1_SERIAL_RX_PIN                  PD8
+
+  // Reduce baud rate to improve software serial reliability
+  #define TMC_BAUD_RATE 19200
+#endif // TMC2208 || TMC2209
+
+//
+// Temperature Sensors
+//
+#define TEMP_0_PIN                          PC1   // TH1
+#define TEMP_1_PIN                          PC2   // TH2
+#define TEMP_BED_PIN                        PC0   // TB1
+
+//
+// Heaters / Fans
+//
+#define HEATER_0_PIN                        PC3   // HEATER1
+#define HEATER_1_PIN                        PB0   // HEATER2
+#define HEATER_BED_PIN                      PA0   // HOT BED
+
+#define FAN_PIN                             PB1   // FAN
+
+//
+// Thermocouples
+//
+//#define MAX6675_SS_PIN                    PE5   // TC1 - CS1
+//#define MAX6675_SS_PIN                    PE6   // TC2 - CS2
+
+//
+// Misc. Functions
+//
+#define POWER_LOSS_PIN                      PA2   // PW_DET
+#define PS_ON_PIN                           PA3   // PW_OFF
+
+//#define SUICIDE_PIN                       PB2   // Enable MKSPWC support ROBIN NANO v1.2 ONLY
+//#define SUICIDE_PIN_INVERTING false
+
+//#define KILL_PIN                          PA2   // Enable MKSPWC support ROBIN NANO v1.2 ONLY
+//#define KILL_PIN_INVERTING true                 // Enable MKSPWC support ROBIN NANO v1.2 ONLY
+
+#define SERVO0_PIN                          PA8   // Enable BLTOUCH support ROBIN NANO v1.2 ONLY
+
+//#define LED_PIN                           PB2
+
+#define MT_DET_1_PIN                        PA4
+#define MT_DET_2_PIN                        PE6
+#define MT_DET_PIN_INVERTING false
+
+#define WIFI_IO0_PIN                        PC13
+
+//
+// SD Card
+//
+#ifndef SDCARD_CONNECTION
+  #define SDCARD_CONNECTION              ONBOARD
+#endif
+
+#define SDIO_SUPPORT
+#define SDIO_CLOCK 4500000                        // 4.5 MHz
+#define SD_DETECT_PIN                       PD12
+#define ONBOARD_SD_CS_PIN                   PC11
+
+//
+// LCD / Controller
+//
+#define BEEPER_PIN                          PC5
+
+/**
+ * Note: MKS Robin TFT screens use various TFT controllers.
+ * If the screen stays white, disable 'LCD_RESET_PIN'
+ * to let the bootloader init the screen.
+ */
+
+#if ENABLED(TFT_LVGL_UI_SPI)
+
+  #define SPI_TFT_CS_PIN                    PD11
+  #define SPI_TFT_SCK_PIN                   PA5
+  #define SPI_TFT_MISO_PIN                  PA6
+  #define SPI_TFT_MOSI_PIN                  PA7
+  #define SPI_TFT_DC_PIN                    PD10
+  #define SPI_TFT_RST_PIN                   PC6
+
+  #define LCD_BACKLIGHT_PIN                 PD13
+
+  #define TOUCH_CS_PIN                      PE14  // SPI1_NSS
+  #define TOUCH_SCK_PIN                     PA5   // SPI1_SCK
+  #define TOUCH_MISO_PIN                    PA6   // SPI1_MISO
+  #define TOUCH_MOSI_PIN                    PA7   // SPI1_MOSI
+
+  #define BTN_EN1                           PE8
+  #define BTN_EN2                           PE11
+  #define BEEPER_PIN                        PC5
+  #define BTN_ENC                           PE13
+
+#else
+  #if ENABLED(TFT_LITTLE_VGL_UI)
+  //FSMC LCD
+  #define FSMC_CS_PIN                       PD7   // NE4
+  #define FSMC_RS_PIN                       PD11  // A0
+
+  #define TOUCH_CS_PIN                      PA7   // SPI2_NSS
+  #define TOUCH_SCK_PIN                     PB13  // SPI2_SCK
+  #define TOUCH_MISO_PIN                    PB14  // SPI2_MISO
+  #define TOUCH_MOSI_PIN                    PB15  // SPI2_MOSI
+
+  #define LCD_BACKLIGHT_PIN                 PD13
+
+  #endif // TFT_LITTLE_VGL_UI
+
+#endif // TFT_LVGL_UI_SPI
+
+#if HAS_SPI_LCD
+
+  #define BEEPER_PIN                        PC5
+  #define BTN_ENC                           PE13
+  #define LCD_PINS_ENABLE                   PD13
+  #define LCD_PINS_RS                       PC6
+  #define BTN_EN1                           PE8
+  #define BTN_EN2                           PE11
+  #define LCD_BACKLIGHT_PIN                 -1
+
+  // MKS MINI12864 and MKS LCD12864B; If using MKS LCD12864A (Need to remove RPK2 resistor)
+  #if ENABLED(MKS_MINI_12864)
+    #define LCD_BACKLIGHT_PIN               -1
+    #define LCD_RESET_PIN                   -1
+    #define DOGLCD_A0                       PD11
+    #define DOGLCD_CS                       PE15
+    #define DOGLCD_SCK                      PA5
+    #define DOGLCD_MOSI                     PA7
+
+    // Required for MKS_MINI_12864 with this board
+    #define MKS_LCD12864B
+    #undef SHOW_BOOTSCREEN
+
+  #else                                           // !MKS_MINI_12864
+
+    #define LCD_PINS_D4                     PE14
+    #if ENABLED(ULTIPANEL)
+      #define LCD_PINS_D5                   PE15
+      #define LCD_PINS_D6                   PD11
+      #define LCD_PINS_D7                   PD10
+    #endif
+
+    #ifndef BOARD_ST7920_DELAY_1
+      #define BOARD_ST7920_DELAY_1 DELAY_NS(125)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_2
+      #define BOARD_ST7920_DELAY_2 DELAY_NS(125)
+    #endif
+    #ifndef BOARD_ST7920_DELAY_3
+      #define BOARD_ST7920_DELAY_3 DELAY_NS(125)
+    #endif
+
+  #endif // !MKS_MINI_12864
+
+#endif // HAS_SPI_LCD
+
+#define SPI_FLASH
+#if ENABLED(SPI_FLASH)
+  #define W25QXX_CS_PIN                     PB12
+  #define W25QXX_MOSI_PIN                   PB15
+  #define W25QXX_MISO_PIN                   PB14
+  #define W25QXX_SCK_PIN                    PB13
+#endif
diff --git a/buildroot/share/PlatformIO/scripts/download_mks_assets.py b/buildroot/share/PlatformIO/scripts/download_mks_assets.py
new file mode 100644
index 0000000000000000000000000000000000000000..ae2ce467e84aed8bde521df542023adc9c5c80fd
--- /dev/null
+++ b/buildroot/share/PlatformIO/scripts/download_mks_assets.py
@@ -0,0 +1,46 @@
+Import("env")
+import os
+import requests
+import zipfile
+import tempfile
+import shutil
+
+url = "https://github.com/makerbase-mks/Mks-Robin-Nano-Marlin2.0-Firmware/archive/master.zip"
+zip_path = os.path.join(env.Dictionary("PROJECT_LIBDEPS_DIR"), "mks-assets.zip")
+assets_path = os.path.join(env.Dictionary("PROJECT_BUILD_DIR"), env.Dictionary("PIOENV"), "assets")
+
+def download_mks_assets():
+	print("Downloading MKS Assets")
+	r = requests.get(url, stream=True)
+	# the user may have a very clean workspace,
+	# so create the PROJECT_LIBDEPS_DIR directory if not exits
+	if os.path.exists(env.Dictionary("PROJECT_LIBDEPS_DIR")) == False:
+		os.mkdir(env.Dictionary("PROJECT_LIBDEPS_DIR"))
+	with open(zip_path, 'wb') as fd:
+		for chunk in r.iter_content(chunk_size=128):
+			fd.write(chunk)
+
+def copy_mks_assets():
+	print("Copying MKS Assets")
+	output_path = tempfile.mkdtemp()
+	zip_obj = zipfile.ZipFile(zip_path, 'r')
+	zip_obj.extractall(output_path)
+	zip_obj.close()
+	if os.path.exists(assets_path) == True and os.path.isdir(assets_path) == False:
+		os.unlink(assets_path)
+	if os.path.exists(assets_path) == False:
+		os.mkdir(assets_path)
+	base_path = ''
+	for filename in os.listdir(output_path):
+		base_path = filename
+	for filename in os.listdir(os.path.join(output_path, base_path, 'Firmware', 'mks_font')):
+		shutil.copy(os.path.join(output_path, base_path, 'Firmware', 'mks_font', filename), assets_path)
+	for filename in os.listdir(os.path.join(output_path, base_path, 'Firmware', 'mks_pic')):
+		shutil.copy(os.path.join(output_path, base_path, 'Firmware', 'mks_pic', filename), assets_path)
+	shutil.rmtree(output_path, ignore_errors=True)
+
+if os.path.exists(zip_path) == False:
+	download_mks_assets()
+
+if os.path.exists(assets_path) == False:
+	copy_mks_assets()
diff --git a/platformio.ini b/platformio.ini
index 6ad1916a936afb054866939df9998a874f4435a3..743499e89944b0126b859cde63183a88583236b3 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -37,8 +37,9 @@ lib_deps           =
 # Feature Dependencies
 #
 [features]
-TFT_LVGL_UI         = MKS-LittlevGL=https://github.com/makerbase-mks/MKS-LittlevGL/archive/master.zip
+HAS_TFT_LVGL_UI     = lvgl=https://github.com/makerbase-mks/MKS-LittlevGL/archive/master.zip
                       src_filter=+<src/lcd/extui/lib/mks_ui>
+                      extra_scripts=download_mks_assets.py
 HAS_TRINAMIC_CONFIG = TMCStepper@~0.7.1
 SR_LCD_3W_NL        = SailfishLCD=https://github.com/mikeshub/SailfishLCD/archive/master.zip
 DIGIPOT_MCP4...     = SlowSoftI2CMaster
@@ -525,7 +526,7 @@ build_flags       = ${common_stm32f1.build_flags}
   -DMCU_STM32F103VE -DARDUINO_GENERIC_STM32F103V -DARDUINO_ARCH_STM32F1 -DBOARD_generic_stm32f103v
   -DDEBUG_LEVEL=DEBUG_NONE -DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DVECT_TAB_ADDR=0x8000000
   -DERROR_LED_PORT=GPIOE -DERROR_LED_PIN=6
-upload_protocol = serial
+upload_protocol   = serial
 
 #
 # Longer 3D board in Alfawise U20 (STM32F103VET6)
@@ -555,7 +556,7 @@ build_flags   = ${common_stm32f1.build_flags}
   -DMCU_STM32F103VE
 
 #
-# MKS Robin Nano (STM32F103VET6) - Emulated Graphical 128x64 (DOGM) UI
+# MKS Robin Nano (STM32F103VET6) - Emulated Graphical 128x64 (DOGM) UI and LVGL UI
 #
 [env:mks_robin_nano]
 platform      = ${common_stm32f1.platform}
@@ -567,6 +568,18 @@ extra_scripts = ${common.extra_scripts}
 build_flags   = ${common_stm32f1.build_flags}
   -DMCU_STM32F103VE -DSS_TIMER=4
 
+#
+# MKS Robin Nano v2.0 (STM32F103VET6) - LVGL UI
+#
+[env:mks_robin_nano35_v2]
+platform        = ${common_stm32f1.platform}
+extends         = env:mks_robin_nano
+extra_scripts   = ${common.extra_scripts}
+  buildroot/share/PlatformIO/scripts/mks_robin_nano35.py
+lib_deps        = ${common_stm32f1.lib_deps}
+debug_tool      = jlink
+upload_protocol = jlink
+
 #
 # MKS Robin (STM32F103ZET6)
 #
@@ -753,8 +766,8 @@ extra_scripts     = ${common.extra_scripts}
 # FYSETC S6 (STM32F446VET6 ARM Cortex-M4)
 #
 [env:FYSETC_S6]
-platform      = ${common_stm32.platform}
-extends       = common_stm32
+platform          = ${common_stm32.platform}
+extends           = common_stm32
 platform_packages = ${common_stm32.platform_packages}
    tool-stm32duino
 board             = fysetc_s6