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

標題: 我的單片機pwm尋跡小車源程序 [打印本頁]

作者: 俁戈    時間: 2017-10-23 20:40
標題: 我的單片機pwm尋跡小車源程序
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit Z1=P2^0;  //左電機前進
  5. sbit Z2=P2^1;  //左電機后退
  6. sbit Y1=P2^2;  //右電機前進
  7. sbit Y2=P2^3;  //右電機后退
  8. sbit ENA=P0^0;
  9. sbit ENB=P0^1;
  10. sbit L1=P1^0;        //左1
  11. sbit L2=P1^1;        //左2
  12. sbit R1=P1^2;        //右1
  13. sbit R2=P1^3;        //右2
  14. double a=0;
  15. int aa=0,d=0,c=0;
  16. uchar b,bb;
  17. uchar pwm_val_left =0;

  18. double push_val_left =0; //左電機占空比N/10

  19. uchar pwm_val_right =0;

  20. double push_val_right=0; //右電機占空比N/10

  21. bit Right_moto_stp=1;

  22. bit Left_moto_stp =1;



  23. void run1(void) //前進函數

  24. {

  25. push_val_left =5.5; //PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度



  26. push_val_right =5.5; //PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度

  27. Z1=0;Z2=1;
  28. Y1=0;Y2=1;



  29. }
  30. void run(void) //前進函數
  31. {
  32. push_val_left =20; //PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度
  33. push_val_right =20; //PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度
  34. Z1=0;Z2=1;
  35. Y1=0;Y2=1;
  36. }
  37. void run2(void) //前進函數
  38. {
  39. push_val_left =9; //PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度
  40. push_val_right =9; //PWM 調節參數1-20 1為最慢20是最快 改這個值可以改變其速度
  41. Z1=0;Z2=1;
  42. Y1=0;Y2=1;
  43. }

  44. void left(void) //直角左轉函數

  45. {

  46. push_val_left =18;

  47. push_val_right =18;

  48.         Z1=1;Z2=0;
  49.         Y1=0;Y2=1;

  50. }
  51. void left1(void) //左轉函數

  52. {

  53. push_val_left =16;
  54.                                  
  55. push_val_right =16;

  56.         Z1=1;Z2=0;
  57.         Y1=0;Y2=1;

  58. }
  59. void left2(void) //小左轉函數

  60. {

  61. push_val_left =19;
  62.                                  
  63. push_val_right =19;

  64.         Z1=1;Z2=1;
  65.         Y1=0;Y2=1;

  66. }
  67. void right(void) //直角右轉函數

  68. {

  69. push_val_left =18;

  70. push_val_right =18;

  71. Z1=0;Z2=1;

  72. Y1=1;Y2=0;

  73. }
  74. void right1(void) //右轉函數

  75. {

  76. push_val_left =16;

  77. push_val_right =16;

  78. Z1=0;Z2=1;

  79. Y1=1;Y2=0;
  80. }
  81. void right2(void) //小右轉函數

  82. {

  83. push_val_left =19;

  84. push_val_right =19;

  85. Z1=0;Z2=1;

  86. Y1=1;Y2=1;
  87. }
  88. void stop(void)

  89. {
  90. Z1=1;Z2=1;

  91. Y1=1;Y2=1;


  92. }




  93. void pwm_out_left_moto(void) //左電機調速,調節push_val_left的值改變電機轉速,占空比

  94. {

  95. if(Left_moto_stp)

  96. {                                                                           
  97. {if(pwm_val_left<=push_val_left)

  98. { ENB=1;}

  99. else

  100.   {ENB=0;}
  101.   }
  102. {if(pwm_val_left>=20)

  103.   {pwm_val_left=0;}
  104.   }
  105. }

  106. else

  107. {ENB=0;}

  108. }



  109. void pwm_out_right_moto(void) //右電機調速,調節push_val_left的值改變電機轉速,占空比

  110. {

  111. if(Right_moto_stp)

  112. {

  113. if(pwm_val_right<=push_val_right)

  114. {ENA=1;}

  115. else

  116. {ENA=0;}

  117. if(pwm_val_right>=20)

  118. {pwm_val_right=0;}

  119. }

  120. else

  121. {ENA=0;}

  122. }



  123. void xunji()
  124. {
  125.                  if(L1==1&&L2==1&&R1==1&&R2==1)
  126.                 a++;

  127.                 if(L1==0&&L2==0&&R1==0&&R2==0)                 
  128.                 {run();aa++;}
  129.                 if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
  130.                 left1();
  131.                 if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
  132.                 right1();
  133.                 if(L1==0&&L2==1&&R1==0&&R2==0)          left2();
  134.                 if(L1==0&&L2==0&&R1==1&&R2==0)          right2();
  135.                 if((L1==1&&L2==1&&R1==1&&R2==1)&&a>=100)
  136.                 {
  137.                         stop();          a=0;
  138.                 }
  139.                 if(aa>=13000)         { bb=1; aa=0;         }
  140.                 while(bb==1)
  141.                 {
  142.                
  143.                 if(L1==0&&L2==0&&R1==0&&R2==0)                 run2();
  144.                 if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
  145.                 left1();
  146.                 if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
  147.                 right1();
  148.                 if(L1==0&&L2==1&&R1==0&&R2==0)          {left2();aa++;}
  149.                 if(L1==0&&L2==0&&R1==1&&R2==0)          {right2();aa++;}
  150.                 while(aa>=700)
  151.                 {
  152.                 if(L1==0&&L2==0&&R1==0&&R2==0)                 
  153.                 run();
  154.                 if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
  155.                 left1();
  156.                 if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
  157.                 right1();
  158.                 if(L1==0&&L2==1&&R1==0&&R2==0)          {left2();}
  159.                 if(L1==0&&L2==0&&R1==1&&R2==0)          right2();
  160.                 if(L1==1&&L2==1&&R1==1&&R2==1)    a++;
  161.                                 if((a>=60))
  162.                 {
  163.                         b=1;
  164.                 }
  165.                 while(b==1)
  166.                 {
  167.                         if(L1==0&&L2==0&&R1==0&&R2==0)                 
  168.                         run1();
  169.                         if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
  170.                         left();
  171.                         if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
  172.                         right();
  173.                         if(L1==0&&L2==1&&R1==0&&R2==0)          {left2();        c++;}
  174.                     if(L1==0&&L2==0&&R1==1&&R2==0)          {right2();d++;}

  175.                         while(c+d>=15000)
  176.                         {
  177.                                 if(L1==0&&L2==0&&R1==0&&R2==0)         run();
  178.                                 if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
  179.                                 left1();
  180.                                 if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
  181.                                 right1();
  182.                                 if(L1==0&&L2==1&&R1==0&&R2==0)          left2();
  183.                                 if(L1==0&&L2==0&&R1==1&&R2==0)          right2();
  184.                                 if(L1==1&&L2==1&&R1==1&&R2==1)          stop();
  185.                         }

  186.                         if((L1==1&&L2==1&&R1==1&&R2==1))
  187.                 {
  188.                         stop();          a=0;
  189.                 }

  190.                 }
  191.                
  192.                 }

  193.                 }










  194. //                if((a>=60))
  195. //                {
  196. //                        b=1;
  197. //                }
  198. //                while(b==1)
  199. //                {
  200. //                        if(L1==0&&L2==0&&R1==0&&R2==0)                 
  201. //                        run1();
  202. //                        if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
  203. //                        left();
  204. //                        if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
  205. //                        right();
  206. //                        if(L1==0&&L2==1&&R1==0&&R2==0)          {left2();        c++;}
  207. //                    if(L1==0&&L2==0&&R1==1&&R2==0)          {right2();d++;}
  208. //
  209. //                        while(c+d>=15000)
  210. //                        {
  211. //                                if(L1==0&&L2==0&&R1==0&&R2==0)         run();
  212. //                                if((L1==1&&L2==0&&R1==0&&R2==0)||(L1==1&&L2==1&&R1==1&&R2==0)||(L1==1&&L2==1&&R1==0&&R2==0))
  213. //                                left1();
  214. //                                if((L1==0&&L2==0&&R1==0&&R2==1)||(L1==0&&L2==1&&R1==1&&R2==1)||(L1==0&&L2==0&&R1==1&&R2==1))
  215. //                                right1();
  216. //                                if(L1==0&&L2==1&&R1==0&&R2==0)          left2();
  217. //                                if(L1==0&&L2==0&&R1==1&&R2==0)          right2();
  218. //                                if(L1==1&&L2==1&&R1==1&&R2==1)          stop();
  219. //                        }
  220. //
  221. //                        if((L1==1&&L2==1&&R1==1&&R2==1))
  222. //                {
  223. //                        stop();          a=0;
  224. //                }
  225. //
  226. //                }
  227.                         
  228.         
  229.                         
  230. }
  231. /***********TIMER0中斷服務子函數產生PWM信號**********/

  232. void timer0()interrupt 1 using 2

  233. {

  234. TH0=0XFC; //2Ms定時

  235. TL0=0X30;

  236. pwm_val_left++;

  237. pwm_val_right++;

  238. pwm_out_left_moto();

  239. pwm_out_right_moto();

  240. }

  241. /***************************************************/

  242. void main(void)

  243. {

  244. TMOD=0X01;

  245. TH0= 0XFC; //2ms定時

  246. TL0= 0X30;                                                                 

  247. TR0= 1;

  248. ET0= 1;

  249. EA = 1;

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

  251. {

  252. xunji();
  253. }

  254. }
復制代碼

作者: 平淡是真963    時間: 2017-10-24 22:52
樓主能分享一下電路圖嗎?
作者: TYM    時間: 2017-11-16 15:42
樓主有電路圖嗎




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美综合一区 | 婷婷精品 | 99热这里只有精品8 激情毛片 | 夜夜艹| 色黄爽 | 国产一区不卡 | 日韩亚洲视频 | 国产精品欧美一区喷水 | aaaaaaa片毛片免费观看 | 日韩成人一区二区 | 夜夜草导航 | 一级黄a| 一区二区三区视频免费看 | 精品欧美一区二区久久久伦 | 中文字幕国产一区 | 欧美五月婷婷 | 天天拍天天草 | 成人免费在线观看 | 国产高清在线精品 | 天天看天天爽 | 国产精品一区在线观看你懂的 | 久久久av中文字幕 | 久久久久国产一区二区三区四区 | 国产精品免费观看视频 | 国产一区h | 国产精品1区2区3区 一区中文字幕 | 久草热视频| 亚洲一区二区三区在线 | 国产中文字幕在线 | 国产福利资源在线 | 精品三区| 欧美成人精品激情在线观看 | 亚洲一区二区三区免费在线观看 | 午夜影院网站 | 免费一级黄色 | 亚洲欧美精品在线 | 看a网站 | 亚洲精品日韩一区二区电影 | 色橹橹欧美在线观看视频高清 | 欧美一区二区三区在线视频 | 人人种亚洲|