lcd.h 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. /******************************************************************************
  2. * Copyright (C) 2021, Xiaohua Semiconductor Co., Ltd. All rights reserved.
  3. *
  4. * This software component is licensed by XHSC under BSD 3-Clause license
  5. * (the "License"); You may not use this file except in compliance with the
  6. * License. You may obtain a copy of the License at:
  7. * opensource.org/licenses/BSD-3-Clause
  8. *
  9. ******************************************************************************/
  10. /******************************************************************************
  11. * @file lcd.h
  12. *
  13. * @brief Header file for LCD functions
  14. *
  15. * @author MADS Team
  16. *
  17. ******************************************************************************/
  18. #ifndef __LCD_H__
  19. #define __LCD_H__
  20. /******************************************************************************/
  21. /* Include files */
  22. /******************************************************************************/
  23. #include "ddl.h"
  24. /******************************************************************************
  25. ** Global type definitions
  26. *****************************************************************************/
  27. /**
  28. ******************************************************************************
  29. ** \brief LCD bias源选择
  30. *****************************************************************************/
  31. typedef enum
  32. {
  33. LcdInResHighPower = 6,//内部电阻分压,大功耗模式
  34. LcdInResLowPower = 4,//内部电阻分压,小功耗模式
  35. LcdInResMidPower = 2,//内部电阻分压,中功耗模式
  36. LcdExtCap = 1,//电容分压模式,需要外部电路配合
  37. LcdExtRes = 0,//外部电阻模式,需要外部电路配合
  38. }en_lcd_biassrc_t;
  39. /**
  40. ******************************************************************************
  41. ** \brief LCD duty选择 LCD_CR0 Duty
  42. *****************************************************************************/
  43. typedef enum
  44. {
  45. LcdStatic = 0u, // 静态显示
  46. LcdDuty2 = 1u, // 1/2duty
  47. LcdDuty3 = 2u, // 1/3duty
  48. LcdDuty4 = 3u, // 1/4duty
  49. LcdDuty6 = 5u, // 1/6duty
  50. LcdDuty8 = 7u, // 1/8duty
  51. }en_lcd_duty_t;
  52. /**
  53. ******************************************************************************
  54. ** \brief LCD bias配置位 LCD_CR0 Bias
  55. *****************************************************************************/
  56. typedef enum
  57. {
  58. LcdBias3 = 0u, // 1/3 BIAS
  59. LcdBias2 = 1u, // 1/2 BIAS
  60. }en_lcd_bias_t;
  61. /**
  62. ******************************************************************************
  63. ** \brief LCD 电压泵时钟频率选择 LCD_CR0 CpClk
  64. *****************************************************************************/
  65. typedef enum
  66. {
  67. LcdClk2k = 0u, // 2k
  68. LcdClk4k = 1u, // 4k
  69. LcdClk8k = 2u, // 8k
  70. LcdClk16k = 3u // 16k
  71. }en_lcd_cpclk_t;
  72. /**
  73. ******************************************************************************
  74. ** \brief LCD 扫描频率选择 LCD_CR0 LcdClk
  75. *****************************************************************************/
  76. typedef enum
  77. {
  78. LcdClk64hz = 0u, // 64hz
  79. LcdClk128hz = 1u, // 128hz
  80. LcdClk256hz = 2u, // 256hz
  81. LcdClk512hz = 3u // 512hz
  82. }en_lcd_scanclk_t;
  83. /**
  84. ******************************************************************************
  85. ** \brief LCD 使能控制 LCD_CR0 EN
  86. *****************************************************************************/
  87. typedef enum
  88. {
  89. LcdEnable =1u, //LCD使能
  90. LcdDisable =0u //LCD禁止
  91. }en_lcd_en_t;
  92. /**
  93. ******************************************************************************
  94. ** \brief LCD显示模式 LCD_CR1 Mode
  95. *****************************************************************************/
  96. typedef enum
  97. {
  98. LcdMode0 = 0,///<模式0
  99. LcdMode1 = 1,///<模式1
  100. }en_lcd_dispmode_t;
  101. /**
  102. ******************************************************************************
  103. ** \brief LCD时钟源选择 LCD_CR1 ClkSrc
  104. *****************************************************************************/
  105. typedef enum
  106. {
  107. LcdXTL = 1,///<外部XTL
  108. LcdRCL = 0,///<内部RCL
  109. }en_lcd_clk_t;
  110. /**
  111. ******************************************************************************
  112. ** \brief LCD CR1寄存器的使能位、标志位
  113. *****************************************************************************/
  114. typedef enum
  115. {
  116. LcdBlinkEn = 6u, //LCD闪屏配置位
  117. LcdIe = 9u, //LCD 中断使能位
  118. LcdDmaEn = 10u, //LCD DMA硬件触发使能位
  119. }en_cr1_t;
  120. /**
  121. ******************************************************************************
  122. ** \brief LCD显示SEG COM端口寄存器的配置
  123. *****************************************************************************/
  124. typedef struct
  125. {
  126. uint32_t u32Seg0_31; ///<SEG0-31配置
  127. union{
  128. uint32_t seg32_51_com0_8;
  129. struct
  130. {
  131. uint32_t Seg32_35 :4;
  132. uint32_t Seg36Com7 :1;
  133. uint32_t Seg37Com6 :1;
  134. uint32_t Seg38Com5 :1;
  135. uint32_t Seg39Com4 :1;
  136. uint32_t Seg40 :1;
  137. uint32_t Seg41 :1;
  138. uint32_t Seg42 :1;
  139. uint32_t Seg43 :1;
  140. uint32_t Mux :1;
  141. uint32_t Seg44 :1;
  142. uint32_t Seg45 :1;
  143. uint32_t Seg46 :1;
  144. uint32_t Seg47 :1;
  145. uint32_t Seg48 :1;
  146. uint32_t Seg49 :1;
  147. uint32_t Seg50 :1;
  148. uint32_t Seg51 :1;
  149. uint32_t Com0_3 :4;
  150. }segcom_bit;
  151. }stc_seg32_51_com0_8_t;
  152. }stc_lcd_segcom_t;
  153. /**
  154. ******************************************************************************
  155. ** \brief LCD端口配置参数
  156. *****************************************************************************/
  157. typedef struct stc_lcd_segcompara
  158. {
  159. en_lcd_duty_t LcdDuty; ///<占空比
  160. en_lcd_biassrc_t LcdBiasSrc; ///<时钟源
  161. uint8_t u8MaxSeg; ///<最大SEG口
  162. }stc_lcd_segcompara_t;
  163. /**
  164. ******************************************************************************
  165. ** \brief I2C初始化配置结构
  166. *****************************************************************************/
  167. typedef struct
  168. {
  169. en_lcd_biassrc_t LcdBiasSrc; //偏置源选择
  170. en_lcd_duty_t LcdDuty; //duty配置选择
  171. en_lcd_bias_t LcdBias; //偏压选择
  172. en_lcd_cpclk_t LcdCpClk; //电压泵时钟频率选择
  173. en_lcd_scanclk_t LcdScanClk; //扫描频率选择
  174. en_lcd_dispmode_t LcdMode; //显示模式选择
  175. en_lcd_clk_t LcdClkSrc; //时钟源选择
  176. en_lcd_en_t LcdEn; //LCD使能
  177. }stc_lcd_cfg_t;
  178. /*******************************************************************************
  179. ** \brief lcd相关函数声明
  180. ******************************************************************************/
  181. extern boolean_t Lcd_GetItStatus(void);
  182. extern void Lcd_ClearItPendingBit(void);
  183. extern en_result_t Lcd_GetSegCom(stc_lcd_segcompara_t *pstcSegComPara,stc_lcd_segcom_t *pstcSegCom);
  184. extern void Lcd_SetSegCom(stc_lcd_segcom_t *pstcSegCom);
  185. extern void Lcd_Init(stc_lcd_cfg_t *pstcLcdCfg);
  186. extern void Lcd_FullDisp(void);
  187. extern void Lcd_ClearDisp(void);
  188. extern en_result_t Lcd_WriteRam(uint8_t u8Row,uint32_t u32Data);
  189. //@} // LCDGroup
  190. #ifdef __cplusplus
  191. #endif
  192. #endif /* __LCD_H__ */
  193. /******************************************************************************
  194. * EOF (not truncated)
  195. *****************************************************************************/