欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
基于STC89C52單片機的舵機SG90驅動程序
[打印本頁]
作者:
小蘿卜頭
時間:
2019-8-1 17:18
標題:
基于STC89C52單片機的舵機SG90驅動程序
本人是初學單片機,若有不到之處,希望大家積極指出,共同學習
!
下面說一下驅動舵機
SG90過程中的一些經驗:
1
.了解舵機基本運動機理
舵機內部結構及運動原理詳細解析
(重要的是看舵機運動原理)
2
.注意我們使用的是模擬舵機(模擬舵機和數字舵機驅動方法不同)
模擬舵機
:需要不斷的發送PWM信號,才可旋轉到指定位置。
數字舵機
:只需給一個PWM信號,即可旋轉到指定位置。
3.
使用PWM信號控制—
詳細代碼如下
/***************************************************
/*舵機控制
/*開關K1控制順時針旋轉 開關K2控制逆時針旋轉
/*每次旋轉角度由定時器1控制 定時器周期越短 精度越高
****************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit pwm=P1^0;
sbit k1=P3^0; //k1順時針旋轉
sbit k2=P3^1; //k2逆時針旋轉
uchar count=0;
uchar n=14; //初始位置-在90°附近
void delay5ms()
{
unsigned char a,b;
for(b=19;b>0;b--)
for(a=130;a>0;a--);
}
void key()
{
if(k1==0)
{
delay5ms();
if(k1==0)
{
while(k1==0); //判斷當鍵盤松開時
if(n<=25) n++;//判斷是否旋轉到180°
else n=26;
}
}
if(k2==0)
{
delay5ms();
if(k2==0)
{
while(k2==0); //判斷當鍵盤松開時
if(n>=6) n--; //判斷是否旋轉到0°
else n=5;
}
}
}
void InitTimer()//0.1ms 12Mhz
{
TMOD = 0x01;
TH0 = 0xFF;
TL0 = 0x9C;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main()
{
InitTimer();
while(1)
{
key();
}
}
void Timer() interrupt 1
{
TH0 = 0xFF;
TL0 = 0x9C;
count++;
if(count<=200)
{
if(count<=n)
{
pwm=1;
}
else
{
pwm=0;
}
}
else
{
count=0;
pwm=0;
}
}
復制代碼
作者:
小蘿卜頭
時間:
2019-8-2 15:55
講的不錯
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1