1.題目要求
我們在第九章第2講第一個例程“按鍵控制舵機槳”的基礎上,實現(xiàn)用紅外遙控器的前三行按鍵控制舵機槳停留在我們想要的位置,這樣就實現(xiàn)了無線遙控控制機械結構運動的簡單功能。
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是微調使定時精度更高,每次微調都由中斷函數(shù)里的內容而決定 ShowNumber(highval); while (1) { if (irflag) //接收到紅外數(shù)據(jù)時刷新顯示 { 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刷新數(shù)碼管 if(pwm<highval)PWMOUT=1; //highval的值決定舵機槳的停留位置 else PWMOUT=0; }
C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:
一點編程也不會寫的:零基礎C語言學練課程
解決困擾你多年的C語言疑難雜癥特性的C語言進階課程
從零到寫出一個爬蟲的Python編程課程
只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程
信息學奧賽或C++選手的 必學C++課程
藍橋杯ACM、信息學奧賽的必學課程:算法競賽課入門課程
手把手講解近五年真題的藍橋杯輔導課程