2.遥控器控制舵机

发布日期:2020-12-26 09:09:49 来源:网络转载

1.题目要求

我们在第九章第2讲第一个例程“按键控制舵机桨”的基础上,实现用红外遥控器的前三行按键控制舵机桨停留在我们想要的位置,这样就实现了无线遥控控制机械结构运动的简单功能。


2.main.c测试代码

#include <reg52.h>
#include <function.h> //详见第六章第8讲
#include <timer.h>    //详见第八章第11讲
#include <infrared.h> //详见第十三章第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<highval)PWMOUT=1; //highval的值决定舵机桨的停留位置
    else PWMOUT=0;
}
关键词 :
网站违法和不良信息举报邮箱:23139485@qq.com
CopyRight@2020-2030 www.haoapp8.cn All Rights Reserved.C语言学习网版权所有 粤ICP备15061369号
免责声明:本站内容来源于用户自行提供或网络收集,其真实性、准确性和合法性,www.haoapp8.cn不提供任何保证,亦不承担任何法律责任.而产生的法律关系及法律纠纷,由您自行协商解决。