单片机红外问题,,,不懂下面的意思

2025-02-24 17:24:52
推荐回答(4个)
回答1:

  IRCOM[j]=IRCOM[j] >> 1; //第j位数据左移一位(C左移1位时高位补0)
  if (N>7)
  {
  IRCOM[j] = IRCOM[j] | 0x80; //当N大于7时,第j位数据高位置1
  }
  N=0;
  这是红外解码的数据帧典型处理方式之一,你可以多百度几个例程看看,给你贴个红外基本知识参考:
  ;******************************************************
  ;采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的"0";以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的"1
  ;上述"0"和"1"组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,
  ;达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射
  ;遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,
  ;防止不同机种遥控码互相干扰。该芯片的用户识别码固定为十六进制01H
  ;后16位为8位操作码(功能码)及其反码。
  ;当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms发射代码由一个起始码(9ms),
  ;一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)
  ;和这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,
  ;接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。
  ;
  ;解码的关键是如何识别"0"和"1",接收端而言,"0"是0.56ms的高+0.56ms的低。"1"是1.68ms的高+0.56ms的低。
  ;所以可以根据高电平的宽度区别"0"和"1"。当高电平出现时开始延时,0.56ms以后,若读到的电平为低,
  ;说明该位为"0",反之则为"1",为了可靠起见,延时必须比0.56ms长些,但又不能超过1.12ms,否则如果该位为"0",
  ;读到的已是下一位的高电平,因此取(1.12ms+0.56ms)/2=0.84ms最为可靠,一般取0.84ms左右均可。
  ;为了共用引导部分延时程序,这里用0.9ms延时。

回答2:

这个不要遥控也可以实现啊,用串口发送与接收,两个单片机之间就可以达到这个效果。你提醒了我,这个我先做做试试看!谢谢你啊!我可以给你红外遥控的程序。

回答3:

这个意思是要移位接收8个数据。并且存放在IRCOM[j]里面。

回答4:

给个电子技术导航网站给你吧!---- 电子世家导航网站,它分类收录很多优秀的电子技术网站,在这些电子技术网站论坛里面就有很多大虾分享的资料啦!或许会对你学习电子技术有帮助。