12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- /* ---------------------------------------------
- *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 */
|