/* ****************************************************************************** * * @file led.h * @brief led dispaly module * @ic sy8835 * * @version 1.0 * @date 2024/11/01 09:59:40 * @author Alex Xu * * Copyright (c) 2013-2099,Tkplusemi Technology Co.,Ltd. * All Rights Reserved * * History: * Revision Date Author Desc * 1.0.0 2024/11/01 Alex build this file ****************************************************************************** */ #ifndef __LED_H__ #define __LED_H__ /*_____ I N C L U D E S ____________________________________________________*/ #include "define.h" #ifdef LED_DISPLAY #ifdef _DEBUG_LED #define _DEBUG_LED_1 #define _DEBUG_LED_2 #endif /******************************************************************************\ Macro definitions \******************************************************************************/ #define LED_PLUS_TIME 1 sbit pin_LED_1 = P1^0; sbit pin_LED_2 = P1^1; sbit pin_LED_3 = P1^2; sbit pin_LED_4 = P1^3; // LED端口定义 #define LEDR_ON() pin_LED_1 = 1 //LED_1_ON() #define LEDR_OFF() pin_LED_1 = 0 //LED_1_OFF() #define LEDR_TOG() pin_LED_1 = !pin_LED_1 //LED_1_RUN() //LED闪烁最小时间周期单位ms #define LEDG_ON() pin_LED_2 = 1 //LED_2_ON() #define LEDG_OFF() pin_LED_2 = 0 //LED_2_OFF() #define LEDG_TOG() pin_LED_2 = !pin_LED_2 //LED_2_RUN() #define LEDY_ON() pin_LED_3 = 1 //LED_3_ON() #define LEDY_OFF() pin_LED_3 = 0 //LED_3_OFF() #define LEDY_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN() #define LEDB_ON() pin_LED_4 = 1 //LED_4_ON() #define LEDB_OFF() pin_LED_4 = 0 //LED_4_OFF() #define LEDB_TOG() pin_LED_4 = !pin_LED_4 //LED_4_RUN() /******************************************************************************\ Typedef definitions \******************************************************************************/ //LED名称重定义,顺序和上方的宏定义保持一致 enum LED_ID { LED_R = 0x00, LED_G, LED_Y, LED_B, LED_ID_MAX }; //LED工作状态 enum LED_STATE { LED_OFF = 0x00, LED_ON, LED_FLASH, LED_KEEP_FLASHING, LED_BREATHING_LIGHT, }; #ifdef PWM_ENABLE enum LIGHT_DIR { SHOW_NONE = 0x00, SLOW_DARK, //缓灭 SLOW_LIGHT, //缓亮 SHOW_NORMAL, //呼吸灯正常亮。 }; #endif //LED控制结构体 typedef struct{ uint8_t State[LED_ID_MAX];//LED 的工作状态 uint8_t Light_Dir[LED_ID_MAX]; //呼吸灯亮的类型,缓亮、缓灭、正常亮。 uint16_t Flash_Duty[LED_ID_MAX];//LED占空比,即点亮时间 uint16_t Flash_Period[LED_ID_MAX];//LED周期 uint16_t Flash_Times[LED_ID_MAX];//闪烁次数 uint16_t Timer[LED_ID_MAX];//时间计数 1ms计数一次 }TS_LED_INFO; extern volatile uint8_t Display_RSta; // 显示状态 extern volatile uint8_t Display_GSta; // 显示状态 extern volatile uint8_t Display_YSta; // 显示状态 extern volatile uint8_t Display_BSta; // 显示状态 // LED显示相关定义 // LED显示逻辑 // -- 红色LED用于充电指示,原则上,充电时闪烁,充电完常亮,未充电熄灭 // -- 绿色LED用于操作指示,原则上,耳机放入、取出、开盖、关盖时,闪烁一次即可 typedef enum { DISPLAY_NONE, DISPLAY_ON, DISPLAY_OFF, DISPLAY_FLASH, DISPLAY_KEEP_FLASH, DISPLAY_MAX } TE_DISPLAY_STA; #define Display_AllOff() {LED_R_OFF();LED_G_OFF();LED_Y_OFF();LED_B_OFF();Display_RSta=DISPLAY_OFF;Display_GSta=DISPLAY_OFF;Display_YSta=DISPLAY_OFF;Display_BSta=DISPLAY_OFF;} #define Display_AllOn() {LED_R_ON();LED_G_ON();LED_Y_ON();LED_B_ON();Display_RSta=DISPLAY_ON;Display_GSta=DISPLAY_ON;Display_YSta=DISPLAY_ON;Display_BSta=DISPLAY_ON;} #define Display_Red_On() {LED_R_ON();Display_RSta=DISPLAY_ON;} #define Display_Red_Off() {LED_R_OFF();Display_RSta=DISPLAY_OFF;} #define Display_Red_Flash(Fre,n) {LED_R_FLASH(Fre,n);Display_RSta=DISPLAY_FLASH;} #define Display_Red_KeepFlash(Fre) {LED_R_KEEP_FLASHING(Fre);Display_RSta=DISPLAY_KEEP_FLASH;} #define Display_Green_On() {LED_G_ON();Display_GSta=DISPLAY_ON;} #define Display_Green_Off() {LED_G_OFF();Display_GSta=DISPLAY_OFF;} #define Display_Green_Flash(Fre,n) {LED_G_FLASH(Fre,n);Display_GSta=DISPLAY_FLASH;} #define Display_Green_KeepFlash(Fre) {LED_G_KEEP_FLASHING(Fre);Display_GSta=DISPLAY_KEEP_FLASH;} #define Display_Yellow_On() {LED_Y_ON();Display_YSta=DISPLAY_ON;} #define Display_Yellow_Off() {LED_Y_OFF();Display_YSta=DISPLAY_OFF;} #define Display_Yellow_Flash(Fre,n) {LED_Y_FLASH(Fre,n);Display_YSta=DISPLAY_FLASH;} #define Display_Yellow_KeepFlash(Fre) {LED_Y_KEEP_FLASHING(Fre);Display_YSta=DISPLAY_KEEP_FLASH;} #define Display_Blue_On() {LED_B_ON();Display_BSta=DISPLAY_ON;} #define Display_Blue_Off() {LED_B_OFF();Display_BSta=DISPLAY_OFF;} #define Display_Blue_Flash(Fre,n) {LED_B_FLASH(Fre,n);Display_BSta=DISPLAY_FLASH;} #define Display_Blue_KeepFlash(Fre) {LED_B_KEEP_FLASHING(Fre);Display_BSta=DISPLAY_KEEP_FLASH;} /******************************************************************************\ Global variables and functions \******************************************************************************/ /* * 函数名称 : LED_Init * 功能描述 : LED初始化 * 参 数 : NONE * 返回值 : NONE */ /******************************************************************************/ extern void LED_Init(void); /******************************************************************************/ /* * 函数名称 : LED_Clr * 功能描述 : 熄灭全部LED * 参 数 : NONE * 返回值 : NONE */ /******************************************************************************/ extern void LED_Clr(void); /******************************************************************************/ /* * 函数名称 : LED_Service * 功能描述 : LED驱动,需放在10ms时间片中 * 参 数 : NONE * 返回值 : NONE */ /******************************************************************************/ extern void LED_Drv(void); /******************************************************************************/ /* * 函数名称 : LED_Set * 功能描述 : LED工作方式设置 * 参 数 : State:工作方式 / Period:闪烁周期(单位ms) / Times:闪烁次数 * 返回值 : NONE */ /******************************************************************************/ extern void LED_Set(uint8_t LedId,uint8_t State,uint16_t Period,uint16_t Times); /******************************************************************************/ #ifdef PWM_ENABLE extern void HuXiLED_Set(uint8_t LedId,uint8_t State,uint8_t Dir); #endif // 外部操作接口 #define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0) #define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0) #define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH,Fre,n) #define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, Fre,0) #ifdef PWM_ENABLE #define LED_R_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_R, LED_BREATHING_LIGHT, Dir) #endif #define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0) #define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0) #define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, Fre,n) #define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, Fre,0) #ifdef PWM_ENABLE #define LED_G_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_G, LED_BREATHING_LIGHT, Dir) #endif #define LED_Y_ON() LED_Set(LED_Y, LED_ON, 0,0) #define LED_Y_OFF() LED_Set(LED_Y, LED_OFF, 0,0) #define LED_Y_FLASH(Fre,n) LED_Set(LED_Y, LED_FLASH, Fre,n) #define LED_Y_KEEP_FLASHING(Fre) LED_Set(LED_Y, LED_KEEP_FLASHING, Fre,0) #ifdef PWM_ENABLE #define LED_Y_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_Y, LED_BREATHING_LIGHT, Dir) #endif #define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0) #define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0) #define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, Fre,n) #define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, Fre,0) #ifdef PWM_ENABLE #define LED_B_BREATHING_LIGHT(Dir) HuXiLED_Set(LED_B, LED_BREATHING_LIGHT, Dir) #endif //------------------------------------------------------------------------------ #endif #endif