十七,红外遥控器
红外编码说明:
1:红外编码我们常用的是NEC编码,用的是38khz载波的方式传播。都是一些波形怎么读取他的数据呢,这样先看他规定的位定义,就是0和1,NEC码的位定义:一个脉冲对应560us的连续载波,一个逻辑1传输需要2.25ms(560us脉冲+1680us低电平),一个逻辑0的传输需要1.125ms(560us脉冲+560us低电平)。而遥控接收头在收到脉冲的时候为低电平,在没有脉冲的时候为高电平,这样,我们在接收头端收到的信号为:逻辑1应该是560us低+1680us高,逻辑0应该是560us低+560us高。
2:NEC遥控器指令格式
NEC遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个9ms的低电平和一个4.5ms的高电平组成,地址码、地址反码、控制码、控制反码均是8位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性(可用于校验)。
3;地址码。
地址码是8个0,地址反码就是8个1。
4;控制码。
控制码看起来是10101000;其实不对,低位在前,控制码应该是00010101;控制反码是11101010
5;连发码。这个垃圾码几乎不用。
这是NEC码规定的连发码(由9ms低电平+2.5m高电平+0.56ms低电平+97.94ms高电平组成),如果在一帧数据发送完毕之后,按键仍然没有放开,则发射重复码,即连发码,可以通过统计连发码的次数来标记按键按下的长短/次数。
一;红外解码用到的延时函数NOP()需要在头文件添加intrins.h库
二;LED的IO关键配置
三;红外接收就是当红外引脚上,出现下降沿,就让外部中断进入中断服务函数,然后用定时器去测量中断过了多长时间,当知道了这个时间就可以编码为1和0这样的数据,主要的方法就是,外中断和定时器的配合。
定时器和外中断配置:
四;红外处理函数的标志位
五;红外处理函数
六;红外控制函数
七;主函数