基于单片机的模拟电梯系统设计 丽水学院2013届学生毕业设计(论文)
void open(); void down(); void Beep(); void DisPlay();
void delay(unsigned char a);
void main() { init(); while(1) {
KeyNum=keyscan(); DisPlay(); //数码管显示
switch(state) //判断状态
{ case STOP: stop(); break; case UP:
up(); break; case DOWN:
down(); break; case CLOSE:
close(); break; case CLOSING:
closing(); break; case OPEN:
open(); break; case OPENING:
opening();
32
基于单片机的模拟电梯系统设计 丽水学院2013届学生毕业设计(论文)
default: break;
}
}
}
void init() //定时器初始化
{ TMOD=0X01; TH0=15536/256; TL0=15536%6; TR0=1; ET0=1; Stop();
}
unsigned char getkey() //判断哪个按键按下
{ if(S1_UP==0)return S1UP; if(S2_UP==0)return S2UP; if(S2_DOWN==0)return S2DOWN; if(S3_UP==0)return S3UP; if(S3_DOWN==0)return S3DOWN; if(S4_DOWN==0)return S4DOWN; if(FAST_OPEN==0)return FASTOPEN; if(FAST_CLOSE==0)return FASTCLOSE; if(S1==0)return F1; if(S2==0)return F2; if(S3==0)return F3; if(S4==0)return F4;
return NOKEY;
}
unsigned char keyscan() {
static unsigned char keynum=NOKEY;
33
基于单片机的模拟电梯系统设计 丽水学院2013届学生毕业设计(论文)
static unsigned char count=0; unsigned char key; key=getkey(); if(keynum==key) { count++; if(count==20) { keynum=NOKEY; count=0; return key;
}
} else { keynum=key; }
return NOKEY;
}
void timer0() interrupt 1 { TH0=15536/256; TL0=15536%6; gcount++; if(gcount==20) { gcount=0; Timer++;
}
}
void stop()
{ switch(KeyNum)
{
//定时器1中断
//停止状态
34
基于单片机的模拟电梯系统设计 丽水学院2013届学生毕业设计(论文)
case S1UP: if(CurrentFloor!=1) { floor[wait]=1; state=CLOSING;
} break;
case S2UP:
if(CurrentFloor!=2) { floor[wait]=2; state=CLOSING;
} break;
case S2DOWN:
if(CurrentFloor!=2) { floor[wait]=2; state=CLOSING;
} break;
case S3UP:
if(CurrentFloor!=3) {
floor[wait]=3; state=CLOSING;
} break;
case S3DOWN:
if(CurrentFloor!=3) { floor[wait]=3; state=CLOSING;
}
break;
case S4DOWN:
35
相关推荐: