红外遥控信号解码
之前就已经做过红外遥控的解码了,但是一直没有做记录,最近的项目又使用到了红外遥控,索性就把他捡起来记录一下,对于信号的解码,我一般的习惯都是先用逻辑分析仪抓取一下信号波形,然后对着波形来进行程序的编写,实现信号解码。
初识红外遥控信号
以下是我通过逻辑分析仪抓取的红外遥控的波形:
这是一个红外按键单击的信号,前面9ms的低电平加上4.4ms的高电平我把他认为是信号的起始部分,后面的比较集中的信号才是信号的主要部分。分为地址码、地址反码、键值码、键值反码。每个码都是一个字节,所以一个红外信号一共四个字节。
下面这个是长按的遥控信号波形
跟单击的相似之处是前面也是一个单独的4字节信号,后面每隔104ms就会出现一个2.2ms的高电平与612us的低电平,这个我把他当做是长按的一个判断。通过计算这个信号的个数,判断是否为长按。
信号内部的位是“1”还是“0”我是通过判断高点的时间长短来实现的,高电平为1.67ms左右的认为是高电平,高电平为549us的认为是电平,所以在程序解码的程序的,直接判断高电平的时间就好了,高电平在4.4ms左右,就是收到了起始信号,可以开始准备解码了,然后当高电平为1.67ms左右就是收到了“1”,当高电平为549us左右就是收到了“0”,当高电平大于100ms就是按键松开了,这是因为在长按的过程中,遥控发送相同码的时候是有一个91ms的高电平的。写到这里,突然发现也可以直接判断有没有超过100ms的高电平,如果没有那就还是一直在按着,也是一个判断长按的方法。整体的解码思路就是这样了。主要都是参考波形来的。
讲的可能不是很官方,野路子来的,欢迎大家来指正错误~~