标题: 单片机八层电梯控制系统 仿真图+源程序+电路原理图 [打印本页]

作者: ai1314521    时间: 2016-4-5 18:43
标题: 单片机八层电梯控制系统 仿真图+源程序+电路原理图

单片机八层电梯控制仿真图(仿真工程文件在51黑本帖附件里面可以下载):


单片机八层电梯控制电路原理图(附件里面有ad画的原理图的工程文件及其元器件的封装)

单片机八层电梯控制系统源程序代码:
  1. #include <reg52.h>                 //调用单片机头文件
  2. #define uchar unsigned char  //无符号字符型 宏定义        变量范围0~255
  3. #define uint  unsigned int         //无符号整型 宏定义        变量范围0~65535

  4. //数码管段选定义       0    1    2    3   4           5        6         7          8           9       
  5. uchar code smg_du[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0xdf,0xdb
  6. //                                           A        B         C          D           E   F        不显示
  7.                                          };         //断码       

  8. uchar dis_smg[8] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8};

  9. bit flag_100ms,flag_1s;       
  10. bit flag_stop = 1;   //用做到了相应的楼停下

  11. sbit beep  = P2^6;
  12. sbit xia   = P2^0;
  13. sbit zhong = P2^1;
  14. sbit shang = P2^2;

  15. uchar value2;

  16. sbit led1 = P1^7;          //8个发光二极管定义
  17. sbit led2 = P1^6;
  18. sbit led3 = P1^5;
  19. sbit led4 = P1^4;
  20. sbit led5 = P1^3;
  21. sbit led6 = P1^2;
  22. sbit led7 = P1^1;
  23. sbit led8 = P1^0;

  24. uchar dt_1;  //1楼电梯标志位
  25. uchar dt_2;  //2楼电梯标志位
  26. uchar dt_3;  //3楼电梯标志位
  27. uchar dt_4;  //4楼电梯标志位
  28. uchar dt_5;  //5楼电梯标志位
  29. uchar dt_6;  //6楼电梯标志位
  30. uchar dt_7;  //7楼电梯标志位
  31. uchar dt_8;  //8楼电梯标志位

  32. uchar dt_value = 1;  //电梯到哪一层的变量
  33. uchar dt_s_x ;    //电梯上下的标志位

  34. /***********************1ms延时函数*****************************/
  35. void delay_1ms(uint q)
  36. {
  37.         uint i,j;
  38.         for(i=0;i<q;i++)
  39.                 for(j=0;j<120;j++);
  40. }


  41. /********************独立按键程序*****************/
  42. uchar key_can;         //按键值

  43. void key()         //独立按键程序
  44. {
  45.         static uchar key_new;
  46.         key_can = 20;                   //按键值还原
  47.         P3 |= 0xff;
  48.         if(P3 != 0xff)                //按键按下
  49.         {
  50.                 delay_1ms(1);                     //按键消抖动
  51.                 if((P3 != 0xff) && (key_new == 1))
  52.                 {                                                //确认是按键按下
  53.                         key_new = 0;
  54.                         switch(P3)
  55.                         {
  56.                                 case 0xfe: key_can = 1; break;          //得到按键值
  57.                                 case 0xfd: key_can = 2; break;          //得到按键值
  58.                                 case 0xfb: key_can = 3; break;          //得到按键值
  59.                                 case 0xf7: key_can = 4; break;          //得到按键值
  60.                                 case 0xef: key_can = 5; break;          //得到按键值
  61.                                 case 0xdf: key_can = 6; break;          //得到按键值
  62.                                 case 0xbf: key_can = 7; break;          //得到按键值
  63.                                 case 0x7f: key_can = 8; break;          //得到按键值
  64.                         }
  65.                 }                       
  66.         }
  67.         else
  68.                 key_new = 1;       
  69. }

  70. void key_with()
  71. {
  72.         if(key_can == 1)
  73.         {
  74.                 led1 = 1;         //点亮发光二极管
  75.                 dt_1 = 1;         //
  76.         }               
  77.         if(key_can == 2)
  78.         {
  79.                 led2 = 1;         //点亮发光二极管
  80.                 dt_2 = 1;
  81.         }       
  82.         if(key_can == 3)
  83.         {
  84.                 led3 = 1;        //点亮发光二极管
  85.                 dt_3 = 1;
  86.         }       
  87.         if(key_can == 4)
  88.         {
  89.                 led4 = 1;        //点亮发光二极管
  90.                 dt_4 = 1;
  91.         }       
  92.         if(key_can == 5)
  93.         {
  94.                 led5 = 1;        //点亮发光二极管
  95.                 dt_5 = 1;
  96.         }       
  97.         if(key_can == 6)
  98.         {
  99.                 led6 = 1;        //点亮发光二极管
  100.                 dt_6 = 1;
  101.         }       
  102.         if(key_can == 7)
  103.         {
  104.                 led7 = 1;       
  105.                 dt_7 = 1;
  106.         }       
  107.         if(key_can == 8)
  108.         {
  109.                 led8 = 1;       
  110.                 dt_8 = 1;
  111.         }       
  112. }
  113. /*********************当电梯不动时、判断是向上、还是向下**********************/
  114. void tiandi_shang_xia()
  115. {
  116.         static uchar value;
  117.         if(dt_s_x == 0)
  118.         {
  119.                
  120.                 flag_stop = 1;
  121.                 if(dt_value == 1)         //电梯在第1层停下不走了
  122.                 {
  123.                         value = dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  124.                         if(value != 0)
  125.                         {
  126.                                 dt_s_x = 1;   //电梯向上       
  127.                                 shang = 0;          //显示上
  128.                                 zhong = 0;       
  129.                                 xia = 1;                                        
  130.                         }
  131.                 }                       
  132.                 if(dt_value == 2)         //电梯在第2层停下不走了
  133.                 {
  134.                         value = dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  135.                         if(value != 0)
  136.                         {
  137.                                 dt_s_x = 1;   //电梯向上走       
  138.                                 shang = 0;          //显示上
  139.                                 zhong = 0;       
  140.                                 xia = 1;                                        
  141.                         }
  142.                         value = dt_1;
  143.                         if(value != 0)
  144.                         {
  145.                                 dt_s_x = 2;   //电梯向下走       
  146.                                 xia = 0;          //显示下
  147.                                 zhong = 0;       
  148.                                 shang = 1;                                                
  149.                         }       
  150.                 }
  151.                 if(dt_value == 3)         //电梯在第3层停下不走了
  152.                 {
  153.                         value = dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  154.                         if(value != 0)
  155.                         {
  156.                                 dt_s_x = 1;   //电梯向上走       
  157.                                 shang = 0;          //显示上
  158.                                 zhong = 0;       
  159.                                 xia = 1;                                        
  160.                         }
  161.                         value = dt_1 + dt_2;
  162.                         if(value != 0)
  163.                         {
  164.                                 dt_s_x = 2;   //电梯向下走       
  165.                                 xia = 0;          //显示下
  166.                                 zhong = 0;       
  167.                                 shang = 1;       
  168.                                                                         
  169.                         }       
  170.                 }       
  171.                 if(dt_value == 4)         //电梯在第4层停下不走了
  172.                 {
  173.                         value = + dt_5 + dt_6 + dt_7 + dt_8;
  174.                         if(value != 0)
  175.                         {
  176.                                 dt_s_x = 1;   //电梯向上走       
  177.                                 shang = 0;          //显示上
  178.                                 zhong = 0;       
  179.                                 xia = 1;                                        
  180.                         }
  181.                         value = dt_1 + dt_2 + dt_3;
  182.                         if(value != 0)
  183.                         {
  184.                                 dt_s_x = 2;   //电梯向下走       
  185.                                 xia = 0;          //显示下
  186.                                 zhong = 0;       
  187.                                 shang = 1;                                                
  188.                         }       
  189.                 }       
  190.                 if(dt_value == 5)         //电梯在第5层停下不走了
  191.                 {
  192.                         value = dt_6 + dt_7 + dt_8;
  193.                         if(value != 0)
  194.                         {
  195.                                 dt_s_x = 1;   //电梯向上走       
  196.                                 shang = 0;          //显示上
  197.                                 zhong = 0;
  198.                                 xia = 1;                                                
  199.                         }
  200.                         value = dt_1 + dt_2 + dt_3 + dt_4;
  201.                         if(value != 0)
  202.                         {
  203.                                 dt_s_x = 2;   //电梯向下走       
  204.                                 xia = 0;          //显示下
  205.                                 zhong = 0;       
  206.                                 shang = 1;                                                
  207.                         }       
  208.                 }       
  209.                 if(dt_value == 6)         //电梯在第6层停下不走了
  210.                 {
  211.                         value =  dt_7 + dt_8;
  212.                         if(value != 0)
  213.                         {
  214.                                 dt_s_x = 1;   //电梯向上走       
  215.                                 shang = 0;          //显示上
  216.                                 zhong = 0;
  217.                                 xia = 1;                                                
  218.                         }
  219.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5;
  220.                         if(value != 0)
  221.                         {
  222.                                 dt_s_x = 2;   //电梯向下走       
  223.                                 xia = 0;          //显示下
  224.                                 zhong = 0;       
  225.                                 shang = 1;                                                
  226.                         }       
  227.                 }       
  228.                 if(dt_value == 7)         //电梯在第7层停下不走了
  229.                 {
  230.                         value = dt_8;
  231.                         if(value != 0)
  232.                         {
  233.                                 dt_s_x = 1;   //电梯向上走       
  234.                                 shang = 0;          //显示上
  235.                                 zhong = 0;       
  236.                                 xia = 1;                                        
  237.                         }
  238.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6;
  239.                         if(value != 0)
  240.                         {
  241.                                 dt_s_x = 2;   //电梯向下走       
  242.                                 xia = 0;          //显示下
  243.                                 zhong = 0;       
  244.                                 shang = 1;                                                
  245.                         }       
  246.                 }       
  247.                 if(dt_value == 8)          //电梯在第8层停下不走了
  248.                 {
  249.                         value = dt_8;
  250.                         if(value != 0)
  251.                         {
  252.                                 dt_s_x = 1;   //电梯向上走       
  253.                                 shang = 0;          //显示上
  254.                                 zhong = 0;       
  255.                                 xia = 1;                                        
  256.                         }
  257.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6;
  258.                         if(value != 0)
  259.                         {
  260.                                 dt_s_x = 2;   //电梯向下走       
  261.                                 xia = 0;          //显示下
  262.                                 zhong = 0;       
  263.                                 shang = 1;                                        
  264.                         }       
  265.                 }       
  266.         }
  267. }

  268. /****************电梯向上、做最后的判断是否还要继续向上****************/
  269. void dt_shang_guan()
  270. {
  271.         uchar value;
  272.         if(dt_s_x == 1)    //电梯向上  做最后的判断是否还要继续向上
  273.         {
  274.                 if(dt_value == 1)        //在第1层
  275.                 {
  276.                         value = dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  277.                         if(value == 0)         //说明上面没有人按下
  278.                         {
  279.                                 dt_s_x = 0;  //电梯停下不动了  
  280.                                 shang = 1;                //关闭上字
  281.                                 zhong = 1;  
  282.                         }else
  283.                                 flag_stop = 1;       
  284.                 }               
  285.                 else if(dt_value == 2)        //在第2层
  286.                 {
  287.                         value = dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  288.                         if(value == 0)         //说明上面没有人按下
  289.                         {
  290.                                 dt_s_x = 0;  //电梯停下不动了  
  291.                                 shang = 1;                //关闭上字
  292.                                 zhong = 1;  
  293.                         }else
  294.                                 flag_stop = 1;       
  295.                 }               
  296.                 else if(dt_value == 3)        //在第3层
  297.                 {
  298.                         value = + dt_6 + dt_7 + dt_8;
  299.                         if(value == 0)         //说明上面没有人按下
  300.                         {
  301.                                 dt_s_x = 0;  //电梯停下不动了  
  302.                                 shang = 1;                //关闭上字
  303.                                 zhong = 1;                                         
  304.                         }else
  305.                                 flag_stop = 1;         
  306.                 }               
  307.                 else if(dt_value == 4)        //在第4层
  308.                 {
  309.                         value = dt_5 + dt_6 + dt_7 + dt_8;
  310.                         if(value == 0)         //说明上面没有人按下
  311.                         {
  312.                                 dt_s_x = 0;  //电梯停下不动了  
  313.                                 shang = 1;                //关闭上字
  314.                                 zhong = 1;  
  315.                         }else
  316.                                 flag_stop = 1;                
  317.                 }               
  318.                 else if(dt_value == 5)        //在第5层
  319.                 {
  320.                         value = dt_6 + dt_7 + dt_8;
  321.                         if(value == 0)         //说明上面没有人按下
  322.                         {
  323.                                 dt_s_x = 0;  //电梯停下不动了  
  324.                                 shang = 1;                //关闭上字
  325.                                 zhong = 1;  
  326.                         }else
  327.                                 flag_stop = 1;               
  328.                 }               
  329.                 else if(dt_value == 6)        //在第6层
  330.                 {
  331.                         value = dt_7 + dt_8;
  332.                         if(value == 0)         //说明上面没有人按下
  333.             {
  334.                                 dt_s_x = 0;  //电梯停下不动了  
  335.                                 shang = 1;                //关闭上字
  336.                                 zhong = 1;  
  337.                         }else
  338.                                 flag_stop = 1;                       
  339.                 }       
  340.                 else if(dt_value == 7)        //在第7层
  341.                 {
  342.                         value = dt_8;
  343.                         if(value == 0)         //说明上面没有人按下
  344.                         {
  345.                                 dt_s_x = 0;  //电梯停下不动了  
  346.                                 shang = 1;                //关闭上字
  347.                                 zhong = 1;  
  348.                         }else
  349.                                 flag_stop = 1;       
  350.                 }               
  351.                 else if(dt_value == 8)        //在第8层
  352.                 {
  353.                         dt_s_x = 0;  //电梯停下不动了
  354.                         shang = 1;                //关闭上字
  355.                         zhong = 1;         
  356.                 }               
  357.         }       
  358. }

  359. /****************电梯向下、做最后的判断是否还要继续向下****************/
  360. void dt_xia_guan()
  361. {
  362.         uchar value;
  363.         if(dt_s_x == 2)    //电梯向下  做最后的判断是否还要继续向下
  364.         {
  365.                 if(dt_value == 1)        //在第1层
  366.                 {
  367.                         dt_s_x = 0;  //电梯停下不动了
  368.                         xia = 1;                //关闭上字
  369.                         zhong = 1;         
  370.                         flag_stop = 1;       
  371.                 }               
  372.                 else if(dt_value == 2)        //在第2层
  373.                 {
  374.                         value = dt_1;
  375.                         if(value == 0)         //说明上面没有人按下
  376.                         {
  377.                                 dt_s_x = 0;  //电梯停下不动了  
  378.                                 xia = 1;                //关闭上字
  379.                                 zhong = 1;  
  380.                         }else
  381.                                 flag_stop = 1;       
  382.                 }               
  383.                 else if(dt_value == 3)        //在第3层
  384.                 {
  385.                         value = dt_1 + dt_2;
  386.                         if(value == 0)         //说明上面没有人按下
  387.                         {
  388.                                 dt_s_x = 0;  //电梯停下不动了  
  389.                                 xia = 1;                //关闭上字
  390.                                 zhong = 1;                                         
  391.                         }else
  392.                                 flag_stop = 1;         
  393.                 }               
  394.                 else if(dt_value == 4)        //在第4层
  395.                 {
  396.                         value = dt_2 + dt_3;
  397.                         if(value == 0)         //说明上面没有人按下
  398.                         {
  399.                                 dt_s_x = 0;  //电梯停下不动了  
  400.                                 xia = 1;                //关闭上字
  401.                                 zhong = 1;  
  402.                         }else
  403.                                 flag_stop = 1;                
  404.                 }               
  405.                 else if(dt_value == 5)        //在第5层
  406.                 {
  407.                         value = dt_1 + dt_2 + dt_4;
  408.                         if(value == 0)         //说明上面没有人按下
  409.                         {
  410.                                 dt_s_x = 0;  //电梯停下不动了  
  411.                                 xia = 1;                //关闭上字
  412.                                 zhong = 1;  
  413.                         }else
  414.                                 flag_stop = 1;               
  415.                 }               
  416.                 else if(dt_value == 6)        //在第6层
  417.                 {
  418.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5;
  419.                         if(value == 0)         //说明上面没有人按下
  420.             {
  421.                                 dt_s_x = 0;  //电梯停下不动了  
  422.                                 xia = 1;                //关闭上字
  423.                                 zhong = 1;  
  424.                         }else
  425.                                 flag_stop = 1;                       
  426.                 }       
  427.                 else if(dt_value == 7)        //在第7层
  428.                 {
  429.                         value = dt_1 + dt_2  + dt_4 + dt_5+ dt_6;
  430.                         if(value == 0)         //说明上面没有人按下
  431.                         {
  432.                                 dt_s_x = 0;  //电梯停下不动了  
  433.                                 xia = 1;                //关闭上字
  434.                                 zhong = 1;  
  435.                         }else
  436.                                 flag_stop = 1;       
  437.                 }               
  438.                 else if(dt_value == 8)        //在第8层
  439.                 {
  440.                         value =   dt_3 + dt_4 + dt_5 + dt_6 + dt_7;
  441.                         if(value == 0)         //说明上面没有人按下
  442.                         {
  443.                                 dt_s_x = 0;  //电梯停下不动了  
  444.                                 xia = 1;                //关闭上字
  445.                                 zhong = 1;  
  446.                         }else
  447.                                 flag_stop = 1;       

  448.                        
  449.                 }               
  450.         }               
  451. }

  452. /***********************电梯处理函数************************/
  453. void td_dis()
  454. {
  455.         uchar value,value1;
  456.         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  457.         if(value != 0)
  458.         {                   //100ms
  459.                 if(flag_stop == 1)        //到相应的楼了  要停下
  460.                 {
  461. /***************************向上走电梯***********************************/       
  462.                         if(dt_s_x != 0)                  //向上走电梯
  463.                         {
  464.                                 value1 ++;
  465.                                 if(value1 >= 10)  //1s
  466.                                 {
  467.                                         value1 = 0;
  468.                                         if(dt_s_x == 1)                  //向上走电梯
  469.                                         {
  470.                                                 dt_value ++;
  471.                                                 shang = 0;                //显示上字
  472.                                                 zhong = 0;
  473.                                         }
  474.                                         if(dt_s_x == 2)                  //向下走电梯
  475.                                         {
  476.                                                 dt_value --;
  477.                                                 xia = 0;                //显示下字
  478.                                                 zhong = 0;
  479.                                         }                                       
  480.                                         if(dt_value == 1)           //当到了第一层的时候
  481.                                         {
  482.                                                 if(dt_1 == 1)
  483.                                                 {
  484.                                                         led1 = 0;                 //关闭第一层发光二极管
  485.                                                         dt_1 = 0;        //清零电机在的标志
  486.                                                         flag_stop = 0;   //到停下
  487.                                                         beep = 0;        //打开蜂鸣器
  488.                                                 }                                
  489.                                         }
  490.                                         else if(dt_value == 2)           //当到了第二层的时候
  491.                                         {
  492.                                                 if(dt_2 == 1)
  493.                                                 {
  494.                                                         led2 = 0;                 //关闭第二层发光二极管
  495.                                                         dt_2 = 0;        //清零电机在的标志
  496.                                                         flag_stop = 0;   //到停下
  497.                                                         beep = 0;        //打开蜂鸣器
  498.                                                 }                                
  499.                                         }
  500.                                         else if(dt_value == 3)           //当到了第3层的时候
  501.                                         {
  502.                                                 if(dt_3 == 1)
  503.                                                 {
  504.                                                         led3 = 0;                 //关闭第3层发光二极管
  505.                                                         dt_3 = 0;        //清零电机在的标志
  506.                                                         flag_stop = 0;   //到停下
  507.                                                         beep = 0;        //打开蜂鸣器
  508.                                                 }                                
  509.                                         }
  510.                                         else if(dt_value == 4)           //当到了第4层的时候
  511.                                         {
  512.                                                 if(dt_4 == 1)
  513.                                                 {
  514.                                                         led4 = 0;                 //关闭第4层发光二极管
  515.                                                         dt_4 = 0;        //清零电机在的标志
  516.                                                         flag_stop = 0;   //到停下
  517.                                                         beep = 0;        //打开蜂鸣器
  518.                                                 }                                
  519.                                         }
  520.                                         else if(dt_value == 5)           //当到了第5层的时候
  521.                                         {
  522.                                                 if(dt_5 == 1)
  523.                                                 {
  524.                                                         led5 = 0;                 //关闭第5层发光二极管
  525.                                                         dt_5 = 0;        //清零电机在的标志
  526.                                                         flag_stop = 0;   //到停下
  527.                                                         beep = 0;        //打开蜂鸣器
  528.                                                 }                                
  529.                                         }
  530.                                         else if(dt_value == 6)           //当到了第6层的时候
  531.                                         {
  532.                                                 if(dt_6 == 1)
  533.                                                 {
  534.                                                         led6 = 0;                 //关闭第6层发光二极管
  535.                                                         dt_6 = 0;        //清零电机在的标志
  536.                                                         flag_stop = 0;   //到停下
  537.                                                         beep = 0;        //打开蜂鸣器
  538.                                                 }                                
  539.                                         }
  540.                                         else if(dt_value == 7)           //当到了第7层的时候
  541.                                         {
  542.                                                 if(dt_7 == 1)
  543.                                                 {
  544.                                                         led7 = 0;                 //关闭第7层发光二极管
  545.                                                         dt_7 = 0;        //清零电机在的标志
  546.                                                         flag_stop = 0;   //到停下
  547.                                                         beep = 0;        //打开蜂鸣器
  548.                                                 }                                
  549.                                         }
  550.                                         else if(dt_value == 8)           //当到了第8层的时候
  551.                                         {
  552.                                                 if(dt_8 == 1)
  553.                                                 {
  554.                                                         led8 = 0;                 //关闭第8层发光二极管
  555.                                                         dt_8 = 0;        //清零电机在的标志
  556.                                                         flag_stop = 0;   //到停下
  557.                                                         beep = 0;        //打开蜂鸣器
  558.                                                 }                                
  559.                                         }
  560.                                 }
  561.                         }               
  562.                 }                                                
  563.         }
  564.         if(flag_stop == 0)
  565.         {
  566.                 value2 ++;
  567.                 if(value2 % 5 == 0)
  568.                 {
  569.                         if(dt_s_x == 1)           //上
  570.                         {
  571.                                 shang = ~shang;
  572.                                 zhong = ~zhong;                               
  573.                         }
  574.                         if(dt_s_x == 2)           //下
  575.                         {
  576.                                 zhong = ~zhong;
  577.                                 xia = ~xia;                               
  578.                         }               
  579.                 }
  580.                 if(value2 >= 10) //1.0s
  581.                 {                       
  582.                         beep = 1;  //关闭蜂鸣器
  583.                 }
  584.                 if(value2 >= 20)         //100ms*20 = 2秒
  585.                 {
  586.                         value2 = 0;                                
  587.                         dt_shang_guan();  //电梯向上  做最后的判断是否还要继续向上
  588.                         dt_xia_guan();          //电梯向下  做最后的判断是否还要继续向下

  589.                 }
  590.         }       
  591. }


  592. /*************定时器0初始化程序***************/
  593. void time_init()          
  594. {
  595.         EA   = 1;                   //开总中断
  596.         TMOD = 0X01;          //定时器0、工作方式1
  597.         ET0  = 1;                  //开定时器0中断
  598.         TR0  = 1;                  //允许定时器0定时
  599. }

  600. /******************主程序**********************/          
  601. void main()
  602. {
  603.         P1 = 0x00;
  604.         P0 = 0X00;           //单片机IO口初始化
  605.         time_init();   //定时器初始化
  606.         while(1)
  607.         {
  608.                 key();                  //按键程序
  609.                 if(key_can < 20)
  610.                 {          
  611.                         if(dt_s_x == 0)
  612.                         {
  613.                                 value2 = 0;
  614.                                 flag_stop = 1;
  615.                         }
  616.                         key_with();               
  617.                 }  
  618.                 tiandi_shang_xia();          //当电梯不动时、判断是向上、还是向下
  619.                 P0 = smg_du[dt_value];          //显示
  620.                 if(flag_100ms  == 1)
  621.                 {
  622.                         flag_100ms = 0;
  623.                         td_dis();                 //电梯处理函数
  624.                 }
  625.         }
  626. }

  627. /*************定时器0中断服务程序***************/
  628. void time0_int() interrupt 1
  629. {       
  630.         static uchar value;
  631.         TH0 = 0x3c;
  632.         TL0 = 0xb0;     // 50ms
  633.         value ++;
  634.         if(value % 2 == 0)
  635.         {
  636.                 flag_100ms = 1 ;
  637.         }
  638. }
复制代码



单片机八层电梯控制系统仿真图+源程序等全部资料下载 八层电梯控制.rar (932.63 KB, 下载次数: 1103)
作者: 榆林上校    时间: 2016-4-21 09:24
下载看看 51黑有你更精彩!!

作者: whengfu    时间: 2016-9-12 08:41
这么好的例程,为啥没有人顶呢?
作者: yuanri    时间: 2016-9-12 12:10
学习了,顶起来才看到,谢谢楼主
作者: 洋芋蛋儿    时间: 2016-10-7 23:46
赞一个,挺牛的
作者: 天气晚来秋    时间: 2016-11-3 11:39
有没有说明书
作者: zgs660429    时间: 2016-11-8 17:00
我会四层电梯,再学八层的谢谢你
作者: 1339040471    时间: 2017-1-1 14:21
不错的设计
作者: 1339040471    时间: 2017-1-1 14:22
看看参考下
作者: liuzhaoxin1020    时间: 2017-1-24 16:51
不错的帖子,很值得收藏。
作者: shanchile    时间: 2017-2-8 15:50
主程序看不太懂
作者: dashu12138    时间: 2017-2-10 16:18
学习了,顶起来才看到,谢谢楼主
作者: 榆林上校    时间: 2017-2-13 22:24
下载来看看,谢谢分享!
作者: 榆林上校    时间: 2017-2-14 08:30
有平层信号反馈吗?
作者: bbxyzzj    时间: 2017-2-14 10:40
学习了,感谢楼主分享!
作者: zqy181818    时间: 2017-3-18 14:09
不错!感谢你的分享
作者: zhenhuanlianer    时间: 2017-3-25 12:53
赶紧学起来
感谢楼主分享~
作者: baojiangong    时间: 2017-3-27 20:54
下载看看 51黑有你更精彩!!
作者: linnyshow    时间: 2017-3-30 10:22
可以试试看。。。
作者: zhangjiakouwang    时间: 2017-4-2 21:59
怎么不对,运行不对,哪里错了
作者: 467615016    时间: 2017-4-10 19:10
好厉害
作者: xiaojie    时间: 2017-4-14 21:53
下载看看
作者: xiaojie    时间: 2017-4-14 22:23
为什么没人顶
作者: 跳跃式    时间: 2017-5-5 11:49
可不可以把单片机八层电梯控制系统 仿真图+源程序+电路原理图的程序流程图发给我一下,我想学习一下这个的编程。谢谢
作者: aiyouv    时间: 2017-5-16 00:10
怎么没有电机模块
作者: Dimatch    时间: 2017-5-16 17:10
可以仿真使用吗?
作者: chedechao333    时间: 2017-5-16 18:37
翻来看看
作者: q783935109    时间: 2017-5-24 10:42
下载看看可以看吗
作者: 夏目老丈人    时间: 2017-5-24 14:37
感谢楼主
作者: HANDAN    时间: 2017-6-11 16:18
谢谢楼主!!!!
作者: HANDAN    时间: 2017-6-11 16:32
赶紧学起来
感谢楼主分享~
作者: 我的小夏半年    时间: 2017-6-11 21:38
哈哈,新手,谢谢楼主
作者: qinba393    时间: 2017-6-16 23:10
给力,下载来参考下
作者: ya123chiang    时间: 2017-10-2 10:47
謝謝你的分享 下載研究
作者: map0391    时间: 2017-10-4 17:22
谢谢楼主无私奉献
作者: 999999999999999    时间: 2017-11-8 19:38
为啥rp1那里有问题

作者: 榆林上校    时间: 2017-11-12 10:04
好像少了轿厢开门这一环节
作者: 沉默大男孩    时间: 2017-11-12 15:57
挺不错的,先仿真一下!!!
作者: 沉默大男孩    时间: 2017-11-12 16:58
为什麽仿真图上没有电梯上行和下降的指示灯?貌似源程序上有,我用源程序生成hex文件后在isis上运行发现数码管显示乱码?   这是为什么?   求指点!!!
作者: 小天王    时间: 2017-11-19 18:35
很给力
作者: ycd    时间: 2017-11-22 21:31
楼主很棒

作者: 一个人丶一座城    时间: 2017-11-23 10:54
谢谢分享!
作者: luojunhaolq    时间: 2017-11-23 12:30
高手!
作者: 我要学习dpj    时间: 2018-1-18 11:00
zgs660429 发表于 2016-11-8 17:00
我会四层电梯,再学八层的谢谢你

我也想学习4层的,可以教教我吗
作者: FJNP    时间: 2018-1-18 21:58
谢谢分享
作者: cafory    时间: 2018-4-15 20:36
不错呀,赞一个
作者: 19995qbhy    时间: 2018-4-23 10:19
特别好的设计,还有仿真图和电路原理图

作者: kaqiusha    时间: 2018-5-10 14:59
你好,发现个问题:8楼直接下7楼电梯会卡住(7楼灯亮但是电梯不动)这时再按一下6会在7楼停一下然后再下到6楼
作者: jacknb    时间: 2018-5-10 16:38
厉害了
作者: 矛盾酥    时间: 2018-5-15 13:13
好崇拜你啊楼主!!你太棒了
作者: 草棚    时间: 2018-5-25 10:49
电机在那里
作者: 吴春阳    时间: 2018-6-11 20:47
哇,66
作者: yctjs    时间: 2018-8-1 18:41
感谢LZ!
作者: abc2225020032    时间: 2018-8-7 15:14
这个系统为什么不包含步进电动机啊
作者: q916663841    时间: 2018-11-27 19:21
多谢~!
作者: mrswang    时间: 2018-12-1 16:27
谢谢
作者: 嘿嘿吗    时间: 2018-12-20 20:56

学习了,谢谢楼主
作者: mzzh142996    时间: 2019-1-9 18:35
顶一个

作者: lalalaling    时间: 2019-1-10 21:56
沉默大男孩 发表于 2017-11-12 16:58
**** 作者被禁止或删除 内容自动屏蔽 ****

我也是哎
作者: a86340    时间: 2019-1-10 22:30

为什麽仿真图上没有电梯上行和下降的指示灯?貌似源程序上有,我用源程序生成hex文件后在isis上运行发现数码管显示乱码,有点问题这个程序
作者: mynetroom    时间: 2019-1-14 16:10
40#楼上,那是你的引脚定义不同,接线都不一致
作者: eastgan    时间: 2019-1-27 20:46
楼主太爽快了!
作者: sp2hk    时间: 2019-2-27 17:23
没毛病啊。相当不错。
作者: 李海林    时间: 2019-3-20 15:59
LZ这个有实物图吗

作者: bbxyliyang01    时间: 2019-3-20 22:00
很好的程序
作者: 173197955s    时间: 2019-4-6 21:04
666真的好
作者: lssover    时间: 2019-4-7 19:24
多好的设计
作者: lssover    时间: 2019-4-7 22:16
特别棒的,这个东西
作者: 李海林    时间: 2019-4-9 13:28
同用源文件生成hex文件 然后仿真为什么数码管不显示啊?  然后LZ还有个文件电梯仿真图里面那个hex文件就可以显示 这是为何
作者: 麦克雷    时间: 2019-4-14 17:03
很好,太棒啦
作者: honour    时间: 2019-4-20 14:01
来学习一下,感谢
作者: kafei35022    时间: 2019-5-10 12:54
下载看看
作者: 七七七六六六    时间: 2019-5-27 21:22
这么好 顶起来啊
作者: 51hei2004304    时间: 2019-7-2 13:43
51黑有你更精彩
作者: 1270114207@    时间: 2019-7-9 09:26
谢谢分享,帮大忙了
作者: 51ddanpianji    时间: 2019-11-19 13:24
这个的要求在哪
作者: 夏一    时间: 2019-11-19 21:52
不实用,最主要的那部分都没有编写进去,楼层限位开关都没有怎么停,我用继电器做过4层的,
作者: 无风雨同舟    时间: 2019-11-24 19:19
很好,楼主有才
作者: 123456789742    时间: 2019-12-2 15:36
麻烦问一下有pcb图和pcb原理图么
作者: twanzy    时间: 2019-12-3 21:55
好东西啊
好想要
作者: xiaoheike    时间: 2019-12-4 16:37
为什么没有AD图啊,但是怎么说,这东西还是很完美的


作者: 思考的机器    时间: 2020-1-23 14:11
感谢楼主
作者: xyhuhhh    时间: 2020-2-6 14:19
8楼没法下7楼
作者: 中恒电子asus    时间: 2020-2-9 13:48
太棒了,非常不错
作者: 红砖绿瓦    时间: 2020-2-18 22:32
仿真图就两张,还以为有全套,也不错啦,程序和封装图都有
作者: 夏一    时间: 2020-2-19 11:30
每个楼层再加多个按键就更好了
作者: 哈或哈呵呵    时间: 2020-2-19 12:32
超级给力啊
作者: 夏一    时间: 2020-2-21 13:44
没有电机的电梯
作者: xiaoji123    时间: 2020-3-12 11:17

谢谢楼主无私奉献
作者: xjh728    时间: 2020-3-12 17:18

这么好的例程,为啥没有人顶呢?
作者: john0317    时间: 2020-3-15 15:44
能用吗?下载看看……
作者: zxyty    时间: 2020-5-13 21:28
有用吗

作者: 覃露超    时间: 2020-6-15 10:47
源代码放入仿真电路运行出的结果不对呀  大佬
作者: shengzhidao702    时间: 2020-6-17 17:01
挺不错的,THANKS
作者: 9口    时间: 2020-6-25 17:07
zgs660429 发表于 2016-11-8 17:00
我会四层电梯,再学八层的谢谢你

能否将四成的程序和图给我看看,多谢了
作者: myy99    时间: 2021-3-20 22:57
你好,可以写程序嘛?在这个基础上加紧急报警功能
作者: yilinghai    时间: 2021-5-29 22:29
此款设计的hex文件和源程序是不对应的
作者: 木曲小林    时间: 2023-6-14 18:54
有人会把他改成并联的吗
作者: 木曲小林    时间: 2023-6-15 08:30
这个是Proteus仿真吗

作者: whhuiquan    时间: 2023-6-15 21:06
很好,楼主用心了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1