全球旧事资料 分类
会控制增减音量。
解码的关键是如何识别“0”和“1”从位的定义我们可以发现“0”、“1”均以056ms的低电平开始,不同的是高电平的宽度不同,“0”为056ms“1”为168ms所以必须根据高电平的宽度区别“0”和“1”。如果从056ms低电平过后,开始延时,056ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比056ms长些,但又不能超过112ms否则如果该位为“0”,读到的已是下一位的高电平,因此取
f(112ms056ms)2084ms最为可靠,一般取084ms左右均可。根据
码的格式,应该等待9ms的起始码和45ms的结果码完成后才能读码。
5、实例代码注意一下几点:
1从上面“红外接收头与单片机连接原理图”来看,红外接收头的型号脚是与
51的i
t0相连,所以需要使用INT0外部中断0
2由于解码过程中涉及到延时,为精确起见,我们选择使用定时器1来计时。系统初始化时,我们设置IRIN为高电平,同时把IT0设置成1,即下降沿(负跳变)触发中断。这是用于接收波形的引导码是从低电平开始的(如上面接收波形所示)。这样,当按下按键时,红外接收到信号,IRIN则发生从预先设置的高电平跳为低电平,从而产生中断。2解码中断程序i
terr_irvoid首先,第一步把EX0关中断,这步至关重要,因为一个接收波形许多的下降沿,这样会产生干扰中断。接下来,使用定时器0延时9ms,跳过开始码。注意,延时后,需要检测一下干扰信号。下一步,whileIRIN等待45ms高电平的到来,再延时45ms,跳过结果。引导码过后,开始读码,执行GetCode:32位数据码,分4次读取,所以执行4次GetCode,读取一个字节数据过程如下:源码copytoclipboard打印?1从上述位定义看,位0和位1都是056ms的低电平过后,高电平开始延时。
所以,读码的第一步whileIRIN是等待这个056ms的低电平之后的高电平。
2从高定平到后开始延时084ms
3判断084ms的波形高电平还是低电平。若仍然是高电平证明,该位为“1”,
否则为“0”。到这里读码结束。
3校验
f由于32位数据码中,后两个字节是键数据码和健数据反码。可以通过这两个字节数来实行校验。即,把前一个字节去反判读是否等于后一字节。好了,到这里解码程序已经完成了。呵呵。小Jay很有满足感。
fr
好听全球资料 返回顶部