|
舵機(jī)只要給一個(gè)脈沖,就會轉(zhuǎn)到預(yù)定角度,這個(gè)大家都明白,如何實(shí)現(xiàn)只要按住按鍵,他就會像電機(jī)一樣一直轉(zhuǎn)呢?其實(shí)不用改舵機(jī)的機(jī)械結(jié)構(gòu),只要改程序就可以實(shí)現(xiàn)。#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)//延時(shí)
{
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;
}
有沒有很驚訝?
|
評分
-
查看全部評分
|