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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單個舵機(jī)精確控制程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:721454 發(fā)表于 2020-4-4 12:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
舵機(jī)控制

  1. #include <12c5a.H>                  //STC12C5A系列單片機(jī)
  2. unsigned char count;      //0.5毫秒計數(shù)
  3.          //PWM控制
  4. sbit jia =P1^6;           //測試加
  5. sbit jan =P1^5;           //測試減
  6. unsigned char jd;         //角度控制
  7. sbit pwm8=P0^1;
  8. sbit pwm7=P1^1;
  9. sbit pwm6=P2^1;
  10. sbit pwm5=P2^0;
  11. sbit youyan=P3^5;       
  12. sbit zuoyan=P3^7;      
  13. sbit zuojiao=P1^7;
  14. sbit youjiao=P1^2;
  15. sbit zuojiao2=P1^6;
  16. sbit youjiao2=P1^0;
  17. sbit pwm4=P0^4;
  18. sbit pwm3=P1^4;
  19. sbit pwm2=P3^4;       
  20. sbit pwm1=P2^4;
  21. uint16 pwm[9]={1500,1500,1500,1500,1500,1500,1500,1500,1500};                //定時器取定時值從這里取
  22. /**************************************************************************************************       
  23. 函數(shù)名:delay(uint16 time)
  24. 功能:        軟件延時函數(shù)
  25. 參數(shù):        time 定時值,其大小與延時長短成正比
  26. 備注:
  27. /***************************************************************************************************/
  28. void delay(uint16 time)
  29. {
  30.         uint16 i;
  31.         uint16 j;
  32.         for(i=0;i<1000;i++)
  33.         for(j=0;j<time;j++);
  34. }
  35. /**************************************************************************************************       
  36. 函數(shù)名:timer_init()
  37. 功能:        定時器初始化函數(shù)
  38. 備注: 1T
  39. /***************************************************************************************************/
  40. void Timer_init()
  41. {
  42.         EA=1;                                           //開總中斷
  43.         AUXR|=0xC0;                                //T0,T1工作在1T
  44.     TMOD|= 0x11;                        //T0工作在方式1,16位
  45.         ET0 = 1;                                //開定時器0中斷
  46. }
  47. /**************************************************************************************************       
  48. 函數(shù)名:timer0(uint32 us)
  49. 功能:        定時器0定時函數(shù)
  50. 參數(shù):        us,毫秒。  精確定時。
  51. 備注:         晶振12M,工作模式1T
  52. /***************************************************************************************************/
  53. void Timer0(uint32 us)                        
  54. {       
  55.         uint32 valu;
  56.         valu=us*12;                                        //工作在1T,最大定時時間2700us
  57.         valu=valu;
  58.         valu=0xffff-valu;                        //          

  59.     TH0=valu>>8;          
  60.     TL0=(valu<<8)>>8;
  61.     TR0  = 1;                                        //T0開始工作
  62. }
  63. /**************************************************************************************************       
  64. 函數(shù)名:T0zd(void) interrupt 1
  65. 功能:        定時器0中斷函數(shù)
  66. 備注:         控制8個舵機(jī)
  67. /***************************************************************************************************/
  68. void T0zd(void) interrupt 1   
  69. {
  70.                 static uint8 i=1;
  71.                 switch(i)                                  //   
  72.                 {
  73.                 case 1:
  74.                         {
  75.                                 pwm1=1;
  76.                                 Timer0(pwm[1]);        //定時
  77.                         }  break;
  78.                 case 2:
  79.                         {
  80.                                  pwm1=0;                        //pwm1變低
  81.                                 Timer0(2500-pwm[1]);//        定時
  82.                         }  break;
  83.                 case 3:
  84.                         {
  85.                                 pwm2=1; //pwm2變高
  86.                                 Timer0(pwm[2]);//        定時時常為pwm[2]
  87.                         }  break;
  88.                 case 4:
  89.                         {
  90.                                 pwm2=0; //pwm2變低
  91.                                 Timer0(2500-pwm[2]);//        定時時常為pwm[2]
  92.                         }         break;
  93.                 case 5:
  94.                         {
  95.                                 pwm3=1; //pwm3變高
  96.                                 Timer0(pwm[3]);//        定時時常為pwm[3]
  97.                         }  break;
  98.                 case 6:
  99.                         {
  100.                                 pwm3=0; //pwm3變低
  101.                                 Timer0(2500-pwm[3]);//        定時
  102.                         }        break;          
  103.                 case 7:
  104.                         {
  105.                                 pwm4=1; //pwm4變高
  106.                                 Timer0(pwm[4]);//        定時
  107.                         }        break;          
  108.                 case 8:
  109.                         {
  110.                                 pwm4=0; //pwm4變低
  111.                                 Timer0(2500-pwm[4]);//        定時
  112.                         }        break;          
  113.                 case 9:
  114.                         {
  115.                                 pwm5=1; //pwm5變高
  116.                                 Timer0(pwm[5]);//        定時
  117.                         }        break;          
  118.                 case 10:
  119.                         {
  120.                                 pwm5=0; //pwm5變低
  121.                                 Timer0(2500-pwm[5]);//        定時
  122.                         }        break;          
  123.                 case 11:
  124.                         {
  125.                                 pwm6=1; //pwm6變高
  126.                                 Timer0(pwm[6]);//        定時
  127.                         }        break;          
  128.                 case 12:
  129.                         {
  130.                                 pwm6=0; //pwm6變低
  131.                                 Timer0(2500-pwm[6]);//        定時
  132.                         }        break;       

  133.                 case 13:
  134.                         {
  135.                                 pwm7=1; //pwm7變高
  136.                                 Timer0(pwm[7]);//        定時
  137.                         }        break;          
  138.                 case 14:
  139.                         {
  140.                                 pwm7=0; //pwm7變低
  141.                                 Timer0(2500-pwm[7]);//        定時
  142.                         }        break;       

  143.                 case 15:
  144.                         {
  145.                                 pwm8=1; //pwm8變高
  146.                                 Timer0(pwm[8]);//        定時
  147.                         }        break;          
  148.                 case 16:
  149.                         {
  150.                                 pwm8=0; //pwm8變低
  151.                                 Timer0(2500-pwm[8]);//        定時

  152.                                 i=0;
  153.                         }        break;       

  154.                 default:break;
  155.                        
  156.             }
  157.                   
  158.                         i++;
  159. }

  160. void keyscan()              //測試按鍵掃描
  161. {
  162.    if(jia==0)              
  163.   {
  164.               
  165.     if(jia==0)              
  166.      {
  167.       pwm[1]=pwm[1]+3;  

  168. if(pwm[1]>=250)
  169.        pwm[1]=250;        
  170. delay(40);         
  171.                   
  172.             
  173.      }
  174.   }
  175.   if(jan==0)               
  176.   {

  177.     if(jan==0)
  178.      {
  179.        pwm[1]=pwm[1]-3;               
  180.                            
  181.    if(pwm[1]<=20)
  182.        pwm[1]=20;  
  183.          delay(40);       
  184.      }
  185.   }
  186. }

  187. void main()
  188. {
  189.                 P0M1=0;                           //設(shè)置P口為強(qiáng)推免輸出模式,下同
  190.         P0M0=0XFF;

  191.         P2M1=0;
  192.         P2M0=0XFF;

  193.        

  194.         P3M1=0;
  195.         P3M0=0XFF;

  196.         P4M1=0;
  197.         P4M0=0XFF;

  198.         P5M1=0;
  199.         P5M0=0XFF;
  200.         P4SW|=0X70;
  201.        
  202.        

  203. Timer_init();
  204. Timer0(32);
  205.         delay(40);
  206. pwm[1]=110;
  207. while(1)
  208. {
  209.   keyscan();               //持續(xù)監(jiān)測按鍵狀態(tài)
  210.   
  211. }
  212. }
復(fù)制代碼

舵機(jī)精確控制.7z

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

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久吹潮日韩动画 | 国产精品视频中文字幕 | 久久国产精品一区 | 久久国产精品一区二区三区 | 日本久久网 | 日韩欧美在线观看视频 | 精品www| 国产精品视频在线观看 | 中文字幕亚洲欧美日韩在线不卡 | 欧美精品在线视频 | 日韩欧美在线视频 | 国产激情免费视频 | va精品 | 国产精品久久久久久久久久免费看 | www.青娱乐| 91麻豆精品国产91久久久更新资源速度超快 | 日本色综合| 成人在线中文字幕 | 日本免费一区二区三区视频 | 播放一级毛片 | 国产精品一区二区在线免费观看 | 中文字幕国产精品 | 国产馆| 婷婷福利视频导航 | 欧美美女爱爱视频 | 国产精品久久久久久一区二区三区 | 美女一区 | 日本在线视 | 久久性色| 中文字幕在线观看第一页 | 一区二区三区欧美在线 | 欧美乱码精品一区二区三区 | 成人超碰 | 日韩成人在线观看 | 中文字幕99| 国产精品毛片一区二区三区 | 国产伦一区二区三区四区 | 亚洲欧美日韩精品久久亚洲区 | 一级毛片中国 | 农夫在线精品视频免费观看 | 99色播 |