资源简介

用LED组成的红色箭头显示电梯运动方向,数码管动态显示楼层数的变化, 两个电梯自动选择最近功能。

资源截图

代码片段和文件信息

#include
#define uint unsigned int
#define uchar unsigned char
uchar K1K2K3K4K5K6K7K8K9
K11K12K13K14K15K16K17K18K19ffkkk;
uchar code table[]={
0x400x790x240x300x190x120x020x780x000x10}; //定义一位共阳极数码管值0-9
uchar numtemptpfloor1=4floor2=4;

sbit welaA=P2^7;  //数码管位定义
sbit welaB=P2^6;
sbit A1=P1^0;
sbit B1=P1^1;
sbit C1=P1^2;

sbit D1=P2^0;
sbit E1=P2^1;
sbit F1=P2^2;
sbit D2=P2^3;
sbit E2=P2^4;
sbit F2=P2^5;

sbit shang1=P1^3;
sbit xia1=P1^4;
sbit shang2=P1^5;
sbit xia2=P1^6;
sbit feng=P1^7;  //蜂鸣器定义

void delay(uint z) //延时函数
{
uint xy;
for(x=z;x>0;x--)
 for(y=110;y>0;y--);
}
uchar keyscan1();
uchar keyscan2();
void display1(uchar aa);
void display2(uchar aa);
void display3();  //各个子函数声明
 
void main()
 {
  while(1)

 k=keyscan1(); 
  if(k!=0)
      { if((floor1-k)*(floor1-k)>(floor2-k)*(floor2-k))  //判断哪个楼层离请求楼层较近
 {display2(k);}
 
   if((floor1-k)*(floor1-k)<=(floor2-k)*(floor2-k))
{display1(k); }}
      
   

  kk=keyscan2();  //判断哪个电梯有按键按下
  if(kk!=0)
  {if(kk<9&&kk>0)
{display1(kk);}    
if(kk>10&&kk<19)
{ kk=kk-10;
     display2(kk);} } 

ff=keyscan2();
 if(ff==9||ff==19){feng=0;    //紧急情况下按下9或19键蜂鸣器响
delay(50);  ff=keyscan2();
 if(ff==9||ff==19){feng=1;} }    //再次按下蜂鸣器停止

  display3();   
}
}
void display1(uchar aa) //一号楼梯显示
{
  
  if(aa>floor1)  //上升显示
     {for(num=floor1;num        {  welaB=0; 
     welaA=1;shang1=1; xia1=0;
 P0=table[num]; delay(100);
 welaB=1; P0=0XFF;
 welaA=0;
 P0=table[floor2]; 

  ff=keyscan2();
 if(ff==9||ff==19){feng=0;    //紧急情况下按下9或19键蜂鸣器响
delay(50);  ff=keyscan2();
 if(ff==9||ff==19){feng=1;} }    //再次按下蜂鸣器停止

 delay(1000);shang1=0;}floor1=num;}

if(aa     {for(num=floor1;num>aa;num--)   
        {   welaB=0; 
  welaA=1; xia1=1; shang1=0;
 P0=table[num];delay(100);
      welaB=1;P0=0XFF;
  welaA=0;
P0=table[floor2]; 

ff=keyscan2();
 if(ff==9||ff==19){feng=0;    //紧急情况下按下9或19键蜂鸣器响
delay(50);  ff=keyscan2();
 if(ff==9||ff==19){feng=1;} }    //再次按下蜂鸣器停止

delay(1000);xia1=0;}floor1=num;}
}


void display2(uchar aa)   //二号楼梯显示
{
  if(aa>floor2)   
     {for(num=floor2;num        {     welaB=1;
   welaA=0;shang2=1; xia2=0;
 P0=table[num];delay(100);
   welaA=1;P0=0XFF;
   welaB=0;
 P0=table[floor1]; 
 
  ff=keyscan2();
 if(ff==9||ff==19){feng=0;    //紧急情况下按下9或19键蜂鸣器响
delay(50);  ff=keyscan2();
 if(ff==9||ff==19){feng=1;} }    //再次按下蜂鸣器停止

delay(1000);shang2=0;}floor2=num;}

    if(aa     {for(num=floor2;num>aa;num--)   
        {    welaB=1;
  welaA=0;  xia2=1;  shang2=0;
 P0=table[num]; delay(100);
  welaA=1; P0=0XFF;
  welaB=0;
  P0=table

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      15370  2013-03-31 02:39  电梯最终\keil程序文件\11

     文件       4077  2013-03-31 02:39  电梯最终\keil程序文件\11.hex

     文件         41  2013-03-31 02:39  电梯最终\keil程序文件\11.lnp

     文件      18452  2013-03-31 02:39  电梯最终\keil程序文件\11.M51

     文件       1740  2013-03-31 02:40  电梯最终\keil程序文件\11.Opt

     文件       3339  2013-03-31 02:39  电梯最终\keil程序文件\11.plg

     文件       2148  2013-03-28 15:22  电梯最终\keil程序文件\11.Uv2

     文件       1741  2013-03-30 23:11  电梯最终\keil程序文件\11_Opt.Bak

     文件       2148  2013-03-20 20:02  电梯最终\keil程序文件\11_Uv2.Bak

     文件       6376  2005-03-22 15:22  电梯最终\keil程序文件\STARTUP.A51

     文件      14048  2013-03-31 02:39  电梯最终\keil程序文件\STARTUP.LST

     文件        749  2013-03-31 02:39  电梯最终\keil程序文件\STARTUP.OBJ

     文件       6462  2013-03-31 02:39  电梯最终\keil程序文件\Text11.c

     文件      15998  2013-03-31 02:39  电梯最终\keil程序文件\Text11.LST

     文件      17420  2013-03-31 02:39  电梯最终\keil程序文件\Text11.OBJ

     文件      31365  2013-03-30 23:21  电梯最终\protel图文件\QQ截图20130330232059.png

     文件     368640  2013-03-31 00:28  电梯最终\protel图文件\电梯.ddb

     文件   13020412  2013-03-31 02:43  电梯最终\实物图和原理介绍.doc

     目录          0  2013-03-31 02:40  电梯最终\keil程序文件

     目录          0  2013-03-31 00:29  电梯最终\protel图文件

     目录          0  2013-03-31 02:46  电梯最终

----------- ---------  ---------- -----  ----

             13530526                    21


评论

共有 条评论