基于单片机的三层电梯系统设计
if(status==1) { {
//若电梯向上走则从高楼层到低楼层扫描
//以此达到判断优先级的目的
for(j=3;j>=1;--j) if(request[j-1]==1) { dst=j; break; } } }
else if(status==0) //若电梯向下走则从低楼层到高楼层扫描 { {
if(request[j-1]==1) { dst=j; break; } } } }
//电梯向上走 void Up() {
status=1; {
Display(lift,1); KBScan(); Destination();
//读取点阵键盘
if(request[lift-1]==1) //若请求到达的楼层在所在楼层和目的楼层之间则停下闪烁显示并将其对应的request清零 {
Delay_ms(3000); if(P0_5==1&&lift==2); else {
request[lift-1]=0; }
5
//则将目的楼层设为该楼
//并将其对应的request置1,然后跳出
//以此达到判断优先级的目的
for(j=1;j<=3;++j)
//置1表示电梯向上走
for(;lift<=dst;lift++) //电梯到达目的楼层之前往上走
//每到达一楼就显示该楼层数
基于单片机的三层电梯系统设计
switch(lift) {
case 1:{P0_0=0;P0_3=0;break;} case 2:{P0_1=0;P0_4=0;break;} case 3:{P0_2=0;P0_6=0;break;} default:{break;} } Flash(3); Delay_ms(800); } else {
Delay_ms(3000); } } lift--; }
//电梯向下走 void Down() {
status=0; {
Display(lift,0); KBScan(); Destination();
//读取点阵键盘
if(request[lift-1]==1) //若请求到达的楼层在所在楼层和目的楼层之间则停下闪烁显示并将其对应的request清零 {
Delay_ms(3000); if(P0_4==1&&lift==2); else {
request[lift-1]=0; } switch(lift) {
case 1:{P0_0=0;P0_3=0;break;} case 2:{P0_1=0;P0_5=0;break;} case 3:{P0_2=0;P0_6=0;break;} default:{break;}
6
//置1表示电梯向上走
//电梯到达目的楼层之前往上走 //每到达一楼就显示该楼层数
for(;lift>=dst;lift--)
基于单片机的三层电梯系统设计
} Flash(3); Delay_ms(800); } else {
Delay_ms(3000); } } lift++; }
void main() { P0=0; while(1)
{
LCD2=0x00; Display(lift,status);
Destination(); if(dst>=lift) { Up();
} else { Down();
} } }
//电梯程序的循环
//查询有无楼层请求到达 //请求的楼层比要到达的楼层高//电梯向上走
//否则电梯向下走
7