Hi,大家好,这里是丹成学长,今天向大家详细介绍分享,单片机的红外控制原理
红外控制原理详解
大家可用于 课程设计 或 毕业设计
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052
红外线光按照波长范围分为
红外线遥控是利用近红外光传送遙控指令的,波长为0.76um ~ 1.5um
用近紅外作為遙控光源,是因為目前紅外发射器件与紅外接收器件的发光与受光峰值波長一般為0.8um~0.94um,这样可以获得较高的传输效率及较高的可靠性
一般的红外遥控系统是由红外遥控信号发射器、红外遥控信号接收器和微控制器及其外围电路等三部分构成的
目前应用中的各种红外遥控系统的原理都大同小异,区别只是在于各系统的信号编码格式不同。当按下遥控器上任一按键时,遥控器即产生一串脉冲编码。遥控编码脉冲对 40kHz 载波进行脉冲幅度调制(PAM)后便形成遥控信号,经驱动电路由红外发射管发射出去。红外遥控接收头接收到调制后的遥控信号,经前置放大、限幅放大、带通滤波、峰值检波和波形整形,从而解调出与输入遥控信号反相的遥控脉冲
一次按键动作的遥控编码信息为 32 位串行二进制码。对于二进制信号"0",一个脉冲占 1.2ms;对于二进制信号"1",一个脉冲占 2.4ms,而每一脉冲内低电平均为 0.6ms。从起始标志到 32 位编码脉冲发完大约需 80ms,此后遥控信号维持高电平。若按键未释放,则从起始标志起每隔 108ms 发出 3 个脉冲的重复标志
以NEC消费型遥控器为例
红外遥控接收头解调出的编码是串行二进制码,包含着遥控器按键信息。但它还不便于CPU 读取识别,因此需要先对这些串行二进制码进行解码。接码电路主要包括遥控编码脉冲串并转换电路与 PLD 解码电路
解码步骤:
在东亚地区比较常用的红外线传输协议是NEC协议(即6122协议)
//Ò£¿ØÆ÷½ÓÊÕ״̬
//[7]:ÊÕµ½ÁËÒýµ¼Âë±êÖ¾
//[6]:µÃµ½ÁËÒ»¸ö°´¼üµÄËùÓÐÐÅÏ¢
//[5]:±£Áô
//[4]:±ê¼ÇÉÏÉýÑØÊÇ·ñÒѾ±»²¶»ñ
//[3:0]:Òç³ö¼ÆʱÆ÷
u8 RmtSta=0;
u16 Dval; //ϽµÑØʱ¼ÆÊýÆ÷µÄÖµ
u32 RmtRec=0; //ºìÍâ½ÓÊÕµ½µÄÊý¾Ý
u8 RmtCnt=0; //°´¼ü°´ÏµĴÎÊý
//¶¨Ê±Æ÷2ÖжϷþÎñ³ÌÐò
void TIM4_IRQHandler(void)
{
if(TIM_GetITStatus(TIM4,TIM_IT_Update)!=RESET)
{
if(RmtSta&0x80)//ÉÏ´ÎÓÐÊý¾Ý±»½ÓÊÕµ½ÁË
{
RmtSta&=~0X10; //È¡ÏûÉÏÉýÑØÒѾ±»²¶»ñ±ê¼Ç
if((RmtSta&0X0F)==0X00)RmtSta|=1<<6;//±ê¼ÇÒѾÍê³ÉÒ»´Î°´¼üµÄ¼üÖµÐÅÏ¢²É¼¯
if((RmtSta&0X0F)<14)RmtSta++;
else
{
RmtSta&=~(1<<7);//Çå¿ÕÒýµ¼±êʶ
RmtSta&=0XF0; //Çå¿Õ¼ÆÊýÆ÷
}
}
}
if(TIM_GetITStatus(TIM4,TIM_IT_CC4)!=RESET)
{
if(RDATA)//ÉÏÉýÑز¶»ñ
{
TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Falling); //CC1P=1 ÉèÖÃΪϽµÑز¶»ñ
TIM_SetCounter(TIM4,0); //Çå¿Õ¶¨Ê±Æ÷Öµ
RmtSta|=0X10; //±ê¼ÇÉÏÉýÑØÒѾ±»²¶»ñ
}else //ϽµÑز¶»ñ
{
Dval=TIM_GetCapture4(TIM4);//¶ÁÈ¡CCR1Ò²¿ÉÒÔÇåCC1IF±ê־λ
TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Rising); //CC4P=0 ÉèÖÃΪÉÏÉýÑز¶»ñ
if(RmtSta&0X10) //Íê³ÉÒ»´Î¸ßµçƽ²¶»ñ
{
if(RmtSta&0X80)//½ÓÊÕµ½ÁËÒýµ¼Âë
{
if(Dval>300&&Dval<800) //560Ϊ±ê×¼Öµ,560us
{
RmtRec<<=1; //×óÒÆһλ.
RmtRec|=0; //½ÓÊÕµ½0
}else if(Dval>1400&&Dval<1800) //1680Ϊ±ê×¼Öµ,1680us
{
RmtRec<<=1; //×óÒÆһλ.
RmtRec|=1; //½ÓÊÕµ½1
}else if(Dval>2200&&Dval<2600) //µÃµ½°´¼ü¼üÖµÔö¼ÓµÄÐÅÏ¢ 2500Ϊ±ê×¼Öµ2.5ms
{
RmtCnt++; //°´¼ü´ÎÊýÔö¼Ó1´Î
RmtSta&=0XF0; //Çå¿Õ¼ÆʱÆ÷
}
}else if(Dval>4200&&Dval<4700) //4500Ϊ±ê×¼Öµ4.5ms
{
RmtSta|=1<<7; //±ê¼Ç³É¹¦½ÓÊÕµ½ÁËÒýµ¼Âë
RmtCnt=0; //Çå³ý°´¼ü´ÎÊý¼ÆÊýÆ÷
}
}
RmtSta&=~(1<<4);
}
}
TIM_ClearFlag(TIM4,TIM_IT_Update|TIM_IT_CC4);
}
//´¦ÀíºìÍâ¼üÅÌ
//·µ»ØÖµ:
// 0,ûÓÐÈκΰ´¼ü°´ÏÂ
//ÆäËû,°´Ïµİ´¼ü¼üÖµ.
u8 Remote_Scan(void)
{
u8 sta=0;
u8 t1,t2;
if(RmtSta&(1<<6))//µÃµ½Ò»¸ö°´¼üµÄËùÓÐÐÅÏ¢ÁË
{
t1=RmtRec>>24; //µÃµ½µØÖ·Âë
t2=(RmtRec>>16)&0xff; //µÃµ½µØÖ··´Âë
//if((t1==(u8)~t2)&&t1==REMOTE_ID)//¼ìÑéÒ£¿Øʶ±ðÂë(ID)¼°µØÖ·
if(1)
{
t1=RmtRec>>8;
t2=RmtRec;
if(t1==(u8)~t2)
sta=t1;//¼üÖµÕýÈ·
}
if((sta==0)||((RmtSta&0X80)==0))//°´¼üÊý¾Ý´íÎó/Ò£¿ØÒѾûÓа´ÏÂÁË
{
RmtSta&=~(1<<6);//Çå³ý½ÓÊÕµ½ÓÐЧ°´¼ü±êʶ
RmtCnt=0; //Çå³ý°´¼ü´ÎÊý¼ÆÊýÆ÷
}
}
return sta;
}
控制自己家的空调
通过打印遥控器的某按键的16进制值
确认
E4 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 FF
0C B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 FF
D8 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 B1 B1 B1 B1 B1 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B5 B4 B4 B4 B4 34 34 34 B0 B1 B1 B1 B1 FF
单片机-嵌入式毕设选题大全及项目分享:
https://blog.csdn.net/m0_71572576/article/details/125409052