Display um set_display und userdefined charachter erweiter
This commit is contained in:
parent
3d9322c7f3
commit
2613c16a3d
@ -10,6 +10,8 @@
|
||||
#include "STM32G071KBT6.hpp"
|
||||
#include "Display.hpp"
|
||||
|
||||
/// address for character generator ram
|
||||
#define CMD_CGRAM_ADDR 0x40u
|
||||
#define pulse_delay() for(uint32_t i = 0UL; i < 1UL; i++);
|
||||
#define PIN_RS LL_GPIO_PIN_4
|
||||
#define PIN_RW LL_GPIO_PIN_5
|
||||
@ -147,6 +149,32 @@ namespace ElektronischeLast
|
||||
lcd_cmd(0x80u | line | (position & 0x7F));
|
||||
}
|
||||
|
||||
/// \brief switch display on/off and set cursor mode
|
||||
/// \param[in] display \ref eDisplay_t
|
||||
/// \param[in] cursor \ref eCursor_t
|
||||
/// \param[in] blink \ref eCursorBlink_t
|
||||
void Display::lcd_set_display(eDisplay_t display, eCursor_t cursor, eCursorBlink_t blink)
|
||||
{
|
||||
lcd_cmd(0x08u | display | cursor | blink);
|
||||
}
|
||||
|
||||
/// \brief set user defined character in display ram
|
||||
/// \details e.g. https://maxpromer.github.io/LCD-Character-Creator/ to generate character data
|
||||
/// \param[in] character \ref eUserDefinedCharakter_t
|
||||
/// \param[in] character_data pixel-data of character (8-Byte)
|
||||
void Display::lcd_set_user_chars(Display::UserDefinedCharakter_t character, const uint8_t character_data[])
|
||||
{
|
||||
lcd_cmd((uint8_t)character | CMD_CGRAM_ADDR);
|
||||
for(uint8_t idx = 0u; idx < 8u; idx++)
|
||||
{
|
||||
while(!ready_for_data())
|
||||
{
|
||||
run();
|
||||
}
|
||||
lcd_data(character_data[idx]);
|
||||
}
|
||||
}
|
||||
|
||||
void Display::print(const char* const string)
|
||||
{
|
||||
strncpy(this->string, string, sizeof(this->string));
|
||||
|
@ -70,6 +70,27 @@ namespace ElektronischeLast
|
||||
Line2 = 0x40, //!< Select second display line
|
||||
} Line_t;
|
||||
|
||||
/// \brief Display State
|
||||
typedef enum
|
||||
{
|
||||
eDisplayOff = 0, //!< Display off
|
||||
eDispalyOn = 4 //!< Display on
|
||||
} eDisplay_t;
|
||||
|
||||
/// \brief Cursor State
|
||||
typedef enum
|
||||
{
|
||||
eCursorOff = 0, //!< Cursor off
|
||||
eCursorOn = 2 //!< Cursor on
|
||||
} eCursor_t;
|
||||
|
||||
/// \brief Cursor blink mode
|
||||
typedef enum
|
||||
{
|
||||
eCursorBlinkOff = 0, //!< no Cursor blink
|
||||
eCursorBlinkOn = 1 //!< Cursor blink
|
||||
} eCursorBlink_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
StateIdle,
|
||||
@ -92,8 +113,10 @@ namespace ElektronischeLast
|
||||
void run(void);
|
||||
void set_backlight(bool on);
|
||||
void set_cursor(Line_t line, std::uint32_t position);
|
||||
void lcd_set_display(eDisplay_t display, eCursor_t cursor, eCursorBlink_t blink);
|
||||
void print(const char* const string);
|
||||
bool ready_for_data(void);
|
||||
void lcd_set_user_chars(Display::UserDefinedCharakter_t character, const uint8_t character_data[]);
|
||||
private:
|
||||
State_t current_state;
|
||||
State_t next_state;
|
||||
|
Loading…
x
Reference in New Issue
Block a user