久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3166|回復: 2
打印 上一主題 下一主題
收起左側

單片機八層電梯系統的原理圖,源代碼

[復制鏈接]
跳轉到指定樓層
樓主
電路原理圖如下:
word版.docx (22.88 KB, 下載次數: 27) 原理圖.doc (524.5 KB, 下載次數: 34)



單片機源程序如下:
  1. #include <reg52.h>                 //調用單片機頭文件
  2. #define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
  3. #define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535
  4. uchar code smg_du[]=
  5. {
  6.         0xEE,/*0*/
  7.         0xA0,/*1*/
  8.         0xCD,/*2*/
  9.         0xE9,/*3*/
  10.         0xA3,/*4*/
  11.         0x6B,/*5*/
  12.         0x6F,/*6*/
  13.         0xE0,/*7*/
  14.         0xEF,/*8*/
  15.         0xEB,/*9*/
  16. };        
  17. bit flag_100ms,flag_1s;        
  18. bit flag_stop = 1;   //用做到了相應的樓停下

  19. sbit beep  = P2^7;
  20. sbit xia   = P2^0;
  21. sbit zhong = P2^1;
  22. sbit shang = P2^2;

  23. uchar value2;
  24. uchar flag_start ;     //啟動標志位  1為起動步進電機 否則關閉電機
  25. uchar flag_z_f;        //正反標志位  0為順時鐘 1為逆時史上轉

  26. sbit led8 = P1^7;          //8個發光二極管定義
  27. sbit led7 = P1^6;
  28. sbit led6 = P1^5;
  29. sbit led5 = P1^4;
  30. sbit led4 = P1^3;
  31. sbit led3 = P1^2;
  32. sbit led2 = P1^1;
  33. sbit led1 = P1^0;

  34. sbit dj1 = P2^6;   //電機IO口定義
  35. sbit dj2 = P2^5;   //電機IO口定義
  36. sbit dj3 = P2^4;   //電機IO口定義
  37. sbit dj4 = P2^3;   //電機IO口定義


  38. uchar dt_1;  //1樓電梯標志位
  39. uchar dt_2;  //2樓電梯標志位
  40. uchar dt_3;  //3樓電梯標志位
  41. uchar dt_4;  //4樓電梯標志位
  42. uchar dt_5;  //5樓電梯標志位
  43. uchar dt_6;  //6樓電梯標志位
  44. uchar dt_7;  //7樓電梯標志位
  45. uchar dt_8;  //8樓電梯標志位

  46. uchar dt_value = 1;  //電梯到哪一層的變量
  47. uchar dt_s_x ;    //電梯上下的標志位

  48. void Delay(unsigned int i)//延時
  49. {
  50.         while(--i);
  51. }

  52. /***********************正轉****************************/
  53. void zheng(uchar dat)
  54. {
  55.         switch(dat)
  56.         {
  57.                 case 0: dj1=0;dj2=0;dj3=0;dj4=1; break;
  58.                 case 1: dj1=0;dj2=0;dj3=1;dj4=0; break;
  59.                 case 2: dj1=0;dj2=1;dj3=0;dj4=0; break;
  60.                 case 3: dj1=1;dj2=0;dj3=0;dj4=0; break;
  61.         }
  62. }

  63. /***********************反轉****************************/
  64. void fan(uchar dat)
  65. {
  66.         switch(dat)
  67.         {
  68.                 case 0: dj1=1;dj2=0;dj3=0;dj4=0; break;
  69.                 case 1: dj1=0;dj2=1;dj3=0;dj4=0; break;
  70.                 case 2: dj1=0;dj2=0;dj3=1;dj4=0; break;
  71.                 case 3: dj1=0;dj2=0;dj3=0;dj4=1; break;
  72.         }
  73. }

  74. /***********************1ms延時函數*****************************/
  75. void delay_1ms(uint q)
  76. {
  77.         uint i,j;
  78.         for(i=0;i<q;i++)
  79.                 for(j=0;j<120;j++);
  80. }


  81. /********************獨立按鍵程序*****************/
  82. uchar key_can;         //按鍵值

  83. void key()         //獨立按鍵程序
  84. {
  85.         static uchar key_new;
  86.         key_can = 20;                   //按鍵值還原
  87.         P3 |= 0xff;
  88.         if(P3 != 0xff)                //按鍵按下
  89.         {
  90.                 delay_1ms(1);                     //按鍵消抖動
  91.                 if((P3 != 0xff) && (key_new == 1))
  92.                 {                                                //確認是按鍵按下
  93.                         key_new = 0;
  94.                         switch(P3)
  95.                         {
  96.                                 case 0xfe: key_can = 1; break;          //得到按鍵值
  97.                                 case 0xfd: key_can = 2; break;          //得到按鍵值
  98.                                 case 0xfb: key_can = 3; break;          //得到按鍵值
  99.                                 case 0xf7: key_can = 4; break;          //得到按鍵值
  100.                                 case 0xef: key_can = 5; break;          //得到按鍵值
  101.                                 case 0xdf: key_can = 6; break;          //得到按鍵值
  102.                                 case 0xbf: key_can = 7; break;          //得到按鍵值
  103.                                 case 0x7f: key_can = 8; break;          //得到按鍵值
  104.                         }
  105.                 }                        
  106.         }
  107.         else
  108.                 key_new = 1;        
  109. }

  110. void key_with()
  111. {
  112.         if(key_can == 1)
  113.         {
  114.                 led1 = 1;         //點亮發光二極管
  115.                 dt_1 = 1;         //
  116.         }               
  117.         if(key_can == 2)
  118.         {
  119.                 led2 = 1;         //點亮發光二極管
  120.                 dt_2 = 1;
  121.         }        
  122.         if(key_can == 3)
  123.         {
  124.                 led3 = 1;        //點亮發光二極管
  125.                 dt_3 = 1;
  126.         }        
  127.         if(key_can == 4)
  128.         {
  129.                 led4 = 1;        //點亮發光二極管
  130.                 dt_4 = 1;
  131.         }        
  132.         if(key_can == 5)
  133.         {
  134.                 led5 = 1;        //點亮發光二極管
  135.                 dt_5 = 1;
  136.         }        
  137.         if(key_can == 6)
  138.         {
  139.                 led6 = 1;        //點亮發光二極管
  140.                 dt_6 = 1;
  141.         }        
  142.         if(key_can == 7)
  143.         {
  144.                 led7 = 1;        
  145.                 dt_7 = 1;
  146.         }        
  147.         if(key_can == 8)
  148.         {
  149.                 led8 = 1;        
  150.                 dt_8 = 1;
  151.         }        
  152. }
  153. /*********************當電梯不動時、判斷是向上、還是向下**********************/
  154. void tiandi_shang_xia()
  155. {
  156.         static uchar value;
  157.         if(dt_s_x == 0)
  158.         {
  159.                
  160.                 flag_stop = 1;
  161.                 if(dt_value == 1)         //電梯在第1層停下不走了
  162.                 {
  163.                         value = dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  164.                         if(value != 0)
  165.                         {
  166.                                 dt_s_x = 1;   //電梯向上        
  167.                                 shang = 0;          //顯示上
  168.                                 zhong = 0;        
  169.                                 xia = 1;                                         
  170.                         }
  171.                 }                        
  172.                 if(dt_value == 2)         //電梯在第2層停下不走了
  173.                 {
  174.                         value = dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  175.                         if(value != 0)
  176.                         {
  177.                                 dt_s_x = 1;   //電梯向上走        
  178.                                 shang = 0;          //顯示上
  179.                                 zhong = 0;        
  180.                                 xia = 1;                                         
  181.                         }
  182.                         value = dt_1;
  183.                         if(value != 0)
  184.                         {
  185.                                 dt_s_x = 2;   //電梯向下走        
  186.                                 xia = 0;          //顯示下
  187.                                 zhong = 0;        
  188.                                 shang = 1;                                                
  189.                         }        
  190.                 }
  191.                 if(dt_value == 3)         //電梯在第3層停下不走了
  192.                 {
  193.                         value = dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  194.                         if(value != 0)
  195.                         {
  196.                                 dt_s_x = 1;   //電梯向上走        
  197.                                 shang = 0;          //顯示上
  198.                                 zhong = 0;        
  199.                                 xia = 1;                                         
  200.                         }
  201.                         value = dt_1 + dt_2;
  202.                         if(value != 0)
  203.                         {
  204.                                 dt_s_x = 2;   //電梯向下走        
  205.                                 xia = 0;          //顯示下
  206.                                 zhong = 0;        
  207.                                 shang = 1;        
  208.                                                                         
  209.                         }        
  210.                 }        
  211.                 if(dt_value == 4)         //電梯在第4層停下不走了
  212.                 {
  213.                         value = + dt_5 + dt_6 + dt_7 + dt_8;
  214.                         if(value != 0)
  215.                         {
  216.                                 dt_s_x = 1;   //電梯向上走        
  217.                                 shang = 0;          //顯示上
  218.                                 zhong = 0;        
  219.                                 xia = 1;                                         
  220.                         }
  221.                         value = dt_1 + dt_2 + dt_3;
  222.                         if(value != 0)
  223.                         {
  224.                                 dt_s_x = 2;   //電梯向下走        
  225.                                 xia = 0;          //顯示下
  226.                                 zhong = 0;        
  227.                                 shang = 1;                                                
  228.                         }        
  229.                 }        
  230.                 if(dt_value == 5)         //電梯在第5層停下不走了
  231.                 {
  232.                         value = dt_6 + dt_7 + dt_8;
  233.                         if(value != 0)
  234.                         {
  235.                                 dt_s_x = 1;   //電梯向上走        
  236.                                 shang = 0;          //顯示上
  237.                                 zhong = 0;
  238.                                 xia = 1;                                                
  239.                         }
  240.                         value = dt_1 + dt_2 + dt_3 + dt_4;
  241.                         if(value != 0)
  242.                         {
  243.                                 dt_s_x = 2;   //電梯向下走        
  244.                                 xia = 0;          //顯示下
  245.                                 zhong = 0;        
  246.                                 shang = 1;                                                
  247.                         }        
  248.                 }        
  249.                 if(dt_value == 6)         //電梯在第6層停下不走了
  250.                 {
  251.                         value =  dt_7 + dt_8;
  252.                         if(value != 0)
  253.                         {
  254.                                 dt_s_x = 1;   //電梯向上走        
  255.                                 shang = 0;          //顯示上
  256.                                 zhong = 0;
  257.                                 xia = 1;                                                
  258.                         }
  259.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5;
  260.                         if(value != 0)
  261.                         {
  262.                                 dt_s_x = 2;   //電梯向下走        
  263.                                 xia = 0;          //顯示下
  264.                                 zhong = 0;        
  265.                                 shang = 1;                                                
  266.                         }        
  267.                 }        
  268.                 if(dt_value == 7)         //電梯在第7層停下不走了
  269.                 {
  270.                         value = dt_8;
  271.                         if(value != 0)
  272.                         {
  273.                                 dt_s_x = 1;   //電梯向上走        
  274.                                 shang = 0;          //顯示上
  275.                                 zhong = 0;        
  276.                                 xia = 1;                                         
  277.                         }
  278.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6;
  279.                         if(value != 0)
  280.                         {
  281.                                 dt_s_x = 2;   //電梯向下走        
  282.                                 xia = 0;          //顯示下
  283.                                 zhong = 0;        
  284.                                 shang = 1;                                                
  285.                         }        
  286.                 }        
  287.                 if(dt_value == 8)          //電梯在第8層停下不走了
  288.                 {
  289.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6+dt_7;
  290.                         if(value != 0)
  291.                         {
  292.                                 dt_s_x = 2;   //電梯向下走        
  293.                                 xia = 0;          //顯示下
  294.                                 zhong = 0;        
  295.                                 shang = 1;                                         
  296.                         }        
  297.                 }        
  298.                 if(dt_s_x == 1)        
  299.                 {                          
  300.                         flag_start = 1 ;     //運行
  301.                         flag_z_f = 0;        //向上
  302.                 }
  303.                 if(dt_s_x == 2)        
  304.                 {                          
  305.                         flag_start = 1 ;     //運行
  306.                         flag_z_f = 1;        //向下
  307.                 }
  308.                 if(dt_s_x == 0)                                 
  309.                 {
  310.                         flag_start = 0 ;     //停下
  311.                         flag_z_f = 1;        //
  312.                 }
  313.         }
  314. }

  315. /****************電梯向上、做最后的判斷是否還要繼續向上****************/
  316. void dt_shang_guan()
  317. {
  318.         uchar value;
  319.         if(dt_s_x == 1)    //電梯向上  做最后的判斷是否還要繼續向上
  320.         {
  321.                 if(dt_value == 1)        //在第1層
  322.                 {
  323.                         value = dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  324.                         if(value == 0)         //說明上面沒有人按下
  325.                         {
  326.                                 dt_s_x = 0;  //電梯停下不動了  
  327.                                 shang = 1;                //關閉上字
  328.                                 zhong = 1;  
  329.                         }else
  330.                                 flag_stop = 1;        
  331.                 }               
  332.                 else if(dt_value == 2)        //在第2層
  333.                 {
  334.                         value = dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  335.                         if(value == 0)         //說明上面沒有人按下
  336.                         {
  337.                                 dt_s_x = 0;  //電梯停下不動了  
  338.                                 shang = 1;                //關閉上字
  339.                                 zhong = 1;  
  340.                         }else
  341.                                 flag_stop = 1;        
  342.                 }               
  343.                 else if(dt_value == 3)        //在第3層
  344.                 {
  345.                         value = + dt_6 + dt_7 + dt_8;
  346.                         if(value == 0)         //說明上面沒有人按下
  347.                         {
  348.                                 dt_s_x = 0;  //電梯停下不動了  
  349.                                 shang = 1;                //關閉上字
  350.                                 zhong = 1;                                          
  351.                         }else
  352.                                 flag_stop = 1;         
  353.                 }               
  354.                 else if(dt_value == 4)        //在第4層
  355.                 {
  356.                         value = dt_5 + dt_6 + dt_7 + dt_8;
  357.                         if(value == 0)         //說明上面沒有人按下
  358.                         {
  359.                                 dt_s_x = 0;  //電梯停下不動了  
  360.                                 shang = 1;                //關閉上字
  361.                                 zhong = 1;  
  362.                         }else
  363.                                 flag_stop = 1;                 
  364.                 }               
  365.                 else if(dt_value == 5)        //在第5層
  366.                 {
  367.                         value = dt_6 + dt_7 + dt_8;
  368.                         if(value == 0)         //說明上面沒有人按下
  369.                         {
  370.                                 dt_s_x = 0;  //電梯停下不動了  
  371.                                 shang = 1;                //關閉上字
  372.                                 zhong = 1;  
  373.                         }else
  374.                                 flag_stop = 1;               
  375.                 }               
  376.                 else if(dt_value == 6)        //在第6層
  377.                 {
  378.                         value = dt_7 + dt_8;
  379.                         if(value == 0)         //說明上面沒有人按下
  380.             {
  381.                                 dt_s_x = 0;  //電梯停下不動了  
  382.                                 shang = 1;                //關閉上字
  383.                                 zhong = 1;  
  384.                         }else
  385.                                 flag_stop = 1;                        
  386.                 }        
  387.                 else if(dt_value == 7)        //在第7層
  388.                 {
  389.                         value = dt_8;
  390.                         if(value == 0)         //說明上面沒有人按下
  391.                         {
  392.                                 dt_s_x = 0;  //電梯停下不動了  
  393.                                 shang = 1;                //關閉上字
  394.                                 zhong = 1;  
  395.                         }else
  396.                                 flag_stop = 1;        
  397.                 }               
  398.                 else if(dt_value == 8)        //在第8層
  399.                 {
  400.                         dt_s_x = 0;  //電梯停下不動了
  401.                         shang = 1;                //關閉上字
  402.                         zhong = 1;         
  403.                 }               
  404.         }        
  405. }

  406. /****************電梯向下、做最后的判斷是否還要繼續向下****************/
  407. void dt_xia_guan()
  408. {
  409.         uchar value;
  410.         if(dt_s_x == 2)    //電梯向下  做最后的判斷是否還要繼續向下
  411.         {
  412.                 if(dt_value == 1)        //在第1層
  413.                 {
  414.                         dt_s_x = 0;  //電梯停下不動了
  415.                         xia = 1;                //關閉上字
  416.                         zhong = 1;         
  417.                         flag_stop = 1;        
  418.                 }               
  419.                 else if(dt_value == 2)        //在第2層
  420.                 {
  421.                         value = dt_1;
  422.                         if(value == 0)         //說明上面沒有人按下
  423.                         {
  424.                                 dt_s_x = 0;  //電梯停下不動了  
  425.                                 xia = 1;                //關閉上字
  426.                                 zhong = 1;  
  427.                         }else
  428.                                 flag_stop = 1;        
  429.                 }               
  430.                 else if(dt_value == 3)        //在第3層
  431.                 {
  432.                         value = dt_1 + dt_2;
  433.                         if(value == 0)         //說明上面沒有人按下
  434.                         {
  435.                                 dt_s_x = 0;  //電梯停下不動了  
  436.                                 xia = 1;                //關閉上字
  437.                                 zhong = 1;                                          
  438.                         }else
  439.                                 flag_stop = 1;         
  440.                 }               
  441.                 else if(dt_value == 4)        //在第4層
  442.                 {
  443.                         value = dt_2 + dt_3;
  444.                         if(value == 0)         //說明上面沒有人按下
  445.                         {
  446.                                 dt_s_x = 0;  //電梯停下不動了  
  447.                                 xia = 1;                //關閉上字
  448.                                 zhong = 1;  
  449.                         }else
  450.                                 flag_stop = 1;                 
  451.                 }               
  452.                 else if(dt_value == 5)        //在第5層
  453.                 {
  454.                         value = dt_1 + dt_2 + dt_4;
  455.                         if(value == 0)         //說明上面沒有人按下
  456.                         {
  457.                                 dt_s_x = 0;  //電梯停下不動了  
  458.                                 xia = 1;                //關閉上字
  459.                                 zhong = 1;  
  460.                         }else
  461.                                 flag_stop = 1;               
  462.                 }               
  463.                 else if(dt_value == 6)        //在第6層
  464.                 {
  465.                         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5;
  466.                         if(value == 0)         //說明上面沒有人按下
  467.             {
  468.                                 dt_s_x = 0;  //電梯停下不動了  
  469.                                 xia = 1;                //關閉上字
  470.                                 zhong = 1;  
  471.                         }else
  472.                                 flag_stop = 1;                        
  473.                 }        
  474.                 else if(dt_value == 7)        //在第7層
  475.                 {
  476.                         value = dt_1 + dt_2  + dt_4 + dt_5+ dt_6;
  477.                         if(value == 0)         //說明上面沒有人按下
  478.                         {
  479.                                 dt_s_x = 0;  //電梯停下不動了  
  480.                                 xia = 1;                //關閉上字
  481.                                 zhong = 1;  
  482.                         }else
  483.                                 flag_stop = 1;        
  484.                 }               
  485.                 else if(dt_value == 8)        //在第8層
  486.                 {
  487.                         value =   dt_3 + dt_4 + dt_5 + dt_6 + dt_7;
  488.                         if(value == 0)         //說明上面沒有人按下
  489.                         {
  490.                                 dt_s_x = 0;  //電梯停下不動了  
  491.                                 xia = 1;                //關閉上字
  492.                                 zhong = 1;  
  493.                         }else
  494.                                 flag_stop = 1;        

  495.                         
  496.                 }               
  497.         }               
  498. }

  499. /***********************電梯處理函數************************/
  500. void td_dis()
  501. {
  502.         uchar value,value1;
  503.         value = dt_1 + dt_2 + dt_3 + dt_4 + dt_5 + dt_6 + dt_7 + dt_8;
  504.         if(value != 0)
  505.         {                   //100ms
  506.                 if(flag_stop == 1)        //到相應的樓了  要停下
  507.                 {
  508. /***************************向上走電梯***********************************/        
  509.                         if(dt_s_x != 0)                  //向上走電梯
  510.                         {
  511.                                 value1 ++;
  512.                                 if(value1 >= 10)  //1s
  513.                                 {
  514.                                         value1 = 0;
  515.                                         if(dt_s_x == 1)                  //向上走電梯
  516.                                         {
  517.                                                 dt_value ++;
  518.                                                 shang = 0;                //顯示上字
  519.                                                 zhong = 0;
  520.                                         }
  521.                                         if(dt_s_x == 2)                  //向下走電梯
  522.                                         {
  523.                                                 dt_value --;
  524.                                                 xia = 0;                //顯示下字
  525.                                                 zhong = 0;
  526.                                         }                                       
  527.                                         if(dt_value == 1)           //當到了第一層的時候
  528.                                         {
  529.                                                 if(dt_1 == 1)
  530.                                                 {
  531.                                                         led1 = 0;                 //關閉第一層發光二極管
  532.                                                         dt_1 = 0;        //清零電機在的標志
  533.                                                         flag_stop = 0;   //到停下
  534.                                                         beep = 0;        //打開蜂鳴器
  535.                                                 }                                 
  536.                                         }
  537.                                         else if(dt_value == 2)           //當到了第二層的時候
  538.                                         {
  539.                                                 if(dt_2 == 1)
  540.                                                 {
  541.                                                         led2 = 0;                 //關閉第二層發光二極管
  542.                                                         dt_2 = 0;        //清零電機在的標志
  543.                                                         flag_stop = 0;   //到停下
  544.                                                         beep = 0;        //打開蜂鳴器
  545.                                                 }                                 
  546.                                         }
  547.                                         else if(dt_value == 3)           //當到了第3層的時候
  548.                                         {
  549.                                                 if(dt_3 == 1)
  550.                                                 {
  551.                                                         led3 = 0;                 //關閉第3層發光二極管
  552.                                                         dt_3 = 0;        //清零電機在的標志
  553.                                                         flag_stop = 0;   //到停下
  554.                                                         beep = 0;        //打開蜂鳴器
  555.                                                 }                                 
  556.                                         }
  557.                                         else if(dt_value == 4)           //當到了第4層的時候
  558.                                         {
  559.                                                 if(dt_4 == 1)
  560.                                                 {
  561.                                                         led4 = 0;                 //關閉第4層發光二極管
  562.                                                         dt_4 = 0;        //清零電機在的標志
  563.                                                         flag_stop = 0;   //到停下
  564.                                                         beep = 0;        //打開蜂鳴器
  565.                                                 }                                 
  566.                                         }
  567.                                         else if(dt_value == 5)           //當到了第5層的時候
  568.                                         {
  569.                                                 if(dt_5 == 1)
  570.                                                 {
  571.                                                         led5 = 0;                 //關閉第5層發光二極管
  572.                                                         dt_5 = 0;        //清零電機在的標志
  573.                                                         flag_stop = 0;   //到停下
  574.                                                         beep = 0;        //打開蜂鳴器
  575.                                                 }                                 
  576.                                         }
  577.                                         else if(dt_value == 6)           //當到了第6層的時候
  578.                                         {
  579.                                                 if(dt_6 == 1)
  580.                                                 {
  581.                                                         led6 = 0;                 //關閉第6層發光二極管
  582.                                                         dt_6 = 0;        //清零電機在的標志
  583.                                                         flag_stop = 0;   //到停下
  584.                                                         beep = 0;        //打開蜂鳴器
  585.                                                 }                                 
  586.                                         }
  587.                                         else if(dt_value == 7)           //當到了第7層的時候
  588.                                         {
  589.                                                 if(dt_7 == 1)
  590.                                                 {
  591.                                                         led7 = 0;                 //關閉第7層發光二極管
  592.                                                         dt_7 = 0;        //清零電機在的標志
  593.                                                         flag_stop = 0;   //到停下
  594.                                                         beep = 0;        //打開蜂鳴器
  595.                                                 }                                 
  596.                                         }
  597.                                         else if(dt_value == 8)           //當到了第8層的時候
  598.                                         {
  599.                                                 if(dt_8 == 1)
  600.                                                 {
  601.                                                         led8 = 0;                 //關閉第8層發光二極管
  602.                                                         dt_8 = 0;        //清零電機在的標志
  603.                                                         flag_stop = 0;   //到停下
  604.                                                         beep = 0;        //打開蜂鳴器
  605.                                                 }                                 
  606.                                         }
  607.                                 }
  608.                         }               
  609.                 }                                                
  610.         }
  611.         if(flag_stop == 0)
  612.         {
  613.                 value2 ++;
  614.                 if(value2 % 5 == 0)
  615.                 {
  616.                         if(dt_s_x == 1)           //上
  617.                         {
  618.                                 shang = ~shang;
  619.                                 zhong = ~zhong;                                
  620.                         }
  621.                         if(dt_s_x == 2)           //下
  622.                         {
  623.                                 zhong = ~zhong;
  624.                                 xia = ~xia;                                
  625.                         }               
  626.                 }
  627.                 if(value2 >= 10) //1.0s
  628.                 {                        
  629.                         beep = 1;  //關閉蜂鳴器
  630.                 }
  631.                 if(value2 >= 20)
  632.                 {
  633.                         value2 = 0;                                 
  634.                         dt_shang_guan();  //電梯向上  做最后的判斷是否還要繼續向上
  635.                         dt_xia_guan();          //電梯向下  做最后的判斷是否還要繼續向下
  636.                 }
  637.         }        
  638. }
  639. /*************定時器0初始化程序***************/
  640. void time_init()         
  641. {
  642.         EA   = 1;                   //開總中斷
  643.         TMOD = 0X01;          //定時器0、工作方式1
  644.         ET0  = 1;                  //開定時器0中斷
  645.         TR0  = 1;                  //允許定時器0定時
  646. }

  647. /******************主程序**********************/           
  648. void main()
  649. {
  650.         uchar i;
  651.         P1 = 0x00;
  652.         P0 = 0X00;           //單片機IO口初始化
  653.         time_init();   //定時器初始化
  654.         while(1)
  655.         {
  656.                 key();                  //按鍵程序
  657.                 if(key_can < 20)
  658.                 {         
  659.                         if(dt_s_x == 0)
  660.                         {
  661.                                 value2 = 0;
  662.                                 flag_stop = 1;
  663.                         }
  664.                         key_with();               
  665.                 }
  666.                
  667.                 tiandi_shang_xia();          //當電梯不動時、判斷是向上、還是向下
  668.                
  669.                 P0 = ~smg_du[dt_value];          //顯示
  670.                
  671.                 if(flag_100ms  == 1)
  672.                 {
  673.                         flag_100ms = 0;
  674.                         td_dis();                 //電梯處理函數
  675.                 }
  676.                 if(flag_start == 1)
  677.                 {
  678.                         for(i=0;i<4;i++)                    //4相
  679.                         {
  680.                                 if(flag_z_f == 0)
  681.                                 {
  682.                                         zheng(i);      //電機正轉
  683.                                 }
  684.                                 else
  685.                                 {
  686.                                         fan(i);        //電機反轉
  687.                                 }
  688.                                 Delay(650);        //改變這個參數可以調整電機轉速
  689.                         }
  690.                 }
  691.         }
  692. }

  693. /*************定時器0中斷服務程序***************/
  694. void time0_int() interrupt 1
  695. {        
  696.         static uchar value;
  697.         TH0 = 0x3c;
  698.         TL0 = 0xb0;     // 50ms
  699.         value ++;
  700.         if(value % 2 == 0)
  701.         {
  702.                 flag_100ms = 1 ;
  703.         }
  704. }
復制代碼

所有資料51hei提供下載:
程序.docx (18.57 KB, 下載次數: 29)



評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:450700 發表于 2018-12-20 21:38 | 只看該作者
有仿真圖嗎,發一下附件
回復

使用道具 舉報

板凳
ID:99693 發表于 2019-1-4 14:14 | 只看該作者
看著這代碼感覺這個電梯要出事故啊
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产福利91精品 | 999国产精品视频 | 欧美日本在线观看 | 一区在线播放 | 欧美日韩福利 | 久久国产电影 | 久久99国产精一区二区三区 | 国产黄色大片在线免费观看 | 精品一级| 精品国产一区探花在线观看 | 亚洲一区二区中文字幕在线观看 | 日韩精品成人在线 | 成人高清在线 | 99久久免费观看 | 欧美三级网站 | 亚洲欧美精品久久 | 中文字幕国 | 成人一区二区视频 | 99pao成人国产永久免费视频 | 色吊丝2288sds中文字幕 | 午夜在线| 综合网中文字幕 | 久久尤物免费一区二区三区 | 欧美精品在线免费观看 | 毛片毛片毛片毛片毛片 | 亚洲视频一区 | 国产精品毛片久久久久久 | 欧美一区二区三区久久精品 | 国产午夜三级一区二区三 | 免费观看黄色片视频 | 在线啊v| 亚洲精品日韩视频 | 天天看天天操 | 成人精品久久日伦片大全免费 | 在线视频 欧美日韩 | 天天搞天天操 | 欧美区在线 | 亚洲综合色视频在线观看 | 成人精品啪啪欧美成 | 337p日本欧洲亚洲大胆精蜜臀 | a级毛片毛片免费观看久潮喷 |