/* --------------------------------------------- *ad0x0, 2020 я взял какую-то библиотеку из инета, вырезал тупую ненужную херню и замутил ряд оптимизаций. Например, символы рисуются не побайтово, а отправляются кусками по 16 байт - ускорение бешенное Шрифт один единственный 8х10, не стал его можно масштабировать к 16х20, хотя в будущем мож допилю такую фичу си с плюсами нет, по этому подверг API страшному изврату, чтобы отрисовывать на разные устройства ОНОВРЕМЕННО (фриртос не такое Г как я думал) * ---------------------------------------------- */ #ifndef __SSD1327_H #define __SSD1327_H #include "stdint.h" #include "../i2c/ad0x0_i2c.h" #ifdef __cplusplus extern "C" { #endif #define SSD1306_I2C_ADDRESS ( 0x78 ) /* size */ #define SSD1306_LCDWIDTH 128 #define SSD1306_LCDHEIGHT 128 /* Commands */ #define SSD1306_SETCONTRAST 0x81 #define SSD1306_DISPLAYALLON_RESUME 0xA4 #define SSD1327_DISPLAYALLON 0xA5 #define SSD1306_NORMALDISPLAY 0xA6 #define SSD1306_INVERTDISPLAY 0xA7 #define SSD1327_DISPLAYOFF 0xAE #define SSD1327_DISPLAYON 0xAF #define SSD1327_COLUMNADDR 0x15 #define SSD1327_PAGEADDR 0x75 #define SSD1327_SEGREMAP 0xA0 #define COMAND 0x00 #define DATA 0x40 #define DATA_BUF 0xC0 #define USE_BACKBUFFER 1 #define BUF_HEIGHT 128 typedef struct{ unsigned int out; float t; uint8_t i2cbuf[2]; //char buff[2048]; //буфер дисплея uint8_t char_x,char_y; uint8_t font_w,font_h; void (*clear)(void); void (*print_at)(unsigned char x, unsigned char y,unsigned char* buf, unsigned char size); void (*ad0x0_i2c_push)(ADQ_t _ctype,uint8_t _cbyte); uint8_t (*ad0x0_i2c_get_ext_async2)(uint8_t *_p_out_handle,void **_p_out_i2c_ext_t); void (*command)(unsigned char ControByte, unsigned char DataByte); void (*command_buf)(unsigned char *pbuf,uint8_t count); void (*command2)(unsigned char ControByte, unsigned char DataByte1, unsigned char DataByte2); void (*command3)(unsigned char ControByte, unsigned char DataByte1, unsigned char DataByte2, unsigned char DataByte3); void (*OLED_test)(void); void (*OLED_test2)(void); void (*OLED_test3)(void); }oled_desc_s; /* --- Прототипы функций -------------------------------- */ // void delay_ms( unsigned int ms ); // void OLED_CharBig(unsigned int c); /* вывод крупных символов */ // void OLED_Printf(unsigned char* buf, unsigned char size); /* печатает строку с размерами - 0 самый мелкий 2 - увеличиный - 3 самый большой(только для цифр) */ // void OLED_DrawImage(unsigned char num_image); /* выводит картинку из флеш */ // void OLED_Bat(unsigned char y,unsigned char x, unsigned char z); /* рисует батарейку по координатам z - от 0 до 10 делений */ // void OLED_Mode(char set_mode); /* 1 - inverted / 0 - normal */ // void OLED_Sleep(char set); /* 1 - on sleep / 0 - off sleep */ void OLED_Init2(I2C_TypeDef * _I2C_BASE, oled_desc_s *p_desc); unsigned char * i16_2s(int16_t value, unsigned char *buffer); unsigned char * i32_2s(int32_t value, unsigned char *buffer); #ifdef USE_BACKBUFFER void buf_render(oled_desc_s *p_desc); #endif #ifdef __cplusplus } #endif #endif /* __SSD1327_H */