1 
2 
3 
4 #ifndef __CH57x_LCD_H__
5 #define __CH57x_LCD_H__
6 
7 #ifdef __cplusplus
8  extern "C" {
9 #endif
10 
11 #include "CH579SFR.h"
12 #include "core_cm0.h"
13 
14 /**
15   * @brief  Configuration LCD driver power
16   */
17 typedef enum
18 {
19     LCD_PS_3V3 = 0,                 // 3.3V 驱动
20     LCD_PS_2V5,                     // 2.5V 驱动
21 }LCDDrvPowerTypeDef;
22 
23 
24 /**
25   * @brief  Configuration LCD bias
26   */
27 typedef enum
28 {
29     LCD_1_2_Bias = 0,               // 2级分压
30     LCD_1_3_Bias,                   // 3级分压
31 }LCDBiasTypeDef;
32 
33 /**
34   * @brief  Configuration LCD duty
35   */
36 typedef enum
37 {
38     LCD_1_2_Duty = 0,               // COM0-COM1
39     LCD_1_3_Duty,                   // COM0-COM2
40     LCD_1_4_Duty,                   // COM0-COM3
41 }LCDDutyTypeDef;
42 
43 /**
44   * @brief  Configuration LCD scan clk
45   */
46 typedef enum
47 {
48     LCD_CLK_256 = 0,                // 256Hz
49     LCD_CLK_512,                    // 512Hz
50     LCD_CLK_1000,                   // 1KHz
51     LCD_CLK_128                     // 128Hz
52 }LCDSCANCLKTypeDef;
53 
54 
55 void LCD_DefInit( void );               /* LCD段式屏驱动默认初始化配置 */
56 
57 #define LCD_PowerDown()         (R8_LCD_CTRL_MOD &= ~(RB_LCD_POWER_ON|RB_SYS_POWER_ON))     /* LCD功能模块关闭 */
58 #define LCD_PowerOn()           (R8_LCD_CTRL_MOD |= (RB_LCD_POWER_ON|RB_SYS_POWER_ON))      /* LCD功能模块开启 */
59 
60 // 输入值参考 LCDDrvPowerTypeDef
61 #define LCD_PowerCfg( d )       (R8_LCD_CTRL_MOD=R8_LCD_CTRL_MOD&0x7F|(d<<7))               /* 配置LCD的 供电电压选择 */
62 // 输入值参考 LCDSCANCLKTypeDef
63 #define LCD_ScanCLKCfg( d )     (R8_LCD_CTRL_MOD=R8_LCD_CTRL_MOD&0x9F|(d<<5))               /* 配置LCD的 扫描时钟选择 */
64 // 输入值参考 LCDDutyTypeDef
65 #define LCD_DutyCfg( d )        (R8_LCD_CTRL_MOD=R8_LCD_CTRL_MOD&0xE7|(d<<3))               /* 配置LCD的 duty选择 */
66 // 输入值参考 LCDBiasTypeDef
67 #define LCD_BiasCfg( d )        (R8_LCD_CTRL_MOD=R8_LCD_CTRL_MOD&0xFB|(d<<2))               /* 配置LCD的 bias选择 */
68 
69 #define LCD_WriteData0( d )     (R32_LCD_RAM0=R32_LCD_RAM0&0xffffff00|((UINT32)d))          /* 填充SEG0驱动数值 */
70 #define LCD_WriteData1( d )     (R32_LCD_RAM0=R32_LCD_RAM0&0xffff00ff|((UINT32)d<<8))       /* 填充SEG1驱动数值 */
71 #define LCD_WriteData2( d )     (R32_LCD_RAM0=R32_LCD_RAM0&0xff00ffff|((UINT32)d<<16))      /* 填充SEG2驱动数值 */
72 #define LCD_WriteData3( d )     (R32_LCD_RAM0=R32_LCD_RAM0&0x00ffffff|((UINT32)d<<24))      /* 填充SEG3驱动数值 */
73 
74 #define LCD_WriteData4( d )     (R32_LCD_RAM1=R32_LCD_RAM1&0xffffff00|((UINT32)d))          /* 填充SEG4驱动数值 */
75 #define LCD_WriteData5( d )     (R32_LCD_RAM1=R32_LCD_RAM1&0xffff00ff|((UINT32)d<<8))       /* 填充SEG5驱动数值 */
76 #define LCD_WriteData6( d )     (R32_LCD_RAM1=R32_LCD_RAM1&0xff00ffff|((UINT32)d<<16))      /* 填充SEG6驱动数值 */
77 #define LCD_WriteData7( d )     (R32_LCD_RAM1=R32_LCD_RAM1&0x00ffffff|((UINT32)d<<24))      /* 填充SEG7驱动数值 */
78 
79 #define LCD_WriteData8( d )     (R32_LCD_RAM2=R32_LCD_RAM2&0xffffff00|((UINT32)d))          /* 填充SEG8驱动数值 */
80 #define LCD_WriteData9( d )     (R32_LCD_RAM2=R32_LCD_RAM2&0xffff00ff|((UINT32)d<<8))       /* 填充SEG9驱动数值 */
81 #define LCD_WriteData10( d )        (R32_LCD_RAM2=R32_LCD_RAM2&0xff00ffff|((UINT32)d<<16))      /* 填充SEG10驱动数值 */
82 #define LCD_WriteData11( d )        (R32_LCD_RAM2=R32_LCD_RAM2&0x00ffffff|((UINT32)d<<24))      /* 填充SEG11驱动数值 */
83 
84 
85 
86 #ifdef __cplusplus
87 }
88 #endif
89 
90 #endif  // __CH57x_LCD_H__
91 
92