我们在第九章第2讲第一个例程“按键控制舵机桨”的基础上,实现用红外遥控器的前三行按键控制舵机桨停留在我们想要的位置,这样就实现了无线遥控控制机械结构运动的简单功能。
#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; }
本文固定URL:https://www.dotcpp.com/course/402
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程