/*板子引脚说明
X0 PC7
X1 PC6
X2 PB15
X3 PA1
X4 PA0
X5 PC4
X6 PB12
X7 PB14
Y0 PC9
Y1 PA8
Y2 PA11
Y3 PA12
Y4 PD2
Y5 PC12
AD0 PC1
AD1 PC2
*/
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "pwm.h"
#define TIME_1MS 1000
#define TIME_3min 36000000
#define TRUE 1
#define FALSE 0
volatile u32 timer_tick_count = 0; //定时器节拍
volatile u32 timer_tick_count1 = 0; //建立任务池
volatile u32 timer_tick_count2 = 0; //建立任务池
static u16 Key_Value=0;
static u16 Key_Value1=0;
static u8 light_FG= FALSE;
static u8 P_FG= FALSE;
u16 value=0;
u8 a=0;
u8 i ;
float vol=0;
int PWM_TAB[10]={0, //白天不工作
200, //晚上无人20%亮度
1000 //有人亮度100%
};
u8 pwm=0;
u8 key_SCAN;
#define X0 PCin(7)
//程序入口
int main()
{
Output_GPIO_Init(); //输出GPIO 初始化。
ADCx_Init(); //AD初始化
TimerInit();//定时器初始化
while(1)
{
/*Y0 PC9 Y1 PA8 Y2 PA11 Y3 PA12 Y4 PD2 Y5 PC12*/
/*ADC转换*/
value=Get_ADC_Value(ADC_Channel_11,30); //光电传感器,在没有放书的情况下,不会触发,只要放到上面有书籍,就要触发。
vol=(float)value*(3.3/4096); //转换完成之后的值
i=(int)vol; //数据类型需要强制转换
if(i>=1) //天黑的情况
{
light_FG= TRUE;
a=1; //占空比20%
if(P_FG==TRUE)
{ light_FG= FALSE;
a=2;
}
if(timer_tick_count1>2000) //设置天黑有人的情况 红外识别 可认为是按键检测
{timer_tick_count1=0;
if(X0==1)
{
Key_Value=1;
}
if(X0==0)
{
Key_Value=0;
}
if(Key_Value== Key_Value1)
{
if( Key_Value==0) //边沿处理
{Key_Value1= Key_Value;
light_FG= FALSE;
P_FG=TRUE;
timer_tick_count2=0;
a=2;
}
}
}
}
else
{
GPIO_SetBits(GPIOC,GPIO_Pin_9); //高电平无效 PC9对应Y0
// GPIO_ResetBits(GPIOC,GPIO_Pin_9);
light_FG= FALSE;
}
if( light_FG==TRUE)
{
//PWM波输出,调节灯光亮度
if( timer_tick_count>=TIME_1MS) //频率为1K 产生PWM波形
{ timer_tick_count=0; //周期值清零
}
if( timer_tick_count<PWM_TAB[a]) //调节占空比
// GPIO_SetBits(GPIOC,GPIO_Pin_9); //高电平无效 PC9对应Y0
{ GPIO_ResetBits(GPIOC,GPIO_Pin_9); //低电平有效 PC9对应Y0
}
else
{ GPIO_SetBits(GPIOC,GPIO_Pin_9); //高电平无效 PC9对应Y0
}
}
if( P_FG==TRUE)
{
//PWM波输出,调节灯光亮度
if( timer_tick_count>=TIME_1MS) //频率为1K 产生PWM波形
{ timer_tick_count=0; //周期值清零
}
if( timer_tick_count<PWM_TAB[a]) //调节占空比
// GPIO_SetBits(GPIOC,GPIO_Pin_9); //高电平无效 PC9对应Y0
{ GPIO_ResetBits(GPIOC,GPIO_Pin_9); //低电平有效 PC9对应Y0
}
else
{ GPIO_SetBits(GPIOC,GPIO_Pin_9); //高电平无效 PC9对应Y0
}
}
if(timer_tick_count2>=TIME_3min)
{
P_FG= FALSE;
}
}
}
全部资料51hei下载地址:
热释电灯具.7z
(178.58 KB, 下载次数: 22)
|