Both_Way_Comm_SY8833/TP3310_Demo.si4project/Backup/led(3915).h

243 lines
9.7 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
******************************************************************************
*
* @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"
#if 1
#ifdef LED_DISPLAY
#ifdef _DEBUG_LED
#define _DEBUG_LED_1
#define _DEBUG_LED_2
//#define _DEBUG_LED_3
//#define _DEBUG_LED_4
#endif
/******************************************************************************\
Macro definitions
\******************************************************************************/
sbit pin_LED_1 = P0^2;
sbit pin_LED_2 = P0^3;
sbit pin_LED_3 = P0^4;
#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
// LED端口定义
#define LEDR_ON() pin_LED_2 = 1 //LED_1_ON()
#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()
#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()
#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控制结构体
typedef struct{
uint8_t State[LED_ID_MAX];//LED 的工作状态
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;
/******************************************************************************\
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工作方式设置
* 参 数 : LedIdID / State工作方式 / Duty:闪烁占空比(百分百1-100) / Period:闪烁周期(单位ms) / Times:闪烁次数
* 返回值 : NONE
*/
/******************************************************************************/
extern void LED_Set(uint8_t LedId,uint8_t State,uint8_t Duty,uint16_t Period,uint16_t Times);
/******************************************************************************/
// 外部操作接口;Fre:闪烁周期ms;n:闪烁次数
#define LED_R_ON() LED_Set(LED_R, LED_ON, 0,0,0)
#define LED_R_OFF() LED_Set(LED_R, LED_OFF, 0,0,0)
#define LED_R_FLASH(Fre,n) LED_Set(LED_R, LED_FLASH, 50,Fre,n)
#define LED_R_KEEP_FLASHING(Fre) LED_Set(LED_R, LED_KEEP_FLASHING, 50,Fre,0)
#define LED_G_ON() LED_Set(LED_G, LED_ON, 0,0,0)
#define LED_G_OFF() LED_Set(LED_G, LED_OFF, 0,0,0)
#define LED_G_FLASH(Fre,n) LED_Set(LED_G, LED_FLASH, 50,Fre,n)
#define LED_G_KEEP_FLASHING(Fre) LED_Set(LED_G, LED_KEEP_FLASHING, 50,Fre,0)
#define LED_B_ON() LED_Set(LED_B, LED_ON, 0,0,0)
#define LED_B_OFF() LED_Set(LED_B, LED_OFF, 0,0,0)
#define LED_B_FLASH(Fre,n) LED_Set(LED_B, LED_FLASH, 50,Fre,n)
#define LED_B_KEEP_FLASHING(Fre) LED_Set(LED_B, LED_KEEP_FLASHING, 50,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
#else
/* PWM Channels */
typedef enum {
LED_CH0 = 0x00,
LED_CH1,
LED_CH2,
LED_CH3
}LED_Channels_e;
extern LED_Channels_e LED_Chn;
//extern void LED_Init(void);
//extern void LED_GPIO_Drive_On(LED_Channels_e LED_Chn ,uint8_t Driver_Cur);
//extern void LED_PWM_Drive(Pwm_Channels_e ePWM_Ch,s_gPWM_Para_Cfg nPWM_Cfg);
//extern void LED_Drive_On(LED_Channels_e LED_Chn ,uint8_t Driver_Type, uint8_t Driver_Cur,s_gPWM_Para_Cfg nPWM_Cfg);
extern void LED_Drive_On(LED_Channels_e nLED_Chn , uint8_t Driver_Cur);
extern void LED_GPIO_Drive_Off(LED_Channels_e LED_Chn);
#endif
#ifdef DISPLAY_LED_188
extern uint8_t g_188_Num;
#if 0
#define PIN0_IN() do{SFRADDR = P0_OE;SFRDATA &= ~0x80;SFRADDR = P0_IE;SFRDATA |= 0x80;}while(0) //Set P07 Input Enable.设置输入功能前,需先关闭输出功能。
#define PIN1_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x01;SFRADDR = P1_IE;SFRDATA |= 0x01;}while(0) //Set P10 Input Enable.
#define PIN2_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x04;SFRADDR = P1_IE;SFRDATA |= 0x04;}while(0) //Set P12 Input Enable.
#define PIN3_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x08;SFRADDR = P1_IE;SFRDATA |= 0x08;}while(0) //Set P13 Input Enable.
#define PIN4_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x10;SFRADDR = P1_IE;SFRDATA |= 0x10;}while(0) //Set P14 Input Enable.
#define PIN5_IN() do{SFRADDR = P1_OE;SFRDATA &= ~0x20;SFRADDR = P1_IE;SFRDATA |= 0x20;}while(0) //Set P15 Input Enable.
#define PIN0_L() do{SFRADDR = P0_IE;SFRDATA &= ~0x80;SFRADDR = P0_OE;SFRDATA |= 0x80;P07 = 0;}while(0) //Set P07 output low Enable.
#define PIN1_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x01;SFRADDR = P1_OE;SFRDATA |= 0x01;P10 = 0;}while(0) //Set P10 output low Enable.
#define PIN2_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x04;SFRADDR = P1_OE;SFRDATA |= 0x04;P12 = 0;}while(0) //Set P12 output low Enable.
#define PIN3_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x08;SFRADDR = P1_OE;SFRDATA |= 0x08;P13 = 0;}while(0) //Set P13 output low Enable.
#define PIN4_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x10;SFRADDR = P1_OE;SFRDATA |= 0x10;P14 = 0;}while(0) //Set P14 output low Enable.
#define PIN5_L() do{SFRADDR = P1_IE;SFRDATA &= ~0x20;SFRADDR = P1_OE;SFRDATA |= 0x20;P15 = 0;}while(0) //Set P15 output low Enable.
#define PIN0_H() do{SFRADDR = P0_IE;SFRDATA &= ~0x80;SFRADDR = P0_OE;SFRDATA |= 0x80;P07 = 1;}while(0) //Set P07 output high Enable.
#define PIN1_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x01;SFRADDR = P1_OE;SFRDATA |= 0x01;P10 = 1;}while(0) //Set P10 output high Enable.
#define PIN2_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x04;SFRADDR = P1_OE;SFRDATA |= 0x04;P12 = 1;}while(0) //Set P12 output high Enable.
#define PIN3_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x08;SFRADDR = P1_OE;SFRDATA |= 0x08;P13 = 1;}while(0) //Set P13 output high Enable.
#define PIN4_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x10;SFRADDR = P1_OE;SFRDATA |= 0x10;P14 = 1;}while(0) //Set P14 output high Enable.
#define PIN5_H() do{SFRADDR = P1_IE;SFRDATA &= ~0x20;SFRADDR = P1_OE;SFRDATA |= 0x20;P15 = 1;}while(0) //Set P15 output high Enable.
#else
#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.
#endif
extern void LED_188_Init(void);
extern void LED_188_Drive(uint8_t Num);
#endif
#endif