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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

智能四路循跡小車過直角的單片機源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:242962 發表于 2017-10-25 22:23 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int

  4. #define Right_moto_pwm P3^0; //ENA
  5. #define Left_moto_pwm P3^1; //ENB
  6. ///////////////////////////
  7. sbit P22=P2^2; // 左前車輪
  8. sbit P23=P2^3; // 左后車輪
  9. sbit P24=P2^4; //右前車輪
  10. sbit P25=P2^5; //右后車輪
  11. ////////////////////////////////
  12. sbit P10=P1^0;//  紅1外
  13. sbit P11=P1^1; //紅2外
  14. sbit P12=P1^2; // 紅3外
  15. sbit P13=P1^3;//紅4外
  16. /////////////////////////////////
  17. sbit P20=P3^0;
  18. sbit P21=P3^1;

  19. uchar pwm_val_left =0;
  20. double push_val_left =0; //左電機占空比N/10
  21. double pwm_val_right =0;
  22. uchar push_val_right=0; //右電機占空比N/10

  23. bit Right_moto_stp=1;
  24. bit Left_moto_stp =1;
  25. double time=0;
  26. int flag=0;
  27. void stop(void)
  28. {        
  29.         P22=1;
  30.         P23=1;
  31.         P24=1;
  32.         P25=1;
  33. }
  34. void run(void)
  35. {

  36.         push_val_left =16;//PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度
  37.     push_val_right =16;//} //PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度
  38.                 P22=0;
  39.                 P23=1;
  40.                 P24=0;
  41.                 P25=1;
  42. }
  43.          
  44. void run1(void)
  45. {
  46.         push_val_left =7;
  47.         push_val_right =7;        
  48.                 P22=0;
  49.                 P23=1;
  50.                 P24=0;
  51.                 P25=1;        
  52.                         
  53. }
  54. void left(void)         //左轉
  55. {         
  56.         push_val_left =20;
  57.         push_val_right =20;
  58.                 P22=1;
  59.                 P23=1;
  60.                 P24=0;
  61.                 P25=1;
  62. }
  63. void left1(void)         //左轉
  64. {         
  65.         push_val_left =20;
  66.         push_val_right =19;
  67.                 P22=1;
  68.                 P23=0;
  69.                 P24=0;
  70.                 P25=1;
  71. }         
  72.         
  73. void right(void)  //右轉
  74. {         
  75.         push_val_left =18;
  76.         push_val_right =18;
  77.          
  78.                 P22=0;
  79.                 P23=1;
  80.                 P24=1;
  81.                 P25=1;
  82. }
  83. void right1(void)  //右轉
  84. {         
  85.         push_val_left =20;
  86.         push_val_right =19;
  87.          
  88.                 P22=0;
  89.                 P23=1;
  90.                 P24=1;
  91.                 P25=0;
  92. }
  93.          


  94. void pwm_out_left_moto(void) //左電機調速,調節push_val_left的值改變電機轉速,占空比
  95. {                                                                           //右轉
  96.         if(Left_moto_stp)
  97.          {
  98.          {if(pwm_val_left<=push_val_left)
  99.                  {
  100.                         P21=1;        //ENB
  101.                 }
  102.         else
  103.                   {P21=0;}
  104.          }
  105. {if(pwm_val_left>=20)

  106.   {pwm_val_left=0;}
  107.   }
  108. }

  109. else
  110. {P21=0;}
  111. }
  112. /////////////////////////////////////////////////
  113. void pwm_out_right_moto(void) //右電機調速,調節push_val_left的值改變電機轉速,占空比
  114. {                                                           //左轉
  115.         if(Right_moto_stp)
  116. {
  117.         if(pwm_val_right<=push_val_right)
  118. {P20=1;}
  119. else
  120. {P20=0;}

  121. if(pwm_val_right>=20)

  122. {pwm_val_right=0;}
  123. }                                                                                                                                          
  124. else
  125. {P20=0;}
  126. }

  127. void xunji()
  128. {         
  129.          
  130.         

  131.                 if(P10==0&&P11==0&&P12==0&&P13==0)
  132.                 {
  133.                    if(flag==1)
  134.                    run1();
  135.                    else
  136.                    run();
  137.                 }
  138.                 else
  139.                 if((P10==1&&P11==1&&P12==0&&P13==0)||(P10==1&&P11==1&&P12==1&&P13==0)||(P10==1&&P11==0&&P12==0&&P13==0)||(P10==0&&P11==1&&P12==0&&P13==0)) //zuozhuan
  140.                 {         if(flag==1)
  141.                         left1();                //zuozhuan
  142.                         else
  143.                         left();
  144.                 }
  145.                 else
  146.                 if((P10==0&&P11==0&&P12==0&&P13==1)||(P10==0&&P11==0&&P12==1&&P13==0)||(P10==0&&P11==0&&P12==1&&P13==1)||(P10==0&&P11==1&&P12==1&&P13==1))

  147.                 {        if(flag==1)                //youzhuan
  148.                         right1();        
  149.                         else
  150.                         right();
  151.                  }
  152.                   else
  153.                 if((P10==1&&P11==0&&P12==1&&P13==0)||(P10==0&&P11==1&&P12==0&&P13==1)||(P10==0&&P11==1&&P12==1&&P13==0)||(P10==1&&P11==0&&P12==0&&P13==1)||(P10==1&&P11==1&&P12==0&&P13==1)||(P10==1&&P11==0&&P12==1&&P13==1))
  154.                     {
  155.                            run1();
  156.                    }
  157.                    else
  158.                  if(P10==1&&P11==1&&P12==1&&P13==1)
  159.                   {
  160.                           if(flag==1)
  161.                         run1();
  162.                         else
  163.                         stop();
  164.                  }
  165. }




  166. void timer0()interrupt 1 using 2

  167. {
  168. TR1=0;
  169. TH0=0xFC; //2Ms定時


  170. TL0=0x30;



  171. pwm_val_left++;

  172. pwm_val_right++;

  173. pwm_out_left_moto();

  174. pwm_out_right_moto();
  175.   //xunji();

  176.                 if(P10==0&&P11==0&&P12==0&&P13==0)
  177.                 {
  178.                    if(flag==1)
  179.                      run1();
  180.                    else
  181.                    run();
  182.                 }
  183.                 else
  184.                 if((P10==1&&P11==1&&P12==0&&P13==0)||(P10==1&&P11==1&&P12==1&&P13==0)||(P10==1&&P11==0&&P12==0&&P13==0)||(P10==0&&P11==1&&P12==0&&P13==0)) //zuozhuan
  185.                 {         if(flag==1)
  186.                         left1();                //zuozhuan
  187.                         else
  188.                         left();
  189.                 }
  190.                 else
  191.                 if((P10==0&&P11==0&&P12==0&&P13==1)||(P10==0&&P11==0&&P12==1&&P13==0)||(P10==0&&P11==0&&P12==1&&P13==1)||(P10==0&&P11==1&&P12==1&&P13==1))

  192.                 {        if(flag==1)                //youzhuan
  193.                         right1();        
  194.                         else
  195.                         right();
  196.                  }
  197.                   else
  198.                 if((P10==1&&P11==0&&P12==1&&P13==0)||(P10==0&&P11==1&&P12==0&&P13==1)||(P10==0&&P11==1&&P12==1&&P13==0)||(P10==1&&P11==0&&P12==0&&P13==1)||(P10==1&&P11==1&&P12==0&&P13==1)||(P10==1&&P11==0&&P12==1&&P13==1))
  199.                     {
  200.                            run1();
  201.                    }
  202.                    else
  203.                  if(P10==1&&P11==1&&P12==1&&P13==1)
  204.                   {
  205.                           if(flag==1)
  206.                         run1();
  207.                         else
  208.                         stop();
  209.                  }
  210. TR1=1;



  211. }
  212. void timer1() interrupt 3
  213. {
  214.     TR1=1 ;
  215.         TH1=0xFC; //2Ms定時
  216.     TL1=0x30;

  217.     time++;
  218.    if(time<23000)
  219.    {   
  220.    flag=0;
  221.    }
  222. if(time>23000&&time<53000)
  223.    {   
  224.    flag=1;
  225.    }
  226.   if(time>53000)
  227.                 flag=0;
  228.         

  229. }  

  230. /***************************************************/

  231. void main(void)

  232. {

  233. TMOD=0X21;

  234. TH0= 0xFC; //2ms定時
  235. TL0= 0x30;
  236. TH1= 0xFC; //2ms定時
  237. TL1= 0x30;

  238. TR0= 1;
  239. ET0= 1;
  240. ET1= 1;
  241. EA = 1;

  242. while(1) /*無限循環*/

  243.         {

  244. //        xunji();
  245.                         
  246.                 if(P10==1&&P11==1&&P12==1&&P13==1&&flag==0)//全滅
  247.                 {                        
  248.                         stop();                                          
  249.                  }

  250.         }

  251. }


復制代碼






評分

參與人數 2黑幣 +80 收起 理由
逗比不逗_ + 30
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:246638 發表于 2018-4-25 20:15 | 只看該作者
本帖最后由 逗比不逗_ 于 2018-4-29 14:46 編輯

不錯哦
回復

使用道具 舉報

板凳
ID:884711 發表于 2024-5-5 09:30 | 只看該作者
路過學習,謝謝分享!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品在线一区二区三区 | 日本淫视频 | 国产一区二区在线免费观看 | 日韩中文在线观看 | 香蕉婷婷 | 999国产精品视频 | 免费大黄视频 | 欧美日韩一区二区在线 | 国产人成精品一区二区三 | 国产精品久久久久久久免费观看 | 欧美美女爱爱视频 | 日韩精品在线看 | 日韩精品无码一区二区三区 | 色婷婷亚洲一区二区三区 | 国产激情视频在线 | 国产精品成人国产乱 | 日本天天操 | 中文字幕亚洲视频 | 欧美久久精品一级c片 | 一区二区三区四区av | 国产精品a久久久久 | 日日躁狠狠躁aaaaxxxx | 亚洲一区视频在线播放 | 国产操操操 | 日日干日日操 | 亚洲一区二区三区四区五区午夜 | 亚洲一区二区三区在线视频 | 在线看片国产精品 | www.日本在线 | 91香蕉嫩草 | 精品一区二区三区四区视频 | 91精品麻豆日日躁夜夜躁 | 天堂一区二区三区四区 | 国产精品视频播放 | 亚洲成人av在线播放 | 久久亚洲一区二区三区四区 | 不卡一区二区三区四区 | 久久成人精品 | 成人精品久久日伦片大全免费 | 成人在线视频观看 | 亚洲免费网址 |