打印
[其他]

红外遥控NEC协议使用总结

[复制链接]
583|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
comparison|  楼主 | 2019-10-18 15:31 | 只看该作者
一、NEC协议特征:

1、8位地址和8位命令长度
2、每次传输两遍地址(用户码)和命令(按键值)
3、通过脉冲串之间的时间间隔来实现信号的调制(PPM)
4、38Khz载波
5、每位的周期为1.12ms(低电平)或者2.25ms(高电平)

使用特权

评论回复
板凳
comparison|  楼主 | 2019-10-18 15:32 | 只看该作者
二、NEC协议的典型脉冲链:



上图所示为NEC协议的典型脉冲链。协议规定低位首先发送。首先发送9ms+4.5ms的引导码,接下来是两字节用户码,第三字节是数据码,用来判断按键值,第四字节是数据反码,可以用来校验,提高按键的准确性。

使用特权

评论回复
地板
comparison|  楼主 | 2019-10-18 15:32 | 只看该作者
三、NEC协议脉冲链的其他图片



除了引导码、用户码和数据码以外,协议最后还有一个1bit的停止位,用于数据发送完毕判断。另外在NEC协议中,似乎没有说明停止位的高低电平持续时间。

使用特权

评论回复
5
comparison|  楼主 | 2019-10-18 15:33 | 只看该作者
四、NEC协议的高低电平辨别方式



用户码和数据码中的‘0’和‘1’是利用脉冲的时间间隔来区分,这种编码方式称为脉冲位置调制方式(PPM)。

其中位0首先为0.56ms的高电平,然后是0.565ms的低电平;位1首先是0.56ms的高电平,然后是1.69ms的低电平。

使用特权

评论回复
6
comparison|  楼主 | 2019-10-18 15:33 | 只看该作者
五、编程注意事项

1.红外接收头引脚信号是相反的电平。

以上电平是从发射头角度来看,红外接收头引脚输出的是相反的电平。

如图,即没有数据传输时,P3.2引脚保持为高电平,当接收到数据时,首先是引导码,9ms的低电平和4.5ms的高电平,然后是32位数据和1位停止位。一般来说,P3.2与单片机的某中断引脚相连,当接收数据时,低电平会触发中断。

使用特权

评论回复
7
comparison|  楼主 | 2019-10-18 15:33 | 只看该作者
2.数据从LSB(低位)开始发送,所以选择右移方式接收数据。

四个字节的数据都是先发送D0,最后发送D7。所以接收到1位数据后,给变量的最高位赋值,右移。或者先右移,再给变量的最高位赋值。

使用特权

评论回复
8
comparison|  楼主 | 2019-10-18 15:34 | 只看该作者
3.可以用一个数组保存32个数据的持续时间,用于后面判断高低电平。

用定时器对两个数据(中断)之间的时间计时,并保存这个持续时间用于以后判断是位1还是位0。

使用特权

评论回复
9
comparison|  楼主 | 2019-10-18 15:34 | 只看该作者
4.可以用2字节,4字节变量存储32个数据,以节省代码空间。

可以用两个16位的int型变量存储数据,第一个int变量存储用户码,第二个存储数据码和数据反码。也可以用一个32位long型的变量存储所有数据。

使用特权

评论回复
10
comparison|  楼主 | 2019-10-18 15:35 | 只看该作者
5.判断停止位。

接收到停止位后可以屏蔽红外引脚的中断,防止后面数据的干扰,解码成功后在开启中断。

使用特权

评论回复
11
kxsi| | 2019-11-12 14:06 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
12
wowu| | 2019-11-12 14:19 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
13
nawu| | 2019-11-12 15:14 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
14
qcliu| | 2019-11-12 15:31 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
15
tfqi| | 2019-11-12 15:51 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
16
wiba| | 2019-11-12 16:04 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
17
zljiu| | 2019-11-12 16:19 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

417

帖子

0

粉丝