void ALLINIT()
{
SystemInit();
SysTick_Init(72);//72MSysTick_Init(72);//72M
USART1_Init(115200);
usart3_init(9600); //′®¿ú33õê¼»ˉÎa9600
KEY_Init();
SR501_Init();
LED_Init();
TIM1_PWM_Init(); //TIM1 PWM??????,???TIM1 PWM??
ADC1_Init();
if(Display_Init()) Select_cpt=1;
DS1302_config();
ds1302_init();//DS13023õê¼»ˉ
ds1302_read_time();
ds1302_write_time(); //D′èë3õê¼Öμ
while(DHT11_Init())
{
u3_printf("DHT11 Error ! \r\n");
delay_ms(1000);
}
TIM2_NVIC_Configuration(); // TIM2 ¶¨ê±ÅäÖÃ
TIM2_Configuration();
Ultrasonic_Config();//3¬éù2¨¶Ë¿ú3õê¼»ˉ
// Color_Test();
TIM4_Init(10000-1,7199);
}
#include "public.h"
#include "Init.h"
u8 humi_num1;
volatile u32 time; // ms ¼Æê±±äá¿
int main()
{
ALLINIT();
u3_printf("System init OK!\r\n");
di_di();
while(1)
{
// u3_printf("%d \r\n",time_0);
Mode_Selection();
// if(SR501_data==1)GPIO_SetBits(GPIOC, GPIO_Pin_13 );
}
}
#include "Display.h"
#include "public.h"
u8 Select_cpt=0,mode=0,Second=0,First=0;
u16 ADvalue_PA6=0,ADvalue_PA5=0,ADvalue_PA7=0,ADvalue_temp=0;
u8 temp_MCU=0,AD_PA5=0,AD_PA5_Per=0;
extern __IO u16 ADC_ConvertedValue[4];
Site ASite={6,30};
Site SSite={6,30};
void (*p)(void);
void *Mode_Main(void);
void *Mode_First(void);
void *Mode_Second(void);
void *Mode_Third(void);
void *Mode_Fourth(void);
void *Mode_Fifth(void);
u8 Display_Init(void)
{
Lcd_Init();
// Color_Test();
Lcd_Clear(BLACK);
p=&Mode_Main;
p();
return 1;
}
static u8 lightmove(Site *site)
{
u8 mode,Dis_set=10;
u16 ymax,ymin;
u8 dang1=0,pwm1=0;
while(Select_cpt==1)
{
if(p==Mode_Main) //éèÖüyí·éÏÏÂÏT
{
ymin=30;
ymax=75;
}
// else if(p==Mode_Second)
// {
// ymin=0;
// ymax=90;
// }
if(p==Mode_Main)//Ö÷Æá2ù×÷
{
DS1302_TX();//ê±¼ä èÕÆú DATDèòaéÏà-μç×è
DHT11_TX();
Ultrasonic_TX();
LCD_ShowxNum(66,90,&time_2,4);
Gui_DrawFont_GBK16(99,90,YELLOW,BLACK,"s");
if(KEY_U==0)
{
delay_ms(10);
if(KEY_U==0)
{
while(KEY_U==0);
site->y-=15;
Lcd_Clear_c16(BLACK,site->x,site->y+15,2);
if(site->y<ymin) site->y=ymax;
Gui_DrawFont_GBK16(site->x,site->y,YELLOW,BLACK,"->");
}
}
if(KEY_D==0)
{
delay_ms(10);
if(KEY_D==0)
{
while(KEY_D==0);
site->y+=15;
Lcd_Clear_c16(BLACK,site->x,site->y-15,2);
if(site->y>ymax) site->y=ymin;
Gui_DrawFont_GBK16(site->x,site->y,YELLOW,BLACK,"->");
}
}
if(KEY_R==0)
{
switch(site->y)
{
case 30:mode=0;
break;
case 45:mode=1;
break;
case 60:mode=2;
break;
case 75:mode=3;
break;
case 90:mode=4;
break;
default:
break;
}
return mode;
}
else if(KEY_L==0)
{
Lcd_Clear(BLACK);
p=&Mode_Main;
ASite.y=30;
p();
break;
}
}
else if(p==Mode_First)//ò»¼¶Æá2ù×÷
{
First=1;
while(First==1)
{
if(KEY_U==0)
{
while(KEY_U==0);
dang1+=1;
}
if(KEY_D==0)
{
while(KEY_D==0);
dang1-=1;
}
if(dang1>6) dang1=0;
if(dang1<0) dang1=6;
Gui_DrawFont_Num32(40,20,YELLOW,BLACK,dang1) ;
switch(dang1)
{
case 0:TIM1->CCR1 = 10*(100-100);
break;
case 1:TIM1->CCR1 = 10*(100-90);
break;
case 2:TIM1->CCR1 = 10*(100-80);
break;
case 3:TIM1->CCR1 = 10*(100-60);
break;
case 4:TIM1->CCR1 = 10*(100-40);
break;
case 5:TIM1->CCR1 = 10*(100-20);
break;
case 6:TIM1->CCR1 = 10*(100-0);
break;
}
if(KEY_L==0)
{
First=0;
Lcd_Clear(BLACK);
p=&Mode_Main;
ASite.y=30;
p();
}
}
}
else if(p==Mode_Second)//¶t¼¶Æá2ù×÷
{
First=1;time_0=0;
while(First==1)
{
/******1¤×÷걼䣬¾Ã×øìáDÑ********/
if(KEY_U==0)time_1+=5;
if(KEY_D==0)time_1-=1;
Gui_DrawFont_GBK16(5,95,YELLOW,BLACK,"Time_Set:");
Gui_DrawFont_GBK16(112,95,YELLOW,BLACK,"s");
LCD_ShowxNum(79,95,&time_1,4);
Gui_DrawFont_GBK16(5,110,YELLOW,BLACK,"Time_Now:");
Gui_DrawFont_GBK16(112,110,YELLOW,BLACK,"s");
LCD_ShowxNum(79,110,&time_0,4);
if(time_0>time_1)
{
// GPIO_SetBits(GPIOC, GPIO_Pin_13 );
// Lcd_Clear(BLACK);
}
ADvalue_PA5=Get_ADC_Average(0,20);
AD_PA5=ADvalue_PA5*256/65536;
AD_PA5_Per=100-AD_PA5*6.7;if(AD_PA5_Per>93) AD_PA5_Per=93;
Gui_DrawFont_GBK16(5,5,YELLOW,BLACK,"Gui Yi Light:");
Gui_DrawFont_GBK16(20,20,YELLOW,BLACK,"G_Y:");
LCD_ShowxNum(55,20,&AD_PA5,2);
Gui_DrawFont_GBK16(20,35,YELLOW,BLACK,"B_F:");
LCD_ShowxNum(55,35,&AD_PA5_Per,2);
Gui_DrawFont_GBK16(73,35,YELLOW,BLACK,"%");
if(KEY_U==0)u3_printf("ad1(A5): %d \r\n",ADvalue_PA5);//A5
switch(AD_PA5)
{
case 0:TIM1->CCR1 = 10*(100-100); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,0) ;
break;
case 1:TIM1->CCR1 = 10*(100-100); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,0) ;
break;
case 2:TIM1->CCR1 = 10*(100-92); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,1) ;
break;
case 3:TIM1->CCR1 = 10*(100-85); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,1) ;
break;
case 4:TIM1->CCR1 = 10*(100-77); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,2) ;
break;
case 5:TIM1->CCR1 = 10*(100-70); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,2) ;
break;
case 7:TIM1->CCR1 = 10*(100-63); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,3) ;
break;
case 8:TIM1->CCR1 = 10*(100-56); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,3) ;
break;
case 9:TIM1->CCR1 = 10*(100-49); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,4) ;
break;
case 10:TIM1->CCR1 = 10*(100-42); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,4) ;
break;
case 11:TIM1->CCR1 = 10*(100-35); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,5) ;
break;
case 12:TIM1->CCR1 = 10*(100-27); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,5) ;
break;
case 13:TIM1->CCR1 = 10*(100-21); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,6) ;
break;
case 14:TIM1->CCR1 = 10*(100-14); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,7) ;
break;
case 15:TIM1->CCR1 = 10*(100-7); Gui_DrawFont_Num32(40,60,YELLOW,BLACK,8) ;
break;
}
if(KEY_L==0)
{
First=0;
Lcd_Clear(BLACK);
p=&Mode_Main;
ASite.y=30;
p();
}
}
}
else if(p==Mode_Third)//èy¼¶Æá2ù×÷
{
First=1;
while(First==1)
{
if(KEY_U==0)
{
delay_ms(100);
if(KEY_U==0)
{
// while(KEY_U==0);
pwm1-=2;if(pwm1<=1)pwm1=99;
}
}
else if(KEY_D==0)
{
delay_ms(100);
if(KEY_D==0)
{
// while(KEY_D==0);
pwm1+=2;if(pwm1>=99)pwm1=1;
}
}
TIM1->CCR1 = 10*(100-pwm1);
if(KEY_R==0)
{
if(KEY_R==0)
{
u3_printf("PWM: %d %%\r\n",pwm1);
}
}
if(KEY_L==0)
{
First=0;
Lcd_Clear(BLACK);
p=&Mode_Main;
ASite.y=30;
p();
}
}
}
else if(p==Mode_Fourth)//Ëļ¶Æá2ù×÷
{
Ultrasonic_TX();
if(KEY_U==0)Dis_set++;
if(Dis_set>99)Dis_set=10;
if(Distance<Dis_set&&SR501_data==1)
{
// Color_Test();
GPIO_SetBits(GPIOC, GPIO_Pin_13 );
}
else GPIO_ResetBits(GPIOC, GPIO_Pin_13 );
Gui_DrawFont_GBK16(5,5,YELLOW,BLACK,"Dis_set:");
LCD_ShowxNum(55,20,&Dis_set,2);
Gui_DrawFont_GBK16(85,5,YELLOW,BLACK,"cm");
if(KEY_L==0)
{
Lcd_Clear(BLACK);
p=&Mode_Main;
ASite.y=30;
p();
}
}
// else if(p==Mode_Fifth)//Îå¼¶Æá2ù×÷
// {
// if(KEY_L==0)
// {
// Lcd_Clear(BLACK);
// p=&Mode_Main;
// ASite.y=30;
// p();
// }
// }
}
return -1;
}
void *Mode_Main(void)
{
Gui_DrawFont_GBK16(6,30,YELLOW,BLACK,"->");
Gui_DrawFont_GBK16(24,30,YELLOW,BLACK,"Man-Contr");
Gui_DrawFont_GBK16(24,45,YELLOW,BLACK,"Auto-Contr");
Gui_DrawFont_GBK16(24,60,YELLOW,BLACK,"Casual-Contr");
// Gui_DrawFont_GBK16(24,75,YELLOW,BLACK,"Mode 4:");
// Gui_DrawFont_GBK16(24,90,YELLOW,BLACK,"Mode 5:");
// LCD_ShowNum(24,20,1,2,12);
// LCD_ShowChar(24,50,1,12);
}
void *Mode_First(void)
{
Lcd_Clear(BLACK);
}
void *Mode_Second(void)
{
Lcd_Clear(BLACK);
}
void *Mode_Third(void)
{
Lcd_Clear(BLACK);
Gui_DrawFont_GBK16(40,30,YELLOW,BLACK,"Up:+");
Gui_DrawFont_GBK16(40,45,YELLOW,BLACK,"Down:-");
}
void *Mode_Fourth(void)
{
Lcd_Clear(BLACK);
}
void *Mode_Fifth(void)
{
Lcd_Clear(BLACK);
}
void Mode_Selection(void)
{
switch(lightmove(&ASite))
{
case mode1: p=&Mode_First;ASite.y=0;p();
break;
case mode2: p=&Mode_Second;p();
break;
case mode3: p=&Mode_Third;ASite.y=0;p();
break;
case mode4: p=&Mode_Fourth;p();
break;
case mode5: p=&Mode_Fifth;ASite.y=0;p();
break;
default:
break;
}
}
void Time_W()
{
Lcd_Clear(BLACK);
}
|