99 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			99 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /********************************** (C) COPYRIGHT *******************************
 | ||
|  |  * File Name          : CH59x_lcd.h | ||
|  |  * Author             : WCH | ||
|  |  * Version            : V1.0 | ||
|  |  * Date               : 2022/12/05 | ||
|  |  * Description        :  | ||
|  |  ******************************************************************************** | ||
|  |  * Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd. | ||
|  |  * Attention: This software (modified or not) and binary are used for  | ||
|  |  * microcontroller manufactured by Nanjing Qinheng Microelectronics. | ||
|  |  *******************************************************************************/ | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifndef __CH59x_LCD_H__
 | ||
|  | #define __CH59x_LCD_H__
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  |  extern "C" { | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #include "CH592SFR.h"
 | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief  Configuration LCD driver power | ||
|  |   */ | ||
|  | typedef enum | ||
|  | { | ||
|  | 	LCD_PS_3V3 = 0,					// 3.3V 驱动
 | ||
|  | 	LCD_PS_2V5,						// 2.5V 驱动
 | ||
|  | }LCDDrvPowerTypeDef;  | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief  Configuration LCD bias | ||
|  |   */ | ||
|  | typedef enum | ||
|  | { | ||
|  | 	LCD_1_2_Bias = 0,				// 2级分压
 | ||
|  | 	LCD_1_3_Bias,					// 3级分压
 | ||
|  | }LCDBiasTypeDef; | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief  Configuration LCD duty | ||
|  |   */ | ||
|  | typedef enum | ||
|  | { | ||
|  | 	LCD_1_2_Duty = 0,				// COM0-COM1
 | ||
|  | 	LCD_1_3_Duty,					// COM0-COM2
 | ||
|  | 	LCD_1_4_Duty,					// COM0-COM3
 | ||
|  | }LCDDutyTypeDef; | ||
|  | 
 | ||
|  | /**
 | ||
|  |   * @brief  Configuration LCD scan clk | ||
|  |   */ | ||
|  | typedef enum | ||
|  | { | ||
|  | 	LCD_CLK_256 = 0,				// 256Hz
 | ||
|  | 	LCD_CLK_512,					// 512Hz
 | ||
|  | 	LCD_CLK_1000,					// 1KHz
 | ||
|  | 	LCD_CLK_128						// 128Hz
 | ||
|  | }LCDSCANCLKTypeDef; | ||
|  | 	  | ||
|  | /* LCD段式屏驱动初始化配置 */ | ||
|  | void LCD_Init(LCDDutyTypeDef duty, LCDBiasTypeDef bias); | ||
|  | 
 | ||
|  | #define	LCD_PowerDown()			(R32_LCD_CMD &= ~(RB_LCD_ON | RB_LCD_SYS_EN))		/* LCD功能模块关闭 */
 | ||
|  | #define	LCD_PowerOn()			(R32_LCD_CMD |= (RB_LCD_ON | RB_LCD_SYS_EN))		/* LCD功能模块开启 */
 | ||
|  | 
 | ||
|  | // 输入值参考 LCDDrvPowerTypeDef
 | ||
|  | #define LCD_PowerCfg( d )		(R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_VLCD_SEL) | (d<<7))			/* 配置LCD的 供电电压选择 */
 | ||
|  | // 输入值参考 LCDSCANCLKTypeDef
 | ||
|  | #define LCD_ScanCLKCfg( d )		(R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_SCAN_CLK) | (d<<5))			/* 配置LCD的 扫描时钟选择 */
 | ||
|  | // 输入值参考 LCDDutyTypeDef
 | ||
|  | #define LCD_DutyCfg( d )		(R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_DUTY) | (d<<3))				/* 配置LCD的 duty选择 */
 | ||
|  | // 输入值参考 LCDBiasTypeDef
 | ||
|  | #define LCD_BiasCfg( d )		(R32_LCD_CMD = (R32_LCD_CMD & ~RB_LCD_BIAS) | (d<<2))				/* 配置LCD的 bias选择 */
 | ||
|  | 	  | ||
|  | #define LCD_WriteData0( d )		(R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffffff00) | ((UINT32)d))			/* 填充SEG0驱动数值 */
 | ||
|  | #define LCD_WriteData1( d )		(R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xffff00ff) | ((UINT32)d<<8))		/* 填充SEG1驱动数值 */
 | ||
|  | #define LCD_WriteData2( d )		(R32_LCD_RAM0 = (R32_LCD_RAM0 & 0xff00ffff) | ((UINT32)d<<16))		/* 填充SEG2驱动数值 */
 | ||
|  | #define LCD_WriteData3( d )		(R32_LCD_RAM0 = (R32_LCD_RAM0 & 0x00ffffff) | ((UINT32)d<<24))		/* 填充SEG3驱动数值 */
 | ||
|  | 	  | ||
|  | #define LCD_WriteData4( d )		(R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffffff00) | ((UINT32)d))			/* 填充SEG4驱动数值 */
 | ||
|  | #define LCD_WriteData5( d )		(R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xffff00ff) | ((UINT32)d<<8))		/* 填充SEG5驱动数值 */
 | ||
|  | #define LCD_WriteData6( d )		(R32_LCD_RAM1 = (R32_LCD_RAM1 & 0xff00ffff) | ((UINT32)d<<16))		/* 填充SEG6驱动数值 */
 | ||
|  | #define LCD_WriteData7( d )		(R32_LCD_RAM1 = (R32_LCD_RAM1 & 0x00ffffff) | ((UINT32)d<<24))		/* 填充SEG7驱动数值 */
 | ||
|  | 	  | ||
|  | #define LCD_WriteData8( d )		(R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffffff00) | ((UINT32)d))			/* 填充SEG8驱动数值 */
 | ||
|  | #define LCD_WriteData9( d )		(R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xffff00ff) | ((UINT32)d<<8))		/* 填充SEG9驱动数值 */
 | ||
|  | #define LCD_WriteData10( d )	(R32_LCD_RAM2 = (R32_LCD_RAM2 & 0xff00ffff) | ((UINT32)d<<16))		/* 填充SEG10驱动数值 */
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  | #ifdef __cplusplus
 | ||
|  | } | ||
|  | #endif
 | ||
|  | 
 | ||
|  | #endif  // __CH59x_LCD_H__	
 | ||
|  | 
 |