电梯控制系统的实现,附软硬件架构图
#define repairMode 00
#define generalrunMode 01
#define direcltyrunMode 10
int setModeR_G(int currentMode int premode); //负责状态之间的切换
int setModeG_R(int currentMode int premode); //mode为两位变量,由拨码开关在I/O口读入
int setModeG_D(int currentMode int premode);
int setModeD_G(int currentMode int premode);
//状态切换会返回置位bool量 modechange
int getmode() //读取mode的当前的值,并且刷新mode和premode
Void lcd_initialize(void) //负责显示屏的初始化
Void port_initalize(void) //负责端口的初始化
Void motor_initalize(void) //负责电机的初始化
Void lighting_initalize(void) //负责照明的初始化
Void elevatordoor_initalize(void) //负责电梯门的初始化
Void lcd_display(int temperature); //负责温度的显示
Void eledoor_allopen(); //电梯门在检修模式下常开
Void eledoor(); //电梯门在其他两个模式下的运行方式
Void motor_stop();
int motor_genrun();
int motor_dirrun(); //返回一个Int值dooropen为1,控制电梯门的开启
//电梯在三种模式下的运行方式
Void light_display(int pressure); //电灯的开关控制
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() //一般运行模式下的工作方式
{
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() //直接运行下的工作方式
{
While(modechange==0)
{
Communicate();
Light_display();
Lcd_display(int temperature);
Int getmode();
If(premode==10&&mode==01)
setModeD_G();
}
}
Void initialize(void) //负责总体的初始化
{
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;
}
}
}
评论