舵機只要給一個脈沖,就會轉到預定角度,這個大家都明白,如何實現只要按住按鍵,他就會像電機一樣一直轉呢?其實不用改舵機的機械結構,只要改程序就可以實現。#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint num,PWM;
void delay (int c);
sbit DJPWM = P1^7;//IO口
sbit key1 = P1^0;//IO口
sbit key2 = P1^1;//IO口
sbit key3 = P1^2;//IO口
sbit key4 = P1^3;//IO口
void main()
{
TMOD=0x10;
TH1=0xff;//0.02ms
TL1=0xee;
EA=1;//總中斷
ET1=1;
TR1=1;
num=0;
while(1)
{
if (key1 == 0)
{
delay(20);
if (key1 == 0)
{
PWM = PWM + 2;
if (PWM > 54)
{
PWM = 54;
}
}
}
else if (key2 == 0)
{
delay(20);
if (key2== 0)
{
PWM = PWM - 2;
if (PWM < 8)
{
PWM = 8;
}
}
}
else PWM=35;
}
}
void delay (int c)//延時
{
int i,j;
for(i=0;i<c;i++)
{
for(j=125;j>0;j--);
}
}
void t0()interrupt 3
{
TR1=0;
TH1=0xff;
TL1=0xee;
TR1=1;
num++;
if(num>=1000)//周期20ms
{
num=0;
}
if(num<=PWM)//改變占空比
{
DJPWM = 1;
}
else
{
DJPWM =0;
}
TR1=1;
}
有沒有很驚訝?
|