diff --git a/src/lcd/hd44780_bits.h b/src/lcd/hd44780_bits.h new file mode 100644 index 00000000..e3f60c40 --- /dev/null +++ b/src/lcd/hd44780_bits.h @@ -0,0 +1,86 @@ +/* + * Author: Jon Trulson + * Copyright (c) 2015 Intel Corporation. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + */ +#pragma once + +// This file contains bit definitions for the HD44780 and compatible +// LCD controllers. They are used by most drivers in this (LCD) +// library, though the SSD controllers only seem to make use of the +// LCD_DATA and LCD_CMD values. +// +// Those values (DATA, CMD) are specific to the implementation of the +// i2C expander in use, so may not be appropriate for inclusion into +// this file. But for now, we will leave them here. + +#include + +namespace upm +{ +// commands + const uint8_t LCD_CLEARDISPLAY = 0x01; + const uint8_t LCD_RETURNHOME = 0x02; + const uint8_t LCD_ENTRYMODESET = 0x04; + const uint8_t LCD_DISPLAYCONTROL = 0x08; + const uint8_t LCD_CURSORSHIFT = 0x10; + const uint8_t LCD_FUNCTIONSET = 0x20; + + const uint8_t LCD_BACKLIGHT = 0x08; + const uint8_t LCD_NOBACKLIGHT = 0x00; + + // flags for display entry mode + const uint8_t LCD_ENTRYRIGHT = 0x00; + const uint8_t LCD_ENTRYLEFT = 0x02; + const uint8_t LCD_ENTRYSHIFTINCREMENT = 0x01; + const uint8_t LCD_ENTRYSHIFTDECREMENT = 0x00; + + // flags for display on/off control + const uint8_t LCD_DISPLAYON = 0x04; + const uint8_t LCD_DISPLAYOFF = 0x00; + const uint8_t LCD_CURSORON = 0x02; + const uint8_t LCD_CURSOROFF = 0x00; + const uint8_t LCD_BLINKON = 0x01; + const uint8_t LCD_BLINKOFF = 0x00; + + // flags for display/cursor shift + const uint8_t LCD_DISPLAYMOVE = 0x08; + const uint8_t LCD_MOVERIGHT = 0x04; + const uint8_t LCD_MOVELEFT = 0x00; + + // flags for function set + const uint8_t LCD_8BITMODE = 0x10; + const uint8_t LCD_4BITMODE = 0x00; + const uint8_t LCD_2LINE = 0x08; + const uint8_t LCD_1LINE = 0x00; + const uint8_t LCD_5x10DOTS = 0x04; + const uint8_t LCD_5x8DOTS = 0x00; + + // flags for CGRAM + const uint8_t LCD_SETCGRAMADDR = 0x40; + + // may be implementation specific + const uint8_t LCD_EN = 0x04; // Enable bit + const uint8_t LCD_RW = 0x02; // Read/Write bit + const uint8_t LCD_RS = 0x01; // Register select bit + const uint8_t LCD_DATA = 0x40; + const uint8_t LCD_CMD = 0x80; +} diff --git a/src/lcd/jhd1313m1.cxx b/src/lcd/jhd1313m1.cxx index 3873bf03..385cb23c 100644 --- a/src/lcd/jhd1313m1.cxx +++ b/src/lcd/jhd1313m1.cxx @@ -27,6 +27,7 @@ #include #include "lcd_private.h" +#include "hd44780_bits.h" #include "jhd1313m1.h" using namespace upm; diff --git a/src/lcd/lcd.cxx b/src/lcd/lcd.cxx index bee83d5d..b7c11b3f 100644 --- a/src/lcd/lcd.cxx +++ b/src/lcd/lcd.cxx @@ -26,6 +26,7 @@ #include #include "lcd.h" +#include "hd44780_bits.h" #include "lcd_private.h" using namespace upm; diff --git a/src/lcd/lcd.h b/src/lcd/lcd.h index 6558a488..b75756c2 100644 --- a/src/lcd/lcd.h +++ b/src/lcd/lcd.h @@ -28,53 +28,6 @@ namespace upm { -// commands -const uint8_t LCD_CLEARDISPLAY = 0x01; -const uint8_t LCD_RETURNHOME = 0x02; -const uint8_t LCD_ENTRYMODESET = 0x04; -const uint8_t LCD_DISPLAYCONTROL = 0x08; -const uint8_t LCD_CURSORSHIFT = 0x10; -const uint8_t LCD_FUNCTIONSET = 0x20; -const uint8_t LCD_DATA = 0x40; -const uint8_t LCD_CMD = 0x80; - -const uint8_t LCD_BACKLIGHT = 0x08; -const uint8_t LCD_NOBACKLIGHT = 0x00; - -// flags for display entry mode -const uint8_t LCD_ENTRYRIGHT = 0x00; -const uint8_t LCD_ENTRYLEFT = 0x02; -const uint8_t LCD_ENTRYSHIFTINCREMENT = 0x01; -const uint8_t LCD_ENTRYSHIFTDECREMENT = 0x00; - -// flags for display on/off control -const uint8_t LCD_DISPLAYON = 0x04; -const uint8_t LCD_DISPLAYOFF = 0x00; -const uint8_t LCD_CURSORON = 0x02; -const uint8_t LCD_CURSOROFF = 0x00; -const uint8_t LCD_BLINKON = 0x01; -const uint8_t LCD_BLINKOFF = 0x00; - -// flags for display/cursor shift -const uint8_t LCD_DISPLAYMOVE = 0x08; -const uint8_t LCD_MOVERIGHT = 0x04; -const uint8_t LCD_MOVELEFT = 0x00; - -// flags for function set -const uint8_t LCD_8BITMODE = 0x10; -const uint8_t LCD_4BITMODE = 0x00; -const uint8_t LCD_2LINE = 0x08; -const uint8_t LCD_1LINE = 0x00; -const uint8_t LCD_5x10DOTS = 0x04; -const uint8_t LCD_5x8DOTS = 0x00; - -// flags for CGRAM -const uint8_t LCD_SETCGRAMADDR = 0x40; - -const uint8_t LCD_EN = 0x04; // Enable bit -const uint8_t LCD_RW = 0x02; // Read/Write bit -const uint8_t LCD_RS = 0x01; // Register select bit - /** * @brief I2C LCD display library * @defgroup i2clcd libupm-i2clcd diff --git a/src/lcd/lcm1602.cxx b/src/lcd/lcm1602.cxx index c58fd0de..ced042c0 100644 --- a/src/lcd/lcm1602.cxx +++ b/src/lcd/lcm1602.cxx @@ -28,6 +28,7 @@ #include #include +#include "hd44780_bits.h" #include "lcm1602.h" using namespace upm; diff --git a/src/lcd/ssd1308.cxx b/src/lcd/ssd1308.cxx index f1d33156..c007b5e1 100644 --- a/src/lcd/ssd1308.cxx +++ b/src/lcd/ssd1308.cxx @@ -25,6 +25,7 @@ #include #include +#include "hd44780_bits.h" #include "ssd1308.h" using namespace upm; diff --git a/src/lcd/ssd1327.cxx b/src/lcd/ssd1327.cxx index d7cb83b7..cc60dff3 100644 --- a/src/lcd/ssd1327.cxx +++ b/src/lcd/ssd1327.cxx @@ -25,6 +25,7 @@ #include #include +#include "hd44780_bits.h" #include "ssd1327.h" using namespace upm;