231 lines
7.8 KiB
C
231 lines
7.8 KiB
C
/*
|
||
******************************************************************************
|
||
*
|
||
* @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
|
||
|