欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
求助如何用51單片機精準地控制舵機的角度(新人貼)
[打印本頁]
作者:
手寫從前156
時間:
2018-9-27 12:03
標題:
求助如何用51單片機精準地控制舵機的角度(新人貼)
這是目前我寫的程序,有問題的是只要上電舵機就會自動地轉動,然后就沒反應了:
#include<reg52.h>
//引腳位定義
sbit key1 = P3^2;
sbit key2 = P3^3; //獨立按鍵引腳
sbit pwm1 = P1^2; //讀取脈寬
sbit led1 = P2^2; //點亮led3
sbit led2 = P2^1; //點亮led2
unsigned int JD = 90;//角度累加
unsigned int T0NUM = 0; //中斷累加
void init_time()//初始化定時器
{
// AUXR &= 0x7F; //定時器時鐘12T模式
TMOD = 0x01; //設置定時器模式
TL0 = 0xF5; //設置定時初值
TH0 = 0xFF; //設置定時初值
EA = 1; //中斷總開關
TR0 = 1; //定時器0開始計時
ET0 = 1; //打開中斷允許開關
}
void Delay10ms() //12晶振
{
unsigned char i, j;
i = 117;
j = 184;
do
{
while (--j);
} while (--i);
}
/*void PWMOUT(unsigned jiaodu)
{
if(T0NUM <= jiaodu+45)
pwm1 = 1;
else
pwm1 = 0;
if(T0NUM >= 1801)
T0NUM = 0;
} */
void main()
{
init_time();
while(1)
{
if(key1 == 0)
{
Delay10ms();
if(key1 == 0)
{
JD ++ ;
led1 = ~led1;
while(key1 == 0);
}
}
//----------------------------
if(key2 == 0)
{
Delay10ms();
if(key2 == 0)
{
JD -- ;
led2 = ~led2;
while(key2 == 0);
}
}
//------------------------------
if(JD > 180)
JD = 180 ;
if(JD < 1)
JD = 1 ;
//------------------------------
}
}
void time0_init() interrupt 1
{
TR0 = 0;
TL0 = 0xF5; //設置定時初值
TH0 = 0xFF; //設置定時初值
T0NUM++;
TR0 = 1;
if(T0NUM <= JD+45)
pwm1 = 1;
else
pwm1 = 0;
if(T0NUM >= 1801)
T0NUM = 0;
}
復制代碼
作者:
cccc888
時間:
2018-9-27 15:32
從你的源碼看 可能是 P1^2接電機信號線。定時時間可能是11微秒,頻率11-12M
void time0_init() interrupt 1這個程序如果mcu是12t的,那么這個程序沒處理完,就又進入
中斷了。
作者:
喵唧唧
時間:
2018-9-27 20:09
學到了厲害
作者:
小璽
時間:
2020-2-25 01:44
感覺這種中斷次數太多,耗費cpu太大。請問哪位大神還有更好的舵機小角度調整辦法嗎?
作者:
haierzaifei11
時間:
2020-2-25 08:31
我也感覺中斷次數太多,耗費cpu太大
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1