当前位置:首页 > 基于单片机的智能电梯控制系统设计.doc
Init();(调用初始化函数),elevator_check();(调用电梯检测函数)key_check_all(); elevator_order_check(elevator_layer);四个子程序。其中后三个子程序在while循环中无限循环的一直调用下去。本设计中还包括了定时中断程序。
3.2电梯运行位置检测程序如下:
/**************************************************************** * 函 数 名 : elevator_check * 函数功能
: 实时检测电梯位置并用数码管显示,当电梯停止在
错误状态或有报警时,输出报警信号,并于电梯门打开3秒后自动关闭
* 输 入 : 无 * 输 出 : 无
****************************************************************/ void elevator_check() {
if
((elevator_one_in==0)&&(elevator_two_in==1)&&(elevator_three_in==1)&&(elevator_four_in==1)) //如果停在1楼
{
elevator_layer=1; //电梯层检测变量赋值1层
Layer=Number_Char [1] ;
elevator_alarm_out=1; //取消报警
} else
if
((elevator_one_in==1)&&(elevator_two_in==0)&&(elevator_three_in==1)&&(elevator_four_in==1)) //如果停在2楼
{
elevator_layer=2; //电梯层检测变量赋值2层
Layer=Number_Char [2] ;
elevator_alarm_out=1; //取消报警
} else
if
((elevator_one_in==1)&&(elevator_two_in==1)&&(elevator_three_in==0)&&(elevator_four_in==1)) //如果停在3楼
{
elevator_layer=3; //电梯层检测变量赋值3层
Layer=Number_Char [3] ;
elevator_alarm_out=1; //取消报警 } else
if
((elevator_one_in==1)&&(elevator_two_in==1)&&(elevator_three_in==1)&&(elevator_four_in==0)) //如果停在4楼
{
elevator_layer=4; //电梯层检测变量赋值4层
Layer=Number_Char [4] ;
elevator_alarm_out=1; //取消报警
} else {
Layer=Number_Char [0] ; //显示F,代表错误状态,报警显示
// elevator_alarm_out=0; //报警输出 }
if (Time>Time_target) //定时时间到 {
elevator_open_door_out=1; //关闭电梯门
if (elevator_goto==1) //如果是电梯上升过程中中断,则延时
后继续执行
{
elevator_up_out=0; //电梯上升
elevator_down_out=1; //电梯上升
elevator_goto=0; //恢复初始值 }
else if (elevator_goto==2) //如果是电梯下降过程中中
断,则延时后继续执行
{
elevator_up_out=1; //电梯下降
elevator_down_out=0; //电梯下降
elevator_goto=0; //恢复初始值 }
else if (elevator_goto==3) {
elevator_goto=0; }
Time=0; //清零
Time_target=0; //定时时间清零
}
if (close_door_key==0) //如果电梯门关闭按键按下 { }
3.3按键检测排队程序如下:
/**************************************************************** * 函数名 : key_check_all * 函数功能
: 按键检测函数总调用
elevator_open_door_out=1; //关闭电梯门 }
* 输入 : 无 * 输出 : 无
****************************************************************/
void key_check_all() {
key_check(one_up_key,1); //按键检测 key_check(two_up_key,2); //按键检测 key_check(two_down_key,3); //按键检测 key_check(three_up_key,4); //按键检测 key_check(three_down_key,5); //按键检测 key_check(four_down_key,6);
//按键检测
//按键检测 //按键检测
key_check(elevator_one_key,7); key_check(elevator_two_key,8);
key_check(elevator_three_key,9); //按键检测 key_check(elevator_four_key,10); //按键检测 }
/**************************************************************** * 函数名 : key_check(unsigned char key,unsigned char n) * 函数功能
: 按键检测函数
* 输入 : key,n * 输出 : 无
****************************************************************/ void key_check(unsigned char key,unsigned char n) {
if (key==0) //1楼电梯外按键按下 {
if (zero==0) //如果此处优先级未排队 {
zero=n; }
else if((one==0)&&(zero!=n)) //如果此处优先级未排队并且前面
已经排队序号未有本按键的排队
共分享92篇相关文档