電梯控制系統(tǒng)的實(shí)現(xiàn),附軟硬件架構(gòu)圖
#define repairMode 00
#define generalrunMode 01
#define direcltyrunMode 10
int setModeR_G(int currentMode int premode); //負(fù)責(zé)狀態(tài)之間的切換
int setModeG_R(int currentMode int premode); //mode為兩位變量,由撥碼開關(guān)在I/O口讀入
int setModeG_D(int currentMode int premode);
int setModeD_G(int currentMode int premode);
//狀態(tài)切換會(huì)返回置位bool量 modechange
int getmode() //讀取mode的當(dāng)前的值,并且刷新mode和premode
Void lcd_initialize(void) //負(fù)責(zé)顯示屏的初始化
Void port_initalize(void) //負(fù)責(zé)端口的初始化
Void motor_initalize(void) //負(fù)責(zé)電機(jī)的初始化
Void lighting_initalize(void) //負(fù)責(zé)照明的初始化
Void elevatordoor_initalize(void) //負(fù)責(zé)電梯門的初始化
Void lcd_display(int temperature); //負(fù)責(zé)溫度的顯示
Void eledoor_allopen(); //電梯門在檢修模式下常開
Void eledoor(); //電梯門在其他兩個(gè)模式下的運(yùn)行方式
Void motor_stop();
int motor_genrun();
int motor_dirrun(); //返回一個(gè)Int值dooropen為1,控制電梯門的開啟
//電梯在三種模式下的運(yùn)行方式
Void light_display(int pressure); //電燈的開關(guān)控制
Void communicate(); //通信方法
Void repair() //檢修模式下的工作方式
{
While(modechange==0)
{
Communicate();
Eledoor_allopen();
Light_display();
Lcd_display(int temperature);
Int getmode();
If(premode==01&&mode==00)
setModeG_R();
}
}
Void generalrun() //一般運(yùn)行模式下的工作方式
{
While(modechange==0)
{
Communicate();
Light_display();
Lcd_display(int temperature);
If(premode==01&&mode==00)
setModeG_R();
If(premode==01&&mode==10)
setModeG_D();
}
}
Void directlyrun() //直接運(yùn)行下的工作方式
{
While(modechange==0)
{
Communicate();
Light_display();
Lcd_display(int temperature);
Int getmode();
If(premode==10&&mode==01)
setModeD_G();
}
}
Void initialize(void) //負(fù)責(zé)總體的初始化
{
currentMode=generalrunMode;
Lcd_initialize();
Port_initialize();
motor_initalize();
lighting_initalize();
elevatordoor_initalize();
}
Int main()
{
Initialize();
While(1)
{
Switch(currentMode)
{
Case repairMode;
Repair();
Break;
Case generalrunMode;
Generalrun();
Break;
Case directltyrunMode;
Directltyrun();
Break;
}
}
}
評(píng)論