基于51單片機 的 舵機 轉動
0.png (55.2 KB, 下載次數: 109)
下載附件
2018-2-28 16:50 上傳
舵機各個時鐘的計算值a、max、min:
0.png (12.65 KB, 下載次數: 70)
下載附件
2018-2-28 16:48 上傳
舵機原理及驅動.pdf教程:
0.png (99.49 KB, 下載次數: 69)
下載附件
2018-2-28 16:49 上傳
單片機源程序如下:
- #include <reg52.h> //頭文件
- #define uchar unsigned char //宏定義無符號字符型
- #define uint unsigned int //宏定義無符號整型
- uint b; //中斷值
- uint N=0; //占空比計數值
- uint X=15; //初始角度值 (取值范2~15)
- sbit PWM=P1^0;//PWM輸出 (舵機控制端)
- /*************************************************************************/
- void timer0( ) interrupt 1 //定時器0工作方式1
- {
- TH0=0xff; //重裝計數初值 (65535-500)/256; 0.25ms
- TL0=0x38; //重裝計數初值 (65535-500)%256;
- b++; //中斷值
- if(X!=8)//判斷是否計數到9999 (舵機轉的速度)
- {
- X=X+4;//加一 改變舵機轉變的角度
- }
- if(X!=2)//判斷是否計數到0 (舵機轉的速度)
- {
- X=X-4;//減一 改變舵機轉變的角度
- }
- }
- /*************************************************************************/
- void main()
- {
- TMOD=0X01;
- /***********************************************************
- 0000 0001 選擇定時計數器T0 :因為T1是由高4位控制,T0是由低4位控制 而該數中僅有低4位有數據
- (TM0D.4/8) gate(門控位)=0時
- TR0=1(T0)或者TR1=1(T1) 確定T0定時/計數器 此次試驗 用的是TR0=1
- ************************************************************/
- TH0=0xff; //重裝計數初值 1111 1111
- TL0=0x38; //重裝計數初值 0011 1000
- EA=1; //開CPU中斷
- ET0=1; //計數器 開啟
- /***********************************************************
- 開T/C0中斷
- ET0=0時 計時器
- ET0=1時 計數器
- ************************************************************/
- TR0=1; //開啟T0
- while(1) //無限循環
- {
- // PWM=1; //輸出PWM正
- while(1)
- {
- b=0; //中斷值
- while(!b);
- if (N==X) //初始度值
- PWM=0;
- if (N==100)
- break;
- N++; //占空比計數值
- }
- N=0; //占空比計數值
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
舵機自動轉自動轉.rar
(316.61 KB, 下載次數: 545)
2018-2-28 10:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|