找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

尋跡小車程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:244394 發(fā)表于 2017-10-30 22:35 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
上周做的尋跡小車程序,上傳保存一下

單片機源程序如下:
  1. #include <reg52.h>  
  2.   
  3. sbit IN1 = P1^0;   
  4. sbit IN2 = P1^1;  
  5. sbit ENA = P1^2;  
  6. sbit IN3 = P1^3;  
  7. sbit IN4 = P1^4;  
  8. sbit ENB = P1^5;  
  9.   
  10. sbit left1 = P0^0;  
  11. sbit left2 = P0^1;  
  12. sbit right1 = P0^2;  
  13. sbit right2 = P0^3;  
  14.   
  15. unsigned char zkb1 = 0;  
  16. unsigned char zkb2 = 0;  
  17. unsigned char t = 0;  
  18.   
  19.   
  20. void init()  
  21. {  
  22.     EA = 1;  
  23.     TMOD |= 0x01;  
  24.     TH0 =(65536 - 100) / 256;  
  25.     TL0 = (65536 - 100)% 256;     
  26.     ET0 = 1;  
  27.     TR0 = 1;  
  28. }  
  29.   
  30. void timer0() interrupt 1  
  31. {  
  32.   
  33.     TH0 = (65536 - 100) / 256;  
  34.     TL0 = (65536 - 100) % 256;  
  35.          
  36.     if(t < zkb1)  
  37.     {  
  38. //      if(t % 2 == 0)  
  39. //      {  
  40. //          ENA = 1;  
  41. //      }  
  42. //      else   
  43. //      {  
  44. //          ENA = 0;  
  45. //      }  
  46.         ENA = 1;  
  47.     }  
  48.     else   
  49.     {  
  50.         ENA = 0;  
  51.     }  
  52.     if(t < zkb2)  
  53.     {  
  54. //      if(t%2 == 0)  
  55. //      {  
  56. //          ENB = 1;  
  57. //      }  
  58. //      else   
  59. //      {  
  60. //          ENB = 0;  
  61. //      }  
  62.         ENB =1;  
  63.     }  
  64.     else   
  65.     {  
  66.         ENB = 0;  
  67.     }  
  68.     ++t;  
  69.     if(t >= 50)  
  70.     {  
  71.         t = 0;  
  72.     }  
  73. }  
  74.   
  75. void turn_left1()  
  76. {  
  77.     zkb1 = 13;  
  78.     zkb2 = 0;   
  79. }  
  80.   
  81. void turn_left2()  
  82. {   
  83.     zkb1 = 13;  
  84.     zkb2 = 0;  
  85. }  
  86.   
  87. void turn_right1()  
  88. {  
  89.     zkb1 = 0;  
  90.     zkb2 = 13;  
  91. }  
  92.   
  93. void turn_right2()  
  94. {  
  95.     zkb1 = 0;  
  96.     zkb2 = 13;  
  97. }  
  98.   
  99. void qianjin()  
  100. {  
  101.     zkb1 = 8;  
  102.     zkb2 = 8;  
  103. }  
  104. void xunji()  
  105. {  
  106.     unsigned char flag;  
  107.     if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))  
  108.     {  
  109.         flag = 0;  
  110.     }
  111.           
  112.     if((right2 == 0)&&(right1 ==1)&&(left1 == 0)&&(left2 == 0))  
  113.     {  
  114.         flag = 1;  
  115.     }
  116.           
  117.     if((right2 == 0)&&(right1 == 0)&&(left1 == 1)&&(left2 == 0))  
  118.     {  
  119.         flag = 2;  
  120.     }
  121.           
  122.     if((right2 == 0)&&(right1 == 0)&&(left1 == 0)&&(left2 == 1))  
  123.     {  
  124.         flag = 3;  
  125.     }
  126.           
  127.     if((right2 == 1)&&(right1 == 0)&&(left1 == 0)&&(left2 == 0))  
  128.     {  
  129.         flag = 4;  
  130.     }
  131.          
  132.     switch(flag)  
  133.     {  
  134.         case 0:
  135.                         qianjin();
  136.                 break;  
  137.          
  138.         case 1:
  139.                         turn_right1();
  140.                 break;  
  141.          
  142.         case 2:
  143.                         turn_left1();
  144.                 break;  
  145.          
  146.         case 3:
  147.                         turn_left2();
  148.                 break;  
  149.          
  150.         case 4:
  151.                         turn_right2();
  152.                 break;  
  153.          
  154.         default:
  155.                         qianjin();
  156.                 break;  
  157.     }  
  158. }  
  159.   
  160. void main()  
  161. {  
  162.     init();  
  163. //  zkb1 = 40;  
  164. //  zkb2 = 30;  
  165.     IN1 = 0;  
  166.     IN2 = 1;  
  167.     IN3 = 0;  
  168.     IN4 = 1;  
  169.     while(1)  
  170.     {               
  171.                 xunji();           
  172.     }  
  173. }
復制代碼

所有資料51hei提供下載:
xunji.zip (28.44 KB, 下載次數(shù): 21)


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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表