找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1994|回复: 0
打印 上一主题 下一主题
收起左侧

51循迹小车蔽障怎么改成遇见物体绕过他,继续循迹

[复制链接]
回帖奖励 5 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次(中奖概率 50%)
跳转到指定楼层
楼主
ID:191831 发表于 2017-11-27 19:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
怎么改成遇见物体绕过他,继续循迹。
  1. include<AT89X52.H>   
  2. #include<ZY-4WD_PWM.H>   
  3.    

  4. void main(void)
  5. {
  6. unsigned char i;
  7.     P1=0X00;   
  8.     TMOD=0X01;
  9.          TH0= 0XFc;   
  10.           TL0= 0X18;
  11.             TR0= 1;
  12.          ET0= 1;
  13.          EA = 1;     

  14. while(1) //ÎÞÏÞÑ­»·
  15. {
  16.   
  17.    
  18.    if( LeftIRBZ == 0 || RightIRBZ == 0 )  
  19.    {
  20.    
  21.      stop();  
  22.    }
  23.             
  24.    
  25.      else
  26.     {         if(Left_1_led==0&&Right_1_led==0)
  27.       {
  28.         run();  
  29.      
  30.       }
  31.                   
  32.           if(Left_1_led==1&&Right_1_led==0)     
  33.       {
  34.         leftrun();  
  35.       
  36.         }
  37.       
  38.             if(Right_1_led==1&&Left_1_led==0)  
  39.       {   
  40.           rightrun();   
  41.       // delay(2);
  42.       }
  43.           if(Right_1_led==1&&Left_1_led==1)  
  44.       {    stop();
  45.       }
  46.    }  
  47.   }
  48. }
  49. 上面的是主函数,下面的是其他的函数。
  50. #ifndef _LED_H_
  51. #define _LED_H_

  52.     //¶¨ÒåС³µÇý¶¯Ä£¿éÊäÈëIO¿Ú
  53. sbit IN1=P1^2;
  54. sbit IN2=P1^3;
  55. sbit IN3=P1^6;
  56. sbit IN4=P1^7;
  57. sbit EN1=P1^4;
  58. sbit EN2=P1^5;

  59. /***·äÃùÆ÷½ÓÏß¶¨Òå*****/
  60.     sbit BUZZ=P2^3;

  61.     #define Left_1_led        P3_7  //×óÑ­¼£´«¸ÐÆ÷  

  62.     #define Right_1_led       P3_6  //ÓÒÑ­¼£´«¸ÐÆ÷

  63.     #define LeftIRBZ          P3_5  //×ó±ÜÕÏ´«¸ÐÆ÷

  64. #define RightIRBZ         P3_4  //ÓÒ±ÜÕÏ´«¸ÐÆ÷   
  65.    
  66. #define Left_moto_pwm   P1_6  //PWMÐźŶË
  67. #define Right_moto_pwm   P1_7  //PWMÐźŶË

  68. #define Left_moto_go      {P1_2=1,P1_3=0;}  //×óµç»úÏòǰ×ß
  69. #define Left_moto_back    {P1_2=0,P1_3=1;}  //×ó±ßµç»úÏòºóת
  70. #define Left_moto_Stop    {P1_2=0,P1_3=0;}         //×ó±ßµç»úͣת                     
  71. #define Right_moto_go     {P1_4=1,P1_5=0;} //Óұߵç»úÏòǰ×ß
  72. #define Right_moto_back   {P1_4=0,P1_5=1;} //Óұߵç»úÏòºó×ß
  73. #define Right_moto_Stop   {P1_4=0,P1_5=0;}       //Óұߵç»úͣת   
  74. unsigned char pwm_val_left  =0;//±äÁ¿¶¨Òå
  75. unsigned char push_val_left =0;// ×óµç»úÕ¼¿Õ±ÈN/20
  76. unsigned char pwm_val_right =0;
  77. unsigned char push_val_right=0;// ÓÒµç»úÕ¼¿Õ±ÈN/20
  78. bit Right_moto_stop=1;
  79. bit Left_moto_stop =1;
  80. unsigned  int  time=0;
  81.    
  82. /************************************************************************/
  83. //ÑÓʱº¯Êý
  84.    void delay(unsigned int k)
  85. {   
  86.      unsigned int x,y;
  87.   for(x=0;x<k;x++)
  88.     for(y=0;y<2000;y++);
  89. }
  90. /************************************************************************/
  91. //ǰËÙǰ½ø
  92.      void  run(void)
  93. {
  94.      push_val_left=15;  //Ëٶȵ÷½Ú±äÁ¿ 0-20¡£¡£¡£0×îС£¬20×î´ó
  95.   push_val_right=15;
  96.   Left_moto_go ;   //×óµç»úÍùǰ×ß
  97.   Right_moto_go ;  //ÓÒµç»úÍùǰ×ß
  98. }
  99. //ºóÍ˺¯Êý
  100.      void  backrun(void)
  101. {
  102.      push_val_left=15;  //Ëٶȵ÷½Ú±äÁ¿ 0-20¡£¡£¡£0×îС£¬20×î´ó
  103.   push_val_right=15;
  104.   Left_moto_back;   //×óµç»úÍùºó×ß
  105.   Right_moto_back;  //ÓÒµç»úÍùºó×ß
  106. }
  107. //×óת
  108.      void  leftrun(void)
  109. {  
  110.      push_val_left=5;
  111.   push_val_right=15;
  112.   Right_moto_go ;  //ÓÒµç»úÍùǰ×ß
  113.      Left_moto_back   ;  //×óµç»úºó×ß
  114. }
  115. //ÓÒת
  116.      void  rightrun(void)
  117. {
  118.   push_val_left=16;
  119.   push_val_right=8;
  120.      Left_moto_go  ;   //×óµç»úÍùǰ×ß
  121.   Right_moto_back    ;  //ÓÒµç»úÍùºó×ß
  122. }
  123. //Í£Ö¹
  124.      void  stop(void)
  125. {  
  126.      
  127.   Right_moto_Stop ;  //ÓÒµç»úÍ£Ö¹
  128.      Left_moto_Stop  ;  //×óµç»úÍ£Ö¹
  129. }
  130. /************************************************************************/
  131. /*                    PWMµ÷ÖÆµç»úתËÙ                                   */
  132. /************************************************************************/
  133. /*                    ×óµç»úµ÷ËÙ                                        */
  134. /*µ÷½Úpush_val_leftµÄÖµ¸Ä±äµç»úתËÙ,Õ¼¿Õ±È            */
  135.   void pwm_out_left_moto(void)
  136. {  
  137.    if(Left_moto_stop)
  138.    {
  139.     if(pwm_val_left<=push_val_left)
  140.         {
  141.        Left_moto_pwm=1;
  142. //       Left_moto_pwm1=1;
  143.      }
  144. else
  145.         {
  146.           Left_moto_pwm=0;
  147. //       Left_moto_pwm1=0;
  148.      }
  149. if(pwm_val_left>=20)
  150.         pwm_val_left=0;
  151.    }
  152.    else   
  153.           {
  154.            Left_moto_pwm=0;
  155. //           Left_moto_pwm1=0;
  156.     }
  157. }
  158. /******************************************************************/
  159. /*                    ÓÒµç»úµ÷ËÙ                                  */  
  160.    void pwm_out_right_moto(void)
  161. {
  162.   if(Right_moto_stop)
  163.    {
  164.     if(pwm_val_right<=push_val_right)
  165.        {
  166.         Right_moto_pwm=1;
  167. //     Right_moto_pwm1=1;
  168.      }
  169. else
  170.        {
  171.      Right_moto_pwm=0;
  172. //     Right_moto_pwm1=0;
  173.     }
  174. if(pwm_val_right>=20)
  175.         pwm_val_right=0;
  176.    }
  177.    else   
  178.           {
  179.            Right_moto_pwm=0;
  180. //           Right_moto_pwm1=0;
  181.        }
  182. }
  183.       
  184. /***************************************************/
  185. ///*TIMER0ÖжϷþÎñ×Óº¯Êý²úÉúPWMÐźÅ*/
  186.   void timer0()interrupt 1   using 2
  187. {
  188.      TH0=0XFc;   //1Ms¶¨Ê±
  189.   TL0=0X18;
  190.   time++;
  191.   pwm_val_left++;
  192.   pwm_val_right++;
  193.   pwm_out_left_moto();
  194.   pwm_out_right_moto();
  195. }
  196. /*********************************************************************/
  197. #endif
复制代码




















分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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