(51 microcontroler infrared NEC code cerificate by oscilloscope )
跟着江科大51单片机学到红外模块部分,想要验证一下NEC编码
本文主要验证编码周期&date位
分别测试起始位,data 中 '0' '1',结束码,重复码,data位中地址码和命令码正确否
1.NEC编码原理
NEC协议载波频率为38kHz
NEC编码协议说明
遥控器键码 地址码0x00,命令码0x_ _
2.测试验证
(1)测试环境
将示波器设置为检测38kHz的信号,然后示波器探头连接红外接收头out端,地线接地,
未接收红外信号时out端默认输出高电平
开始测试
获取NEC编码信号,包含Start,DATA,End,Repeat信号
(2)测量各信号周期
a.起始位
NEC协议的起始位是一个9ms的低电平后跟一个4.5ms的高电平
测量结果:低电平9.16ms,高电平4.4ms
b.DATA位中的 “0”“1”信号
- 逻辑“0”:560微秒的载波脉冲后跟560微秒的无脉冲间隔,总持续时间为1.12ms
- 逻辑“1”:560微秒的载波脉冲后跟1680微秒的无脉冲间隔,总持续时间为2.25ms
“0”信号测量结果:低电平620us,高电平510us
“1”信号测量结果:低电平610us,高电平1620us
c.重复码
如果遥控器按钮被长按,会发送重复码,通常在第一次信号结束后的110ms开始,低电平9ms,高电平2.25ms
测量结果:低电平9.12ms,高电平2.16ms
d.结束位
数据包的最后是一个560微秒的载波脉冲,表示传输结束,
测量结果:低电平560us
(3)Data位数据
数据位分别为地址码,地址反码,命令码,命令反码组成;
地址和命令码都是8位长,以最低有效位先发送的顺序进行传输(LSB-first)。每个位的持续时间表示逻辑“0”或逻辑“1”:
地址码均为0x00
以今天日期9.30为例,分别截下“9” “3” “0”波形
“9”
命令码0x4A,且从LSB开始发,所以应该呈现
地址码 | 地址反码 | 命令码 | 命令反码
0000 0000 | 1111 1111 | 0101 0010 | 1010 1101
测试结果如下,data位相同
“3”
命令码0x5E,地址码 | 地址反码 | 命令码 | 命令反码
0000 0000 | 1111 1111 | 0111 1010 | 1000 0101
测试结果如下,data位相同
“0”
命令码0x16,地址码 | 地址反码 | 命令码 | 命令反码
0000 0000 | 1111 1111 | 0110 1000 | 1001 0111
测试结果如下,data位相同
(4)其他红外遥控
还测试了空调和手机万能遥控的红外编码,但不清楚是哪种编码,仅做参考
空调(松下)
手机万能遥控(格力)
以上。
参考视频/文章: