ssd1327.h 3.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /* ---------------------------------------------
  2. *ad0x0, 2020
  3. я взял какую-то библиотеку из инета, вырезал тупую ненужную херню
  4. и замутил ряд оптимизаций. Например, символы рисуются не побайтово,
  5. а отправляются кусками по 16 байт - ускорение бешенное
  6. Шрифт один единственный 8х10, не стал его можно масштабировать к 16х20,
  7. хотя в будущем мож допилю такую фичу
  8. си с плюсами нет, по этому подверг API страшному изврату, чтобы отрисовывать
  9. на разные устройства ОНОВРЕМЕННО (фриртос не такое Г как я думал)
  10. * ----------------------------------------------
  11. */
  12. #ifndef __SSD1327_H
  13. #define __SSD1327_H
  14. #include "stdint.h"
  15. #include "../i2c/ad0x0_i2c.h"
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. #define SSD1306_I2C_ADDRESS ( 0x78 )
  20. /* size */
  21. #define SSD1306_LCDWIDTH 128
  22. #define SSD1306_LCDHEIGHT 128
  23. /* Commands */
  24. #define SSD1306_SETCONTRAST 0x81
  25. #define SSD1306_DISPLAYALLON_RESUME 0xA4
  26. #define SSD1327_DISPLAYALLON 0xA5
  27. #define SSD1306_NORMALDISPLAY 0xA6
  28. #define SSD1306_INVERTDISPLAY 0xA7
  29. #define SSD1327_DISPLAYOFF 0xAE
  30. #define SSD1327_DISPLAYON 0xAF
  31. #define SSD1327_COLUMNADDR 0x15
  32. #define SSD1327_PAGEADDR 0x75
  33. #define SSD1327_SEGREMAP 0xA0
  34. #define COMAND 0x00
  35. #define DATA 0x40
  36. #define DATA_BUF 0xC0
  37. #define USE_BACKBUFFER 1
  38. #define BUF_HEIGHT 128
  39. typedef struct{
  40. unsigned int out;
  41. float t;
  42. uint8_t i2cbuf[2];
  43. //char buff[2048]; //буфер дисплея
  44. uint8_t char_x,char_y;
  45. uint8_t font_w,font_h;
  46. void (*clear)(void);
  47. void (*print_at)(unsigned char x, unsigned char y,unsigned char* buf, unsigned char size);
  48. void (*ad0x0_i2c_push)(ADQ_t _ctype,uint8_t _cbyte);
  49. uint8_t (*ad0x0_i2c_get_ext_async2)(uint8_t *_p_out_handle,void **_p_out_i2c_ext_t);
  50. void (*command)(unsigned char ControByte, unsigned char DataByte);
  51. void (*command_buf)(unsigned char *pbuf,uint8_t count);
  52. void (*command2)(unsigned char ControByte, unsigned char DataByte1, unsigned char DataByte2);
  53. void (*command3)(unsigned char ControByte, unsigned char DataByte1, unsigned char DataByte2, unsigned char DataByte3);
  54. void (*OLED_test)(void);
  55. void (*OLED_test2)(void);
  56. void (*OLED_test3)(void);
  57. }oled_desc_s;
  58. /* --- Прототипы функций -------------------------------- */
  59. // void delay_ms( unsigned int ms );
  60. // void OLED_CharBig(unsigned int c); /* вывод крупных символов */
  61. // void OLED_Printf(unsigned char* buf, unsigned char size); /* печатает строку с размерами - 0 самый мелкий 2 - увеличиный - 3 самый большой(только для цифр) */
  62. // void OLED_DrawImage(unsigned char num_image); /* выводит картинку из флеш */
  63. // void OLED_Bat(unsigned char y,unsigned char x, unsigned char z); /* рисует батарейку по координатам z - от 0 до 10 делений */
  64. // void OLED_Mode(char set_mode); /* 1 - inverted / 0 - normal */
  65. // void OLED_Sleep(char set); /* 1 - on sleep / 0 - off sleep */
  66. void OLED_Init2(I2C_TypeDef * _I2C_BASE, oled_desc_s *p_desc);
  67. unsigned char * i16_2s(int16_t value, unsigned char *buffer);
  68. unsigned char * i32_2s(int32_t value, unsigned char *buffer);
  69. #ifdef USE_BACKBUFFER
  70. void buf_render(oled_desc_s *p_desc);
  71. #endif
  72. #ifdef __cplusplus
  73. }
  74. #endif
  75. #endif /* __SSD1327_H */