模拟电梯毕业设计论文 - 图文 下载本文

基于单片机的模拟电梯系统设计 丽水学院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