要让红外模块工作,首先你要给它通电,然后你要有一个CPU来处理它发送的数据,然后我们就可以知道红外模块经过单片机处理后发送了什么数据。红外接收器与CPU相连,红外接收器给CPU的数据是一些PWM波,也就是一些由高低电平组成的连续波形。因此,我们需要CPU具备处理这些波形的能力。
CPU需要的功能:
1.计时功能:即计时;
2.捕捉功能:上升沿捕捉和下降沿捕捉;
3.中断功能:定时时间、上升沿捕捉和下降沿捕捉;
首先将CPU的捕获IO设置为上升沿捕获,等待上升沿到来,定时器开始计数。然后将CPU的捕获IO端口捕获设置为下降沿捕获,等待下降沿到达,停止计数,计算这两个边沿的Time时间,即为高电平的时间。
通过该高级时间,确定接收的数据是0还是1,并且它也可以是重复码和导频码。
1.当时间为0.56毫秒(高电平时间)时,接收电平为0;
2.当时间为1.685毫秒(高电平时间)时,接收电平为1。
3.时间为2.25毫秒(高级时间)重复码;重复码就是反复按键。
4.时间为4.5毫秒(高级时间),导频码;
除了引导码之外,红外线传输的每一帧数据都有32位的有效数据,每个字节是8位,一帧数据的有效数据是4字节。
从高位到低位,上面两个字节是地址码和地址补码,后面两个字节是数据码和数据补码。
得到32位数据后,需要对数据进行处理:
我们定义了一个32位变量RevData。
同时定义了四个8位变量:地址码AdrCode、地址补码AdrInv、数字码keyValue和数字补码key value。
将变量RevData向右移动24位,并将该值赋给地址码AdrCode;
变量RevData向右移位16位,然后与0xff为“与”,然后分配给地址补码AdrInv。
如果AdrCode反转并等于AdrInv,则接收到的数据是正确的。
变量RevData向右移动8位,然后分配给数字代码keyValue。
变量RevData直接分配给数字补码keyIvalue。
如果键值被反转并且等于键值,则意味着接收到的数据是正确的。