summaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorMax Audron <audron@ejected.space>2018-07-15 19:31:45 +0200
committerJack Humbert <jack.humb@gmail.com>2018-07-15 19:31:45 +0200
commitbbea9dadbcc92c4005188860a44c7b9e2479be2e (patch)
tree6771bf1efda890e5747fb48db5ff4b1182051f38 /docs
parent81756d7b219fc2c869c043ee606d491a1e77e1c1 (diff)
downloadqmk_firmware-bbea9dadbcc92c4005188860a44c7b9e2479be2e.tar.gz
qmk_firmware-bbea9dadbcc92c4005188860a44c7b9e2479be2e.tar.xz
Integrating Peter Fleury's HD44780 LCD library (#3209)
* integrated Peter Fleury's LCD library for HD44780 LCDs * fixed typo * cleanup finished * add documentation * added HD44780 documentation * removed keyboard from .gitmodules * resolved merge conflict * removed edit of kira75s rules.mk made by merge * moved hd44780 to drivers/avr * Added licence info to hd44780 files * Added link to hd44780 docs.
Diffstat (limited to 'docs')
-rw-r--r--docs/feature_hd44780.md56
-rw-r--r--docs/features.md1
2 files changed, 57 insertions, 0 deletions
diff --git a/docs/feature_hd44780.md b/docs/feature_hd44780.md
new file mode 100644
index 000000000..e9d9e8b7b
--- /dev/null
+++ b/docs/feature_hd44780.md
@@ -0,0 +1,56 @@
+# HD44780 LCD Displays
+
+This is an integration of Peter Fleury's LCD library. This page will explain the basics. [For in depth documentation visit his page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
+
+You can enable support for HD44780 Displays by setting the `HD44780_ENABLE` flag in your keyboards `rules.mk` to yes. This will use about 400 KB of extra space.
+
+## Configuration
+
+You will need to configure the pins used by your display and its number of lines and collumn in your keyboards `config.h`.
+
+Uncomment the section labled HD44780 and change the parameters as needed.
+````
+/*
+ * HD44780 LCD Display Configuration
+ */
+
+#define LCD_LINES 2 //< number of visible lines of the display
+#define LCD_DISP_LENGTH 16 //< visibles characters per line of the display
+#define LCD_IO_MODE 1 //< 0: memory mapped mode, 1: IO port mode
+#if LCD_IO_MODE
+#define LCD_PORT PORTB //< port for the LCD lines
+#define LCD_DATA0_PORT LCD_PORT //< port for 4bit data bit 0
+#define LCD_DATA1_PORT LCD_PORT //< port for 4bit data bit 1
+#define LCD_DATA2_PORT LCD_PORT //< port for 4bit data bit 2
+#define LCD_DATA3_PORT LCD_PORT //< port for 4bit data bit 3
+#define LCD_DATA0_PIN 4 //< pin for 4bit data bit 0
+#define LCD_DATA1_PIN 5 //< pin for 4bit data bit 1
+#define LCD_DATA2_PIN 6 //< pin for 4bit data bit 2
+#define LCD_DATA3_PIN 7 //< pin for 4bit data bit 3
+#define LCD_RS_PORT LCD_PORT //< port for RS line
+#define LCD_RS_PIN 3 //< pin for RS line
+#define LCD_RW_PORT LCD_PORT //< port for RW line
+#define LCD_RW_PIN 2 //< pin for RW line
+#define LCD_E_PORT LCD_PORT //< port for Enable line
+#define LCD_E_PIN 1 //< pin for Enable line
+#endif
+````
+
+Should you need to configure other properties you can copy them from `quantum/hd44780.h` and set them in your `config.h`
+
+## Usage
+
+To initialize your display call lcd_init() with one of these parameters:
+````
+LCD_DISP_OFF : display off
+LCD_DISP_ON : display on, cursor off
+LCD_DISP_ON_CURSOR : display on, cursor on
+LCD_DISP_ON_CURSOR_BLINK : display on, cursor on flashing
+````
+This is best done in your keyboards `matrix_init_kb` or your keymaps `matrix_init_user`.
+It is advised to clear the display before use.
+To do so call `lcd_clrsrc()`.
+
+To now print something to your Display you first call `lcd_gotoxy(column, line)`. To go to the start of the first line you would call `lcd_gotoxy(0, 0)` and then print a string with `lcd_puts("example string")`.
+
+There are more posible methods to control the display. [For in depth documentation please visit the linked page.](http://homepage.hispeed.ch/peterfleury/doxygen/avr-gcc-libraries/group__pfleury__lcd.html)
diff --git a/docs/features.md b/docs/features.md
index 4dee486ef..d8ca3780d 100644
--- a/docs/features.md
+++ b/docs/features.md
@@ -9,6 +9,7 @@ QMK has a staggering number of features for building your keyboard. It can take
* [Backlight](feature_backlight.md) - LED lighting support for your keyboard.
* [Bootmagic](feature_bootmagic.md) - Adjust the behavior of your keyboard using hotkeys.
* [Dynamic Macros](feature_dynamic_macros.md) - Record and playback macros from the keyboard itself.
+* [HD44780 LCD Display](feature_hd44780.md) - Support for LCD character displays using the HD44780 standard.
* [Key Lock](feature_key_lock.md) - Lock a key in the "down" state.
* [Layouts](feature_layouts.md) - Use one keymap with any keyboard that supports your layout.
* [Leader Key](feature_leader_key.md) - Tap the leader key followed by a sequence to trigger custom behavior.