实时应用开发
舵机也叫伺服电机,最早用于船舶上实现其转向功能,由于可以通过程序连续控制其转角,因而被广泛应用智能小车以实现转向以及机器人各类关节运动中。 舵机是小车转向的控制机构,具有体积小、力矩大、外部机械设计简单、稳定性高等特点,无论是在硬件设计还是软件设计,舵机设计是小车控制部分重要的组成部分。一般来讲,舵机主要由以下几个部分组成,舵盘、减速齿轮组、位置反馈电位计、直流电机、控制电路。如图所示。
STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
#include //STC12C5A系列单片机
#define uchar unsigned char
#define uint unsigned int //宏定义
#define ulint unsigned long int //宏定义
void delay(uint time);
void Timer_init();
void Timer0(unsigned long int us);
uint pwm_valu=500;
sbit dj=P1^0;
void main()
{
Timer_init(); //定时器初始化
Timer0(31); //通过一个定时值进入定时循环
while(1)
{
pwm_valu=550;
delay(2000);
pwm_valu=2500;
delay(2000);
pwm_valu=1000;
delay(2000);
pwm_valu=2000;
delay(2000);
pwm_valu=1500;
delay(2000);
}
}
//软件延时
void delay(uint time)
{
uint i,j;
for(i=0;i《1000;i++)
for(j=0;j
}
//定时器0初始化
void Timer_init()
{
P1M1=0;
P1M0=0XFF;
EA=1; //开总中断
AUXR|=0xC0; //T0,T1工作在1T
TMOD|= 0x11; //T0工作在方式1,16位
ET0 = 1; //开定时器0中断
}
//定时器0定时函数
void Timer0(unsigned long int us) //定时器定时函数
{
unsigned long int valu;
valu=us*12; //工作在1T
valu=valu;
valu=0xffff-valu;
TH0=valu》》8;
TL0=(valu《《8)》》8;
TR0 = 1;//T0开始工作
}
void T0zd() interrupt 1
{
static uchar num=1;
switch(num)
{
case 1:
{
dj=1;
Timer0(pwm_valu);
} break;
case 2:
{
dj=0;// pwm1变低
Timer0(2500-pwm_valu);
} break;
case 3:
{
Timer0(2500);
} break;
case 4:
{
Timer0(2500);
} break;
case 5:
{
Timer0(2500);
} break;
case 6:
{
Timer0(2500);
} break;
case 7:
{
Timer0(2500);
} break;
case 8:
{
Timer0(2500);
} break;
case 9:
{
Timer0(2500);
num=0;
} break;
default:break;
}
num++;
}
全部0条评论
快来发表一下你的评论吧 !