红外遥控协议分析之:NEC协议

红外遥控协议分析之:NEC协议  

2009-04-08 19:55:28|  分类: 个人日记|字号 订阅

红外遥控协议分析之:NEC协议  特点    8 位地址和 8 位命令
为提高可靠性,地址和命令都传输 2
脉冲间隔调制
   38kHz 载波频率
每一位时间为 1.12mS 2.25mS
 
调制 采用脉冲间隔时间长短调制每一位。
每一个脉冲都是560uS长度的38kHz载波脉冲,占空比为1/41/3(约21个周期)。
逻辑12.25mS            逻辑01.12mS
红外遥控协议分析之:NEC协议 - 宁都广电鲁桂清 - 宁都广电局鲁桂清的博客

 
协议 红外遥控协议分析之:NEC协议 - 宁都广电鲁桂清 - 宁都广电局鲁桂清的博客
    上图是NEC协议的一个典型脉冲发送图。此协议LSB最低位先传送。
    此图传送的地址是$59、命令是$16.
 
    一个信息发送是由9mSAGC自动增益控制脉冲开头,在早期的IR红外接收器中用来设置增益。接着是4.5mS空闲,然后是地址、命令。
 
    地址和命令都传送2次,第二次的地址和命令是反码,可以用来校验接收到的信息。
总的传输时间是固定的,因为每一位都有反码传送。

一个命令只发送一次,即使遥控器上的按键一直按着。但是会每110mS发送一次代码,直到遥控器按键释放。
红外遥控协议分析之:NEC协议 - 宁都广电鲁桂清 - 宁都广电局鲁桂清的博客
    重复码比较简单:一个9mS的AGC脉冲、2.25mS间隔、560uS脉冲。
红外遥控协议分析之:NEC协议 - 宁都广电鲁桂清 - 宁都广电局鲁桂清的博客

附一份天敏TV Baby电视卡的波形图:
地址码00
电源键:10    静音:06    Video Setting:1E
Snapshot:05   Pause:4D   Video Default:0A
Hide Panel:0B CH+:32     CH-:00
VOL+:0D       VOL-:15    REC:54
Full Screen:1C           AV Source:02
←:0E        →:1A
红外遥控协议分析之:NEC协议 - 宁都广电鲁桂清 - 宁都广电局鲁桂清的博客
 
附先科VCDRC-9917A)遥控编码
地址码00

/出盒:C0  播放/暂停:A8      上一曲:18    下一曲:E8快倒:98       快进:D8      停止:58
 
      附日菱电视遥控(55K8C)编码
      他的地址编码有13位0 0111 0001 0000,其它的与NEC编码是一样的:
   节目+:C8    节目-:E8    音量+:08    音量-:28    菜单:74
 
据说,LA7641也是13位地址,长虹彩电有些用了此芯片做遥控器



注明:为什么现在写给中控的红外驱动在串口未打开的时候能够正常工作,但一旦串口打开,就不能正常遥控了呢?

这个的根本原因还没有找到,但可能是因为资源冲突造成。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是51单片机红外遥控发射NEC协议的程序代码: ``` #include<reg51.h> #define uint unsigned int #define uchar unsigned char uchar code table[33] = {0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff, 0x00, 0xff}; uchar count, i, j; void delay(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void sendone(void) { P1 = 0; delay(1); P1 = 1; delay(2); P1 = 0; delay(1); } void sendzero(void) { P1 = 0; delay(1); P1 = 1; delay(1); P1 = 0; delay(2); } void send(uchar data) { uchar i; for(i=0;i<8;i++) { if(data&0x01) sendone(); else sendzero(); data >>= 1; } } void main() { TMOD = 0x01; TH0 = 0xFC; TL0 = 0x67; TR0 = 1; ET0 = 1; EA = 1; while(1) { send(0x00); send(0x00); send(0x00); send(0x00); send(0x00); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); send(0xff); send(0x00); delay(100); } } void timer0() interrupt 1 { TH0 = 0xFC; TL0 = 0x67; count++; if(count == 15) { P1 = 1; delay(1); P1 = 0; count = 0; } } ``` 该程序使用了51单片机的定时器和外部中断,通过红外发射管发送NEC协议格式的红外码。在main函数中循环发送了一组红外码,通过定时器中断控制红外码的发送频率。其中sendone和sendzero函数分别表示发送1和0的红外码,send函数用于发送8数据。注意在使用该程序时需要根据具体硬件电路设计进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值