206 lines
7.1 KiB
C
206 lines
7.1 KiB
C
/*
|
||
******************************************************************************
|
||
*
|
||
* @file led.h
|
||
* @brief led dispaly module
|
||
*
|
||
*
|
||
* @version 1.0
|
||
* @date 2023/05/12 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 2023/07/12 Alex build this file
|
||
******************************************************************************
|
||
*/
|
||
|
||
#ifndef __LED_H__
|
||
#define __LED_H__
|
||
|
||
#include "define.h"
|
||
|
||
#ifdef LED_DISPLAY
|
||
|
||
#ifdef _DEBUG_LED
|
||
#define _DEBUG_LED_1
|
||
#define _DEBUG_LED_2
|
||
#endif
|
||
|
||
/******************************************************************************\
|
||
Macro definitions
|
||
\******************************************************************************/
|
||
sbit pin_LED_1 = P0^2;
|
||
sbit pin_LED_2 = P0^3;
|
||
sbit pin_LED_3 = P0^4;
|
||
|
||
#if 0
|
||
#define LED_1_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x03;SFRADDR = MFP_CTL0; SFRDATA &= 0xCF;}while(0) //P02
|
||
#define LED_2_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x08;SFRADDR = MFP_CTL0; SFRDATA &= 0x3F;}while(0) //P03
|
||
#define LED_3_CONFIG() do{ SFRADDR = P0_DRV; SFRDATA |= 0x20;SFRADDR = MFP_CTL1; SFRDATA &= 0xFC;}while(0) //P04
|
||
#endif
|
||
|
||
// LED端口定义
|
||
#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON() p03
|
||
#define LEDR_OFF() pin_LED_2 = 0 //LED_1_OFF()
|
||
#define LEDR_TOG() pin_LED_2 = !pin_LED_2 //LED_1_RUN()
|
||
|
||
#define LEDG_ON() pin_LED_1 = 1 //LED_2_ON() p02
|
||
#define LEDG_OFF() pin_LED_1 = 0 //LED_2_OFF()
|
||
#define LEDG_TOG() pin_LED_1 = !pin_LED_1 //LED_2_RUN()
|
||
|
||
#define LEDB_ON() pin_LED_3 = 1 //LED_3_ON() p04
|
||
#define LEDB_OFF() pin_LED_3 = 0 //LED_3_OFF()
|
||
#define LEDB_TOG() pin_LED_3 = !pin_LED_3 //LED_3_RUN()
|
||
|
||
#define LED_PLUS_TIME 1 //LED闪烁最小时间周期单位ms
|
||
|
||
/******************************************************************************\
|
||
Typedef definitions
|
||
\******************************************************************************/
|
||
//LED名称重定义,顺序和上方的宏定义保持一致
|
||
enum LED_ID
|
||
{
|
||
LED_R,
|
||
LED_G,
|
||
LED_B,
|
||
LED_ID_MAX
|
||
};
|
||
|
||
//LED工作状态
|
||
enum LED_STATE
|
||
{
|
||
LED_OFF,
|
||
LED_ON,
|
||
LED_FLASH,
|
||
LED_KEEP_FLASHING,
|
||
LED_BREATHING_LIGHT
|
||
};
|
||
|
||
//LED控制结构体
|
||
typedef struct{
|
||
|
||
uint8_t State[LED_ID_MAX];//LED 的工作状态
|
||
uint8_t Flash_Duty[LED_ID_MAX];//LED占空比,即点亮时间
|
||
uint8_t Flash_Period[LED_ID_MAX];//LED周期
|
||
uint8_t Flash_Times[LED_ID_MAX];//闪烁次数
|
||
uint8_t Timer[LED_ID_MAX];//时间计数 1ms计数一次
|
||
|
||
}TS_LED_INFO;
|
||
|
||
/******************************************************************************\
|
||
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_Clr
|
||
* 功能描述 : 熄灭全部LED
|
||
* 参 数 : NONE
|
||
* 返回值 : NONE
|
||
*/
|
||
/******************************************************************************/
|
||
extern void LED_Drv(void);
|
||
/******************************************************************************/
|
||
/*
|
||
* 函数名称 : LED_Set
|
||
* 功能描述 : LED工作方式设置
|
||
* 参 数 : LedId:ID / State:工作方式 / Duty:闪烁占空比(百分百:1-100) / Period:闪烁周期(单位ms) / Times:闪烁次数
|
||
* 返回值 : NONE
|
||
*/
|
||
/******************************************************************************/
|
||
extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Period,uint8_t Times);
|
||
/******************************************************************************/
|
||
|
||
// 外部操作接口;Fre:闪烁周期(ms);n:闪烁次数
|
||
#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)
|
||
|
||
#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)
|
||
|
||
#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)
|
||
|
||
#define LED_ALL_ON() do{LED_R_ON();LED_G_ON();LED_B_ON();}while(0)
|
||
#define LED_ALL_OFF() do{LED_R_OFF();LED_G_OFF();LED_B_OFF();}while(0)
|
||
|
||
//------------------------------------------------------------------------------
|
||
#endif
|
||
|
||
|
||
#ifdef BREATHING_LIGHT
|
||
|
||
extern bit Breathing_Light_On;
|
||
/*
|
||
* 函数名称 : LED_Breathing_Light
|
||
* 功能描述 : LED呼吸灯驱动,需放在100us时间片中
|
||
* 参 数 : NONE
|
||
* 返回值 : NONE
|
||
*/
|
||
/******************************************************************************/
|
||
extern void LED_Breathing_Light(void);
|
||
/******************************************************************************/
|
||
|
||
#endif
|
||
|
||
|
||
#ifdef DISPLAY_LED_188
|
||
|
||
extern uint8_t g_188_Num;
|
||
|
||
#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFE;SFRADDR = P0_IE;SFRDATA |= 0x01;}while(0) //Set P00 Input Enable.设置输入功能前,需先关闭输出功能。
|
||
#define PIN1_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFD;SFRADDR = P0_IE;SFRDATA |= 0x02;}while(0) //Set P01 Input Enable.
|
||
#define PIN2_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xFB;SFRADDR = P0_IE;SFRDATA |= 0x04;}while(0) //Set P02 Input Enable.
|
||
#define PIN3_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xF7;SFRADDR = P0_IE;SFRDATA |= 0x08;}while(0) //Set P03 Input Enable.
|
||
#define PIN4_IN() do{SFRADDR = P0_OE;SFRDATA &= 0xEF;SFRADDR = P0_IE;SFRDATA |= 0x10;}while(0) //Set P04 Input Enable.
|
||
|
||
#define PIN0_L() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 0;}while(0) //Set P00 output low Enable.
|
||
#define PIN1_L() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 0;}while(0) //Set P01 output low Enable.
|
||
#define PIN2_L() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 0;}while(0) //Set P02 output low Enable.
|
||
#define PIN3_L() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 0;}while(0) //Set P03 output low Enable.
|
||
#define PIN4_L() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 0;}while(0) //Set P04 output low Enable.
|
||
|
||
#define PIN0_H() do{SFRADDR = P0_OE;SFRDATA |= 0x01;P00 = 1;}while(0) //Set P00 output high Enable.
|
||
#define PIN1_H() do{SFRADDR = P0_OE;SFRDATA |= 0x02;P01 = 1;}while(0) //Set P01 output high Enable.
|
||
#define PIN2_H() do{SFRADDR = P0_OE;SFRDATA |= 0x04;P02 = 1;}while(0) //Set P02 output high Enable.
|
||
#define PIN3_H() do{SFRADDR = P0_OE;SFRDATA |= 0x08;P03 = 1;}while(0) //Set P03 output high Enable.
|
||
#define PIN4_H() do{SFRADDR = P0_OE;SFRDATA |= 0x10;P04 = 1;}while(0) //Set P04 output high Enable.
|
||
|
||
extern void LED_188_Init(void);
|
||
extern void Set_AllLed_Down(void);
|
||
extern void LED_188_Drive(uint8_t Num);
|
||
|
||
#endif
|
||
|
||
#endif
|
||
|