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

QQ登錄

只需一步,快速開始

帖子
查看: 18620|回復(fù): 20
打印 上一主題 下一主題
收起左側(cè)

智能小車黑線循跡實(shí)驗(yàn)程序

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:229064 發(fā)表于 2017-8-24 08:21 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)于小車沿黑線循跡的程序!!!!!

單片機(jī)源程序如下:
  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;          //左電機(jī)占空比調(diào)節(jié) ,調(diào)節(jié)值在0到20之間             此值越大,電機(jī)的轉(zhuǎn)速越快
  6. unsigned char pwmval_right_init = 5;          //右電機(jī)占空比調(diào)節(jié) ,調(diào)節(jié)值在0到20之間          

  7. bit right_pwm = 1;                                    //右電機(jī)PWM開關(guān),為1時(shí)打開   
  8. bit left_pwm  = 1;                                            //左電機(jī)PWM開關(guān),為1時(shí)打開

  9. void delay(int In,int Out)                    //定義延時(shí)函數(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. /**************************************************前進(jìn)  左轉(zhuǎn)   右轉(zhuǎn)******************************************************************************/
  19. void forward(void)                                   //智能小車前進(jìn)
  20. {
  21. IN1 = 0;
  22. IN2 = 1;                          //左車輪的正轉(zhuǎn)                 

  23. IN3 = 0;
  24. IN4 = 1;                          //右車輪的正轉(zhuǎn)                  
  25. }

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

  30. IN3 = 0;
  31. IN4 = 1;                          //右車輪正轉(zhuǎn)            
  32. }                                                                    

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

  37. IN3 = 0;
  38. IN4 = 0;                          //右車輪停轉(zhuǎn)  
  39. }

  40. /****************************左電機(jī)控制函數(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. /***************************右電機(jī)控制函數(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. /**************單片機(jī)定時(shí)器0的中斷處理函數(shù)***************/
  88. void timer0()interrupt 1 using 2
  89. {
  90. TH0 = 0xfc;                                      //1Ms定時(shí)          
  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)                                  //判斷是否有按下信號(hào)          
  100.           {
  101.            delay(5,10);                                    //延時(shí)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;                        //跳轉(zhuǎn)到loop重新檢測(cè)          
  111.            }
  112.           }
  113.           else
  114.           {
  115.            goto loop;                        //跳轉(zhuǎn)到loop重新檢測(cè)            
  116.           }
  117. }
  118. /******將定時(shí)器0設(shè)置成每隔1MS申請(qǐng)一次中斷*********/
  119. void timer_init()
  120. {
  121. TMOD=0x01;
  122. TH0= 0xfc;                                  //1ms定時(shí)   
  123. TL0= 0x66;
  124. TR0= 1;
  125. ET0= 1;
  126. EA = 1;                                                     //開總中斷       
  127. }

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

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

  135. while(1)                                            //無(wú)限循環(huán)            
  136. {  
  137.   //有信號(hào)為0  沒(méi)有信號(hào)為1          
  138. ……………………

  139. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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


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

使用道具 舉報(bào)

沙發(fā)
ID:246031 發(fā)表于 2017-11-21 13:22 | 只看該作者
這個(gè)有電路圖嗎???大佬
回復(fù)

使用道具 舉報(bào)

板凳
ID:254856 發(fā)表于 2018-1-27 15:15 | 只看該作者
謝謝啊
回復(fù)

使用道具 舉報(bào)

地板
ID:299036 發(fā)表于 2018-4-24 15:33 來(lái)自觸屏版 | 只看該作者
看了有很大的幫助,謝謝
回復(fù)

使用道具 舉報(bào)

5#
ID:423048 發(fā)表于 2018-11-8 15:44 | 只看該作者
這個(gè)是什么意思啊

自動(dòng)循跡小車程序.doc

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

回復(fù)

使用道具 舉報(bào)

6#
ID:400569 發(fā)表于 2018-11-23 15:16 來(lái)自觸屏版 | 只看該作者
解決了我的疑惑
回復(fù)

使用道具 舉報(bào)

7#
ID:401857 發(fā)表于 2018-11-26 16:16 | 只看該作者
對(duì)我很有幫助‘’
回復(fù)

使用道具 舉報(bào)

8#
ID:473311 發(fā)表于 2019-4-5 13:07 | 只看該作者
用的什么傳感器啊
回復(fù)

使用道具 舉報(bào)

9#
ID:467843 發(fā)表于 2019-4-5 14:08 | 只看該作者

紅外傳感器
回復(fù)

使用道具 舉報(bào)

10#
ID:575799 發(fā)表于 2019-7-1 16:51 | 只看該作者
用什么軟件編程呀
回復(fù)

使用道具 舉報(bào)

11#
ID:575799 發(fā)表于 2019-7-2 14:16 | 只看該作者
51小車能用這個(gè)程序嗎
回復(fù)

使用道具 舉報(bào)

12#
ID:588628 發(fā)表于 2019-7-23 12:50 | 只看該作者
用啥軟件編程的
回復(fù)

使用道具 舉報(bào)

13#
ID:587564 發(fā)表于 2019-7-26 14:12 | 只看該作者
看了有很大幫助,謝謝
回復(fù)

使用道具 舉報(bào)

14#
ID:590918 發(fā)表于 2019-8-2 16:22 | 只看該作者
有幫助
回復(fù)

使用道具 舉報(bào)

15#
ID:617434 發(fā)表于 2019-9-27 23:36 | 只看該作者
貌似不對(duì)啊,我咋編譯不了?
回復(fù)

使用道具 舉報(bào)

16#
ID:624645 發(fā)表于 2019-10-15 20:33 | 只看該作者
謝謝啊
回復(fù)

使用道具 舉報(bào)

17#
ID:629701 發(fā)表于 2019-10-25 13:48 | 只看該作者

ARM的KEIL
回復(fù)

使用道具 舉報(bào)

18#
ID:629701 發(fā)表于 2019-10-25 13:49 | 只看該作者
有問(wèn):樓主的電機(jī)是用的無(wú)刷電機(jī)?沒(méi)有使用電機(jī)驅(qū)動(dòng)模塊?
回復(fù)

使用道具 舉報(bào)

19#
ID:664199 發(fā)表于 2019-12-15 11:40 | 只看該作者
借用一下 大佬
回復(fù)

使用道具 舉報(bào)

20#
ID:789860 發(fā)表于 2020-6-25 23:02 | 只看該作者
感謝分享��!
回復(fù)

使用道具 舉報(bào)

21#
ID:259955 發(fā)表于 2020-7-6 16:12 | 只看該作者
你好,有個(gè)問(wèn)題請(qǐng)教一下,小車是怎么判斷黑色的 ?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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