标题:
还是舵机控制问题,请教各位高侠。
[打印本页]
作者:
slh0721
时间:
2015-7-23 11:12
标题:
还是舵机控制问题,请教各位高侠。
前面发过一个帖子询问舵机控制的问题,我现在想写一个控制舵机来回摆动,摆动频率为大约一秒一个来回。总摆动时间一分钟后停止的
C
程序。有一位兄弟给我提供了个思路,但苦于我是刚开始接触单片机,对于这位兄弟提供的思路只能是意会,却写不出来。烦请各位高手帮忙写一下,我需要马上就用到它,所以现在现翻书学习已然来不及的。谢谢各位。
作者:
腾飞的龙
时间:
2015-7-23 19:53
同时控制3路舵机
#include<reg52.h>
//#define uchar unsigned char
//#define uint unsigned int
//#define moto_pwm P1_4 //PWM输出脚控制舵机
sbit moto_pwm=P1^0;//PWM输出脚控制舵机
sbit moto_pwm1=P1^1;//PWM输出脚控制舵机
sbit moto_pwm2=P1^2;//PWM输出脚控制舵机
sbit xiaocheting=P1^3;//按键控制
sbit xiaochehouti=P1^4;
sbit xiaocheqianjin=P1^5;
uchar pwm_lefr=0;//定义 定时器自加1变量
uchar pwm_lefr1=0;//定义 定时器自加1变量
uchar pwm_lefr2=0;//定义 定时器自加1变量
uchar duojiguizhong=12;//舵机归中1.5ms
uchar duojiguizhong1=12;//舵机归中1.5ms
uchar duojiguizhong2=12;//舵机归中1.5ms
void pwmmaic()//产生PWM
{
if(pwm_lefr<=duojiguizhong)
moto_pwm=1;
else
moto_pwm=0;
if(pwm_lefr>=200)
pwm_lefr=0;
if(pwm_lefr1<=duojiguizhong1)
moto_pwm1=1;
else
moto_pwm1=0;
if(pwm_lefr1>=200)
pwm_lefr1=0;
if(pwm_lefr2<=duojiguizhong2)
moto_pwm2=1;
else
moto_pwm2=0;
if(pwm_lefr2>=200)
pwm_lefr2=0;
}
void time1() interrupt 3
{
// TH1=0XFf;//100us的赋值11.0592M
// TL1=0XAE;
TH1=(65536-60)/256;//100us的赋值
TL1=(65536-60)%256;
pwm_lefr++;
pwm_lefr1++;
pwm_lefr2++;
pwmmaic();
}
void inttime()
{
// TMOD=0X10;
TMOD=0X11;
TH1=(65536-60)/256;//100us的赋值12M
TL1=(65536-60)%256;
// TH1=0XFf;//100us的赋值11.0592M
// TL1=0XAE;
ET1=1;
TR1=1;
EA=1;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=240;y>0;y--);
}
void main()
{
duojiguizhong=12;
duojiguizhong1=12;
duojiguizhong2=12;
inttime();
while(1)
{
if(xiaocheting==0)
{
delay(10);
if(xiaocheting==0)
{
duojiguizhong=4;
delay(2000);
duojiguizhong1=6;
delay(1000);
duojiguizhong=14;
delay(2000);
duojiguizhong1=14;
delay(2000);
while(xiaocheting==0);
duojiguizhong=12;//归中
delay(2000);
}
}
/*
duojiguizhong=16;
delay(1000);
duojiguizhong=12;//归中
delay(1000);
duojiguizhong=8;//右45度
delay(1000);
duojiguizhong1=6;
delay(1000);
duojiguizhong1=12;
delay(1000);
duojiguizhong1=16;
// delay(1000);*/
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1