23#include "px_lcd_st7567_jhd12864.h"
31#define PX_LCD_CMD_DISP_ON_OFF 0xae
32#define PX_LCD_CMD_SET_START_LINE 0x40
33#define PX_LCD_CMD_SET_PAGE_ADR 0xb0
34#define PX_LCD_CMD_SET_COL_ADR_HI 0x10
35#define PX_LCD_CMD_SET_COL_ADR_LO 0x00
36#define PX_LCD_CMD_SEG_DIR 0xa0
37#define PX_LCD_CMD_INVERSE_DISPLAY 0xa6
38#define PX_LCD_CMD_ALL_PIXEL_ON 0xa4
39#define PX_LCD_CMD_BIAS_SELECT 0xa2
40#define PX_LCD_CMD_RESET 0xe2
41#define PX_LCD_CMD_COM_DIRECTION 0xc0
42#define PX_LCD_CMD_POWER_CONTROL 0x28
43#define PX_LCD_CMD_REG_RATIO 0x20
44#define PX_LCD_CMD_SET_EV 0x81
45#define PX_LCD_CMD_SET_BOOSTER 0xf8
48#define PX_LCD_ST7567_MAX_NR_OF_COLS 132
49#define PX_LCD_ST7567_MAX_NR_OF_ROWS 65
62static void px_lcd_wr_control_data(uint8_t data)
74 px_lcd_spi_handle = handle;
84 px_lcd_wr_control_data(PX_LCD_CMD_BIAS_SELECT | 0);
86#if !PX_LCD_CFG_ROT_180_DEG
88 px_lcd_wr_control_data(PX_LCD_CMD_SEG_DIR | 0);
90 px_lcd_wr_control_data(PX_LCD_CMD_COM_DIRECTION | 0x00);
93 px_lcd_wr_control_data(PX_LCD_CMD_SEG_DIR | 1);
97 px_lcd_wr_control_data(PX_LCD_CMD_COM_DIRECTION | 0x00);
100 px_lcd_wr_control_data(PX_LCD_CMD_REG_RATIO | 0x04);
103 px_lcd_wr_control_data(PX_LCD_CMD_SET_EV);
104 px_lcd_wr_control_data(40);
107 px_lcd_wr_control_data(PX_LCD_CMD_POWER_CONTROL | 0x04);
110 px_lcd_wr_control_data(PX_LCD_CMD_POWER_CONTROL | 0x06);
113 px_lcd_wr_control_data(PX_LCD_CMD_POWER_CONTROL | 0x07);
117 px_lcd_wr_control_data(PX_LCD_CMD_SET_BOOSTER);
118 px_lcd_wr_control_data(0xaf);
121 px_lcd_wr_control_data(PX_LCD_CMD_SET_START_LINE | 0);
123 px_lcd_wr_control_data(PX_LCD_CMD_ALL_PIXEL_ON | 0);
125 px_lcd_wr_control_data(PX_LCD_CMD_INVERSE_DISPLAY | 0);
129 px_lcd_wr_control_data(PX_LCD_CMD_DISP_ON_OFF | 1);
135 px_lcd_wr_control_data(PX_LCD_CMD_DISP_ON_OFF | 0);
137 px_lcd_wr_control_data(PX_LCD_CMD_ALL_PIXEL_ON | 1);
143 px_lcd_wr_control_data(PX_LCD_CMD_ALL_PIXEL_ON | 0);
145 px_lcd_wr_control_data(PX_LCD_CMD_DISP_ON_OFF | 1);
171#if PX_LCD_CFG_ROT_180_DEG
176 px_lcd_wr_control_data(PX_LCD_CMD_SET_COL_ADR_HI | ((col & 0xf0) >> 4));
178 px_lcd_wr_control_data(PX_LCD_CMD_SET_COL_ADR_LO | (col & 0x0f));
183#if !PX_LCD_CFG_ROT_180_DEG
187 px_lcd_wr_control_data(PX_LCD_CMD_SET_PAGE_ADR | page);
void px_board_delay_ms(uint16_t delay_ms)
Blocking delay for specified number of milliseconds.
#define PX_LCD_NR_OF_COLS
Number of columns.
void px_lcd_wr_disp_data(uint8_t *data, size_t nr_of_bytes)
Write data to display.
void px_lcd_init(px_spi_handle_t *handle)
Initialise LCD driver.
#define PX_LCD_CFG_RS_LO()
Macro to set RS pin low.
#define PX_LCD_NR_OF_PAGES
Number of pages.
void px_lcd_sel_page(uint8_t page)
Select LCD page (y) for display data.
#define PX_LCD_CFG_RST_LO()
Macro to set LCD reset pin low.
void px_lcd_wr_disp_u8(uint8_t data)
Write one byte of display data.
#define PX_LCD_CFG_RST_HI()
Macro to set LCD reset pin high.
void px_lcd_clr(void)
Clear LCD display.
#define PX_LCD_CFG_RS_HI()
Macro to set RS pin high.
void px_lcd_sel_col(uint8_t col)
Select LCD starting column (x) for display data.
void px_lcd_power_save_on(void)
Turn power save on.
void px_lcd_power_save_off(void)
Turn power save off.
#define PX_LOG_NAME(name)
Macro to declare a log name string once for each file to reduce code size.
#define PX_SPI_FLAG_START_AND_STOP
Begin and finish SPI transaction.
void px_spi_wr(px_spi_handle_t *handle, const void *data, size_t nr_of_bytes, uint8_t flags)
Perform an SPI write transaction with an SPI slave.