23#include "px_lcd_st7565p_tse2g0330e.h"
32#define PX_LCD_CMD_DISP_ON_OFF 0xae
33#define PX_LCD_CMD_DISP_START_LINE_SET 0x40
34#define PX_LCD_CMD_PAGE_ADR_SET 0xb0
35#define PX_LCD_CMD_COL_ADR_SET_HI 0x10
36#define PX_LCD_CMD_COL_ADR_SET_LO 0x00
37#define PX_LCD_CMD_ADC_SEL 0xa0
38#define PX_LCD_CMD_DISP_NORMAL_REVERSE 0xa6
39#define PX_LCD_CMD_DISP_ALL_ON_OFF 0xa4
40#define PX_LCD_CMD_BIAS_SET 0xa2
41#define PX_LCD_CMD_RST 0xe2
42#define PX_LCD_CMD_COM_OUT_MODE_SEL 0xc0
43#define PX_LCD_CMD_PWR_CTL_SET 0x28
44#define PX_LCD_CMD_V_REG_RES_RATIO_SET 0x20
45#define PX_LCD_CMD_VOL_MODE_SET 0x81
46#define PX_LCD_CMD_VOL_REG_SET 0x00
47#define PX_LCD_CMD_STATIC_IND_ON_OFF 0xac
48#define PX_LCD_CMD_STATIC_IND_REG_SET 0x00
49#define PX_LCD_CMD_BOOSTER_RATIO_SET 0xf8
52#define PX_LCD_ST7565P_MAX_NR_OF_COLS 132
53#define PX_LCD_ST7565P_MAX_NR_OF_ROWS 65
66static void px_lcd_wr_control_data(uint8_t data)
79 px_lcd_spi_handle = handle;
87 px_lcd_wr_control_data(PX_LCD_CMD_BIAS_SET | 0);
89 px_lcd_wr_control_data(PX_LCD_CMD_COM_OUT_MODE_SEL | 0);
91#if PX_LCD_CFG_ROT_180_DEG
93 px_lcd_wr_control_data(PX_LCD_CMD_ADC_SEL | 1);
96 px_lcd_wr_control_data(PX_LCD_CMD_ADC_SEL | 0);
100 px_lcd_wr_control_data(PX_LCD_CMD_DISP_START_LINE_SET | 0);
102 px_lcd_wr_control_data(PX_LCD_CMD_PWR_CTL_SET | 0x7);
104 px_lcd_wr_control_data(PX_LCD_CMD_V_REG_RES_RATIO_SET | 0x3);
106 px_lcd_wr_control_data(PX_LCD_CMD_VOL_MODE_SET);
108 px_lcd_wr_control_data(47);
110 px_lcd_wr_control_data(PX_LCD_CMD_DISP_ALL_ON_OFF | 0);
112 px_lcd_wr_control_data(PX_LCD_CMD_DISP_NORMAL_REVERSE | 0);
116 px_lcd_wr_control_data(PX_LCD_CMD_DISP_ON_OFF | 1);
141#if PX_LCD_CFG_ROT_180_DEG
146 px_lcd_wr_control_data(PX_LCD_CMD_COL_ADR_SET_HI | ((col & 0xf0) >> 4));
148 px_lcd_wr_control_data(PX_LCD_CMD_COL_ADR_SET_LO | (col & 0x0f));
153#if !PX_LCD_CFG_ROT_180_DEG
157 px_lcd_wr_control_data(PX_LCD_CMD_PAGE_ADR_SET | 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.
#define PX_LOG_D(format,...)
Macro to display a formatted DEBUG message.
#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.