標(biāo)題: 淺談用單片機控制SG90舵機(原理+編程) [打印本頁]

作者: 我只是過于低調(diào)    時間: 2019-4-16 11:51
標(biāo)題: 淺談用單片機控制SG90舵機(原理+編程)
此篇文章免費分享給大家,這篇文章結(jié)合筆者所學(xué)以及在往上參考大神的講解,通過自己的理解整理成文檔,在此免費分享給大家,由于筆者是一名在讀學(xué)生,文中難免有不當(dāng)之處,如有錯誤,望大家指正�。�!我會把源文檔和源程序放在附件中,有黑幣的直接下載,沒有的留下郵箱,看見回

SG90舵機(模擬舵機)
一、日常吐槽~~~~~~,在開始今天的主題之前,占用大家一些時間。容我罵街一番,$##%%%$%#$#$$%^艸……………….,哎呀媽呀,罵的有點喘不過來了,額~呸,是(文明人,文明人)。
可能就奇了怪了,你不好好碼字,罵什么街呢!說來慚愧,上邊被罵的人就是筆者自己。今天在調(diào)試程序的時候,對,就這個鬼舵機,怎么都不轉(zhuǎn)�。�!檢查硬件---檢查程序---百度,如此反復(fù)N小時。始終找不到問題所在,程序呢,怎么看,怎么!硬件呢,怎么看,怎么!說是急,那是快,電閃雷鳴,刀光劍影,啪,一個數(shù)字1摔在臉上,于是乎,快速打開課本,啪~啪~啪,數(shù)字0、1,大腦瓜子一拍,哎呀,一定是這錯誤了!快速拿起閃閃發(fā)光的鼠標(biāo),熟練的打開Keil4,一段操作猛如虎,只聽見那~~~吱,舵機工作了~~~~
粗心大意定時器0對應(yīng)的中端口----void Timer() interrupt 1
馬虎大意的我寫成了這樣:void Timer() interrupt 0.
家都走錯了,人家咋可能給你錢,大家一定要引以為戒,細心細心再細心
中斷號
中斷源
0
外部中斷0
1
定時器中斷0
2
外部中斷1
3
定時器中斷1
4
串行口中斷1
注意C語言用關(guān)鍵字“interrupt+數(shù)字”來代替匯編中中斷入口地址
——————————————————————————————————
以上非本次筆記重點,只是筆者一點小小的吐槽,外加一點小小的知識
——————————————————————————————————
二、主咖登場基本概念:1.舵機:舵機是一種位置(角度)伺服的驅(qū)動器,適用那些需要角度不斷變化并可以保持的控制系統(tǒng)。舵機只是一種通俗的叫法,其實質(zhì)是一個伺服馬達。

2.模擬舵機:需要不斷的發(fā)送目的地PWM信號,才能旋轉(zhuǎn)到指定位置。例如:我現(xiàn)在讓它旋轉(zhuǎn)90度,我就需要不斷的發(fā)送90度的PWM信號直到到達指定位置才能停止。

3.數(shù)字舵機:只需給一個目的地PWM信號,即可旋轉(zhuǎn)到指定位置。例如:我現(xiàn)在讓它旋轉(zhuǎn)90度,我只需要發(fā)送一次90度的PWM信號,它就可以旋轉(zhuǎn)到90度。

4.PWM信號:PWM(脈沖寬度調(diào)制)是利用微處理器的數(shù)字輸出來對模擬電路進行控制的一種非常有效的技術(shù)。那么什么叫PWM信號呢,筆者就簡單的談一下自己的看法,我們都知道,我們所使用的單片機都是數(shù)字電路,它的I/O口只有兩種狀態(tài),那就是高電平1,低電平0。知道了這些之后,我們通過控制微處理器輸出1-0-1-0-1-0-1-0……如此循環(huán)往復(fù),就成為下圖1所示的情況,這就是PWM信號。

1.PWM信號
5.占空比高電平(或者低電平)占整個周期的時間就叫作占空比。

6.PWM頻率PWM頻率是指每秒鐘信號從高電平到低電平再到高電平的次數(shù)。
工作原理  理解以上的概念,對我們接下來的學(xué)習(xí)是非常有必要的,希望大家能好好掌握上面的概念。
我所使用的SG90舵機,如下圖2所示

2
接線方法
          紅-------------------------VCC
          棕色----------------------GND
          橙色----------------------信號線

原理:舵機內(nèi)部有一個基準(zhǔn)電壓,微處理器產(chǎn)生的PWM信號通過信號線進入舵機產(chǎn)生直流偏置電壓,與舵機內(nèi)部的基準(zhǔn)電壓作比較,獲得電壓差輸出。電壓差的正負輸出到電機驅(qū)動芯片上,從而決定正反轉(zhuǎn)。當(dāng)舵機開始旋轉(zhuǎn)的時候,舵機內(nèi)部通過級聯(lián)減速齒輪帶動電位器旋轉(zhuǎn),使得電壓差為零,電機停止轉(zhuǎn)動。

重點:作為一個單片機編寫者,具體的原理,我們不必要搞清楚,我們只需知道如何控制它即可,以下將講解如何控制舵機運轉(zhuǎn)。

第一步:我們需要使用單片機產(chǎn)生周期為20ms,高電平t等于0.5ms-2.5ms之間的這樣一個方波。定時器+中斷產(chǎn)生這樣的方波。
高電平在一個周期20ms的持續(xù)時間對應(yīng)的舵機角度,如下圖所示。
高電平t占整個周期T(20ms)的時間
舵機旋轉(zhuǎn)的角度
0.5ms
0度
1ms
45度
1.5ms
90度
2ms
135度
2.5ms
180度
第二步:簡單講一下編程思想吧,我所使用的是方法是定時器+中斷,定時器每0.5ms中斷一次,需要中斷40次才能達到20ms。我們此時需要一個全局變量來記錄中斷的次數(shù),當(dāng)中斷達到40次時,全局變量重新清零。當(dāng)中斷次數(shù)小于a時,信號線輸出高電平,否則輸出零。此時a的值對應(yīng)關(guān)系如下(1--0度,2--45度,3--90度,4--135度,5--180度)。
第三步:著重講程序中一個語句的含義

為什么此處要此處a==16,a==32,首先,這個值是我一步步測試出來的,如果你看見源程序的話,上面有詳細的介紹,此處不再贅述。
我們知道SG90是一個模擬舵機,需要不斷的給出信號才能到達指定的位置。到達這個位置并不是一蹴而就的,它需要時間,實際上面的a==16,相當(dāng)于延時,這段時間剛好能夠讓舵機達到指定的位置,然后在接收下一個回擺程序。a==32,是因為我需要讓它來回擺動的時間對稱,所以才用a==32的。有興趣的可以改變a的值,觀察一下具體的情況。
程序此處都不貼出來,時間緊迫,我會放在附件中,有黑幣的直接下載,沒有的,留下郵箱

單片機源程序如下:
  1. #include<reg52.h>
  2. sbit SG_PWM=P0^0;
  3. unsigned char count=0;
  4. unsigned char PWM_count=3;                  //1--0度,2--45度,3--90度,4--135度,5--180度
  5. unsigned char a=0;
  6. void Timer_Init()
  7. {
  8.   TMOD=0X01;      //T0定時方式1
  9.   TH0=0Xfe;
  10.   TL0=0X33;       //計數(shù)初值設(shè)置為0.5ms
  11.   ET0=1;          //打開定時器0的中斷
  12.   TR0=1;          //打開定時器0
  13.   EA=1;           //開總中斷
  14. }
  15. void Timer() interrupt 1      //特別注意此處,0--外部中斷0,1--定時器中斷0,2--外部中斷1,3--定時器中斷1,4--串行口中斷1
  16. {
  17.   TR0=0;
  18.   TH0=0Xfe;
  19.   TL0=0X33;       //重新賦計數(shù)初值為0.5ms
  20.   if(count<=PWM_count)
  21.   {
  22.     SG_PWM=1;
  23.   }
  24.   else
  25.   {
  26.     SG_PWM=0;
  27.   }
  28.   count++;
  29.   if(count>=40)
  30.   {
  31.     count=0;
  32.     a++;
  33.   }
  34.   TR0=1;
  35. }
  36. void main()
  37. {
  38.   Timer_Init();
  39.   while(1)
  40.   {
  41.       if(a==16)                             //20是比較舒服的連貫動作,20以上動作些許不連貫  10的時候出現(xiàn)打架情況,15的時候打架幾乎沒有,16比較完美
  42.       {
  43.         PWM_count=1;
  44.       }
  45.       if(a==32)
  46.       {
  47.               PWM_count=3;
  48.         a=0;
  49.       }
  50.   }
  51. }
復(fù)制代碼


全部資料51hei下載地址:
SG90舵機--自動控制.7z (8.99 KB, 下載次數(shù): 1154)
SG90舵機--按鍵控制.7z (9.62 KB, 下載次數(shù): 928)
淺談SG90舵機.docx (139.68 KB, 下載次數(shù): 464)



作者: 158751hei0141    時間: 2019-4-16 22:04
好資料,51黑有你更精彩!!!

作者: 我只是過于低調(diào)    時間: 2019-4-17 21:10
15871820141 發(fā)表于 2019-4-16 22:04
謝謝

已經(jīng)發(fā)送到你的郵箱
作者: 我只是過于低調(diào)    時間: 2019-4-18 09:46
我只是過于低調(diào) 發(fā)表于 2019-4-17 21:10
已經(jīng)發(fā)送到你的郵箱

不客氣不客氣,共同學(xué)習(xí)
作者: Rainson    時間: 2019-4-20 01:38
請問自動控制使用什么控制的?
作者: YH123456789    時間: 2019-4-20 10:00
感謝樓主
作者: 阿鎏尼克    時間: 2019-4-20 10:10
謝謝
作者: 我只是過于低調(diào)    時間: 2019-4-20 14:56
Rainson 發(fā)表于 2019-4-20 01:38
請問自動控制使用什么控制的?

這個自動控制很簡單,就是我上邊講的a==16,這只不過是個延時,為了讓舵機達到指定位置,然后在返回另一個指定位置,從而實現(xiàn)自動控制
作者: 我只是過于低調(diào)    時間: 2019-4-20 14:59
阿鎏尼克 發(fā)表于 2019-4-20 10:10
謝謝392389854@qq.com

已發(fā)送
作者: 我只是過于低調(diào)    時間: 2019-4-20 14:59
YH123456789 發(fā)表于 2019-4-20 10:00
感謝樓主

已發(fā)送
作者: 我只是過于低調(diào)    時間: 2019-4-21 17:21
愛瘋的孩紙 發(fā)表于 2019-4-20 15:05

已經(jīng)發(fā)送
作者: 我只是過于低調(diào)    時間: 2019-4-21 17:22
779380649 發(fā)表于 2019-4-20 23:52

已經(jīng)發(fā)送
作者: lwl812071006    時間: 2019-4-22 09:08
有電路圖?
作者: 我只是過于低調(diào)    時間: 2019-4-22 09:42
lwl812071006 發(fā)表于 2019-4-22 09:08
有電路圖?

這個很簡單的,就是隨手演示一下,沒有特意的去畫電路圖
作者: yyuq    時間: 2019-4-22 13:05
772497644@qq.com  謝謝樓主
作者: 我只是過于低調(diào)    時間: 2019-4-22 15:41
yyuq 發(fā)表于 2019-4-22 13:05
謝謝樓主

已發(fā)送,注意查收
作者: 我只是過于低調(diào)    時間: 2019-4-26 00:00
safadsgsgf 發(fā)表于 2019-4-24 23:53
感謝樓主分享!

已發(fā)送,注意查收
作者: yyhlsf    時間: 2019-4-28 10:25
謝謝分享
作者: 我只是過于低調(diào)    時間: 2019-4-28 12:43
explorercc 發(fā)表于 2019-4-27 22:30
,謝謝樓主

已發(fā)送,注意查收
作者: 我只是過于低調(diào)    時間: 2019-4-28 12:43
yyhlsf 發(fā)表于 2019-4-28 10:25
謝謝分享

共同進步
作者: kkk11    時間: 2019-4-29 09:08
請問轉(zhuǎn)180°應(yīng)該怎么設(shè)置??
作者: 我只是過于低調(diào)    時間: 2019-4-29 09:23
kkk11 發(fā)表于 2019-4-29 09:08
請問轉(zhuǎn)180°應(yīng)該怎么設(shè)置??

高電平t占有周期的時間改為2.5ms,理論上可以轉(zhuǎn)到180°,但是不知道什么原因,我得舵機不能完全轉(zhuǎn)到180°

作者: 我只是過于低調(diào)    時間: 2019-5-1 09:07
機械1111 發(fā)表于 2019-4-30 23:15
謝謝樓主

已發(fā)送

作者: 我只是過于低調(diào)    時間: 2019-5-1 23:27
bazhahei 發(fā)表于 2019-5-1 09:38
2622869349@qq.com    謝謝樓主

已發(fā)送
作者: 我只是過于低調(diào)    時間: 2019-5-1 23:28
hg1594130342 發(fā)表于 2019-5-1 15:34
謝謝樓主

已發(fā)送
作者: 機械1111    時間: 2019-5-2 23:20
樓主,要控制多個舵機應(yīng)該怎么辦?我這樣改的程序但是這幾個舵機轉(zhuǎn)的角度都不一樣,有的轉(zhuǎn)角特別小
if(count<=PWM_count)
  {
    SG_PWM=1;
         SG_PWM2=1;
         SG_PWM3=1;
         SG_PWM4=1;
  }
  else
  {
    SG_PWM1=0;
         SG_PWM2=0;
         SG_PWM3=0;
         SG_PWM4=0;
  }
作者: 我只是過于低調(diào)    時間: 2019-5-2 23:37
spang 發(fā)表于 2019-5-2 14:16
謝謝樓主

額  兄弟  別逗了,那么多黑豆,如果覺得能學(xué)到東西就下了吧。沒有的我可以幫忙下載
作者: 123.00    時間: 2019-5-3 10:48
519902379@qq.com謝謝樓主

作者: 我只是過于低調(diào)    時間: 2019-5-3 14:12
機械1111 發(fā)表于 2019-5-2 23:20
樓主,要控制多個舵機應(yīng)該怎么辦?我這樣改的程序但是這幾個舵機轉(zhuǎn)的角度都不一樣,有的轉(zhuǎn)角特別小
if(co ...

你是想要所有的舵機轉(zhuǎn)一樣的角度嘛?
作者: 機械1111    時間: 2019-5-4 07:16
我只是過于低調(diào) 發(fā)表于 2019-5-3 14:12
你是想要所有的舵機轉(zhuǎn)一樣的角度嘛?

是的,我想讓它們同步地轉(zhuǎn)一樣的角度
作者: 機械1111    時間: 2019-5-4 09:28
機械1111 發(fā)表于 2019-5-4 07:16
是的,我想讓它們同步地轉(zhuǎn)一樣的角度

實際上我想做一個四足機器人,讓它們都同步轉(zhuǎn)一樣的角度只是先測試一下,最終想實現(xiàn)的是前兩個舵機同步前擺同時后兩個舵機同步向后擺。
作者: decade_lv    時間: 2019-5-4 10:31
572717043@qq.com

作者: 我只是過于低調(diào)    時間: 2019-5-4 16:00
機械1111 發(fā)表于 2019-5-4 09:28
實際上我想做一個四足機器人,讓它們都同步轉(zhuǎn)一樣的角度只是先測試一下,最終想實現(xiàn)的是前兩個舵機同步前 ...

具體情況我也不太清楚,你可以單個舵機調(diào)試,讓每個舵機都轉(zhuǎn)90°,之后在四個舵機一起調(diào)試。我懷疑是不是舵機初始位置不一樣,你可以試試
作者: kkk11    時間: 2019-5-5 09:19
我只是過于低調(diào) 發(fā)表于 2019-4-29 09:23
高電平t占有周期的時間改為2.5ms,理論上可以轉(zhuǎn)到180°,但是不知道什么原因,我得舵機不能完全轉(zhuǎn)到180° ...

第一次做,不是很明白,請問要怎樣改?謝謝
作者: KeltC    時間: 2019-5-8 22:54
544988232@qq.com    謝謝樓主
作者: 我只是過于低調(diào)    時間: 2019-5-9 15:43
decade_lv 發(fā)表于 2019-5-4 10:31

已發(fā)送
作者: 我只是過于低調(diào)    時間: 2019-5-9 15:44
KeltC 發(fā)表于 2019-5-8 22:54
謝謝樓主

已發(fā)送

作者: ZimmerHo    時間: 2019-5-10 16:20
1135749091@qq.com謝謝樓主了啊 有急用
作者: 我只是過于低調(diào)    時間: 2019-5-10 20:25
ZimmerHo 發(fā)表于 2019-5-10 16:20
1135749091@qq.com謝謝樓主了啊 有急用

已發(fā)送
作者: ZimmerHo    時間: 2019-5-10 21:52
1135749091@qq.com求發(fā)
作者: gyh123gyh    時間: 2019-5-11 06:43
1297714938@qq.com 謝謝樓主
作者: 我只是過于低調(diào)    時間: 2019-5-11 09:01
ZimmerHo 發(fā)表于 2019-5-10 21:52
1135749091@qq.com求發(fā)

已發(fā)送

作者: 我只是過于低調(diào)    時間: 2019-5-11 09:02
gyh123gyh 發(fā)表于 2019-5-11 06:43
1297714938@qq.com 謝謝樓主

已發(fā)送
作者: 初心22    時間: 2019-5-12 18:18
1652493957@qq.com謝謝樓主!

作者: 初心22    時間: 2019-5-12 19:33
1652493957@qq.com 謝謝!
作者: 我只是過于低調(diào)    時間: 2019-5-13 08:36
初心22 發(fā)表于 2019-5-12 19:33
1652493957@qq.com 謝謝!

已發(fā)送
作者: yjj2011    時間: 2019-5-13 15:45
41467046@qq.com  感謝樓主
作者: 落楓。念流月    時間: 2019-5-15 00:02
1351956824@qq.com
非常非常感謝
作者: nailuo    時間: 2019-5-15 11:14
1348662577@qq.com  謝謝

作者: mhtzjl    時間: 2019-5-15 17:22
18866546599@163.com   謝謝
作者: mhtzjl    時間: 2019-5-15 18:02
1420633563@qq.com非常感謝,有急用
作者: 我只是過于低調(diào)    時間: 2019-5-15 18:49
落楓。念流月 發(fā)表于 2019-5-15 00:02
非常非常感謝

電腦重裝系統(tǒng)了,郵箱還沒裝上,裝上的時候發(fā)
作者: 我只是過于低調(diào)    時間: 2019-5-15 18:49
mhtzjl 發(fā)表于 2019-5-15 18:02
1420633563@qq.com非常感謝,有急用

電腦重裝系統(tǒng)了,還沒來的及安裝郵箱
作者: 我只是過于低調(diào)    時間: 2019-5-16 23:11
落楓。念流月 發(fā)表于 2019-5-15 00:02
非常非常感謝

已經(jīng)發(fā)送,用網(wǎng)頁版的發(fā)的
作者: 我只是過于低調(diào)    時間: 2019-5-16 23:12
nailuo 發(fā)表于 2019-5-15 11:14
謝謝

已發(fā)送
作者: 我只是過于低調(diào)    時間: 2019-5-16 23:14
mhtzjl 發(fā)表于 2019-5-15 18:02
1420633563@qq.com非常感謝,有急用

已經(jīng)發(fā)送
作者: a751123973    時間: 2019-5-17 19:40
樓主你好,我的舵機是數(shù)字舵機,我按照您的代碼,在中斷的count > 40 的判斷里加了一句 TR0 = 0以中斷計時。這樣子使數(shù)字電機僅接受一次pwm。但是舵機沒有動靜。如果什么都不改,舵機就會左右亂擺,毫無規(guī)律。我的舵機是ds3119
作者: 我只是過于低調(diào)    時間: 2019-5-19 10:10
a751123973 發(fā)表于 2019-5-17 19:40
樓主你好,我的舵機是數(shù)字舵機,我按照您的代碼,在中斷的count > 40 的判斷里加了一句 TR0 = 0以中斷計時 ...

第一,有沒有將中斷后面的TR0=1注釋掉
第二,這個數(shù)字舵機的驅(qū)動方式是否和這個模擬舵機一樣
作者: 小笨鳥O    時間: 2019-5-22 17:54
只有3個幣,下不了,請樓主或其他版友發(fā)一個,謝謝先啦!
yan53h@163.com
作者: 平凡的世界ol    時間: 2019-5-22 18:32
928383715@qq.com  麻煩了
作者: 小笨鳥O    時間: 2019-5-22 20:46
我下午跟的帖子,為什么看不到呢?
作者: 我只是過于低調(diào)    時間: 2019-5-23 10:55
小笨鳥O 發(fā)表于 2019-5-22 20:46
我下午跟的帖子,為什么看不到呢?

我才看見
作者: a751123973    時間: 2019-5-23 12:01
我只是過于低調(diào) 發(fā)表于 2019-5-19 10:10
第一,有沒有將中斷后面的TR0=1注釋掉
第二,這個數(shù)字舵機的驅(qū)動方式是否和這個模擬舵機一樣

你好,我遇到了一些問題,我寫回源代碼后,有時候可以正常工作,但有時又會呈現(xiàn)出毫無規(guī)律的運動,請問是和我的電源的選擇有關(guān)系嗎?
作者: a751123973    時間: 2019-5-23 12:31
我只是過于低調(diào) 發(fā)表于 2019-5-19 10:10
第一,有沒有將中斷后面的TR0=1注釋掉
第二,這個數(shù)字舵機的驅(qū)動方式是否和這個模擬舵機一樣

不好意思打擾了,已經(jīng)解決了,謝謝。是我的共地沒有接好
作者: 我只是過于低調(diào)    時間: 2019-5-23 14:49
a751123973 發(fā)表于 2019-5-23 12:31
不好意思打擾了,已經(jīng)解決了,謝謝。是我的共地沒有接好

好滴,也沒幫到你,不客氣了
作者: 我只是過于低調(diào)    時間: 2019-5-23 14:50
樓上的,都不一一恢復(fù)了,我看到得都回復(fù)了
作者: 小笨鳥O    時間: 2019-5-23 19:17
非常感謝樓主!
作者: 小笨鳥O    時間: 2019-5-23 21:24
遇到一個奇怪的事:sbit PM=P0^1,然后和P0^0取反,編譯沒有錯誤和警告。但是P0^1的舵機不動,用示波器看一下,發(fā)現(xiàn)P0^1啥波形都沒有,奇怪不?
作者: a18611503728    時間: 2019-5-24 02:17
請問,您有這個型號舵機的原理圖嗎?
作者: 我只是過于低調(diào)    時間: 2019-5-24 09:25
a18611503728 發(fā)表于 2019-5-24 02:17
請問,您有這個型號舵機的原理圖嗎?

這個沒有啊
作者: 我只是過于低調(diào)    時間: 2019-5-24 09:30
小笨鳥O 發(fā)表于 2019-5-23 21:24
遇到一個奇怪的事:sbit PM=P0^1,然后和P0^0取反,編譯沒有錯誤和警告。但是P0^1的舵機不動,用示波器看一 ...

看看定時器是否配置正確,示波器也就做實驗用過,我也不太懂!你們條件真好
作者: 無回?zé)o悔    時間: 2019-5-24 10:32
928936978@qq.com 謝謝
作者: 無回?zé)o悔    時間: 2019-5-24 10:53
928936978@qq.com
作者: 我只是過于低調(diào)    時間: 2019-5-24 13:53
無回?zé)o悔 發(fā)表于 2019-5-24 10:53
928936978@qq.com

發(fā)過了
作者: 小笨鳥O    時間: 2019-5-24 18:36
我只是過于低調(diào) 發(fā)表于 2019-5-24 09:30
看看定時器是否配置正確,示波器也就做實驗用過,我也不太懂!你們條件真好

我的示波器是玩具型的,80元左右(附圖),看I/O簡單的信號方便,缺點是會卡。P0^0取反有信號,只是t是低電平,T—t是高電平,舵機不認識,所以不動,和舵機反向器不一樣(附舵機反向器圖,和一角硬幣差不多大)�,F(xiàn)在最希望舵機擺動能受控,想做個遙控的劃艇或是龍舟玩,遙控接收機輸出的信號和舵機一樣的,是t=1~2ms, T=20ms

IMG_20190524_152615.jpg (1.14 MB, 下載次數(shù): 1250)

IMG_20190524_152615.jpg

IMG_20190524_152729.jpg (1.57 MB, 下載次數(shù): 1216)

IMG_20190524_152729.jpg

作者: 我只是過于低調(diào)    時間: 2019-5-25 14:33
小笨鳥O 發(fā)表于 2019-5-24 18:36
我的示波器是玩具型的,80元左右(附圖),看I/O簡單的信號方便,缺點是會卡。P0^0取反有信號,只是t是低電 ...

不得不承認,你比我玩的好,我還是小菜雞一個呢
作者: 小笨鳥O    時間: 2019-5-25 20:33
我只是過于低調(diào) 發(fā)表于 2019-5-25 14:33
不得不承認,你比我玩的好,我還是小菜雞一個呢

您太過謙啦!如果有笨笨比賽的話,我保證能拿金牌,比如高考英文最高一次是11分,所以學(xué)編程很難,學(xué)了十多年,一月前才入門,現(xiàn)在對中斷和計時程序任然看不懂,比如: if(count<=PWM_count)
  {
    SG_PWM=1;
  }
  else
  {
    SG_PWM=0;
  }
  count++;
  if(count>=40)
  {
    count=0;
    a++;
  }
  TR0=1;
}
這段程序,我只猜到40是20ms,其他的都不知道是啥意思。
另外,倒數(shù)第三句a==32;我改成a==a+a;為啥就報錯呢?請樓主指點,謝謝!
作者: 我只是過于低調(diào)    時間: 2019-5-26 11:27
小笨鳥O 發(fā)表于 2019-5-25 20:33
您太過謙啦!如果有笨笨比賽的話,我保證能拿金牌,比如高考英文最高一次是11分,所以學(xué)編程很難,學(xué)了十 ...

其實給你些建議吧:
1.英語和編程是兩回事,如果真的說他倆有點關(guān)系的話,那可能就是芯片手冊了吧
2.這個程序比較簡單,如果中間好多理解不了的話,建議去看下定時器,好好理解下
3.編程學(xué)了10多年?一個月前才入門,這個優(yōu)點尷尬啊
4.C語言一定要有扎實的基礎(chǔ)
作者: 261779498    時間: 2019-5-27 01:12
261779498@qq.com謝謝樓主
作者: 小笨鳥O    時間: 2019-5-27 16:30
我只是過于低調(diào) 發(fā)表于 2019-5-26 11:27
其實給你些建議吧:
1.英語和編程是兩回事,如果真的說他倆有點關(guān)系的話,那可能就是芯片手冊了吧
2.這 ...

聽您的建議,我把定時器有關(guān)的視頻教程又看了好幾遍,還是許多不懂。
說實話,我的這樣智商,學(xué)習(xí)十幾年能入門,會搞LED了,開心了好久呢!哈哈~
請問一下:學(xué)好51編程需要看那些書?以前看C語言書 發(fā)現(xiàn)和51聯(lián)系不大。
另外,如果寫一個受控的舵機程序,難度大��?估計是目前這個程序的幾倍?謝謝!
我目前是用純硬件做一套可以遙控的舵機控制系統(tǒng),非常麻煩,所以想用單片機來弄,
作者: 小笨鳥O    時間: 2019-5-27 20:14
再請教一事:如果讓舵機先從90度到0度,然后再0~90度擺動,是不是只需改下面這段程序:
if(count<=PWM_count)
{
  SG_PWM=1;
}
else
{
  SG_PWM=0;
}
count++;
if(count>=40)
{
  count=0;
  a++;
我改了N次,總是不行,不知道為什么?
作者: 李大意兒    時間: 2019-5-28 11:05
非常感謝樓主!
最近剛好在使用SG90舵機做無碳小車轉(zhuǎn)彎模塊,但是目前調(diào)試出來的結(jié)果是舵機一直在朝一個方向不停轉(zhuǎn)動,唉,不知道問題出在哪里了,哭泣
希望能得到您的資料,謝謝!
nustlty@163.com
再次感謝!
作者: 我只是過于低調(diào)    時間: 2019-5-28 17:13
小笨鳥O 發(fā)表于 2019-5-27 16:30
聽您的建議,我把定時器有關(guān)的視頻教程又看了好幾遍,還是許多不懂。
說實話,我的這樣智商,學(xué)習(xí)十幾年 ...

加我QQ,782977902,記得備注
作者: 我只是過于低調(diào)    時間: 2019-5-28 17:14
李大意兒 發(fā)表于 2019-5-28 11:05
非常感謝樓主!
最近剛好在使用SG90舵機做無碳小車轉(zhuǎn)彎模塊,但是目前調(diào)試出來的結(jié)果是舵機一直在朝一個方 ...

好滴 ,發(fā)給你了
作者: 蝦兵0蟹將    時間: 2019-5-28 17:37
學(xué)習(xí)了,謝謝樓主
作者: 1234567890一天    時間: 2019-5-28 19:36
我的郵箱869260915@qq.com,謝謝兄弟了
作者: 我只是過于低調(diào)    時間: 2019-5-28 20:01
李大意兒 發(fā)表于 2019-5-28 11:05
非常感謝樓主!
最近剛好在使用SG90舵機做無碳小車轉(zhuǎn)彎模塊,但是目前調(diào)試出來的結(jié)果是舵機一直在朝一個方 ...

已經(jīng)發(fā)給你了
作者: 146啊哈    時間: 2019-5-28 20:01
1462970411@qq.com
作者: 我只是過于低調(diào)    時間: 2019-5-28 20:02
小笨鳥O 發(fā)表于 2019-5-24 18:36
我的示波器是玩具型的,80元左右(附圖),看I/O簡單的信號方便,缺點是會卡。P0^0取反有信號,只是t是低電 ...

這上邊好像不讓加好友,有問題將你的號碼發(fā)到我郵箱
作者: 146啊哈    時間: 2019-5-28 20:20
樓主,發(fā)我一下,謝謝1462970411@qq.com
作者: Lannianji    時間: 2019-5-29 16:59
1175940555@qq.com,謝謝樓主。
作者: 小笨鳥O    時間: 2019-5-29 20:25
我只是過于低調(diào) 發(fā)表于 2019-5-28 17:13
加我QQ,782977902,記得備注

謝謝!已加
作者: rtc900    時間: 2019-5-30 09:51
這個應(yīng)該有用,航模的油門的控制是不是用的這種pwm的方式呢、?
作者: 我只是過于低調(diào)    時間: 2019-5-31 10:27
rtc900 發(fā)表于 2019-5-30 09:51
這個應(yīng)該有用,航模的油門的控制是不是用的這種pwm的方式呢、?

這個還真不知道,沒有玩過航模
作者: 小笨鳥O    時間: 2019-5-31 21:44
我只是過于低調(diào) 發(fā)表于 2019-5-26 11:27
其實給你些建議吧:
1.英語和編程是兩回事,如果真的說他倆有點關(guān)系的話,那可能就是芯片手冊了吧
2.這 ...

您說的對!C語言基礎(chǔ)很重要。
我從入門時的LED重頭看,知道延時用delay,for,while都可以。
又仔細學(xué)習(xí)定時器,現(xiàn)在能大概看懂程序了,還有一些不太懂,等你答辯搞好再請教,學(xué)業(yè)優(yōu)先,祝您答得順利!
作者: 6kl    時間: 2019-6-3 21:31
624622392@qq.com
作者: 6kl    時間: 2019-6-3 21:32
624622392@qq.com謝謝樓主
作者: 66666ly    時間: 2019-6-5 17:08
1743607877@qq.com,謝謝樓主
作者: linyuyu    時間: 2019-6-6 17:25
1576334798@qq.com謝謝
作者: 炫啦    時間: 2019-6-13 18:15
2963640193@qq.com
現(xiàn)在我也在調(diào)試這個,一籌莫展,看了樓主的帖,頗有啟發(fā),謝謝





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1