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

標題: 51單片機按鍵控制舵機0-180度自由調(diào)節(jié) [打印本頁]

作者: 騰飛的龍    時間: 2016-10-29 11:44
標題: 51單片機按鍵控制舵機0-180度自由調(diào)節(jié)
按鍵控制舵機0-180度自由調(diào)節(jié)

按鍵控制舵機0-180度.zip

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


作者: wanghaitao    時間: 2016-10-30 13:37
不錯的方法
  1. /************************************************************
  2.         芯    片:STC12C5A60S2
  3.         晶    振:11.0592MHz
  4.         功能描述:兩個按鍵控制 舵機從0-180°變化?
  5.         在多功能試驗板正確實現(xiàn)

  6.         遇到問題: 如果使用平常方法給TH0 TL0 賦值 ,那樣定時誤差比較大。。

  7.         平常方法: TH0=(65536-500)/256;
  8.            TL0=(65536-500)%256;
  9.         而如果使用這種方法:
  10.            TH0=-num/256; //高電平時間
  11.            TL0=-num%256;
  12.                 誤差就比較小。
  13. *************************************************************/
  14. #include<stc12c5a60s2.h>
  15. #include<math.h>

  16. #define uchar unsigned char
  17. #define uint unsigned int

  18. #define Cycle   4000  //定義周期  180度
  19. #define Cycle1  500  //定義周期   0度
  20. #define juzhong 1500  //定義周期 歸中
  21. uint PWM_Value[8];

  22. uchar order=0; //中斷步長

  23. sbit key1=P3^7;
  24. sbit key2=P4^6;

  25. //PWM的輸出端口
  26. sbit PWM_OUT0=P1^3;
  27. sbit PWM_OUT1=P0^1;
  28. sbit PWM_OUT2=P0^2;
  29. sbit PWM_OUT3=P0^3;



  30. void Init_Timer0()         //定時器0 初始化
  31. {
  32.     TMOD=0x01;

  33.     TH0=(65536-500)/256;
  34.     TL0=(65536-500)%256;

  35.     EA = 1;//打開總中斷
  36.     ET0 = 1;//打開定時器0中斷
  37.     TR0 = 1;//啟動定時器0
  38.       
  39.     PT0=1;  //定時器0 設置為最高優(yōu)先中斷
  40.     PX0=0; // 外部中斷0 設置最低中斷
  41. }
  42. //延時
  43. void delay(void)
  44. {
  45.   uint i=250;
  46.   while(i--);

  47. }

  48. //按鍵檢測
  49. void keyscan()
  50. {
  51.     if(key1==0)                 //高電平加
  52.         {
  53.                
  54.         if(PWM_Value[0]<Cycle)
  55.            PWM_Value[0]+=2;
  56.         if(PWM_Value[1]<Cycle)
  57.            PWM_Value[1]+=2;
  58.         if(PWM_Value[2]<Cycle)
  59.            PWM_Value[2]+=2;
  60.         if(PWM_Value[3]<Cycle)
  61.            PWM_Value[3]+=2;
  62.                
  63.                
  64.     }
  65.     if(key2==0)           //高電平減
  66.     {
  67.         if(PWM_Value[0]>Cycle1)
  68.            PWM_Value[0]-=2;
  69.         if(PWM_Value[1]>Cycle1)
  70.            PWM_Value[1]-=2;
  71.         if(PWM_Value[2]>Cycle1)
  72.            PWM_Value[2]-=2;
  73.         if(PWM_Value[3]>Cycle1)
  74.            PWM_Value[3]-=2;
  75.     }

  76.     delay();
  77. }
  78. //主函數(shù)
  79. void main(void)
  80. {
  81.     PWM_Value[0]=juzhong;//舵機歸中
  82.     PWM_Value[1]=juzhong;
  83.     PWM_Value[2]=juzhong;
  84.     PWM_Value[3]=juzhong;
  85.     Init_Timer0();
  86.         P4SW=0X70;
  87.     while(1)
  88.     {
  89.         keyscan();      
  90.     }
  91. }
  92. //定時器0 中斷子函數(shù)
  93. //這里輸出幾路波形 就應該為 20MS/N =X 那么X 就是N路平分時間
  94. //在用N-高電平時間  就為該路低電平時間咯。 就這么簡單。。。
  95. void timer0(void) interrupt 1
  96. {         
  97.     switch(order)
  98.     {
  99.         case 1:PWM_OUT0=1;
  100.                TH0=-PWM_Value[0]/256;     //第一路輸出高電平時長
  101.                TL0=-PWM_Value[0]%256;
  102.                break;
  103.         case 2:PWM_OUT0=0;
  104.                TH0=-(5000-PWM_Value[0])/256;   //第一路 輸出低電平時長
  105.                TL0=-(5000-PWM_Value[0])%256;
  106.                break;
  107.         case 3:PWM_OUT1=1;
  108.                TH0=-PWM_Value[1]/256;
  109.                TL0=-PWM_Value[1]%256;
  110.                break;
  111.         case 4:PWM_OUT1=0;
  112.                TH0=-(5000-PWM_Value[1])/256;
  113.                TL0=-(5000-PWM_Value[1])%256;
  114.                break;
  115.         case 5:PWM_OUT2=1;
  116.                TH0=-PWM_Value[2]/256;
  117.                TL0=-PWM_Value[2]%256;
  118.                break;
  119.         case 6:PWM_OUT2=0;
  120.                TH0=-(5000-PWM_Value[2])/256;
  121.                TL0=-(5000-PWM_Value[2])%256;
  122.                break;
  123.         case 7:PWM_OUT3=1;
  124.                TH0=-PWM_Value[3]/256;
  125.                TL0=-PWM_Value[3]%256;
  126.                break;
  127.         case 8:PWM_OUT3=0;
  128.                TH0=-(5000-PWM_Value[3])/256;
  129.                TL0=-(5000-PWM_Value[3])%256;
  130.                   
  131.        order=0;
  132.        break;

  133.        default: order=0;
  134.     }
  135.     order++;
  136. }
復制代碼



作者: 騰飛的龍    時間: 2016-11-5 12:43
謝謝!相互學習進步
作者: tiny44    時間: 2016-11-7 22:30
謝謝!相互學習進步,我正要寫
作者: 20151470    時間: 2017-2-12 15:08
漏洞百出,差評!!!!!
作者: qjyjack612510    時間: 2017-4-28 09:40
前輩,我也想做個通過遠程控制的WIFI帶攝像頭的小車…………。前后左右、攝像頭上下左右(老的說法叫八通道)。驅動最好是無級變速的(是不是叫PWM),能實現(xiàn)嗎?
作者: qjyjack612510    時間: 2017-4-28 09:43
前輩,我也想做個帶攝像頭的小車。前后左右,攝像頭上下左右(八通道),驅動最好是無級變速的(是不是叫PMW),有點基礎,能不能指點下,能實現(xiàn)嗎?
作者: tomgay    時間: 2017-5-1 06:30
謝謝!相互學習進步
作者: lixiaofei    時間: 2017-6-24 10:20
看一下,謝謝
作者: dxa572862121    時間: 2017-9-18 14:57
看一下
作者: 秋名山老司機666    時間: 2018-4-18 16:51
樓主,厲害了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久亚洲一区二区 | 精品国产99 | 国产片侵犯亲女视频播放 | 成人在线免费观看视频 | 久久久久久久av麻豆果冻 | 欧美日韩亚洲一区 | 农村真人裸体丰满少妇毛片 | 午夜男人天堂 | 日韩不卡视频在线观看 | 免费观看毛片 | 国产精品久久99 | 日批av| 中国一级毛片免费 | 精品久久久久久久久久久久久久 | 中国一级特黄真人毛片免费观看 | 久久久久久国产精品免费免费 | 性生生活大片免费看视频 | 免费h在线 | 日韩欧美成人一区二区三区 | 国产日韩精品一区 | 亚洲97| 国产高清一区二区三区 | 亚洲精品乱码久久久久久黑人 | 老子午夜影院 | 亚洲精品一区中文字幕乱码 | 国产区在线免费观看 | 久久精品欧美一区二区三区麻豆 | 日韩欧美手机在线 | 国产视频一区在线 | 日韩一区二区在线播放 | 中文字幕亚洲一区 | 中文无吗 | 亚洲一区二区三区在线视频 | 欧美国产中文字幕 | 精品综合久久久 | 亚洲综合一区二区三区 | 欧美一区二区三区在线 | 午夜免费在线电影 | 日日噜噜噜夜夜爽爽狠狠视频, | av官网在线 | 在线第一页 |