標題:
C51單片機 9G舵機 0-180自動轉(zhuǎn)動的程序
[打印本頁]
作者:
踩踩踩c
時間:
2017-3-14 20:15
標題:
C51單片機 9G舵機 0-180自動轉(zhuǎn)動的程序
單片機:stc12c5a60s2
晶振:12M
功能:舵機自動從0至180度來回擺動
/*********************************************************************************************
單片機:stc12c5a60s2
晶振:12M
功能:舵機自動從0至180度來回擺動
/*********************************************************************************************/
/*********************************************************************************************
說明:
高電平值0.5到2.5mS 對應(yīng) 舵機的 -90度到+90度。
一個高、低電平的總長是20mS
/*********************************************************************************************/
#include <STC12C5A60S2.H> //STC12Cx052或STC12Cx052AD系列單片機頭文件
sbit R_Key = P3 ^ 4;//右轉(zhuǎn)鍵
sbit L_Key = P3 ^ 5;//左轉(zhuǎn)鍵
sbit PWM_OUT = P3 ^ 6;//PWM輸出接口
bit OUT;//高低電平切換標志位
unsigned char SG1;//舵機角度設(shè)置
/*********************************************************************************************
函數(shù)名:毫秒級CPU延時函數(shù)
調(diào) 用:DELAY_MS (?);
參 數(shù):1~65535(參數(shù)不可為0)
返回值:無
結(jié) 果:占用CPU方式延時與參數(shù)數(shù)值相同的毫秒時間
備 注:應(yīng)用于1T單片機時i<600,應(yīng)用于12T單片機時i<125
/*********************************************************************************************/
void DELAY_MS (unsigned int a){
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
/*********************************************************************************************/
/*********************************************************************************************
函數(shù)名:定時/計數(shù)器初始化函數(shù)
調(diào) 用:T_C_init();
參 數(shù):無
返回值:無
結(jié) 果:設(shè)置SFR中T/C1和(或)T/C0相關(guān)參數(shù)
備 注:本函數(shù)控制T/C1和T/C0,不需要使用的部分可用//屏蔽
/**********************************************************************************************/
void T_C_init (void){
TMOD = 0x11; //高4位控制T/C1 [ GATE,C/T,M1,M0,GATE,C/T,M1,M0 ]
EA = 1; //中斷總開關(guān)
TH0 = 0xFF; //16位計數(shù)寄存器T0高8位
TL0 = 0xF5; //16位計數(shù)寄存器T0低8位
ET0 = 1; //T/C0中斷開關(guān)
//TR0 = 1; //T/C0啟動開關(guān)
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:定時/計數(shù)器0中斷處理函數(shù)
調(diào) 用:[T/C0溢出后中斷處理]
參 數(shù):無
返回值:無
結(jié) 果:重新寫入16位計數(shù)寄存器初始值,處理用戶程序
備 注:必須允許中斷并啟動T/C本函數(shù)方可有效,重新寫入初值需和T_C_init函數(shù)一致
/**********************************************************************************************/
void T_C0 (void) interrupt 1 using 1{ //切換寄存器組到1
unsigned int a;
if(OUT==0){//判斷高低脈沖標志//
a= 0x0A*SG1+0x01F3;//0x0A是1度的時間長,0x01F3是0.5mS時間長。
a= 0xFFFF - a;//算出定時開始值
TH0 = a/0xFF; //16位計數(shù)寄存器T0高8位
TL0 = a%0xFF; //16位計數(shù)寄存器T0低8位
OUT = 1;//標志切換
PWM_OUT=1;//PWM輸出高電平
}else{
a= 0x4E1F - (0x0A*SG1+0x01F3);//0x4E1F是20mS的時間長
a= 0xFFFF - a;//算出定時開始值
TH0 = a/0xFF;
TL0 = a%0xFF;
OUT = 0;
PWM_OUT=0;//PWM輸出低電平
}
}
/**********************************************************************************************/
/*********************************************************************************************
函數(shù)名:主函數(shù)
調(diào) 用:無
參 數(shù):無
返回值:無
結(jié) 果:程序開始處,無限循環(huán)
備 注:
/**********************************************************************************************/
void main (void){
P3M0 = 0x60; //
P3M1 = 0x00; //設(shè)置推挽輸出
DELAY_MS (500);
…………余下代碼請下載附件…………
復(fù)制代碼
0.png
(59.4 KB, 下載次數(shù): 77)
下載附件
2017-3-14 22:00 上傳
下載:
自動0~180度回來擺動.rar
(1.38 KB, 下載次數(shù): 202)
2017-3-14 20:15 上傳
點擊文件名下載附件
9G舵機自動0~180度回來擺動
下載積分: 黑幣 -5
作者:
admin
時間:
2017-3-14 22:17
好資料,
51黑有你更精彩
作者:
LXJ50
時間:
2017-3-14 23:34
已買了兩個9G舵機 ,正好用上,感謝樓主分享,謝謝!
作者:
左手陽光右手沙
時間:
2017-12-27 19:02
在做舵機SG90的課設(shè)
作者:
王毅波
時間:
2018-5-21 17:37
樓主好人,剛好需要
作者:
gjf
時間:
2018-9-30 20:26
89c52rc能用嗎
作者:
gjf
時間:
2018-9-30 23:25
共享資料的黑幣獎勵!
作者:
xiou
時間:
2018-10-19 09:30
能精確控制舵機轉(zhuǎn)角嗎?比如按鍵一下 5度
作者:
zhang7309
時間:
2018-10-21 22:22
感謝分享
作者:
七九六
時間:
2018-12-27 08:20
想問一下,9g舵機回中原理是什么???
作者:
hhwsljb
時間:
2021-10-18 23:41
不知道一開始通電的時候會不會自動轉(zhuǎn)?
作者:
harbour374859
時間:
2021-11-10 23:20
謝謝樓主,這個不錯,正需要看舵機的。
作者:
harbour374859
時間:
2021-11-10 23:28
我以前抄了一個程序,但舵機就是不能正常轉(zhuǎn)動起來,到現(xiàn)在都不知道是什么原因。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1