myLcd.h 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. #ifndef __MYLCD_H
  2. #define __MYLCD_H
  3. /* Includes ------------------------------------------------------------------*/
  4. #include "stm32f10x.h"
  5. #define MAX_COLUMN_COUNT 192
  6. #define MAX_PAGE_COUNT 12
  7. typedef enum{
  8. IM_NOMALE = 0, //
  9. IM_INVERSE = 1, //
  10. }inverseMode_te;
  11. typedef enum{
  12. IMG_SRC_VOLLGO = 0, //
  13. }imageSrc_te;
  14. typedef enum{
  15. CMDT_EXT_CMD1 = 0x30, //
  16. CMDT_EXT_CMD2 = 0x31, //
  17. CMDT_EXT_CMD3 = 0x38, //
  18. CMDT_EXT_CMD4 = 0x39, //
  19. }commandType_te;
  20. typedef enum{
  21. HORIZONTAL_LEFT = 0x101, //
  22. HORIZONTAL_CENTER = 0x102, //
  23. HORIZONTAL_RIGHT = 0x103, //
  24. }displayHorizontalMode_te;
  25. typedef enum{
  26. VERTICAL_LEFT = 0x101, //
  27. VERTICAL_CENTER = 0x102, //
  28. VERTICAL_RIGHT = 0x103, //
  29. }displayVerticalMode_te;
  30. typedef struct
  31. {
  32. uint16_t width;
  33. uint16_t heigth;
  34. uint8_t *imageSrc;
  35. }imageParams_ts;
  36. /**
  37. * 扩屏指令 0 一定要调用 @CMDT_EXT_CMD1 才能用扩展指令 0
  38. */
  39. #define LCD_CMD_DISPLAY_ON 0XAF
  40. #define LCD_CMD_DISPLAY_OFF 0XAE
  41. #define LCD_CMD_INVERSE_DISPLAY_ON 0XA7
  42. #define LCD_CMD_INVERSE_DISPLAY_OFF 0XA6
  43. #define LCD_CMD_ALL_PIXEL_ON 0X23
  44. #define LCD_CMD_ALL_PIXEL_OFF 0X22
  45. #define LCD_CMD_DISPLAY_CONTROL 0XCA
  46. //BYTE1,设置 CL 驱动频率: CLD=0
  47. //BYTE2,点空比:Duty=128
  48. //BYTE3,帧周期
  49. #define LCD_CMD_POWER_SAVE_OFF 0X94
  50. #define LCD_CMD_POWER_SAVE_ON 0X95
  51. #define LCD_CMD_PAGE_ADDR_SETTING 0X75
  52. //BYTE1,起始页地址,00h≦ YS≦ 28h
  53. //BYTE2,结束页地址,YS≦ YE≦ 28h每 4 行为 1 页
  54. #define LCD_CMD_CLUMN_ADDR_SETTING 0X15
  55. //BYTE1,起始列地址 00h≦ XS≦ FFh
  56. //BYTE2,结束列地址 XS≦ XE≦ FFh
  57. #define LCD_CMD_SCAN_DIRECTION 0XBC
  58. //BYTE1,0X00:MX、MY=Normal
  59. #define LCD_CMD_WRITE_DISPLAY_DATA 0X5C
  60. //BYTE1,8 位显示数据
  61. #define LCD_CMD_READ_DISPLAY_DATA 0X5D
  62. //BYTE1,8 位显示数据
  63. #define LCD_CMD_PARTIAL_DISPLAY 0XA8
  64. //BYTE1,起始区域地址:00h≤PTS≥A1h
  65. //BYTE2,结束区域地址:00h≤PTE≥A1h
  66. #define LCD_CMD_PARTIAL_DISPLAY_OFF 0XA9
  67. #define LCD_CMD_READ_CHANGE_WRITE_ENABLE 0XE0
  68. #define LCD_CMD_READ_CHANGE_WRITE_DISABLE 0XEE
  69. #define LCD_CMD_SCROLL_AREA_DISPLAY 0XAA //滚动区域设置
  70. //BYTE1,TL[7:0]:起始区域地址
  71. //BYTE2,BL[7:0]:结束区域地址
  72. //BYTE3,NSL[7:0]:指定行数
  73. //BYTE4,SCM[1:0]:显示模式
  74. typedef enum{
  75. SDM_MODE_CENTER = 0, //
  76. SDM_MODE_TOP = 1, //
  77. SDM_MODE_BOTTOM = 2, //
  78. SDM_MODE_WHOLE = 3, //
  79. }scrollDisplayMode_te;
  80. #define LCD_CMD_SCROLL_AREA_DISPLAY_INIT 0XAB //滚动开始初始行设置
  81. //BYTE1,00h≤SL≥A1h
  82. #define LCD_CMD_OSCIL_CIRCUL_ON 0XD1 //开内部振荡电路
  83. #define LCD_CMD_OSCIL_CIRCUL_OFF 0XD1 //关内部振荡电路
  84. #define LCD_CMD_POWER_CONTROL 0X20 //电源控制
  85. //BYTE1,0X0B: VB、VF、VR=1
  86. #define LCD_CMD_SET_VOP 0X81 //设置对比度
  87. //BYTE1,OX26:微调对比度,范围 OX00-OXFF
  88. //BYTE2,OX04:粗调对比度,范围 OX00-0X07先微调再粗调,顺序不能变
  89. #define LCD_CMD_VOP_CONTROL_INC0_04 0XD6 //液晶内部电压控制,VOP 每格增加 0.04V
  90. #define LCD_CMD_VOP_CONTROL_DEC0_04 0XD7 //液晶内部电压控制,VOP 每格减少 0.04V
  91. #define LCD_CMD_READ_REG_VALUE_05 0X7C //读寄存器值 Vop[5:0]
  92. #define LCD_CMD_READ_REG_VALUE_68 0X7D //读寄存器值 Vop[8:6]
  93. #define LCD_CMD_NOP 0X25 //空操作
  94. // #define LCD_CMD_READ_STATUS_REG 0X-- //读状态字节
  95. // #define LCD_CMD_READ_STATUS_REG 0X-- //读状态字节
  96. #define LCD_CMD_DATA_FORMAT_D7_D0 0X08 //数据格式选择,数据 D7→D0
  97. #define LCD_CMD_DATA_FORMAT_D0_D7 0X0C //数据格式选择,数据 D0→D7
  98. #define LCD_CMD_DISPLAY_MODE 0XF0 //显示模式
  99. typedef enum{
  100. DM_MONO_MODE = 0x10, //黑白模式
  101. DM_4GRAY_MODE = 0x11, //灰级度模式
  102. }displayMode_te;
  103. #define LCD_CMD_ICON_RAM_ENABLE 0X77 //启用 ICON RAM
  104. #define LCD_CMD_ICON_RAM_DISABLE 0X76 //禁用 ICON RAM
  105. #define LCD_CMD_SET_DIVCE_ROLE_MASTER 0X6E //主模式(使用主模式)
  106. #define LCD_CMD_SET_DIVCE_ROLE_SLAVER 0X6F // 从模式
  107. /**
  108. * 扩屏指令 1 一定要调用 @CMDT_EXT_CMD2 才能用扩展指令 1
  109. */
  110. #define LCD_CMD_SET_GRAY_LEVEL 0X20
  111. //BYTE1,
  112. //...
  113. //BYTE16,
  114. #define LCD_CMD_SET_LCD_OFFSET_VOL 0X32
  115. //BYTE1,
  116. //BYTE2,BE0,BE1,0X01: 升压电容频率
  117. //BYTE3,BS0,BS1,BS1,0X02: 偏压比,BIAS=1/12
  118. #define LCD_CMD_BOOSTER_LEVEL 0X51 //内建升压倍数设置
  119. //BYTE1,0X7B:10 倍
  120. #define LCD_CMD_VOLTAGE_SELECT_INT 0X41 //LCD 内部升压
  121. // #define LCD_CMD_VOLTAGE_SELECT_XXX 0X40 //未知
  122. // #define LCD_CMD_AUTO_READ 0XD7 //未知
  123. #define LCD_CMD_SET_OTP_RW 0XE0 //控制OTP读写
  124. //BYTE1,0x00,WR/RD=0;使能 OTP 读
  125. // 0x20,WR/RD=1;使能 OTP 写
  126. #define LCD_CMD_SET_OTP_OUT 0XE1 //控制 OTP 出
  127. #define LCD_CMD_SET_OTP_WRITE 0XE2 //写 OTP
  128. #define LCD_CMD_SET_OTP_READ 0XE3 //读 OTP
  129. #define LCD_CMD_SET_OTP_SELECT 0XE4 //OTP 选择控制
  130. //BYTE1,Ctrl=1: 0xc9, 不使能 OTP
  131. // Ctrl=0: 0x89, 使能 OTP
  132. void myLCD_init(void);
  133. void myLCD_setSdaMode(GPIOMode_TypeDef GPIO_Mode);
  134. void myLCD_resetLcd(void);
  135. void myLCD_setGrayLevel(uint8_t level_b, uint8_t level_d);
  136. void myLCD_setVop(uint16_t value);
  137. void myLCD_displayDot(int x, int y);
  138. void myLCD_clearFull(void);
  139. void myLCD_displayBlock(int x,int y);
  140. void myLCD_8x16(inverseMode_te inverseMode, int column, int page, char *text);
  141. void myLCD_str8x16(inverseMode_te inverseMode, int column, int page, char *fmt, ...);
  142. void myLCD_16x16(inverseMode_te inverseMode, uint8_t column, uint8_t page, char *text);
  143. void myLCD_displayImage(inverseMode_te inverseMode, int x, int y, imageSrc_te index);
  144. void myLCD_scroll(scrollDisplayMode_te mode, uint8_t startAddr, uint8_t endAddr, uint8_t pages);
  145. void myLCD_scrollLine(uint8_t pages);
  146. int SHT3X_getPresentValue(int *pTemp, int *pHumit, unsigned char decimalPlaces);
  147. #endif