標題: 智能小車黑線循跡實驗程序 [打印本頁]

作者: AAAAAA666666    時間: 2017-8-24 08:21
標題: 智能小車黑線循跡實驗程序
關于小車沿黑線循跡的程序!!!!!

單片機源程序如下:
  1. #include <reg52.h>                                    //包含52系統(tǒng)頭文件                         
  2. #include "zncar.h"                                     //包含能小車頭文件                  

  3. unsigned char pwmval_left   = 0;              //變量定義                  
  4. unsigned char pwmval_right  = 0;

  5. unsigned char pwmval_left_init  = 5;          //左電機占空比調節(jié) ,調節(jié)值在0到20之間             此值越大,電機的轉速越快
  6. unsigned char pwmval_right_init = 5;          //右電機占空比調節(jié) ,調節(jié)值在0到20之間          

  7. bit right_pwm = 1;                                    //右電機PWM開關,為1時打開   
  8. bit left_pwm  = 1;                                            //左電機PWM開關,為1時打開

  9. void delay(int In,int Out)                    //定義延時函數(shù)            
  10. {
  11. int i,j;
  12. for( i = 0;i < In;i++ )
  13. {
  14.   for( j = 0;j < Out;j++ )
  15.   {;}
  16. }
  17. }
  18. /**************************************************前進  左轉   右轉******************************************************************************/
  19. void forward(void)                                   //智能小車前進
  20. {
  21. IN1 = 0;
  22. IN2 = 1;                          //左車輪的正轉                 

  23. IN3 = 0;
  24. IN4 = 1;                          //右車輪的正轉                  
  25. }

  26. void left_turn(void)                       //智能小車左轉   
  27. {
  28. IN1 = 0;
  29. IN2 = 0;                          //左車輪停轉  

  30. IN3 = 0;
  31. IN4 = 1;                          //右車輪正轉            
  32. }                                                                    

  33. void right_turn(void)                   //智能小車右轉
  34. {  
  35. IN1 = 0;
  36. IN2 = 1;                          //左車論的正轉          

  37. IN3 = 0;
  38. IN4 = 0;                          //右車輪停轉  
  39. }

  40. /****************************左電機控制函數(shù)********************************************/                                                         
  41. void left_moto(void)
  42. {  
  43. if(left_pwm)
  44. {
  45.   if(pwmval_left <= pwmval_left_init)
  46.   {
  47.    EN1 = 1;
  48.   }
  49.   else
  50.   {
  51.    EN1 = 0;
  52.   }
  53.   if(pwmval_left >= 20)
  54.   {
  55.    pwmval_left = 0;
  56.   }
  57. }
  58. else   
  59. {
  60.   EN1 = 0;                     
  61. }
  62. }

  63. /***************************右電機控制函數(shù)***************************************/
  64. void right_moto(void)
  65. {
  66. if(right_pwm)
  67. {
  68.   if(pwmval_right <= pwmval_right_init)                  
  69.   {
  70.    EN2 = 1;                                                           
  71.   }
  72.   else if(pwmval_right > pwmval_right_init)
  73.   {
  74.    EN2 = 0;
  75.   }
  76.   if(pwmval_right >= 20)
  77.   {
  78.    pwmval_right = 0;
  79.   }
  80. }
  81. else   
  82. {
  83.   EN2 = 0;                                                      
  84. }
  85. }
  86.            
  87. /**************單片機定時器0的中斷處理函數(shù)***************/
  88. void timer0()interrupt 1 using 2
  89. {
  90. TH0 = 0xfc;                                      //1Ms定時          
  91. TL0 = 0x66;

  92. pwmval_left  = pwmval_left  + 1;
  93. pwmval_right = pwmval_right + 1;

  94. left_moto();
  95. right_moto();
  96. }       



  97. void keyscan(void)                         //按鍵掃描函數(shù)            
  98. {
  99. loop:if(SWITCH_S7 == 0)                                  //判斷是否有按下信號          
  100.           {
  101.            delay(5,10);                                    //延時10ms          
  102.            if(SWITCH_S7 == 0)                                 //再次判斷是否按下            
  103.            {
  104.             BEEP_IO = 0;                       //蜂鳴器響                 
  105.                 while(SWITCH_S7 == 0);                   //判斷是否松開按鍵                  
  106.             BEEP_IO = 1;                       //蜂鳴器停止  
  107.            }
  108.            else
  109.            {
  110.                 goto loop;                        //跳轉到loop重新檢測          
  111.            }
  112.           }
  113.           else
  114.           {
  115.            goto loop;                        //跳轉到loop重新檢測            
  116.           }
  117. }
  118. /******將定時器0設置成每隔1MS申請一次中斷*********/
  119. void timer_init()
  120. {
  121. TMOD=0x01;
  122. TH0= 0xfc;                                  //1ms定時   
  123. TL0= 0x66;
  124. TR0= 1;
  125. ET0= 1;
  126. EA = 1;                                                     //開總中斷       
  127. }

  128. //主函數(shù)   
  129. void main(void)
  130. {       
  131. P1 = 0x00;                                     //關電機       
  132. keyscan();                                            //按鍵啟動檢測            
  133. delay(100,1000);                               //1s后啟動          

  134. timer_init();        //調用定時器0的初始化函數(shù)

  135. while(1)                                            //無限循環(huán)            
  136. {  
  137.   //有信號為0  沒有信號為1          
  138. ……………………

  139. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
7、智能小車黑線循跡實驗.rar (31.03 KB, 下載次數(shù): 151)



作者: Rude    時間: 2017-11-21 13:22
這個有電路圖嗎???大佬

作者: 大椿面    時間: 2018-1-27 15:15
謝謝啊
作者: 2393294748    時間: 2018-4-24 15:33
看了有很大的幫助,謝謝
作者: 6767jj    時間: 2018-11-8 15:44
這個是什么意思啊

自動循跡小車程序.doc

24 KB, 下載次數(shù): 14, 下載積分: 黑幣 -5


作者: a1622460239    時間: 2018-11-23 15:16
解決了我的疑惑
作者: asongl    時間: 2018-11-26 16:16
對我很有幫助‘’
作者: 郭文玲呀    時間: 2019-4-5 13:07
用的什么傳感器啊
作者: 我是你爸爸丶    時間: 2019-4-5 14:08
郭文玲呀 發(fā)表于 2019-4-5 13:07
用的什么傳感器啊

紅外傳感器
作者: whynot6    時間: 2019-7-1 16:51
用什么軟件編程呀
作者: whynot6    時間: 2019-7-2 14:16
51小車能用這個程序嗎
作者: hanjiangxue123    時間: 2019-7-23 12:50
用啥軟件編程的
作者: 小毛孩子    時間: 2019-7-26 14:12
看了有很大幫助,謝謝
作者: 1802020261    時間: 2019-8-2 16:22
有幫助
作者: 余澤文    時間: 2019-9-27 23:36
貌似不對啊,我咋編譯不了?
作者: 3139991932    時間: 2019-10-15 20:33
謝謝啊
作者: YOYOYIIII    時間: 2019-10-25 13:48
hanjiangxue123 發(fā)表于 2019-7-23 12:50
用啥軟件編程的

ARM的KEIL

作者: YOYOYIIII    時間: 2019-10-25 13:49
有問:樓主的電機是用的無刷電機?沒有使用電機驅動模塊?
作者: jizhifei    時間: 2019-12-15 11:40
借用一下 大佬
作者: 歡歡asd    時間: 2020-6-25 23:02
感謝分享!
作者: helloworld.    時間: 2020-7-6 16:12
你好,有個問題請教一下,小車是怎么判斷黑色的 ?





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1