欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5909|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)尋跡小車代碼資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:316632 發(fā)表于 2019-6-19 16:35 | 只看該作者 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
基于51單片機(jī)循跡小車的代碼,傳感器為7個(gè)光電對(duì)管,前輪采用舵機(jī)轉(zhuǎn)向,后輪為驅(qū)動(dòng)輪,同時(shí)采用差速輔助前輪轉(zhuǎn)向

單片機(jī)源程序如下:
  1. #include<reg52.h>

  2. #define u8   unsigned char
  3. #define u16  unsigned int

  4. /*************電機(jī)速度設(shè)定***********/
  5. #define speed_Left3      0
  6. #define speed_Left2      20
  7. #define speed_Left1      20
  8. #define speed_Middle     20
  9. #define speed_Right1     20
  10. #define speed_Right2     20
  11. #define speed_Right3     0

  12. /*************舵機(jī)轉(zhuǎn)彎角度設(shè)定***********/
  13. #define Turn_Left3      13
  14. #define Turn_Left2      14
  15. #define Turn_Left1      17
  16. #define Middle          18
  17. #define Turn_Right1     19
  18. #define Turn_Right2     22
  19. #define Turn_Right3     23

  20. /***********電機(jī)引腳定義***************/
  21. sbit left_pwm=P1^2;                        //左電機(jī)pwm
  22. sbit left_motor0=P1^3;                   //左電機(jī)負(fù)極
  23. sbit left_motor1=P1^4;                   //左電機(jī)正極
  24. sbit right_pwm=P1^5;                //右電機(jī)pwm
  25. sbit right_motor1=P1^6;                   //右電機(jī)負(fù)極
  26. sbit right_motor0=P1^7;                   //右電機(jī)正極

  27. /***********舵機(jī)引腳定義***************/
  28. sbit servo=P0^7;          

  29. /***********光電對(duì)管引腳定義***************/
  30. sbit right_led3=P2^0;     //最右側(cè)光電對(duì)管
  31. sbit right_led2=P2^1;     //次右側(cè)光電對(duì)管
  32. sbit right_led1=P2^2;     //內(nèi)右側(cè)光電對(duì)管
  33. sbit middle_led=P2^3;     //中間光電對(duì)管
  34. sbit left_led1 =P2^4;     //內(nèi)左側(cè)光電對(duì)管
  35. sbit left_led2 =P2^5;     //次左側(cè)光電對(duì)管
  36. sbit left_led3 =P2^6;     //最左側(cè)光電對(duì)管

  37. sbit restart=P1^0;                  

  38. void motor_pwm(u8 left_compare,u8 right_compare);
  39. void servo_pwm(u8 sevor_compare);
  40. void T0_init();
  41. void led_scan();

  42. u16 flag_num=0;
  43. u8 servo_num=0;               
  44. u8 motor_num=0;                  //定時(shí)器計(jì)數(shù)
  45. u8 direction;
  46. u8 left_speed;
  47. u8 right_speed;

  48. /********************主函數(shù)***************************/
  49. void main()
  50. {
  51.   u8 n;

  52.   T0_init();
  53.   left_motor0=right_motor0=0;
  54.   left_motor1=right_motor1=1;        //電機(jī)正轉(zhuǎn)
  55.   restart=0;

  56.   while(1)
  57.   {
  58.     led_scan();
  59.          for(servo_num=0,motor_num=0,n=0;n<1;)
  60.          {
  61.           servo_pwm(direction);
  62.             motor_pwm(left_speed,right_speed);
  63.           if(servo_num>=200) n++;
  64.          }
  65.    
  66.   }
  67. }

  68. /*********************定時(shí)器0和1初始化函數(shù)*********************************/
  69. void T0_init()
  70. {
  71.   TMOD=0X11;                           //定時(shí)器0和1方式1:16位定時(shí)器/計(jì)數(shù)器
  72.   TH0=(65536-100)/256;           //設(shè)置計(jì)數(shù)器0的高8位
  73.   TL0=(65536-100)%256;           //設(shè)置計(jì)數(shù)器0的低8位
  74.   TH1=(65536-10000)/256;           //設(shè)置計(jì)數(shù)器1的高8位
  75.   TL1=(65536-10000)%256;           //設(shè)置計(jì)數(shù)器1的低8位
  76.   EA=1;                                           //全局中斷使能
  77.   ET0=1;                                   //定時(shí)器0中斷使能
  78.   ET1=1;                                   //定時(shí)器1中斷使能
  79.   TR0=1;                                   //定時(shí)器0使能
  80.   TR1=0;                                   //定時(shí)器1失能
  81. }
  82. /*********************定時(shí)器0中斷服務(wù)函數(shù)*******************************/
  83. void T0_time() interrupt 1  //每0.1ms加1
  84. {
  85.   TH0=(65536-100)/256;
  86.   TL0=(65536-100)%256;
  87.   servo_num++;
  88.   motor_num++;
  89. }

  90. /*********************定時(shí)器1中斷服務(wù)函數(shù)*******************************/
  91. void T1_time() interrupt 3  //每10ms加1
  92. {
  93.   TH1=(65536-10000)/256;
  94.   TL1=(65536-10000)%256;
  95.   flag_num++;
  96. }
  97. /*****************舵機(jī)PWM函數(shù)*************************/
  98. void servo_pwm(u8 compare1)
  99. {
  100.   if(servo_num<compare1)   servo=1;     //高電平持續(xù)時(shí)間t=compare1*0.1 ms
  101.   else if(servo_num<200)   servo=0;             
  102. }


  103. /*****************電機(jī)PWM函數(shù)*************************/
  104. void motor_pwm(u8 left_compare,u8 right_compare)
  105. {
  106.   if(motor_num<left_compare)    left_pwm=1;
  107.   else if(motor_num<100)        left_pwm=0;                //左電機(jī)占空比

  108.   if(motor_num<right_compare)   right_pwm=1;
  109.   else if(motor_num<100)        right_pwm=0;        //右電機(jī)占空比

  110.   if(motor_num>=100)   motor_num=0;             
  111. }


  112. /*************光電對(duì)管掃描函數(shù)***************************/
  113. void led_scan()
  114. {
  115.   u8 n=0;
  116.   static u8 white_num=0;
  117.   static u8 stop=0;

  118.   if(restart==1)  stop=0;
  119.   if(stop==0)
  120.   {
  121. /********************中間光電對(duì)管檢測(cè)到黑線則直行**********************/
  122.         if(middle_led==1)
  123.           { direction=Middle; left_speed=speed_Middle; right_speed=speed_Middle; n++;
  124.            left_motor0=right_motor0=0;
  125.        left_motor1=right_motor1=1;
  126.       }
  127.           
  128. /**************最右(左)邊光電對(duì)管檢測(cè)到黑線則大左轉(zhuǎn)*********************/            
  129.     else if(right_led3==1)
  130.           { direction=Turn_Right3; left_speed=speed_Middle; right_speed=speed_Right3; n++;
  131.             left_motor0=right_motor1=0;
  132.         left_motor1=right_motor0=1;
  133.            }  

  134.     else if(left_led3==1)  
  135.           { direction=Turn_Left3; left_speed=speed_Left3; right_speed=speed_Middle;   n++;
  136.           left_motor1=right_motor0=0;
  137.       left_motor0=right_motor1=1;
  138.           }  

  139. /**************次右(左)邊光電對(duì)管檢測(cè)到黑線則次左轉(zhuǎn)*********************/
  140.     else if(right_led2==1)
  141.           { direction=Turn_Right2; left_speed=speed_Middle; right_speed=speed_Right2; n++;
  142.           left_motor0=right_motor0=0;
  143.       left_motor1=right_motor1=1;
  144.      }
  145.             
  146.     else if(left_led2==1)  
  147.          { direction=Turn_Left2;  left_speed=speed_Left2; right_speed=speed_Middle;  n++;
  148.           left_motor0=right_motor0=0;
  149.       left_motor1=right_motor1=1;
  150.          }
  151.                    
  152. /**************內(nèi)右(左)邊光電對(duì)管檢測(cè)到黑線則小左轉(zhuǎn)*********************/
  153.     else if(right_led1==1)
  154.           { direction=Turn_Right1; left_speed=speed_Middle; right_speed=speed_Right1; n++;
  155.                   left_motor0=right_motor0=0;
  156.         left_motor1=right_motor1=1;
  157.            }

  158.     else if(left_led1==1)  
  159.           { direction=Turn_Left1;  left_speed=speed_Left1; right_speed=speed_Middle;  n++;
  160.             left_motor0=right_motor0=0;
  161.         left_motor1=right_motor1=1;
  162.           }
  163.           


  164.           
  165.   }

  166. ///**************************檢測(cè)是否應(yīng)該停車********************************/
  167. //  if(n>=4)                //如果3個(gè)以上的光電對(duì)管檢測(cè)到黑線
  168. //  {
  169. //        TR1=1;                                   //定時(shí)器1使能
  170. //            
  171. //  }
  172. //  if(flag_num>2&&flag_num<12)
  173. //  {
  174. //    if(n!=0)   white_num=0;
  175. //    if(n==0)   
  176. //    {         
  177. //      white_num++;         
  178. //          if(white_num>=3) { left_speed=left_speed=0;        stop=1;          }
  179. //    }   
  180. //  }
  181. //  else if(flag_num>=12)
  182. //  {
  183. //        TR1=0;                                   //定時(shí)器1失能   
  184. //        flag_num=0;
  185. //        white_num=0;
  186. //  }
  187. // /*************************************************/


  188. }
復(fù)制代碼

所有資料51hei提供下載:
尋跡小車代碼.zip (101.46 KB, 下載次數(shù): 48)


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

使用道具 舉報(bào)

5#
ID:1033602 發(fā)表于 2022-6-9 19:54 | 只看該作者
666正是我需要的
回復(fù)

使用道具 舉報(bào)

無(wú)效樓層,該帖已經(jīng)被刪除
板凳
ID:253767 發(fā)表于 2019-6-20 07:05 | 只看該作者
謝謝分享!!!
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2019-6-20 04:16 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說(shuō)明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表