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

QQ登錄

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

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

單片機(jī)循跡車(chē)循跡程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
自己寫(xiě)的循跡車(chē)循跡程序,多多指教

單片機(jī)源程序如下:
  1. #include <reg52.H>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. /*****************延時(shí)函數(shù) 1ms******************/
  5. void delay(unsigned int ms)
  6. {
  7.         unsigned char i;
  8.         while(ms--)
  9.                 {
  10.                         for(i=0;i<125;i++);
  11.                 }       
  12. }
  13. uchar dianji,dianjiH,dianjiL;
  14. uchar duoji,duojiH,duojiL,duojiH2,duojiL2,duojiH3,duojiL3;                  
  15. sbit  IN1=P2^6;          // 電機(jī)使能控制端
  16. sbit  ENA=P2^7;            
  17. sbit  IN2=P2^5;

  18. sbit  pwm=P2^0;      // 舵機(jī)pwm控制
  19. sbit  Ghg=P2^4;     // 干簧管                                                                         
  20.                            
  21. uint gg,gd,dg,dd,zgg,zgd,zdg,zdd;

  22. /*****中斷程序1******用于控制舵機(jī)偏轉(zhuǎn)角度******周期20ms*******/
  23. void timer1() interrupt 1 using 0       //中斷1  T0溢出中斷
  24. {
  25.         pwm=!pwm;          //輸出取反  
  26.         if(pwm==0)          //
  27.         {
  28.               pwm=0;
  29.               TH0=dg;
  30.               TL0=dd;
  31.         }
  32.         else
  33.         {
  34.               pwm=1;
  35.               TH0=gg;
  36.               TL0=gd;
  37.         }         
  38. }
  39. /*********中斷程序2****用于控制電機(jī)轉(zhuǎn)速*********/
  40. void timer2() interrupt 3 using 3       //中斷3  T1溢出中斷,使用工作組3
  41. {
  42.         IN2=!IN2;                        // 輸出取反
  43.         if(IN2==0)                        //
  44.         {
  45.               IN2=0;
  46.               TH1=zdg;
  47.               TL1=zdd;
  48.         }
  49.         else
  50.         {
  51.               IN2=1;
  52.               TH1=zgg;
  53.               TL1=zgd;
  54.         }         
  55. }

  56. /*&&&&&&&&& (一)此段子函數(shù)對(duì)舵機(jī)方向進(jìn)行操作&&&&&&&&&&&&&&*/

  57. /********右轉(zhuǎn)45度*******高低電位占空比為1.675:18.325ms**********/
  58. void yz45(void)
  59. {
  60.         gg=0xf9-duojiH3-(0x74<duojiL3);
  61.                 gd=0x74-duojiL3;
  62.                 dg=0xb8+duojiH3+(0x6a+duojiL3)/256;
  63.                 dd=0x6a+duojiL3;
  64.                 TR0=1;
  65. }                                                           

  66. /******右轉(zhuǎn)25度******高低電位占空比為1.6:18.4ms*********/
  67. void yz25(void)
  68. {
  69.         gg=0xf9-duojiH2-(0xbf<duojiL2);     // 63935    65536-63935=1601
  70.                 gd=0xbf-duojiL2;
  71.                 dg=0xb8+duojiH2+(0x1f+duojiL2)/256;//  47135   65536-47135=18401
  72.                 dd=0x1f+duojiL2;
  73.         TR0=1;
  74.                
  75. }

  76. /******右轉(zhuǎn)15度******高低電位占空比為1.55:18.45ms*********/
  77. void yz15(void)
  78. {
  79.         gg=0xf9-duojiH-(0xf1<duojiL);
  80.                 gd=0xf1-duojiL;
  81.                 dg=0xb7+duojiH+(0xed+duojiL)/256;
  82.                 dd=0xed+duojiL;
  83.         TR0=1;
  84.                
  85. }

  86. /*********復(fù)位*****高低電位占空比為1.5ms:18.5ms************/
  87. void fw(void)
  88. {
  89.         gg=0xfa;
  90.                 gd=0x23;
  91.                 dg=0xb7;
  92.                 dd=0xbb;
  93.         TR0=1;               
  94. }
  95. /******左轉(zhuǎn)15度***********高低電位占空比為1.45:18.55ms***********/
  96. void zz15(void)
  97. {
  98.         gg=0xfa+duojiH+(0x55+duojiL)/256;
  99.                 gd=0x55+duojiL;
  100.                 dg=0xb7-duojiH-(0x89<duojiL);
  101.                 dd=0x89-duojiL;
  102.                 TR0=1;
  103.                
  104. }

  105. /******左轉(zhuǎn)25度***********高低電位占空比為1.4:18.6ms***********/
  106. void zz25(void)
  107. {
  108.         gg=0xfa+duojiH2+(0x87+duojiL2)/256;
  109.                 gd=0x87+duojiL2;
  110.                 dg=0xb7-duojiH2-(0x57<duojiL2);
  111.                 dd=0x57-duojiL2;
  112.                 TR0=1;
  113.                
  114. }
  115. /********左轉(zhuǎn)45度*****高低電位占空比為1.325:18.675ms*************/
  116. void zz45(void)
  117. {
  118.         gg=0xfa+duojiH3+(0xd2+duojiL3)/256;
  119.                 gd=0xd2+duojiL3;
  120.                 dg=0xb7-duojiH3-(0x0c<duojiL3);
  121.                 dd=0x0c-duojiL3;
  122.                 TR0=1;               
  123. }  

  124. /*&&&&&& (二)此段子函數(shù)對(duì)驅(qū)動(dòng)電機(jī)進(jìn)行操作*/
  125. void run(void)               //前進(jìn)          高低電位占空比為4:16ms
  126. {      
  127.        
  128.     zgg=0xf0-dianjiH-(0x5f<dianjiL);
  129.         zgd=0x5f-dianjiL;  
  130.         zdg=0xc1+dianjiH+(0x7f+dianjiL)/256;
  131.         zdd=0x7f+dianjiL;
  132.    
  133. }
  134. void stop(void)               //停車(chē)          
  135. {      
  136.         ENA=1;
  137.         IN1=0;
  138.         IN2=0;       
  139. }

  140. /***********************主函數(shù)****************************/
  141. void main(void)                                                                          
  142. {   
  143.    
  144.     unsigned char i=0;                                                                   
  145.                                            
  146.         TMOD=0x11;                                                                                  //
  147.         ET0=1;                                                                                          //
  148.         ET1=1;                                                                                          //   中斷初始化
  149.         EA=1;                                                                                          //
  150.         TR0=0;                                                                                          //
  151.         TR1=0;

  152.     Ghg=1;
  153.     P0=0XFF;         // 單片機(jī)端口初始化
  154.         P1=0xff;

  155.         i=P1;                                                            //撥碼開(kāi)關(guān)
  156.         dianji=i/16;                                            //
  157.         dianjiH=(150*dianji)/256;                    // 初始化電機(jī)速度 改電機(jī)輸出電壓最小值                                                               
  158.         dianjiL=(20*dianji)%256;                    //                                 
  159.        
  160.         duoji=i%16;                                                  // 舵機(jī)角度
  161.         duojiH=(2*duoji)/256;                          // 初始值10                                                               
  162.         duojiL=(2*duoji)%256;                          // 初始值10                                                               
  163.         duojiH2=(6*duoji)/256;                          // 初始值 20                                                  
  164.         duojiL2=(6*duoji)%256;                          // 初始值 20                                                       
  165.         duojiH3=(10*duoji)/256;                          // 初始值         33                                                  
  166.         duojiL3=(10*duoji)%256;                          // 初始值  33                                               
  167.         fw();
  168. //  ENA=1;         // L298 使能端高有效 控制端狀態(tài)不同   狀態(tài)相同時(shí) 快速停車(chē)
  169.         IN1=0;
  170. //        IN2=1;                       
  171.         run();
  172.         TR1=1;                                                                                                                                                                                                               

  173. /*************************舵機(jī)測(cè)試程序*************************************
  174. while(1)               
  175. {
  176. fw();
  177. delay(2000);
  178. yz45();
  179. delay(2000);
  180. yz25();
  181. delay(2000);
  182. yz25();
  183. delay(2000);
  184. delay(2000);
  185. zz15();
  186. delay(2000);
  187. zz25();
  188. delay(2000);
  189. zz45();  
  190. delay(2000);
  191. run();
  192. }   
  193. } */
  194. /******************循跡部分**傳感器反*****最左P0.7最右P0.0***************/
  195.         while(1)               
  196.         {
  197.             if(Ghg == 0)
  198.             {
  199.                 fw();
  200.                         stop();
  201.              }   
  202. /************************循跡處理****************************/                                       
  203. /*P0_0==0  黑道          ..........P0_6==0黑道   從低往高 P0^7到P0^0*/       
  204.                 if(P0==0xF7)           //           1111 0111
  205.                         {
  206.                                 fw();
  207.                         }
  208.                 else if(P0==0xEF)        //                1110 1111
  209.                         {
  210.                                 zz15();
  211.                         }
  212.                 else if(P0==0XDF)         
  213.                         {
  214.                                 zz25();
  215.                         }
  216.                 else if(P0==0XBF)         
  217.                         {
  218.                                 zz45();
  219.                         }
  220.                 else if(P0==0XFB)         
  221.                         {
  222.                                 yz15();
  223.                         }
  224.                 else if(P0==0XFD)          
  225.                         {
  226.                                 yz25();
  227.                         }
  228.                 else if(P0==0XFE)                   
  229.                         {
  230.                                 yz45();
  231.                         }
  232.                 else;
  233.                         delay(10);
  234.                         run();       
  235.         }
  236. }
復(fù)制代碼

所有資料51hei提供下載:
新建文件夾.rar (38.13 KB, 下載次數(shù): 8)


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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

板凳
ID:319800 發(fā)表于 2019-5-14 18:50 | 只看該作者

Screenshot_2019-05-14-18-45-29-90.png (339.88 KB, 下載次數(shù): 33)

電路圖

電路圖

Screenshot_2019-05-14-18-45-42-48.png (516.16 KB, 下載次數(shù): 29)

組成

組成

Screenshot_2019-05-14-18-46-14-62.png (2.22 MB, 下載次數(shù): 32)

焊接

焊接

Screenshot_2019-05-14-18-46-31-88.png (477.12 KB, 下載次數(shù): 31)

降電路壓

降電路壓

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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