CH57x_lcd.h 3.4 KB

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