Dotcpp > 编程教程 > 混合例程 > 遥控器控制舵机
遥控器控制舵机
点击打开在线编译器,边学边练
1.题目要求 我们在第九章第2讲第一个例程“按键控制舵机桨”的基础上,实现用红外遥控器的前三行按键控制舵机桨停留在我们想要的位置,这样就实现了无线遥控控制机械结构运动的简单功能。 2.main.c测试代码#include
#include //详见第六章第8讲
#include //详见第八章第11讲
#include //详见第十三章第2讲
sbit PWMOUT=P1^7;
u8 highval = 10;
void main()
{
LED_Init(); //初始化LED硬件模块
EA = 1;
InitInfrared(); //初始化红外接收功能
TIM0_Init(100,34); //定时0.1ms,舵机专用,34是微调使定时精度更高,每次微调都由中断函数里的内容而决定
ShowNumber(highval);
while (1)
{
if (irflag) //接收到红外数据时刷新显示
{
irflag = 0;
//以下是遥控器第一行按键
if(ircode[2]==0x45)highval=5;
if(ircode[2]==0x46)highval=7;
if(ircode[2]==0x47)highval=10;
//以下是遥控器第二行按键
if(ircode[2]==0x44)highval=12;
if(ircode[2]==0x40)highval=14;
if(ircode[2]==0x43)highval=16;
//以下是遥控器第三行按键
if(ircode[2]==0x07)highval=19;
if(ircode[2]==0x15)highval=22;
if(ircode[2]==0x09)highval=24;
ShowNumber(highval);
}
}
}
void TIM0_IRQHandler() interrupt 1
{
static u8 pwm=0;
TH0 = T0RH; //重新加载重载值
TL0 = T0RL;
pwm++;
if(pwm>=200)pwm=0; //pwm在0~199之间间隔0.1ms变化,周期为20ms
if(pwm%10==0)SEG_Scan(); //间隔1ms刷新数码管
if(pwm |