aboutsummaryrefslogtreecommitdiff
path: root/Marlin/src/lcd/HD44780/marlinui_HD44780.h
diff options
context:
space:
mode:
Diffstat (limited to 'Marlin/src/lcd/HD44780/marlinui_HD44780.h')
-rw-r--r--Marlin/src/lcd/HD44780/marlinui_HD44780.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/Marlin/src/lcd/HD44780/marlinui_HD44780.h b/Marlin/src/lcd/HD44780/marlinui_HD44780.h
new file mode 100644
index 0000000..604d26a
--- /dev/null
+++ b/Marlin/src/lcd/HD44780/marlinui_HD44780.h
@@ -0,0 +1,102 @@
+/**
+ * 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
+
+/**
+ * Hitachi HD44780 display defines and headers
+ */
+
+#include "../../inc/MarlinConfig.h"
+
+#if ENABLED(LCD_I2C_TYPE_PCF8575)
+
+ // NOTE: These are register-mapped pins on the PCF8575 controller, not Arduino pins.
+ #define LCD_I2C_PIN_BL 3
+ #define LCD_I2C_PIN_EN 2
+ #define LCD_I2C_PIN_RW 1
+ #define LCD_I2C_PIN_RS 0
+ #define LCD_I2C_PIN_D4 4
+ #define LCD_I2C_PIN_D5 5
+ #define LCD_I2C_PIN_D6 6
+ #define LCD_I2C_PIN_D7 7
+
+ #include <Wire.h>
+ #include <LCD.h>
+ #include <LiquidCrystal_I2C.h>
+ #define LCD_CLASS LiquidCrystal_I2C
+
+#elif ENABLED(LCD_I2C_TYPE_MCP23017)
+
+ // For the LED indicators (which may be mapped to different events in update_indicators())
+ #define LCD_HAS_STATUS_INDICATORS
+ #define LED_A 0x04 //100
+ #define LED_B 0x02 //010
+ #define LED_C 0x01 //001
+
+ #include <Wire.h>
+ #include <LiquidTWI2.h>
+ #define LCD_CLASS LiquidTWI2
+
+#elif ENABLED(LCD_I2C_TYPE_MCP23008)
+
+ #include <Wire.h>
+ #include <LiquidTWI2.h>
+ #define LCD_CLASS LiquidTWI2
+
+#elif ENABLED(LCD_I2C_TYPE_PCA8574)
+
+ #include <LiquidCrystal_I2C.h>
+ #define LCD_CLASS LiquidCrystal_I2C
+
+#elif ENABLED(SR_LCD_2W_NL)
+
+ // 2 wire Non-latching LCD SR from:
+ // https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/schematics#!shiftregister-connection
+ #include <LCD.h>
+ #include <LiquidCrystal_SR.h>
+ #define LCD_CLASS LiquidCrystal_SR
+
+#elif ENABLED(SR_LCD_3W_NL)
+
+ // NewLiquidCrystal didn't work, so this uses
+ // https://github.com/mikeshub/SailfishLCD
+
+ #include <SailfishLCD.h>
+ #define LCD_CLASS LiquidCrystalSerial
+
+#elif ENABLED(LCM1602)
+
+ #include <Wire.h>
+ #include <LCD.h>
+ #include <LiquidCrystal_I2C.h>
+ #define LCD_CLASS LiquidCrystal_I2C
+
+#else
+
+ // Standard directly connected LCD implementations
+ #include <LiquidCrystal.h>
+ #define LCD_CLASS LiquidCrystal
+
+#endif
+
+#include "../fontutils.h"
+#include "../lcdprint.h"