/*板子引腳說明
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)
2019-5-21 23:47 上傳
點擊文件名下載附件
|