|
@@ -35,9 +35,11 @@ u16 GetTimer=0;//
|
|
|
u8 dw_val=0;//挡位//亮度值
|
|
|
u8 sc_val=0;//色彩
|
|
|
int set_s1=7,set_f1=0; //设置 时间1
|
|
|
-int cnt_s1=2,cnt_f1=0,cnt_m1=0;//学习时间 时分秒
|
|
|
+int cnt_s1=0,cnt_f1=0,cnt_m1=0;//学习时间 时分秒
|
|
|
#define RT_INPUT PBin(8)//人体红外感应
|
|
|
|
|
|
+#define YP_BUSY PAin(6)
|
|
|
+
|
|
|
#define KEY_GPIO_PROT GPIOA
|
|
|
#define KEY1_GPIO_PIN GPIO_Pin_0
|
|
|
#define KEY2_GPIO_PIN GPIO_Pin_1
|
|
@@ -55,12 +57,18 @@ void key_gpio_init(void)
|
|
|
{
|
|
|
GPIO_InitTypeDef GPIO_InitStructure;
|
|
|
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);
|
|
|
- GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN|KEY2_GPIO_PIN|KEY3_GPIO_PIN|KEY4_GPIO_PIN|KEY5_GPIO_PIN;
|
|
|
+ GPIO_InitStructure.GPIO_Pin = KEY1_GPIO_PIN|KEY2_GPIO_PIN|KEY3_GPIO_PIN|KEY4_GPIO_PIN|KEY5_GPIO_PIN|GPIO_Pin_6;
|
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
|
|
|
GPIO_Init(KEY_GPIO_PROT, &GPIO_InitStructure);
|
|
|
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
|
|
|
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
|
|
|
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
GPIO_Init(GPIOA, &GPIO_InitStructure);
|
|
|
+
|
|
|
+ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
|
|
|
+ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
|
|
|
+ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
|
|
+ GPIO_Init(GPIOA, &GPIO_InitStructure);
|
|
|
}
|
|
|
|
|
|
|
|
@@ -173,6 +181,7 @@ void TIMER3_Int_Init(u16 arr,u16 psc)
|
|
|
|
|
|
}
|
|
|
|
|
|
+char clear_flag=0;
|
|
|
|
|
|
|
|
|
int key_Task(void)
|
|
@@ -194,7 +203,7 @@ int key_Task(void)
|
|
|
if(++dw_val>2)dw_val=0;
|
|
|
}else
|
|
|
{
|
|
|
-
|
|
|
+ cnt_s1++;
|
|
|
}
|
|
|
}
|
|
|
else if(KEY3_IN==0)
|
|
@@ -204,7 +213,7 @@ int key_Task(void)
|
|
|
if(++sc_val>2)sc_val=0;
|
|
|
}else
|
|
|
{
|
|
|
-
|
|
|
+ if(cnt_s1>0)cnt_s1--;
|
|
|
}
|
|
|
}
|
|
|
else if(KEY4_IN==0)
|
|
@@ -214,12 +223,12 @@ int key_Task(void)
|
|
|
openflag^=1;//开关按钮
|
|
|
}else
|
|
|
{
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
else if(KEY5_IN==0)
|
|
|
{
|
|
|
-
|
|
|
+ clear_flag^=1;
|
|
|
}
|
|
|
}
|
|
|
}else
|
|
@@ -254,7 +263,7 @@ void TIM3_IRQHandler(void)//
|
|
|
}
|
|
|
if(rt_flag) //有人 开始计时计算学习时间
|
|
|
{
|
|
|
- if(++seccnt>50)
|
|
|
+ if(++seccnt>=50)
|
|
|
{
|
|
|
seccnt=0;
|
|
|
if(++cnt_m1>59)
|
|
@@ -313,193 +322,22 @@ void uartX_sendByte(uint8_t val)
|
|
|
IO_TX_GPIO_Port=1;
|
|
|
delay_us(104);
|
|
|
}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Next_Play()
|
|
|
-//
|
|
|
-//功能说明:设定音量
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Next_Play()
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0x01);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Last_Play()
|
|
|
-//
|
|
|
-//功能说明:
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Last_Play()
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Specify_Musi_Play()
|
|
|
-//
|
|
|
-//功能说明:指定曲目播放
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Specify_Musi_Play(u8 num)
|
|
|
+void sendData(char *p,unsigned char n)
|
|
|
{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x04);
|
|
|
- uartX_sendByte(0x03);
|
|
|
- uartX_sendByte(0x00);
|
|
|
- uartX_sendByte(num);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Volume_add()
|
|
|
-//
|
|
|
-//功能说明:音量加
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Volume_add()
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0x04);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Volume_nec()
|
|
|
-//
|
|
|
-//功能说明:音量减
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Volume_nec()
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0x05);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Specify_Volume()
|
|
|
-//
|
|
|
-//功能说明:指定音量
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Specify_Volume(u8 num)
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x03);
|
|
|
- uartX_sendByte(0x06);
|
|
|
- uartX_sendByte(num);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-
|
|
|
+ if( p == 0) return ;
|
|
|
+ if(n > 0)
|
|
|
+ {
|
|
|
+ while(n --)
|
|
|
+ {
|
|
|
+ uartX_sendByte(*p++);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Music_play()
|
|
|
-//
|
|
|
-//功能说明:播放
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Music_play()
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0x0D);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Music_pause()
|
|
|
-//
|
|
|
-//功能说明:暂停
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Music_pause()
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0x0E);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Music_stop()
|
|
|
-//
|
|
|
-//功能说明:停止
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Music_stop()
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x02);
|
|
|
- uartX_sendByte(0x10);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Switch_play_Device()
|
|
|
-//
|
|
|
-//功能说明:U/TF/AUX/SLEEP/FLASH(0/1/2/3/4)切换
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Switch_play_Device(u8 num)
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x03);
|
|
|
- uartX_sendByte(0x09);
|
|
|
- uartX_sendByte(num);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
-}
|
|
|
-/*********************************************************************************************
|
|
|
-//函数名:Cycle_play()
|
|
|
-//
|
|
|
-//功能说明:1:全部循环 0:单曲循环
|
|
|
-//
|
|
|
-//入口参数:
|
|
|
-//
|
|
|
-//出口参数:NO
|
|
|
-***********************************************************************************************/
|
|
|
-void Cycle_play(u8 num)
|
|
|
-{
|
|
|
- uartX_sendByte(0x7E);
|
|
|
- uartX_sendByte(0x03);
|
|
|
- uartX_sendByte(0x11);
|
|
|
- uartX_sendByte(num);
|
|
|
- uartX_sendByte(0xEF);
|
|
|
}
|
|
|
u8 test=0;
|
|
|
-
|
|
|
+unsigned char sendbuff1[8]={0x7E, 0x04 ,0x03 ,0x00, 0x01, 0xEF};
|
|
|
+unsigned char sendbuff2[8]={0x7E, 0x04 ,0x03 ,0x00, 0x02, 0xEF};
|
|
|
+unsigned char sendbuff3[8]={0x7E, 0x04 ,0x03 ,0x00, 0x03, 0xEF};
|
|
|
int main(void)
|
|
|
{
|
|
|
|
|
@@ -508,7 +346,7 @@ int main(void)
|
|
|
LED_Init(); //初始化与连接的硬件接口
|
|
|
YP1=1;YP2=1;YP3=1;
|
|
|
uart_init(9600);
|
|
|
- delay_ms(1000);
|
|
|
+ delay_ms(100);
|
|
|
key_gpio_init();
|
|
|
|
|
|
TIMER3_Int_Init(20000,71);//定时器初始化 //10ms进一次中断
|
|
@@ -522,93 +360,87 @@ int main(void)
|
|
|
SK9822_Intit();
|
|
|
Wave_IO_Init();
|
|
|
SK9822_Write_Data(0xff,0,0,0);
|
|
|
- Ds1302_Write_Time_All(1);
|
|
|
-// Next_Play();
|
|
|
- delay_ms(10);
|
|
|
- Cycle_play(1);
|
|
|
- delay_ms(10);
|
|
|
- Cycle_play(1);
|
|
|
- delay_ms(10);
|
|
|
- Specify_Musi_Play(2);
|
|
|
- delay_ms(10);
|
|
|
- Cycle_play(1);
|
|
|
+// Ds1302_Write_Time_All(1);
|
|
|
delay_ms(10);
|
|
|
+
|
|
|
while(1)
|
|
|
{
|
|
|
|
|
|
if(GetTimer>50)//1S
|
|
|
{
|
|
|
GetTimer=0;
|
|
|
- if(openflag)
|
|
|
- {
|
|
|
- switch(dw_val)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- switch(sc_val)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- YP1=0;YP2=1;YP3=1;
|
|
|
- SK9822_Write_Data(0xff,0xff,0xff,0xff);
|
|
|
- break;
|
|
|
-
|
|
|
- case 1:
|
|
|
- YP1=1;YP2=0;YP3=1;
|
|
|
- SK9822_Write_Data(0xff,255,255,0);
|
|
|
- break ;
|
|
|
-
|
|
|
- case 2:
|
|
|
- YP1=1;YP2=1;YP3=0;
|
|
|
- SK9822_Write_Data(0xff,60,255,60);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
-
|
|
|
- case 1:
|
|
|
- switch(sc_val)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- SK9822_Write_Data(0xff,125,125,125);
|
|
|
- break;
|
|
|
-
|
|
|
- case 1:
|
|
|
- SK9822_Write_Data(0xff,125,125,0);
|
|
|
- break ;
|
|
|
-
|
|
|
- case 2:
|
|
|
- SK9822_Write_Data(0xff,30,125,30);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
-
|
|
|
- case 2:
|
|
|
- switch(sc_val)
|
|
|
- {
|
|
|
- case 0:
|
|
|
- SK9822_Write_Data(0xff,30,30,30);
|
|
|
- break;
|
|
|
-
|
|
|
- case 1:
|
|
|
- SK9822_Write_Data(0xff,40,40,0);
|
|
|
- break ;
|
|
|
+
|
|
|
+ if(openflag)
|
|
|
+ {
|
|
|
+ switch(dw_val)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ switch(sc_val)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+
|
|
|
+ SK9822_Write_Data(0xff,0xff,0xff,0xff);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 1:
|
|
|
+
|
|
|
+ SK9822_Write_Data(0xff,255,255,0);
|
|
|
+ break ;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+
|
|
|
+ SK9822_Write_Data(0xff,60,255,60);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 1:
|
|
|
+ switch(sc_val)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ SK9822_Write_Data(0xff,125,125,125);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 1:
|
|
|
+ SK9822_Write_Data(0xff,125,125,0);
|
|
|
+ break ;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ SK9822_Write_Data(0xff,30,125,30);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ switch(sc_val)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ SK9822_Write_Data(0xff,30,30,30);
|
|
|
+ break;
|
|
|
+
|
|
|
+ case 1:
|
|
|
+ SK9822_Write_Data(0xff,40,40,0);
|
|
|
+ break ;
|
|
|
+
|
|
|
+ case 2:
|
|
|
+ SK9822_Write_Data(0xff,10,50,10);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ SK9822_Write_Data(0xff,0,0,0);//熄灭
|
|
|
+ }
|
|
|
+ if(mode_flag)//自动模式下控制
|
|
|
+ {
|
|
|
+ OLED_ShowString(90,6,"A",16);
|
|
|
+ }else{ //手动模式下控制
|
|
|
+ OLED_ShowString(90,6,"M",16);
|
|
|
|
|
|
- case 2:
|
|
|
- SK9822_Write_Data(0xff,10,50,10);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- break;
|
|
|
- }
|
|
|
- }else{
|
|
|
- SK9822_Write_Data(0xff,0,0,0);//熄灭
|
|
|
- }
|
|
|
- if(mode_flag)
|
|
|
- {
|
|
|
- OLED_ShowString(90,6,"A",16);
|
|
|
- }else{
|
|
|
- OLED_ShowString(90,6,"M",16);
|
|
|
- }
|
|
|
+ }
|
|
|
|
|
|
if(dht11_read_data(buffer) == 0)//读取温湿度
|
|
|
{
|
|
@@ -639,7 +471,25 @@ int main(void)
|
|
|
|
|
|
if(mode_flag)//自动模式
|
|
|
{
|
|
|
-
|
|
|
+ if(rt_flag) //有人
|
|
|
+ {
|
|
|
+ openflag=1;
|
|
|
+ if(GzVal<50)
|
|
|
+ {
|
|
|
+ dw_val=0;//开启最大亮度
|
|
|
+ }
|
|
|
+ else if(GzVal>50&&GzVal<500)
|
|
|
+ {
|
|
|
+ dw_val=1;
|
|
|
+ }
|
|
|
+ else if(GzVal>500)
|
|
|
+ {
|
|
|
+ dw_val=2;
|
|
|
+ }
|
|
|
+ }else
|
|
|
+ {
|
|
|
+ openflag=0;//关闭
|
|
|
+ }
|
|
|
}else{ //手动模式
|
|
|
|
|
|
}
|
|
@@ -674,22 +524,29 @@ int main(void)
|
|
|
}else{
|
|
|
warning_cnt&=~0x04;
|
|
|
}
|
|
|
-
|
|
|
-// if((warning_cnt&0x01)==0x01) //坐姿异常
|
|
|
-// {
|
|
|
-// YP1=0;delay_us(10);YP2=1;delay_us(10);YP3=1;delay_us(10);
|
|
|
-// }
|
|
|
-// else if((warning_cnt&0x02)==0x02)//闹钟
|
|
|
-// {
|
|
|
-// YP1=1;delay_us(10);YP2=0;delay_us(10);YP3=1;delay_us(10);
|
|
|
-// }
|
|
|
-// else if((warning_cnt&0x04)==0x04)//学习时间过长
|
|
|
-// {
|
|
|
-// YP1=1;delay_us(10);YP2=1;delay_us(10);YP3=0;delay_us(10);
|
|
|
-// }
|
|
|
-// else{
|
|
|
-// YP1=1;YP2=1;YP3=1;delay_us(10);
|
|
|
-// }
|
|
|
+ if(clear_flag==0)//取消提醒标志位
|
|
|
+ {
|
|
|
+ if((warning_cnt&0x01)==0x01) //坐姿异常
|
|
|
+ {
|
|
|
+ if(YP_BUSY==0)
|
|
|
+ {
|
|
|
+ sendData((char*)sendbuff1,6);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if((warning_cnt&0x02)==0x02)//闹钟
|
|
|
+ {
|
|
|
+ if(YP_BUSY==0)
|
|
|
+ {
|
|
|
+ sendData((char*)sendbuff2,6);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else if((warning_cnt&0x04)==0x04)//学习时间过长
|
|
|
+ {
|
|
|
+ if(YP_BUSY==0)
|
|
|
+ sendData((char*)sendbuff3,6);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|