46 #define ESOS_LCD44780_CMD_CLEAR_DISPLAY 0b00000001
47 #define ESOS_LCD44780_CMD_RETURN_HOME 0b00000010
48 #define ESOS_LCD44780_CMD_ENTRY_MODE_SET 0b00000100
49 #define ESOS_LCD44780_CMD_ENTRY_MODE_SET_INC 0b00000010
50 #define ESOS_LCD44780_CMD_ENTRY_MODE_SET_SHIFT 0b00000001
51 #define ESOS_LCD44780_CMD_DISPLAY_ON_OFF 0b00001000
52 #define ESOS_LCD44780_CMD_DISPLAY_ON_OFF_DISPLAYON 0b00000100
53 #define ESOS_LCD44780_CMD_DISPLAY_ON_OFF_CURSORON 0b00000010
54 #define ESOS_LCD44780_CMD_DISPLAY_ON_OFF_BLINKCURSOR 0b00000001
55 #define ESOS_LCD44780_CMD_CUR_DISP_CURSOR_SHIFT_L 0b00010000
56 #define ESOS_LCD44780_CMD_CUR_DISP_CURSOR_SHIFT_R 0b00010100
57 #define ESOS_LCD44780_CMD_CUR_DISP_DISPLAY_SHIFT_L 0b00011000
58 #define ESOS_LCD44780_CMD_CUR_DISP_DISPLAY_SHIFT_R 0b00011100
59 #define ESOS_LCD44780_CMD_FUNCTION_SET 0b00100000
60 #define ESOS_LCD44780_CMD_FUNCTION_SET_8BIT_MODE 0b00010000
61 #define ESOS_LCD44780_CMD_FUNCTION_SET_4BIT_MODE 0b00000000
62 #define ESOS_LCD44780_CMD_FUNCTION_SET_1LINE_MODE 0b00000000
63 #define ESOS_LCD44780_CMD_FUNCTION_SET_2LINE_MODE 0b00001000
64 #define ESOS_LCD44780_CMD_FUNCTION_SET_LOWFONT_MODE 0b00000000
65 #define ESOS_LCD44780_CMD_FUNCTION_SET_HIFONT_MODE 0b00000100
66 #define ESOS_LCD44780_CMD_SET_CGRAM_ADDR 0b01000000
67 #define ESOS_LCD44780_CMD_SET_DDRAM_ADDR 0b10000000
75 #define ESOS_LCD44780_MEM_WIDTH 40
76 #define ESOS_LCD44780_MEM_HEIGHT 2
77 #define ESOS_LCD44780_NUM_CUSTOM_CHARS 8
79 #define LCD44780_READ 1
80 #define LCD44780_WRITE 0
81 #define LCD44780_DATA TRUE
82 #define LCD44780_COMMANDS FALSE
85 #define ESOS_TASK_WAIT_ON_LCD44780_REFRESH() ESOS_TASK_WAIT_UNTIL(esos_lcd44780_isCurrent())
87 #define ESOS_TASK_WAIT_LCD44780_WRITE_COMMAND(u8_cmd) do { \
88 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stLCDChildTask, __esos_lcd44780_hw_write_u8, u8_cmd, LCD44780_COMMANDS ); \
91 #define ESOS_TASK_WAIT_LCD44780_WRITE_COMMAND_NOWAIT(u8_cmd) do { \
92 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stLCDChildTask, __esos_lcd44780_hw_write_u8, u8_cmd, LCD44780_COMMANDS ); \
95 #define ESOS_TASK_WAIT_LCD44780_SET_CG_ADDRESS(u8_addr) \
96 ESOS_TASK_WAIT_LCD44780_WRITE_COMMAND( u8_addr | ESOS_LCD44780_CMD_SET_CGRAM_ADDR )
98 #define ESOS_TASK_WAIT_LCD44780_SET_DATA_ADDRESS(u8_addr) \
99 ESOS_TASK_WAIT_LCD44780_WRITE_COMMAND( u8_addr | ESOS_LCD44780_CMD_SET_DDRAM_ADDR )
101 #define ESOS_TASK_WAIT_LCD44780_WRITE_DATA(u8_data) do { \
102 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stLCDChildTask, __esos_lcd44780_hw_write_u8, u8_data, LCD44780_DATA ); \
112 void esos_lcd44780_configDisplay(
void );
113 void __esos_lcd44780_init(
void );
114 void esos_lcd44780_clearScreen(
void );
115 void esos_lcd44780_setCursorHome(
void );
116 void esos_lcd44780_setCursor( uint8_t u8_row, uint8_t u8_column );
117 void esos_lcd44780_writeChar( uint8_t u8_row, uint8_t u8_column, uint8_t u8_data );
118 uint8_t esos_lcd44780_getChar( uint8_t u8_row, uint8_t u8_column );
119 void esos_lcd44780_writeBuffer( uint8_t u8_row, uint8_t u8_column, uint8_t *pu8_data, uint8_t u8_bufflen );
120 void esos_lcd44780_getBuffer( uint8_t u8_row, uint8_t u8_column, uint8_t *pu8_data, uint8_t u8_bufflen );
121 void esos_lcd44780_writeString( uint8_t u8_row, uint8_t u8_column,
char *psz_data );
122 void esos_lcd44780_setCursorDisplay(
BOOL u8_state );
123 BOOL esos_lcd44780_getCursorDisplay(
void );
124 void esos_lcd44780_setCursorBlink(
BOOL u8_state );
125 BOOL esos_lcd44780_getCursorBlink(
void );
126 void esos_lcd44780_setDisplayVisible(
BOOL u8_state );
127 BOOL esos_lcd44780_getDisplayVisible(
void );
128 void esos_lcd44780_setCustomChar( uint8_t u8_charSlot, uint8_t *pu8_charData );
129 void esos_lcd44780_getCustomChar( uint8_t u8_charSlot, uint8_t *pu8_charData );
130 BOOL esos_lcd44780_isCurrent(
void );
136 extern void __esos_lcd44780_hw_config(
void);
138 #ifdef ESOS_USE_LCD_4BIT
139 extern void __esos_unsafe_lcd44780_hw_write_u4(uint8_t u8_u4data,
BOOL b_isEnable,
BOOL b_isData);
142 #endif // ESOS_LCDWO_H