luat_lcd.h 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. #ifndef LUAT_LCD
  2. #define LUAT_LCD
  3. #include "luat_base.h"
  4. #include "luat_spi.h"
  5. #include "u8g2.h"
  6. #define WHITE 0xFFFF
  7. #define BLACK 0x0000
  8. #define BLUE 0x001F
  9. #define BRED 0XF81F
  10. #define GRED 0XFFE0
  11. #define GBLUE 0X07FF
  12. #define RED 0xF800
  13. #define MAGENTA 0xF81F
  14. #define GREEN 0x07E0
  15. #define CYAN 0x7FFF
  16. #define YELLOW 0xFFE0
  17. #define BROWN 0XBC40
  18. #define BRRED 0XFC07
  19. #define GRAY 0X8430
  20. #define GRAY175 0XAD75
  21. #define GRAY151 0X94B2
  22. #define GRAY187 0XBDD7
  23. #define GRAY240 0XF79E
  24. #ifndef LUAT_LCD_COLOR_DEPTH
  25. #define LUAT_LCD_COLOR_DEPTH 16
  26. #endif
  27. #if (LUAT_LCD_COLOR_DEPTH == 32)
  28. #define luat_color_t uint32_t
  29. #elif (LUAT_LCD_COLOR_DEPTH == 16)
  30. #define luat_color_t uint16_t
  31. #elif (LUAT_LCD_COLOR_DEPTH == 8)
  32. #define luat_color_t uint8_t
  33. #else
  34. #error "no supprt color depth"
  35. #endif
  36. #define LUAT_LCD_SPI_DEVICE 255
  37. struct luat_lcd_opts;
  38. typedef struct luat_lcd_conf {
  39. uint8_t port;
  40. uint8_t pin_dc;
  41. uint8_t pin_pwr;
  42. uint8_t pin_rst;
  43. uint8_t direction;//方向
  44. uint32_t w;
  45. uint32_t h;
  46. uint32_t buffer_size;
  47. uint32_t dc_delay_us;
  48. uint8_t xoffset;//偏移
  49. uint8_t yoffset;//偏移
  50. u8g2_t luat_lcd_u8g2 ;
  51. struct luat_lcd_opts* opts;
  52. luat_spi_device_t* lcd_spi_device;
  53. void* userdata;
  54. } luat_lcd_conf_t;
  55. typedef struct luat_lcd_opts {
  56. const char* name;
  57. int (*init)(luat_lcd_conf_t* conf);
  58. } luat_lcd_opts_t;
  59. int lcd_write_cmd(luat_lcd_conf_t* conf,const uint8_t cmd);
  60. int lcd_write_data(luat_lcd_conf_t* conf,const uint8_t data);
  61. int lcd_write_half_word(luat_lcd_conf_t* conf,const luat_color_t da);
  62. luat_lcd_conf_t* luat_lcd_get_default(void);
  63. const char* luat_lcd_name(luat_lcd_conf_t* conf);
  64. int luat_lcd_init(luat_lcd_conf_t* conf);
  65. int luat_lcd_close(luat_lcd_conf_t* conf);
  66. int luat_lcd_display_on(luat_lcd_conf_t* conf);
  67. int luat_lcd_display_off(luat_lcd_conf_t* conf);
  68. int luat_lcd_sleep(luat_lcd_conf_t* conf);
  69. int luat_lcd_wakeup(luat_lcd_conf_t* conf);
  70. int luat_lcd_inv_off(luat_lcd_conf_t* conf);
  71. int luat_lcd_inv_on(luat_lcd_conf_t* conf);
  72. int luat_lcd_set_address(luat_lcd_conf_t* conf,uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);
  73. int luat_lcd_set_color(luat_color_t back, luat_color_t fore);
  74. int luat_lcd_draw(luat_lcd_conf_t* conf, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, luat_color_t* color);
  75. int luat_lcd_draw_no_block(luat_lcd_conf_t* conf, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, luat_color_t* color, uint8_t last_flush);
  76. int luat_lcd_clear(luat_lcd_conf_t* conf,luat_color_t color);
  77. int luat_lcd_draw_fill(luat_lcd_conf_t* conf,uint16_t x1,uint16_t y1,uint16_t x2,uint16_t y2,luat_color_t color);
  78. int luat_lcd_draw_point(luat_lcd_conf_t* conf, uint16_t x, uint16_t y, luat_color_t color);
  79. int luat_lcd_draw_line(luat_lcd_conf_t* conf,uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, luat_color_t color);
  80. int luat_lcd_draw_vline(luat_lcd_conf_t* conf, uint16_t x, uint16_t y,uint16_t h, luat_color_t color);
  81. int luat_lcd_draw_hline(luat_lcd_conf_t* conf, uint16_t x, uint16_t y,uint16_t h, luat_color_t color);
  82. int luat_lcd_draw_rectangle(luat_lcd_conf_t* conf,uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, luat_color_t color);
  83. int luat_lcd_draw_circle(luat_lcd_conf_t* conf,uint16_t x0, uint16_t y0, uint8_t r, luat_color_t color);
  84. int luat_lcd_show_image(luat_lcd_conf_t* conf,uint16_t x, uint16_t y, uint16_t length, uint16_t wide, const luat_color_t *image,uint8_t swap);
  85. void luat_lcd_execute_cmds(luat_lcd_conf_t* conf, uint32_t* cmds, uint32_t count);
  86. typedef struct luat_lcd_custom {
  87. size_t init_cmd_count;
  88. uint32_t *initcmd; // 实际命令长度与init_cmd_count相同
  89. }luat_lcd_custom_t;
  90. #endif