久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4342|回復: 3
打印 上一主題 下一主題
收起左側

單片機程序,五路循跡+差速轉向

[復制鏈接]
跳轉到指定樓層
樓主
ID:353347 發表于 2018-6-21 01:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
五路循跡+差速轉向

單片機源程序如下:

  1. #include <reg52.h>
  2. #include "intrins.h"
  3. #include "math.h"
  4. #include "car.h"
  5. /***********************延時函數**************************/
  6. void delay(unsigned int i)
  7. {
  8.         while(i--);
  9. }
  10. /***********************直走函數**************************/
  11. void run(unsigned int x)
  12. {
  13.           push_val_left=11+x;         //速度調節變量 0-30   0<=x<=25
  14.         push_val_right=9+x; //占空比  5+x/30

  15. }
  16. /***********************左拐1函數**************************/
  17. void leftrun1()       
  18. {         
  19.             push_val_left=15;                 
  20.          push_val_right=35;                //最大30,下同

  21. }
  22. /***********************左拐2函數**************************/
  23. void leftrun2()
  24. {         
  25.            push_val_left=20;                 
  26.                 push_val_right=45;               
  27. }
  28. ///***********************左拐3函數**************************/
  29. // void leftrun3()
  30. //{         
  31. //   push_val_left=6;                 
  32. //         push_val_right=17;               
  33. //}

  34. /***********************右拐1函數**************************/
  35. void  rightrun1()
  36. {
  37.          push_val_left=35;                  
  38.          push_val_right=15;                  
  39.                 
  40. }
  41. /***********************右拐2函數**************************/
  42. void  rightrun2()
  43. {                                                          
  44.          push_val_left=45;                  
  45.          push_val_right=20;                 
  46. }
  47. ///***********************右拐3函數**************************/
  48. //void  rightrun3()
  49. //{                                                          
  50. //         push_val_left=17;                  
  51. //         push_val_right=6;                 
  52. //}
  53. /***********************走函數**************************/
  54. void  go()                       
  55. {
  56.      left_right_go;
  57. }
  58. /***********************停函數**************************/
  59. void stop()
  60. {
  61.      left_right_stop;
  62. }
  63. /***************PWM調制電機轉速函數********************/
  64. //                左電機調速                                       
  65. void pwm_out_left_moto()
  66. {  
  67.      if(Left_PWM_ON)
  68.      {
  69.           if(pwm_val_left<=push_val_left)       
  70.               {
  71.                    EN1=1;                           
  72.               }
  73.               else
  74.               {
  75.                    EN1=0;
  76.           }
  77.           if(pwm_val_left>=100)           //30為占空比的分母   可以自己修改。(此處牽一發而動全身)
  78.               pwm_val_left=0;
  79.      }
  80.         else   
  81.         {
  82.                   EN1=0;   //若未開啟PWM則EN1=0 左電機 停止
  83.         }
  84. }                       
  85. /***************PWM調制電機轉速函數********************/
  86. //                右電機調速                                       
  87.                
  88. void pwm_out_right_moto()
  89. {
  90.     if(Right_PWM_ON)
  91.     {
  92.         if(pwm_val_right<=push_val_right)        // pwm_val_right從零開始加push_val_right為占空比分子
  93.             {                                                                        //分子越大,高電平時間越長
  94.                 EN2=1;                                                        
  95.         }
  96.             else
  97.             {
  98.                 EN2=0;
  99.         }
  100.             if(pwm_val_right>=100)
  101.             pwm_val_right=0;                   //加到30清零
  102.     }
  103.     else   
  104.     {
  105.         EN2=0;          //若未開啟PWM則EN2=0 右電機 停止
  106.     }
  107. }
  108. /***************定時器、電機初始化********************/
  109. void tminite()
  110. {
  111.                 IN1=1;IN2=0;   
  112.     IN3=1;IN4=0;  
  113.                 TMOD=0x02;
  114.     TH0=0x9c;  //1ms定時
  115.     TL0=0x9c;
  116.     TR0=1;
  117.     ET0=1;
  118.                 EA=1;            //開總中斷       
  119. }
  120. /***************TIMER0中斷服務子函數產生PWM信號********************/
  121. void timer0() interrupt 1
  122. {
  123.         pwm_val_left++;
  124.         pwm_val_right++;
  125.         pwm_out_left_moto();
  126.         pwm_out_right_moto();
  127. }
  128. void Xunji()
  129. {
  130.         switch(P1|0xe0)           //111 00000
  131.         {
  132.                 case 0xe0:                                                                                //111 00000
  133.                 case 0xe4:run(30);break;                        //111 00100
  134.                 case 0xe2:leftrun1();break;                //111 00010
  135.                 case 0xe1:leftrun2();break;                //111 00001
  136.                 case 0xe8:rightrun1();break;        //111 01000
  137.                 case 0xf0:rightrun2();break;        //111 10000
  138.                 case 0xff:stop();break;                                //111 11111
  139.                 default:go();break;
  140. //                delay(500);
  141.         }
  142. }
  143. void R_G_Kaiguan()
  144. {
  145.         if(kg)
  146.                 P0=table[temp1]; //如果開關未按下,顯示紅色的值
  147.         else
  148.                 P0=table[temp2];        //如果開關按下,顯示綠色的值

  149. }


  150. /***************主函數********************/
  151. void main(void)
  152. {
  153.         unsigned long i=0;
  154.         unsigned long j=0;
  155.         delay(6000);//初始化延時
  156.         temp1=0;//計數值初始化
  157.         temp2=0;
  158.         while(!guang);
  159.         tminite();//定時器、電機初始化
  160.         while(1)
  161.         {
  162.                 Xunji();
  163.                 R_G_Kaiguan();
  164.                 i++;
  165.                 j++;
  166.                 if(i>8000)
  167.                 {
  168.                         temp1++;
  169.                         i=0;
  170.                 }
  171.                 if(j>9000)
  172.                 {
  173.                         temp2++;
  174.                         j=0;
  175.                 }
  176.                 if(temp1>=7)
  177.                         temp1=7;       
  178.                 if(temp2>=5)
  179.                         temp2=5;       
  180.          }
  181. }
  182.                        

復制代碼

所有資料51hei提供下載:
car.rar (135.57 KB, 下載次數: 24)


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

使用道具 舉報

沙發
ID:385480 發表于 2018-8-17 13:09 | 只看該作者
大家不要下載了,里面就一個主函數,其他函數都沒有,沒有任何參考價值
回復

使用道具 舉報

板凳
ID:498374 發表于 2019-3-26 00:21 | 只看該作者
故事不公開 發表于 2018-8-17 13:09
大家不要下載了,里面就一個主函數,其他函數都沒有,沒有任何參考價值

就是說這里沒有其他的.h文件,就算下載了也不能用,是嗎?
回復

使用道具 舉報

地板
ID:828562 發表于 2020-10-12 00:47 | 只看該作者
故事不公開 發表于 2018-8-17 13:09
大家不要下載了,里面就一個主函數,其他函數都沒有,沒有任何參考價值

什么主函數,代碼中的car.h的函數是什么
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品日韩欧美一区二区 | 日韩精品在线观看一区二区三区 | 丝袜 亚洲 欧美 日韩 综合 | 毛片高清 | 亚洲精品久久久久久首妖 | 夜夜爽99久久国产综合精品女不卡 | 狠狠色香婷婷久久亚洲精品 | 国产97人人超碰caoprom | 国产一区二区精品在线 | 欧美黑人体内she精在线观看 | 亚洲精品国产第一综合99久久 | 97超在线视频| 精品久久香蕉国产线看观看亚洲 | 午夜视频一区 | 日韩精品一区二区三区在线观看 | 亚洲综合在线播放 | 国产欧美一级二级三级在线视频 | 久久久久久久久久久久亚洲 | 中文字幕亚洲视频 | 九九综合 | 国产三级一区二区三区 | 中文字幕在线一区二区三区 | 国产免费一区二区三区 | 国产成人在线一区二区 | 91精品国产91综合久久蜜臀 | 亚洲专区在线 | 国产日韩欧美在线观看 | gav成人免费播放视频 | 97精品久久 | 韩日精品视频 | 亚洲免费在线观看av | 中文字幕在线观看成人 | 福利视频网 | 国产精品爱久久久久久久 | 欧美一级免费看 | 国产色99精品9i | 日韩欧美一区二区三区 | 91精品久久久久久久久99蜜臂 | 国产中文字幕网 | 黄久久久 | 精品久久国产老人久久综合 |