找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6155|回复: 11
打印 上一主题 下一主题
收起左侧

单片机4层电梯控制程序

  [复制链接]
跳转到指定楼层
楼主
ID:153353 发表于 2016-12-9 00:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
全部源码下载:
C语言程序.rar (34.08 KB, 下载次数: 84)


程序预览:
  1. #include "reg51.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. sbit Up_LED                 = P1^0;        //上行LED定义
  5. sbit Down_LED                 = P1^1;        //下行LED定义

  6. sbit Open_LED       = P1^2; //开门状态LED

  7. sbit First                         = P3^7; //1楼叫上按键
  8. sbit Second_Down         = P3^6;        //2楼叫下按键
  9. sbit Second_Up                 = P3^5; //2楼叫上按键
  10. sbit Third_Down         = P3^4; //3楼叫下按键
  11. sbit Third_Up                 = P3^3;        //3楼叫上按键
  12. sbit Fourth                 = P3^2;        //4楼叫下按键            

  13. sbit Container1  = P2^4;        //电梯内1楼按键
  14. sbit Container2  = P2^5;        //电梯内2楼按键
  15. sbit Container3  = P2^6;        //电梯内3楼按键
  16. sbit Container4  = P2^7;        //电梯内4楼按键

  17. sbit Arm         = P1^3;         //电梯内报警按钮
  18. sbit Arm_Beep    = P1^4;         //电梯外报警器

  19. sbit  Moto1        = P2^0;   //步进电机
  20. sbit  Moto2        = P2^1;   //步进电机
  21. sbit  Moto3        = P2^2;   //步进电机
  22. sbit  Moto4        = P2^3;   //步进电机

  23. uchar Key_Enable[10]; //按键存储


  24. uchar code Tab[]={0x14,0xD7,0x32,0x52,0xD4,0x38};        //数码管数字定义

  25. uchar Tab_Up[]={0,0,0};                //存储上行呼叫记录
  26. uchar Tab_Down[]={0,0,0};        //存储下行呼叫记录
  27. uchar Tab_Nei[]={0,0,0,0};        //存储电梯内部呼叫记录
  28. uchar Now=1;                                //当前所在楼层
  29.        
  30. void delay_Arm(uint t)           //延时函数
  31. {
  32.         while(t--);
  33. }

  34. void Keyboard()                         //按键扫描函数
  35. {
  36.         uchar i;
  37.         if(!Key_Enable[0])if(!First){Tab_Up[0]=1;}                  //1楼有人按下,存储到上行呼叫表
  38.         if(!Key_Enable[1])if(!Second_Up){Tab_Up[1]=1;}          //2楼上行有人按下,存储到上行呼叫表
  39.         if(!Key_Enable[2])if(!Third_Up){Tab_Up[2]=1;}          //3楼上行有人按下,存储到上行呼叫表

  40.         if(!Key_Enable[5])if(!Fourth){Tab_Down[2]=1;  }  //4楼有人按下,存储到下行呼叫表
  41.         if(!Key_Enable[4])if(!Third_Down){Tab_Down[1]=1;} //3楼下行有人按下,存储到下行呼叫表
  42.         if(!Key_Enable[3])if(!Second_Down){Tab_Down[0]=1;}        //2楼下行有人按下,存储到下行呼叫表

  43.         if(!Key_Enable[6])if(!Container1){Tab_Nei[0]=1;}        //1楼有人按下,存储到电梯内呼叫表
  44.         if(!Key_Enable[7])if(!Container2){Tab_Nei[1]=1;}        //2楼有人按下,存储到电梯内呼叫表
  45.         if(!Key_Enable[8])if(!Container3){Tab_Nei[2]=1;}        //3楼有人按下,存储到电梯内呼叫表
  46.         if(!Key_Enable[9])if(!Container4){Tab_Nei[3]=1;}        //4楼有人按下,存储到电梯内呼叫表

  47.         First=!Tab_Up[0];        //如果有人按下就点亮对应LED

  48.         Second_Up=!Tab_Up[1]; //如果有人按下就点亮对应LED
  49.         Second_Down=!Tab_Down[0]; //如果有人按下就点亮对应LED

  50.         Third_Up=!Tab_Up[2];  //如果有人按下就点亮对应LED
  51.         Third_Down=!Tab_Down[1];//如果有人按下就点亮对应LED
  52.        
  53.         Fourth=!Tab_Down[2]; //如果有人按下就点亮对应LED

  54.         Container1=!Tab_Nei[0];         //如果有人按下就点亮对应LED
  55.         Container2=!Tab_Nei[1];        //如果有人按下就点亮对应LED
  56.         Container3=!Tab_Nei[2];        //如果有人按下就点亮对应LED
  57.         Container4=!Tab_Nei[3];        //如果有人按下就点亮对应LED

  58.         if(!Arm)                  
  59.         {
  60.                 P0=Tab[5];
  61.                 delay_Arm(4000);        //报警器延时
  62.                 while(!Arm); //等待按键释放
  63.                 delay_Arm(2000);   //报警器延时
  64.                 while(1)
  65.                 {
  66.                         delay_Arm(100);         //去抖动
  67.                         i++;
  68.                         if(i>200)
  69.                         {
  70.                                 i=0;
  71.                                 Arm_Beep=!Arm_Beep;          //取反
  72.                         }
  73.                         if(!Arm)
  74.                         {
  75.                                 Arm_Beep=1;
  76.                                 break;
  77.                         }
  78.                 }
  79.                 delay_Arm(4000);   //报警器延时
  80.                 while(!Arm); //等待按键释放
  81.                 delay_Arm(20000);  //报警器延时
  82.                 P0=Tab[Now];
  83.         }
  84. }

  85. void delay(uint t)
  86. {
  87.         while(t--)
  88.         Keyboard();
  89. }

  90. /**wai_flag=1代表下行wai_flag=2代表上行*********
  91. nei_flag=1代表内部请求,nei_flag=0代表无内部请求
  92. **********num第几层楼****************/
  93. void open(uchar wai_flag,uchar nei_flag,uchar num)           //开门对应闪烁LED
  94. {
  95.         uchar i;
  96.         Open_LED=0;  //点亮开门LED
  97.         Arm_Beep=0;          //蜂鸣器提示到达
  98.         for(i=0;i<12;i++)          //闪烁对应的呼叫LED
  99.         {
  100.                 if(wai_flag==1)//如果是下行就闪烁对应楼层的LED
  101.                 {
  102.                         Tab_Down[num-2]=!Tab_Down[num-2]; //按键码处理
  103.                         Key_Enable[num+1]=1;                          //按键码处理
  104.                 }
  105.                 if(wai_flag==2)//如果是上行就闪烁对应楼层的LED
  106.                 {
  107.                         Tab_Up[num-1]=!Tab_Up[num-1];         //按键码处理
  108.                         Key_Enable[num-1]=1;                         //按键码处理
  109.                 }
  110.                 if(nei_flag==1)//如果是内部就闪烁对应楼层的LED
  111.                 {
  112.                         Tab_Nei[num-1]=!Tab_Nei[num-1];          //按键码处理
  113.                         Key_Enable[num+5]=1;                          //按键码处理
  114.                 }
  115.                 delay(2000);
  116.                 if(i>1)Arm_Beep=1;//关闭蜂鸣器
  117.         }
  118.         for(i=0;i<10;i++)Key_Enable[i]=0;          //清空按键码

  119.         if(wai_flag==1)//如果是下行就闪烁对应楼层的LED
  120.         {
  121.                 Tab_Down[num-2]=0;
  122.                 if(num==4)Fourth=1;
  123.                 if(num==3)Third_Down=1;
  124.                 if(num==2)Second_Down=1;
  125.         }
  126.         if(wai_flag==2)//如果是上行就闪烁对应楼层的LED
  127.         {
  128.                 Tab_Up[num-1]=0;
  129.                 if(num==1)First=1;
  130.                 if(num==2)Second_Up=1;
  131.                 if(num==3)Third_Up=1;
  132.         }
  133.         if(nei_flag==1)//如果是内部就闪烁对应楼层的LED
  134.         {
  135.                 Tab_Nei[num-1]=0;
  136.                 if(num==1)Container1=1;
  137.                 if(num==2)Container2=1;
  138.                 if(num==3)Container3=1;
  139.                 if(num==4)Container4=1;
  140.         }
  141.         Open_LED=1;  //关闭开门LED
  142.                
  143. }
  144. void ting()                  
  145. {
  146.         Moto1=Moto2=Moto3=Moto4=0;        //步进电机停止转动
  147. }
  148. void zheng(uint t)
  149. {
  150.         while(t--)
  151.         {
  152.                 Moto1=1;Moto2=Moto3=Moto4=0; delay(15);        //步进电机8个节拍循环旋转
  153.                 Moto2=Moto1=1;Moto3=Moto4=0; delay(15);        //步进电机8个节拍循环旋转
  154.        
  155.                 Moto2=1;Moto1=Moto3=Moto4=0; delay(15);         //步进电机8个节拍循环旋转
  156.                 Moto3=Moto2=1;Moto1=Moto4=0; delay(15);         //步进电机8个节拍循环旋转
  157.        
  158.                 Moto3=1;Moto2=Moto1=Moto4=0; delay(15);         //步进电机8个节拍循环旋转
  159.                 Moto4=Moto3=1;Moto2=Moto1=0; delay(15);         //步进电机8个节拍循环旋转
  160.        
  161.                 Moto4=1;Moto2=Moto3=Moto1=0; delay(15);         //步进电机8个节拍循环旋转
  162.                 Moto4=Moto1=1;Moto2=Moto3=0; delay(15);         //步进电机8个节拍循环旋转
  163.         }
  164.         ting();
  165. }

  166. void fan(uint t)
  167. {         
  168.         while(t--)
  169.         {
  170.                 Moto4=Moto1=1;Moto2=Moto3=0; delay(15);        //步进电机8个节拍循环旋转
  171.                 Moto4=1;Moto2=Moto3=Moto1=0; delay(15);        //步进电机8个节拍循环旋转
  172.                
  173.                 Moto4=Moto3=1;Moto2=Moto1=0; delay(15);        //步进电机8个节拍循环旋转
  174.                 Moto3=1;Moto2=Moto1=Moto4=0; delay(15);        //步进电机8个节拍循环旋转
  175.                
  176.                 Moto3=Moto2=1;Moto1=Moto4=0; delay(15);        //步进电机8个节拍循环旋转
  177.                 Moto2=1;Moto1=Moto3=Moto4=0; delay(15);        //步进电机8个节拍循环旋转
  178.                
  179.                 Moto2=Moto1=1;Moto3=Moto4=0; delay(15);         //步进电机8个节拍循环旋转
  180.                 Moto1=1;Moto2=Moto3=Moto4=0; delay(15);         //步进电机8个节拍循环旋转
  181.         }
  182.         ting();
  183. }
  184. void Upward()           //电梯上行步进电机正转
  185. {
  186.         Up_LED=0;                 //打开上行LED
  187.         Down_LED=1;                 //关闭下行LED
  188.         zheng(256);
  189. }
  190. void Downward()                //电梯下行步进电机反转
  191. {
  192.         Down_LED=0;                 //打开下行LED
  193.         Up_LED=1;                 //关闭上行LED
  194.         fan(256);
  195. }



  196. void  Fourth_Process()          //四楼的处理函数
  197. {
  198.         if(Tab_Down[2])         //查表如果第四层外部有人按下按钮
  199.         {
  200.                 if(Tab_Nei[3])        //查表如果第四层内部也有人按下按钮
  201.                 open(1,1,4);//第四层开门-外部进电梯
  202.                 else
  203.                 open(1,0,4);//第四层开门-外部进电梯
  204.                 Tab_Down[2]=0;//清除第四层标志
  205.         }       
  206.        
  207.         if(Tab_Nei[3])        //查表如果第四层内部有人按下按钮
  208.         {
  209.                 open(0,1,4);//第四层开门-内部出电梯
  210.                 Tab_Nei[3]=0;//清除第四层轿厢标志       
  211.         }
  212.         if(Tab_Nei[2]||Tab_Nei[1]||Tab_Nei[0])//查表看内部下行请求
  213.         {               
  214.                 Downward();
  215.                 Now = 3;//下一层
  216.                 P0=Tab[Now];           //显示当前楼层
  217.         }
  218.         else if(Tab_Up[0]||Tab_Up[1]||Tab_Up[2]||Tab_Down[0]||Tab_Down[1])        //查表有外部有请求
  219.         {               
  220.                 Downward();
  221.                 Now = 3;//下一层
  222.                 P0=Tab[Now];        //显示当前楼层               
  223.         }
  224.         else
  225.         {
  226.                 Up_LED=Down_LED=1;   //关闭上下行LED   
  227.         }
  228. }

  229. void Third_Process()         //三楼的处理函数
  230. {
  231.         if(Down_LED==0)//下行中
  232.         {
  233.                 delay(1);
  234.                 if(Tab_Down[1])//本层有人按下下行按键
  235.                 {       
  236.                         if(Tab_Nei[2]) //本层有人出电梯
  237.                         open(1,1,3);//第三层下行呼叫开门
  238.                         else
  239.                         open(1,0,3);//第三层下行呼叫开门
  240.                         Tab_Down[1]=0;//清除第三层下行标志       
  241.                 }
  242.                 if(Tab_Nei[2]) //本层有人出电梯
  243.                 {
  244.                         open(0,1,3);//第三层出电梯开门
  245.                         Tab_Nei[2]=0;//清除第三层轿厢标志
  246.                 }
  247.                 if(Tab_Nei[1]||Tab_Nei[0])//内部下行请求
  248.                 {               
  249.                         Downward();
  250.                         Now = 2;//下一层
  251.                         P0=Tab[Now];
  252.                 }
  253.                 else if(Tab_Up[0]||Tab_Up[1]||Tab_Down[0])        //外部请求
  254.                 {         
  255.                         Downward();
  256.                         Now = 2;//下一层
  257.                         P0=Tab[Now];                       
  258.                 }
  259.                 else
  260.                 {
  261.                         Down_LED=1;     //关闭下行LED
  262.                         Up_LED=1;    //关闭上行LED
  263.                 }       
  264.         }
  265.         else if(Up_LED==0)        //上行中
  266.         {
  267.                  if(Tab_Up[2])
  268.                 {
  269.                         if(Tab_Nei[2])//本层有人出电梯
  270.                         open(2,1,3);//第三层上行呼叫开门
  271.                         else
  272.                         open(2,0,3);//第三层上行呼叫开门
  273.                         Tab_Up[2]=0;//清除第三层上行标志       
  274.                 }
  275.                 if(Tab_Nei[2]) //本层有人出电梯
  276.                 {
  277.                         open(0,1,3);//第三层出电梯开门
  278.                         Tab_Nei[2]=0;//清除第三层轿厢标志
  279.                 }
  280.                 if(Tab_Nei[3])         //查表
  281.                 {          
  282.                         Upward();
  283.                         Now=4;
  284.                         P0=Tab[Now];
  285.                 }
  286.                 else if(Tab_Down[2])        //外部请求
  287.                 {          
  288.                         Upward();
  289.                         Now = 4;//向上运行一层
  290.                         P0=Tab[Now];    //显示当前楼层                       
  291.                 }
  292.                 else
  293.                 {
  294.                         Down_LED=1;     //关闭下行LED
  295.                         Up_LED=1;    //关闭上行LED
  296.                 }
  297.         }
  298.         else                //电梯停在本层
  299.         {
  300.                 if(Tab_Down[1])           //查表
  301.                 {
  302.                         if(Tab_Nei[2])          //查表
  303.                         open(1,1,3);//第三层开门-外部进电梯
  304.                         else
  305.                         open(1,0,3);//第三层开门-外部进电梯
  306.                         Tab_Down[1]=0;//清除第三层标志
  307.                 }
  308.                 if(Tab_Up[2])//本层上
  309.                 {
  310.                         if(Tab_Nei[2])          //查表
  311.                         open(2,1,3);//第三层下行呼叫开门
  312.                         else
  313.                         open(2,0,3);//第三层下行呼叫开门
  314.                         Tab_Up[2]=0;//清除第三层下行标志       
  315.                 }       
  316.                
  317.                 if(Tab_Nei[2])          //查表
  318.                 {
  319.                         open(0,1,3);//第三层开门-内部出电梯
  320.                         Tab_Nei[2]=0;//清除第三层轿厢标志       
  321.                 }
  322.                 if(Tab_Nei[3])         //查表
  323.                 {          
  324.                         Upward();
  325.                         Now = 4;//上一层
  326.                         P0=Tab[Now];    //显示当前楼层       
  327.                 }
  328.                 else if(Tab_Nei[1]||Tab_Nei[0])//内部下行请求
  329.                 {          
  330.                         Downward();
  331.                         Now = 2;//下一层
  332.                         P0=Tab[Now];    //显示当前楼层
  333.                 }
  334.                 else if(Tab_Up[0]||Tab_Up[1]||Tab_Down[0])        //外部请求
  335.                 {          
  336.                         Downward();
  337.                         Now = 2;//下一层
  338.                         P0=Tab[Now];    //显示当前楼层                       
  339.                 }
  340.                 else if(Tab_Down[2])   //查表
  341.                 {         
  342.                         Upward();
  343.                         Now = 4;//上一层
  344.                         P0=Tab[Now];    //显示当前楼层       
  345.                 }
  346.         }

  347.        
  348. }

  349. void Second_Process()           //二楼的处理函数
  350. {
  351.         if(Down_LED==0)//下行中
  352.         {
  353.                 if(Tab_Down[0])//本层下
  354.                 {
  355.                         if(Tab_Nei[1]) //本层有人出电梯
  356.                         open(1,1,2);//第二层下行呼叫开门
  357.                         else
  358.                         open(1,0,2);//第二层下行呼叫开门
  359.                         Tab_Down[0]=0;//清除第二层下行标志       
  360.                 }
  361.                
  362.                 if(Tab_Nei[1]) //本层有人出电梯
  363.                 {
  364.                         open(0,1,2);//第二层出电梯开门
  365.                         Tab_Nei[1]=0;//清除第二层轿厢标志
  366.                 }
  367.                
  368.                 if(Tab_Nei[0])//内部下行请求
  369.                 {       
  370.                         Downward();       
  371.                         Now = 1;//下一层
  372.                         P0=Tab[Now];    //显示当前楼层
  373.                 }
  374.                 else if(Tab_Up[0])        //外部请求
  375.                 {          
  376.                         Downward();
  377.                         Now = 1;//下一层
  378.                         P0=Tab[Now];    //显示当前楼层                       
  379.                 }
  380.                 else
  381.                 {
  382.                         Down_LED=1;     //关闭下行LED
  383.                         Up_LED=1;    //关闭上行LED
  384.                 }       
  385.         }
  386.         else if(Up_LED==0)          //上行中
  387.         {
  388.                  if(Tab_Up[1])        //查表
  389.                 {
  390.                         if(Tab_Nei[1]) //本层有人出电梯
  391.                         open(2,1,2);//第二层上行呼叫开门
  392.                         else
  393.                         open(2,0,2);//第二层上行呼叫开门
  394.                         Tab_Up[1]=0;//清除第二层上行标志       
  395.                 }
  396.                 if(Tab_Nei[1]) //本层有人出电梯
  397.                 {
  398.                         open(0,1,2);//第二层出电梯开门
  399.                         Tab_Nei[1]=0;//清除第二层轿厢标志
  400.                 }
  401.                 if(Tab_Nei[2]||Tab_Nei[3])        //轿厢内有人去3或4楼
  402.                 {       
  403.                         Upward();
  404.                         Now=3;          //向上运行一层
  405.                         P0=Tab[Now];    //显示当前楼层
  406.                 }
  407.                 else if(Tab_Down[2]||Tab_Down[1]||Tab_Up[2])        //外部请求
  408.                 {       
  409.                         Upward();
  410.                         Now = 3;//向上运行一层
  411.                         P0=Tab[Now];    //显示当前楼层                       
  412.                 }
  413.                 else
  414.                 {
  415.                         Down_LED=1;     //关闭下行LED
  416.                         Up_LED=1;    //关闭上行LED
  417.                 }
  418.         }
  419.         else                //电梯停在本层
  420.         {
  421.                 if(Tab_Down[0])
  422.                 {
  423.                         if(Tab_Nei[1])
  424.                         open(1,1,2);//第二层开门-外部进电梯
  425.                         else
  426.                         open(1,0,2);//第二层开门-外部进电梯
  427.                         Tab_Down[0]=0;//清除第二层标志
  428.                 }
  429.                 if(Tab_Up[1])//本层上
  430.                 {
  431.                         if(Tab_Nei[1])
  432.                         open(2,1,2);//第二层下行呼叫开门
  433.                         else
  434.                         open(2,0,2);//第二层下行呼叫开门
  435.                         Tab_Up[1]=0;//清除第二层下行标志       
  436.                 }       
  437.                
  438.                 if(Tab_Nei[1])
  439.                 {
  440.                         open(0,1,2);//第二 层开门-内部出电梯
  441.                         Tab_Nei[1]=0;//清除第二层轿厢标志       
  442.                 }
  443.                 if(Tab_Nei[2]||Tab_Nei[3])
  444.                 {          
  445.                         Upward();
  446.                         Now = 3;//上一层
  447.                         P0=Tab[Now];    //显示当前楼层       
  448.                 }
  449.                 else if(Tab_Nei[0])//内部下行请求
  450.                 {         
  451.                         Downward();
  452.                         Now = 1;//下一层
  453.                         P0=Tab[Now];    //显示当前楼层
  454.                 }
  455.                 else if(Tab_Up[0])        //外部请求
  456.                 {          
  457.                         Downward();
  458.                         Now = 1;//下一层
  459.                         P0=Tab[Now];    //显示当前楼层                       
  460.                 }
  461.                 else if(Tab_Down[1]||Tab_Down[2]||Tab_Up[2])
  462.                 {          
  463.                         Upward();
  464.                         Now = 3;//上一层
  465.                         P0=Tab[Now];    //显示当前楼层       
  466.                 }
  467.         }
  468. }


  469. void  First_Process()          //一楼的处理函数
  470. {
  471.         if(Tab_Up[0])          //查表
  472.         {
  473.                 if(Tab_Nei[0])           //查表
  474.                 open(2,1,1);//第一层开门-外部进电梯
  475.                 else
  476.                 open(2,0,1);//第一层开门-外部进电梯
  477.                 Tab_Up[0]=0;//清除第一层标志
  478.         }       
  479.        
  480.         if(Tab_Nei[0])           //查表
  481.         {
  482.                 open(0,1,1);//第一层开门-内部出电梯
  483.                 Tab_Nei[0]=0;//清除第一层轿厢标志       
  484.         }
  485.         if(Tab_Nei[2]||Tab_Nei[1]||Tab_Nei[3])//内部上行请求
  486.         {          
  487.                 Upward();
  488.                 Now = 2;//向上运行一层
  489.                 P0=Tab[Now];    //显示当前楼层
  490.         }
  491.         else if(Tab_Up[1]||Tab_Up[2]||Tab_Down[0]||Tab_Down[1]||Tab_Down[2])        //外部请求
  492.         {       
  493.                 Upward();    //打开上行LED  
  494.                 Now = 2;//向上运行一层
  495.                 P0=Tab[Now];    //显示当前楼层                       
  496.         }
  497.         else
  498.         {
  499.                 Up_LED=Down_LED=1;   //关闭上下行LED     //关闭下行LED
  500.         }
  501. }

  502. void main()
  503. {               
  504.         P0=Tab[Now];//开机电梯在1楼
  505.         while(1)
  506.         {
  507.                 Keyboard(); //扫描键盘
  508.                 P0=Tab[Now];    //显示当前楼层

  509.                 if(Now==4)//电梯在4楼处理方法
  510.                 {
  511.                         Fourth_Process();       
  512.                 }

  513.                 if(Now==3)        //电梯在3楼处理方法
  514.                 {
  515.                         Third_Process();       
  516.                 }
  517.                 if(Now==2)        //电梯在2楼处理方法
  518.                 {
  519.                         Second_Process();
  520.                 }
  521.                 if(Now==1) //电梯在1楼处理方法
  522.                 {
  523.                         First_Process();
  524.                 }
  525.         }
  526. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-1-7 20:46 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:73030 发表于 2017-1-7 21:10 来自手机 | 只看该作者
好复杂,学习一下。
回复

使用道具 举报

地板
ID:71233 发表于 2017-1-7 21:15 | 只看该作者
为大家提供一个电梯好思路,不错,很感谢.
回复

使用道具 举报

5#
ID:161446 发表于 2017-1-12 13:24 | 只看该作者
看过别的电梯程序,你的让我眼前一亮。学习了。感谢分享
回复

使用道具 举报

6#
ID:47652 发表于 2017-2-14 09:43 | 只看该作者
虽然与真实电梯管理程序有一定差距,但对于学习51来说有一定现实意义
回复

使用道具 举报

7#
ID:130231 发表于 2017-3-18 13:52 | 只看该作者
不错!。感谢分享,源码我比较喜欢51的。
回复

使用道具 举报

8#
ID:182843 发表于 2017-3-25 20:26 | 只看该作者
好复杂,学习一下。
回复

使用道具 举报

9#
ID:209556 发表于 2017-6-9 15:17 | 只看该作者
感觉可以学到东西
回复

使用道具 举报

10#
ID:312541 发表于 2018-11-10 14:14 | 只看该作者
有原理图吗
回复

使用道具 举报

11#
ID:424947 发表于 2018-12-2 00:13 | 只看该作者
对我的帮助太大了,感谢楼主
回复

使用道具 举报

12#
ID:520605 发表于 2020-4-29 13:45 | 只看该作者
谢谢楼主,学习学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表