update
This commit is contained in:
45
disp.c
45
disp.c
@@ -6,8 +6,8 @@
|
||||
#include <i2c.h>
|
||||
#include <disp.h>
|
||||
|
||||
#define DISP_FONT basefont
|
||||
#define DISP_I2CADDR (0x78 >> 1)
|
||||
#define DISP_FONT basefont
|
||||
#define DISP_I2CADDR 0x78
|
||||
|
||||
#define DISP_WIDTH 128
|
||||
#define DISP_HEIGHT 64
|
||||
@@ -23,15 +23,6 @@
|
||||
#define DISP_SEND_CMD 0x00
|
||||
#define DISP_SEND_DATA 0x40
|
||||
|
||||
const uint8_t basefont[DISP_MAX_CHARCODE - DISP_MIN_CHARCODE][DISP_CHAR_ARRLEN] PROGMEM;
|
||||
|
||||
typedef struct {
|
||||
uint8_t max_posx;
|
||||
uint8_t max_posy;
|
||||
} disp_t;
|
||||
|
||||
disp_t disp;
|
||||
|
||||
#define SSD1306_SETLOWCOLUMN 0x00 /* Set Lower Column Start Address for Page Addressing Mode. */
|
||||
#define SSD1306_SETHIGHCOLUMN 0x10 /* Set Higher Column Start Address for Page Addressing Mode. */
|
||||
#define SSD1306_MEMORYMODE 0x20 /* Set Memory Addressing Mode. */
|
||||
@@ -60,6 +51,19 @@ disp_t disp;
|
||||
#define SSD1306_DEACTIVATE_SCROLL 0x2E /* Deactivate scroll */
|
||||
#define SSD1306_NOP 0XE3 /* No Operation Command. */
|
||||
|
||||
const uint8_t basefont[DISP_MAX_CHARCODE - DISP_MIN_CHARCODE][DISP_CHAR_ARRLEN] PROGMEM;
|
||||
|
||||
static void disp_send_cmd(uint8_t cmd[], uint8_t size);
|
||||
static void disp_send_data(uint8_t data[], uint16_t size);
|
||||
|
||||
typedef struct {
|
||||
uint8_t max_posx;
|
||||
uint8_t max_posy;
|
||||
} disp_t;
|
||||
|
||||
disp_t disp;
|
||||
|
||||
|
||||
const uint8_t init_sequence[] PROGMEM = {
|
||||
SSD1306_DISPLAYOFF,
|
||||
SSD1306_MEMORYMODE, 0x00,
|
||||
@@ -83,20 +87,22 @@ const uint8_t init_sequence[] PROGMEM = {
|
||||
};
|
||||
|
||||
|
||||
void disp_send_cmd(uint8_t cmd[], uint8_t size) {
|
||||
i2c_send_addr((DISP_I2CADDR << 1) | 0);
|
||||
i2c_send_data(DISP_SEND_CMD);
|
||||
static void disp_send_cmd(uint8_t cmd[], uint8_t size) {
|
||||
i2c_start();
|
||||
i2c_write(DISP_I2CADDR);
|
||||
i2c_write(DISP_SEND_CMD);
|
||||
for (uint8_t i = 0; i < size; i++) {
|
||||
i2c_send_data(cmd[i]);
|
||||
i2c_write(cmd[i]);
|
||||
}
|
||||
i2c_stop();
|
||||
}
|
||||
|
||||
void disp_send_data(uint8_t data[], uint16_t size) {
|
||||
i2c_send_addr((DISP_I2CADDR << 1) | 0);
|
||||
i2c_send_data(DISP_SEND_DATA);
|
||||
static void disp_send_data(uint8_t data[], uint16_t size) {
|
||||
i2c_start();
|
||||
i2c_write(DISP_I2CADDR);
|
||||
i2c_write(DISP_SEND_DATA);
|
||||
for (uint16_t i = 0; i < size; i++) {
|
||||
i2c_send_data(data[i]);
|
||||
i2c_write(data[i]);
|
||||
}
|
||||
i2c_stop();
|
||||
}
|
||||
@@ -174,7 +180,6 @@ void disp_clear(void) {
|
||||
|
||||
void disp_set_invert(bool invert) {
|
||||
uint8_t commands[1];
|
||||
|
||||
if (invert == true) {
|
||||
commands[0] = SSD1306_INVERTDISPLAY;
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user