這是我最近剛完成的藍(lán)橋杯嵌入式模擬題--模擬升降器設(shè)計,所有功能在實驗板上都已實現(xiàn)。附件里包含程序源碼。
IMG_20200828_164203.jpg (4.85 MB, 下載次數(shù): 52)
下載附件
2020-8-28 16:45 上傳
部分STM32代碼如下:
void Key_Chuli(void)
{
if(UP_Plate_Flag
{
if(Now2_Plate == 1 && Now_Plate < 2)
{
if(Door_State_Flag == 1
{
Door_State_Flag = 0;
PWM_Init(Door_Close)
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
Door_Close_Time = 4000;
}
if(Door_Close_Finish_Flag == 1)//關(guān)門完畢
{
Door_Close_Finish_Flag = 0;
PWM_Init(Lift_Up);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
Lift_Motor_Time = (2-Now_Plate)*6000;//電梯運(yùn)行時間
LED_Flow_UP_Flag = 1; //流水燈標(biāo)記,在電梯上升過程有用
LED_Flow_UP_Time = 200;//流水燈時間
}
if(Lift_Arrive_Flag == 1)//電梯到達(dá)樓層
{
Lift_Arrive_Flag = 0;
LED_Flow_UP_Flag = 0;//流水燈關(guān)閉
LED_Ctorl(0,LEDAOALL);
LED2_Ctorl_Flag = 0;
LCD__Shan_Flag = 1; //LCD閃爍
PWM_Init(Door_Open);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
Door_Open_Time = 4000;//門打開時間等待4s
}
if(Door_Open_Finish_Flag == 1)
{
Door_Open_Finish_Flag = 0;
PWM_Init(All_Stop);
Door_Wait_Time = 2000;
}
if(Door_Wait_Flag == 1)
{
Door_Wait_Flag = 0;
Door_State_Flag = 1;
Now_Plate = 2;
Now2_Plate = 0;
}
}
else if(Now3_Plate == 1 && Now_Plate < 3)
{
if(Door_State_Flag == 1) //門處于打開狀態(tài)
{
Door_State_Flag = 0;
PWM_Init(Door_Close); //關(guān)門
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
Door_Close_Time = 4000;//關(guān)門時間5s
}
if(Door_Close_Finish_Flag == 1)//關(guān)門完畢
{
Door_Close_Finish_Flag = 0;
PWM_Init(Lift_Up);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
Lift_Motor_Time = (3-Now_Plate)*6000;//電梯運(yùn)行時間
LED_Flow_UP_Flag = 1
LED_Flow_UP_Time = 200;
}
if(Lift_Arrive_Flag == 1)//電梯到達(dá)樓層
{
Lift_Arrive_Flag = 0;
LED_Flow_UP_Flag = 0;//流水燈關(guān)閉
LED_Ctorl(0,LEDAOALL);
LED3_Ctorl_Flag = 0;
LCD__Shan_Flag = 1;
PWM_Init(Door_Open);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
Door_Open_Time = 4000;//門打開時間4s
}
if(Door_Open_Finish_Flag == 1)
{
Door_Open_Finish_Flag = 0;
PWM_Init(All_Stop);
Door_Wait_Time = 2000;
}
if(Door_Wait_Flag == 1)
{
Door_Wait_Flag = 0;
Door_State_Flag = 1;
Now_Plate = 3;
Now3_Plate = 0;
}
}
else if(Now4_Plate == 1 && Now_Plate < 4)
{
if(Door_State_Flag == 1) //門處于打開狀態(tài)
{
Door_State_Flag = 0;
PWM_Init(Door_Close); //關(guān)門
GPIO_ResetBits(GPIOA,GPIO_Pin_5);
Door_Close_Time = 4000;//關(guān)門時間5s
}
if(Door_Close_Finish_Flag == 1)//關(guān)門完畢
{
Door_Close_Finish_Flag = 0;
PWM_Init(Lift_Up);
GPIO_SetBits(GPIOA,GPIO_Pin_4);
Lift_Motor_Time = (4-Now_Plate)*6000;//電梯運(yùn)行時間
LED_Flow_UP_Flag = 1; //流水燈標(biāo)記,在電梯上升過程有用
LED_Flow_UP_Time = 200;//流水燈時間
}
if(Lift_Arrive_Flag == 1)//電梯到達(dá)樓層
{
Lift_Arrive_Flag = 0;
LED_Flow_UP_Flag = 0;//流水燈關(guān)閉
LED_Ctorl(0,LEDAOALL);
LED4_Ctorl_Flag = 0;
LCD__Shan_Flag = 1;
PWM_Init(Door_Open);
GPIO_SetBits(GPIOA,GPIO_Pin_5);
Door_Open_Time = 4000;//門打開時間4s
}
if(Door_Open_Finish_Flag == 1)
{
Door_Open_Finish_Flag = 0;
PWM_Init(All_Stop);
Door_Wait_Time = 2000;
}
if(Door_Wait_Flag == 1)
{
Door_Wait_Flag = 0;
Door_State_Flag = 1;
Now_Plate = 4;
Now4_Plate = 0;
}
}
}
}
全部資料51hei下載地址:
模擬升降器.7z
(275.14 KB, 下載次數(shù): 20)
2020-8-28 17:36 上傳
點(diǎn)擊文件名下載附件
模擬升降器源程序 下載積分: 黑幣 -5
|