luat_lcd.h 3.1 KB

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