| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- #ifndef LCD_2002A08F_H
- #define LCD_2002A08F_H
- #include <stdint.h>
- /* I2C设备地址 - 根据数据手册,从机地址为 0111110x (0x3E或0x3F) */
- #define LCD_I2C_ADDR 0x3E
- /* 设备文件路径 */
- #define LCD_I2C_BUS "/dev/i2c-lcd" /* 根据实际硬件调整,做的映射 */
- /* 控制字节定义 */
- #define LCD_CONTROL_BYTE 0x00 /* RS=0: 指令 */
- #define LCD_DATA_BYTE 0x40 /* RS=1: 数据 */
- #define LCD_CO_BIT 0x80 /* Continuation bit */
- /* 基本指令 - 根据数据手册第13-16页 */
- #define LCD_CLEAR_DISPLAY 0x01 /* 清显示 */
- #define LCD_RETURN_HOME 0x02 /* 归位 */
- #define LCD_ENTRY_MODE_SET 0x04 /* 设置输入模式 */
- #define LCD_DISPLAY_CONTROL 0x08 /* 显示开/关控制 */
- #define LCD_CURSOR_SHIFT 0x10 /* 光标或显示移位 */
- #define LCD_FUNCTION_SET 0x20 /* 功能设置 */
- #define LCD_SET_CGRAM_ADDR 0x40 /* CGRAM地址设置 */
- #define LCD_SET_DDRAM_ADDR 0x80 /* DDRAM地址设置 */
- /* Entry Mode Set 参数 */
- #define LCD_ENTRY_RIGHT 0x00 /* 光标右移 */
- #define LCD_ENTRY_LEFT 0x02 /* 光标左移 */
- #define LCD_ENTRY_SHIFT_ON 0x01 /* 显示移位开启 */
- #define LCD_ENTRY_SHIFT_OFF 0x00 /* 显示移位关闭 */
- /* Display Control 参数 */
- #define LCD_DISPLAY_ON 0x04 /* 显示开启 */
- #define LCD_DISPLAY_OFF 0x00 /* 显示关闭 */
- #define LCD_CURSOR_ON 0x02 /* 光标显示 */
- #define LCD_CURSOR_OFF 0x00 /* 光标不显示 */
- #define LCD_BLINK_ON 0x01 /* 闪烁开启 */
- #define LCD_BLINK_OFF 0x00 /* 闪烁关闭 */
- /* Function Set 参数 */
- #define LCD_2LINE 0x08 /* 2行显示 (N=1) */
- #define LCD_1LINE 0x00 /* 1行显示 (N=0) */
- #define LCD_5x10DOTS 0x04 /* 5x10点阵 (F=1) */
- #define LCD_5x8DOTS 0x00 /* 5x7点阵 (F=0) */
- /* Cursor/Display Shift 参数 */
- #define LCD_DISPLAY_MOVE 0x08 /* 显示移动 (S/C=1) */
- #define LCD_CURSOR_MOVE 0x00 /* 光标移动 (S/C=0) */
- #define LCD_MOVE_RIGHT 0x04 /* 向右移动 (R/L=1) */
- #define LCD_MOVE_LEFT 0x00 /* 向左移动 (R/L=0) */
- /* DDRAM地址 - 根据数据手册第16页 */
- #define LCD_LINE1_ADDR 0x00 /* 第一行起始地址 0x00-0x27 */
- #define LCD_LINE2_ADDR 0x40 /* 第二行起始地址 0x40-0x67 */
- /* 显示参数 */
- #define LCD_COLS 20 /* 20列 */
- #define LCD_ROWS 2 /* 2行 */
- /* 函数声明 */
- int lcd_init(const char *i2c_bus, uint8_t addr);
- void lcd_close(void);
- int lcd_clear(void);
- int lcd_home(void);
- int lcd_display_control(uint8_t display, uint8_t cursor, uint8_t blink);
- int lcd_entry_mode(uint8_t id, uint8_t shift);
- int lcd_set_cursor(uint8_t col, uint8_t row);
- int lcd_write_char(char c);
- int lcd_write_string(const char *str);
- int lcd_write_custom_char(uint8_t num, uint8_t *data);
- int lcd_show_custom_char(uint8_t num);
- int lcd_shift_display(uint8_t direction);
- int lcd_shift_cursor(uint8_t direction);
- int lcd_clear_line_fast(uint8_t row);
- #endif
|