找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 39451|回复: 100
收起左侧

单片机八层电梯控制系统 仿真图+源程序+电路原理图

  [复制链接]
ID:112362 发表于 2016-4-5 18:43 | 显示全部楼层 |阅读模式
电梯仿真图1.jpg 电梯仿真图.jpg
单片机八层电梯控制仿真图(仿真工程文件在51黑本帖附件里面可以下载):

0.png
单片机八层电梯控制电路原理图(附件里面有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. }
复制代码

0.png

单片机八层电梯控制系统仿真图+源程序等全部资料下载 八层电梯控制.rar (932.63 KB, 下载次数: 1087)

评分

参与人数 10黑币 +45 收起 理由
紫川君 + 5
qpwoeiruty + 5 很给力!
huster123456 + 5 很给力!
枯干好早 + 5
15942379927 + 4 很给力!
jacknb + 5 很给力!
Halson + 5
lyh一点点 + 4 很给力!
anapple-1106 + 4 很给力!
Plzfollow + 3 很给力!

查看全部评分

回复

使用道具 举报

ID:47652 发表于 2016-4-21 09:24 | 显示全部楼层
下载看看 51黑有你更精彩!!
回复

使用道具 举报

ID:92231 发表于 2016-9-12 08:41 来自手机 | 显示全部楼层
这么好的例程,为啥没有人顶呢?
回复

使用道具 举报

ID:138282 发表于 2016-9-12 12:10 来自手机 | 显示全部楼层
学习了,顶起来才看到,谢谢楼主
回复

使用道具 举报

ID:141634 发表于 2016-10-7 23:46 | 显示全部楼层
赞一个,挺牛的
回复

使用道具 举报

ID:145888 发表于 2016-11-3 11:39 | 显示全部楼层
有没有说明书
回复

使用道具 举报

ID:48140 发表于 2016-11-8 17:00 来自手机 | 显示全部楼层
我会四层电梯,再学八层的谢谢你
回复

使用道具 举报

ID:157782 发表于 2017-1-1 14:21 | 显示全部楼层
不错的设计
回复

使用道具 举报

ID:157782 发表于 2017-1-1 14:22 | 显示全部楼层
看看参考下
回复

使用道具 举报

ID:153199 发表于 2017-1-24 16:51 | 显示全部楼层
不错的帖子,很值得收藏。
回复

使用道具 举报

ID:76600 发表于 2017-2-8 15:50 | 显示全部楼层
主程序看不太懂
回复

使用道具 举报

ID:164149 发表于 2017-2-10 16:18 | 显示全部楼层
学习了,顶起来才看到,谢谢楼主
回复

使用道具 举报

ID:47652 发表于 2017-2-13 22:24 | 显示全部楼层
下载来看看,谢谢分享!
回复

使用道具 举报

ID:47652 发表于 2017-2-14 08:30 | 显示全部楼层
有平层信号反馈吗?
回复

使用道具 举报

ID:96326 发表于 2017-2-14 10:40 | 显示全部楼层
学习了,感谢楼主分享!
回复

使用道具 举报

ID:130231 发表于 2017-3-18 14:09 | 显示全部楼层
不错!感谢你的分享
回复

使用道具 举报

ID:183232 发表于 2017-3-25 12:53 | 显示全部楼层
赶紧学起来
感谢楼主分享~
回复

使用道具 举报

ID:32348 发表于 2017-3-27 20:54 | 显示全部楼层
下载看看 51黑有你更精彩!!
回复

使用道具 举报

ID:110278 发表于 2017-3-30 10:22 | 显示全部楼层
可以试试看。。。
回复

使用道具 举报

ID:185671 发表于 2017-4-2 21:59 | 显示全部楼层
怎么不对,运行不对,哪里错了
回复

使用道具 举报

ID:80346 发表于 2017-4-10 19:10 | 显示全部楼层
好厉害
回复

使用道具 举报

ID:189678 发表于 2017-4-14 21:53 | 显示全部楼层
下载看看
回复

使用道具 举报

ID:189678 发表于 2017-4-14 22:23 | 显示全部楼层
为什么没人顶
回复

使用道具 举报

ID:190503 发表于 2017-5-5 11:49 | 显示全部楼层
可不可以把单片机八层电梯控制系统 仿真图+源程序+电路原理图的程序流程图发给我一下,我想学习一下这个的编程。谢谢
回复

使用道具 举报

ID:200799 发表于 2017-5-16 00:10 | 显示全部楼层
怎么没有电机模块
回复

使用道具 举报

ID:195394 发表于 2017-5-16 17:10 | 显示全部楼层
可以仿真使用吗?
回复

使用道具 举报

ID:197067 发表于 2017-5-16 18:37 | 显示全部楼层
翻来看看
回复

使用道具 举报

ID:204205 发表于 2017-5-24 10:42 | 显示全部楼层
下载看看可以看吗
回复

使用道具 举报

ID:204286 发表于 2017-5-24 14:37 | 显示全部楼层
感谢楼主
回复

使用道具 举报

ID:210140 发表于 2017-6-11 16:18 | 显示全部楼层
谢谢楼主!!!!
回复

使用道具 举报

ID:210140 发表于 2017-6-11 16:32 | 显示全部楼层
赶紧学起来
感谢楼主分享~
回复

使用道具 举报

ID:210250 发表于 2017-6-11 21:38 | 显示全部楼层
哈哈,新手,谢谢楼主
回复

使用道具 举报

ID:155995 发表于 2017-6-16 23:10 | 显示全部楼层
给力,下载来参考下
回复

使用道具 举报

ID:58937 发表于 2017-10-2 10:47 | 显示全部楼层
謝謝你的分享 下載研究
回复

使用道具 举报

ID:216625 发表于 2017-10-4 17:22 | 显示全部楼层
谢谢楼主无私奉献
回复

使用道具 举报

ID:247365 发表于 2017-11-8 19:38 | 显示全部楼层
为啥rp1那里有问题
回复

使用道具 举报

ID:47652 发表于 2017-11-12 10:04 | 显示全部楼层
好像少了轿厢开门这一环节
回复

使用道具 举报

ID:248209 发表于 2017-11-12 15:57 | 显示全部楼层
挺不错的,先仿真一下!!!
回复

使用道具 举报

ID:248209 发表于 2017-11-12 16:58 | 显示全部楼层
为什麽仿真图上没有电梯上行和下降的指示灯?貌似源程序上有,我用源程序生成hex文件后在isis上运行发现数码管显示乱码?   这是为什么?   求指点!!!
回复

使用道具 举报

ID:251142 发表于 2017-11-19 18:35 | 显示全部楼层
很给力
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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